summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/bard_music.h2
-rw-r--r--include/battle.h79
-rw-r--r--include/battle_anim.h13
-rw-r--r--include/battle_setup.h6
-rwxr-xr-xinclude/berry_crush.h6
-rwxr-xr-xinclude/berry_powder.h9
-rw-r--r--include/constants/battle_anim.h248
-rw-r--r--include/constants/battle_script_commands.h22
-rwxr-xr-xinclude/constants/event_object_movement_constants.h2
-rw-r--r--include/constants/event_objects.h2
-rw-r--r--include/constants/field_effects.h6
-rw-r--r--include/constants/flags.h52
-rw-r--r--include/constants/game_stat.h2
-rw-r--r--include/constants/maps.h6
-rwxr-xr-xinclude/constants/metatile_behaviors.h4
-rw-r--r--include/constants/songs.h4
-rw-r--r--include/constants/vars.h8
-rw-r--r--include/contest.h30
-rw-r--r--include/contest_effect.h1
-rw-r--r--include/data.h119
-rw-r--r--include/data2.h22
-rw-r--r--include/decoration.h76
-rw-r--r--include/decoration_inventory.h8
-rwxr-xr-xinclude/ereader_helpers.h51
-rwxr-xr-xinclude/ereader_screen.h6
-rw-r--r--include/event_obj_lock.h1
-rw-r--r--include/event_object_movement.h17
-rw-r--r--include/event_scripts.h16
-rwxr-xr-xinclude/faraway_island.h10
-rw-r--r--include/field_effect.h4
-rw-r--r--include/field_player_avatar.h12
-rw-r--r--include/field_screen_effect.h2
-rw-r--r--include/field_specials.h3
-rw-r--r--include/field_weather.h90
-rw-r--r--include/fieldmap.h1
-rw-r--r--include/fldeff.h1
-rw-r--r--include/gba/types.h23
-rw-r--r--include/global.fieldmap.h27
-rw-r--r--include/global.h90
-rw-r--r--include/graphics.h1236
-rw-r--r--include/gym_leader_rematch.h8
-rw-r--r--include/international_string_util.h2
-rw-r--r--include/item_icon.h2
-rw-r--r--include/learn_move.h7
-rw-r--r--include/link.h5
-rw-r--r--include/link_rfu.h9
-rw-r--r--include/list_menu.h4
-rw-r--r--include/main.h4
-rw-r--r--include/menu.h11
-rw-r--r--include/menu_helpers.h2
-rw-r--r--include/menu_specialized.h67
-rw-r--r--include/metatile_behavior.h4
-rwxr-xr-xinclude/mevent.h63
-rw-r--r--include/mevent2.h6
-rw-r--r--include/mevent_801BAAC.h16
-rw-r--r--include/mevent_client.h33
-rwxr-xr-xinclude/mevent_news.h7
-rw-r--r--include/mevent_server.h36
-rw-r--r--include/mevent_server_helpers.h38
-rw-r--r--include/move_relearner.h7
-rw-r--r--include/mystery_gift.h16
-rw-r--r--include/naming_screen.h2
-rw-r--r--include/pokemon.h4
-rw-r--r--include/pokemon_3.h10
-rwxr-xr-xinclude/pokemon_summary_screen.h5
-rw-r--r--include/pokenav.h29
-rw-r--r--include/rom_8011DC0.h19
-rw-r--r--include/save.h5
-rw-r--r--include/script.h6
-rw-r--r--include/script_menu.h2
-rw-r--r--include/secret_base.h46
-rw-r--r--include/strings.h167
-rw-r--r--include/text.h2
-rw-r--r--include/text_window.h4
-rw-r--r--include/title_screen.h2
-rw-r--r--include/trader.h2
-rw-r--r--include/union_room.h172
-rw-r--r--include/union_room_battle.h7
-rwxr-xr-xinclude/union_room_chat.h7
-rw-r--r--include/union_room_player_avatar.h14
-rw-r--r--include/util.h4
81 files changed, 2028 insertions, 1145 deletions
diff --git a/include/bard_music.h b/include/bard_music.h
index 488205405..882606b27 100644
--- a/include/bard_music.h
+++ b/include/bard_music.h
@@ -38,7 +38,7 @@ struct BardSong
// Exported ROM declarations
-extern const u16 gUnknown_085F5490;
+extern const u16 gNumSpeciesNames;
extern const u16 gUnknown_085FA1D4;
const struct BardSound *GetWordSounds(u16 word);
void GetWordPhonemes(struct BardSong *song, u16 word);
diff --git a/include/battle.h b/include/battle.h
index d155ca5a0..0f4087c90 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -62,70 +62,12 @@
#define BATTLE_BUFFER_LINK_SIZE 0x1000
-struct TrainerMonNoItemDefaultMoves
-{
- u16 iv;
- u8 lvl;
- u16 species;
-};
-
-struct TrainerMonItemDefaultMoves
-{
- u16 iv;
- u8 lvl;
- u16 species;
- u16 heldItem;
-};
-
-struct TrainerMonNoItemCustomMoves
-{
- u16 iv;
- u8 lvl;
- u16 species;
- u16 moves[4];
-};
-
-struct TrainerMonItemCustomMoves
-{
- u16 iv;
- u8 lvl;
- u16 species;
- u16 heldItem;
- u16 moves[4];
-};
-
-union TrainerMonPtr
-{
- const struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
- const struct TrainerMonNoItemCustomMoves *NoItemCustomMoves;
- const struct TrainerMonItemDefaultMoves *ItemDefaultMoves;
- const struct TrainerMonItemCustomMoves *ItemCustomMoves;
-};
-
-struct Trainer
-{
- /*0x00*/ u8 partyFlags;
- /*0x01*/ u8 trainerClass;
- /*0x02*/ u8 encounterMusic_gender; // last bit is gender
- /*0x03*/ u8 trainerPic;
- /*0x04*/ u8 trainerName[12];
- /*0x10*/ u16 items[4];
- /*0x18*/ bool8 doubleBattle;
- /*0x1C*/ u32 aiFlags;
- /*0x20*/ u8 partySize;
- /*0x24*/ union TrainerMonPtr party;
-};
-
-extern const struct Trainer gTrainers[];
-
-#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
-
-struct UnknownFlags
+struct ResourceFlags
{
u32 flags[4];
};
-#define UNKNOWN_FLAG_FLASH_FIRE 1
+#define RESOURCE_FLAG_FLASH_FIRE 1
struct DisableStruct
{
@@ -276,21 +218,16 @@ struct BattleCallbacksStack
struct StatsArray
{
- u16 hp;
- u16 atk;
- u16 def;
- u16 spd;
- u16 spAtk;
- u16 spDef;
+ u16 stats[NUM_STATS];
};
struct BattleResources
{
- struct SecretBaseRecord* secretBase;
- struct UnknownFlags *flags;
+ struct SecretBase* secretBase;
+ struct ResourceFlags *flags;
struct BattleScriptsStack* battleScriptsStack;
struct BattleCallbacksStack* battleCallbackStack;
- struct StatsArray* statsBeforeLvlUp;
+ struct StatsArray* beforeLvlUp;
struct AI_ThinkingStruct *ai;
struct BattleHistory *battleHistory;
struct BattleScriptsStack *AI_ScriptsStack;
@@ -564,9 +501,7 @@ struct BattleScripting
};
// rom_80A5C6C
-u8 GetBattlerSide(u8 battler);
-u8 GetBattlerPosition(u8 battler);
-u8 GetBattlerAtPosition(u8 position);
+
struct BattleSpriteInfo
{
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/battle_setup.h b/include/battle_setup.h
index 3b327e3f7..984c820bb 100644
--- a/include/battle_setup.h
+++ b/include/battle_setup.h
@@ -1,10 +1,10 @@
#ifndef GUARD_BATTLE_SETUP_H
#define GUARD_BATTLE_SETUP_H
+#include "gym_leader_rematch.h"
+
#define REMATCHES_COUNT 5
-#define REMATCH_TABLE_ENTRIES 78
-#define REMATCH_WALLY_ENTRY 64
-#define REMATCH_ELITE_FOUR_ENTRIES 73
+#define REMATCH_ELITE_FOUR_ENTRIES REMATCH_SIDNEY
struct RematchTrainer
{
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_anim.h b/include/constants/battle_anim.h
index 34a45395c..1209dfa19 100644
--- a/include/constants/battle_anim.h
+++ b/include/constants/battle_anim.h
@@ -11,137 +11,137 @@
#define ANIM_TAG_SPARK (ANIM_SPRITES_START + 1)
#define ANIM_TAG_PENCIL (ANIM_SPRITES_START + 2)
#define ANIM_TAG_AIR_WAVE (ANIM_SPRITES_START + 3)
-#define ANIM_TAG_UNUSED_ORB (ANIM_SPRITES_START + 4)
+#define ANIM_TAG_ORB (ANIM_SPRITES_START + 4)
#define ANIM_TAG_SWORD (ANIM_SPRITES_START + 5)
#define ANIM_TAG_SEED (ANIM_SPRITES_START + 6)
-#define ANIM_TAG_UNUSED_EXPLOSION (ANIM_SPRITES_START + 7)
-#define ANIM_TAG_UNUSED_PINK_ORB (ANIM_SPRITES_START + 8)
+#define ANIM_TAG_EXPLOSION_6 (ANIM_SPRITES_START + 7)
+#define ANIM_TAG_PINK_ORB (ANIM_SPRITES_START + 8) // unused
#define ANIM_TAG_GUST (ANIM_SPRITES_START + 9)
#define ANIM_TAG_ICE_CUBE (ANIM_SPRITES_START + 10)
#define ANIM_TAG_SPARK_2 (ANIM_SPRITES_START + 11)
-#define ANIM_TAG_UNUSED_ORANGE (ANIM_SPRITES_START + 12)
+#define ANIM_TAG_ORANGE (ANIM_SPRITES_START + 12) // unused
#define ANIM_TAG_YELLOW_BALL (ANIM_SPRITES_START + 13)
#define ANIM_TAG_LOCK_ON (ANIM_SPRITES_START + 14)
#define ANIM_TAG_TIED_BAG (ANIM_SPRITES_START + 15)
#define ANIM_TAG_BLACK_SMOKE (ANIM_SPRITES_START + 16)
#define ANIM_TAG_BLACK_BALL (ANIM_SPRITES_START + 17)
#define ANIM_TAG_CONVERSION (ANIM_SPRITES_START + 18)
-#define ANIM_TAG_UNUSED_GLASS (ANIM_SPRITES_START + 19)
+#define ANIM_TAG_GLASS (ANIM_SPRITES_START + 19) // unused
#define ANIM_TAG_HORN_HIT (ANIM_SPRITES_START + 20)
-#define ANIM_TAG_UNUSED_HIT (ANIM_SPRITES_START + 21)
-#define ANIM_TAG_UNUSED_HIT_2 (ANIM_SPRITES_START + 22)
-#define ANIM_TAG_UNUSED_BLUE_SHARDS (ANIM_SPRITES_START + 23)
-#define ANIM_TAG_UNUSED_CLOSING_EYE (ANIM_SPRITES_START + 24)
-#define ANIM_TAG_UNUSED_WAVING_HAND (ANIM_SPRITES_START + 25)
-#define ANIM_TAG_UNUSED_HIT_DUPLICATE (ANIM_SPRITES_START + 26)
+#define ANIM_TAG_HIT (ANIM_SPRITES_START + 21)
+#define ANIM_TAG_HIT_2 (ANIM_SPRITES_START + 22)
+#define ANIM_TAG_BLUE_SHARDS (ANIM_SPRITES_START + 23) // unused
+#define ANIM_TAG_CLOSING_EYE (ANIM_SPRITES_START + 24) // unused
+#define ANIM_TAG_WAVING_HAND (ANIM_SPRITES_START + 25) // unused
+#define ANIM_TAG_HIT_DUPLICATE (ANIM_SPRITES_START + 26) // unused
#define ANIM_TAG_LEER (ANIM_SPRITES_START + 27)
-#define ANIM_TAG_UNUSED_BLUE_BURST (ANIM_SPRITES_START + 28)
+#define ANIM_TAG_BLUE_BURST (ANIM_SPRITES_START + 28) // unused
#define ANIM_TAG_SMALL_EMBER (ANIM_SPRITES_START + 29)
#define ANIM_TAG_GRAY_SMOKE (ANIM_SPRITES_START + 30)
#define ANIM_TAG_BLUE_STAR (ANIM_SPRITES_START + 31)
-#define ANIM_TAG_UNUSED_BUBBLE_BURST (ANIM_SPRITES_START + 32)
+#define ANIM_TAG_BUBBLE_BURST (ANIM_SPRITES_START + 32)
#define ANIM_TAG_FIRE (ANIM_SPRITES_START + 33)
-#define ANIM_TAG_UNUSED_SPINNING_FIRE (ANIM_SPRITES_START + 34)
+#define ANIM_TAG_SPINNING_FIRE (ANIM_SPRITES_START + 34) // unused
#define ANIM_TAG_FIRE_PLUME (ANIM_SPRITES_START + 35)
-#define ANIM_TAG_UNUSED_LIGHTNING (ANIM_SPRITES_START + 36)
+#define ANIM_TAG_LIGHTNING_2 (ANIM_SPRITES_START + 36) // unused
#define ANIM_TAG_LIGHTNING (ANIM_SPRITES_START + 37)
-#define ANIM_TAG_UNUSED_CLAW_SLASH (ANIM_SPRITES_START + 38)
+#define ANIM_TAG_CLAW_SLASH_2 (ANIM_SPRITES_START + 38) // unused
#define ANIM_TAG_CLAW_SLASH (ANIM_SPRITES_START + 39)
-#define ANIM_TAG_UNUSED_SCRATCH (ANIM_SPRITES_START + 40)
-#define ANIM_TAG_UNUSED_SCRATCH_2 (ANIM_SPRITES_START + 41)
-#define ANIM_TAG_UNUSED_BUBBLE_BURST_2 (ANIM_SPRITES_START + 42)
+#define ANIM_TAG_SCRATCH_3 (ANIM_SPRITES_START + 40) // unused
+#define ANIM_TAG_SCRATCH_2 (ANIM_SPRITES_START + 41) // unused
+#define ANIM_TAG_BUBBLE_BURST_2 (ANIM_SPRITES_START + 42) // unused
#define ANIM_TAG_ICE_CHUNK (ANIM_SPRITES_START + 43)
-#define ANIM_TAG_UNUSED_GLASS_2 (ANIM_SPRITES_START + 44)
-#define ANIM_TAG_UNUSED_PINK_HEART (ANIM_SPRITES_START + 45)
-#define ANIM_TAG_UNUSED_SAP_DRIP (ANIM_SPRITES_START + 46)
-#define ANIM_TAG_UNUSED_SAP_DRIP_2 (ANIM_SPRITES_START + 47)
+#define ANIM_TAG_GLASS_2 (ANIM_SPRITES_START + 44) // unused
+#define ANIM_TAG_PINK_HEART_2 (ANIM_SPRITES_START + 45) // unused
+#define ANIM_TAG_SAP_DRIP (ANIM_SPRITES_START + 46) // unused
+#define ANIM_TAG_SAP_DRIP_2 (ANIM_SPRITES_START + 47) // unused
#define ANIM_TAG_SPARKLE_1 (ANIM_SPRITES_START + 48)
#define ANIM_TAG_SPARKLE_2 (ANIM_SPRITES_START + 49)
#define ANIM_TAG_HUMANOID_FOOT (ANIM_SPRITES_START + 50)
-#define ANIM_TAG_UNUSED_MONSTER_FOOT (ANIM_SPRITES_START + 51)
-#define ANIM_TAG_UNUSED_HUMANOID_HAND (ANIM_SPRITES_START + 52)
+#define ANIM_TAG_MONSTER_FOOT (ANIM_SPRITES_START + 51)
+#define ANIM_TAG_HUMANOID_HAND (ANIM_SPRITES_START + 52) // unused
#define ANIM_TAG_NOISE_LINE (ANIM_SPRITES_START + 53)
-#define ANIM_TAG_UNUSED_YELLOW_UNK (ANIM_SPRITES_START + 54)
-#define ANIM_TAG_UNUSED_RED_FIST (ANIM_SPRITES_START + 55)
+#define ANIM_TAG_YELLOW_UNK (ANIM_SPRITES_START + 54) // unused
+#define ANIM_TAG_RED_FIST (ANIM_SPRITES_START + 55) // unused
#define ANIM_TAG_SLAM_HIT (ANIM_SPRITES_START + 56)
-#define ANIM_TAG_UNUSED_RING (ANIM_SPRITES_START + 57)
+#define ANIM_TAG_RING (ANIM_SPRITES_START + 57) // unused
#define ANIM_TAG_ROCKS (ANIM_SPRITES_START + 58)
-#define ANIM_TAG_UNUSED_Z (ANIM_SPRITES_START + 59)
-#define ANIM_TAG_UNUSED_YELLOW_UNK_2 (ANIM_SPRITES_START + 60)
-#define ANIM_TAG_UNUSED_AIR_SLASH (ANIM_SPRITES_START + 61)
-#define ANIM_TAG_UNUSED_SPINNING_GREEN_ORBS (ANIM_SPRITES_START + 62)
+#define ANIM_TAG_Z (ANIM_SPRITES_START + 59) // unused
+#define ANIM_TAG_YELLOW_UNK_2 (ANIM_SPRITES_START + 60) // unused
+#define ANIM_TAG_AIR_SLASH (ANIM_SPRITES_START + 61) // unused
+#define ANIM_TAG_SPINNING_GREEN_ORBS (ANIM_SPRITES_START + 62) // unused
#define ANIM_TAG_LEAF (ANIM_SPRITES_START + 63)
#define ANIM_TAG_FINGER (ANIM_SPRITES_START + 64)
#define ANIM_TAG_POISON_POWDER (ANIM_SPRITES_START + 65)
-#define ANIM_TAG_UNUSED_BROWN_TRIANGLE (ANIM_SPRITES_START + 66)
+#define ANIM_TAG_BROWN_TRIANGLE (ANIM_SPRITES_START + 66) // unused
#define ANIM_TAG_SLEEP_POWDER (ANIM_SPRITES_START + 67)
#define ANIM_TAG_STUN_SPORE (ANIM_SPRITES_START + 68)
-#define ANIM_TAG_UNUSED_POWDER (ANIM_SPRITES_START + 69)
+#define ANIM_TAG_POWDER (ANIM_SPRITES_START + 69) // unused
#define ANIM_TAG_SPARKLE_3 (ANIM_SPRITES_START + 70)
#define ANIM_TAG_SPARKLE_4 (ANIM_SPRITES_START + 71)
#define ANIM_TAG_MUSIC_NOTES (ANIM_SPRITES_START + 72)
#define ANIM_TAG_DUCK (ANIM_SPRITES_START + 73)
#define ANIM_TAG_MUD_SAND (ANIM_SPRITES_START + 74)
#define ANIM_TAG_ALERT (ANIM_SPRITES_START + 75)
-#define ANIM_TAG_UNUSED_BLUE_FLAMES (ANIM_SPRITES_START + 76)
-#define ANIM_TAG_UNUSED_BLUE_FLAMES_2 (ANIM_SPRITES_START + 77)
-#define ANIM_TAG_UNUSED_SHOCK (ANIM_SPRITES_START + 78)
+#define ANIM_TAG_BLUE_FLAMES (ANIM_SPRITES_START + 76) // unused
+#define ANIM_TAG_BLUE_FLAMES_2 (ANIM_SPRITES_START + 77) // unused
+#define ANIM_TAG_SHOCK_4 (ANIM_SPRITES_START + 78) // unused
#define ANIM_TAG_SHOCK (ANIM_SPRITES_START + 79)
-#define ANIM_TAG_UNUSED_BELL (ANIM_SPRITES_START + 80)
-#define ANIM_TAG_UNUSED_PINK_GLOVE (ANIM_SPRITES_START + 81)
-#define ANIM_TAG_UNUSED_BLUE_LINES (ANIM_SPRITES_START + 82)
-#define ANIM_TAG_UNUSED_IMPACT (ANIM_SPRITES_START + 83)
-#define ANIM_TAG_UNUSED_IMPACT_2 (ANIM_SPRITES_START + 84)
-#define ANIM_TAG_UNUSED_RETICLE (ANIM_SPRITES_START + 85)
+#define ANIM_TAG_BELL_2 (ANIM_SPRITES_START + 80) // unused
+#define ANIM_TAG_PINK_GLOVE (ANIM_SPRITES_START + 81) // unused
+#define ANIM_TAG_BLUE_LINES (ANIM_SPRITES_START + 82) // unused
+#define ANIM_TAG_IMPACT_3 (ANIM_SPRITES_START + 83) // unused
+#define ANIM_TAG_IMPACT_2 (ANIM_SPRITES_START + 84) // unused
+#define ANIM_TAG_RETICLE (ANIM_SPRITES_START + 85) // unused
#define ANIM_TAG_BREATH (ANIM_SPRITES_START + 86)
#define ANIM_TAG_ANGER (ANIM_SPRITES_START + 87)
-#define ANIM_TAG_UNUSED_SNOWBALL (ANIM_SPRITES_START + 88)
-#define ANIM_TAG_UNUSED_VINE (ANIM_SPRITES_START + 89)
-#define ANIM_TAG_UNUSED_SWORD (ANIM_SPRITES_START + 90)
-#define ANIM_TAG_UNUSED_CLAPPING (ANIM_SPRITES_START + 91)
-#define ANIM_TAG_UNUSED_RED_TUBE (ANIM_SPRITES_START + 92)
+#define ANIM_TAG_SNOWBALL (ANIM_SPRITES_START + 88) // unused
+#define ANIM_TAG_VINE (ANIM_SPRITES_START + 89) // unused
+#define ANIM_TAG_SWORD_2 (ANIM_SPRITES_START + 90) // unused
+#define ANIM_TAG_CLAPPING (ANIM_SPRITES_START + 91) // unused
+#define ANIM_TAG_RED_TUBE (ANIM_SPRITES_START + 92) // unused
#define ANIM_TAG_AMNESIA (ANIM_SPRITES_START + 93)
-#define ANIM_TAG_UNUSED_STRING (ANIM_SPRITES_START + 94)
-#define ANIM_TAG_UNUSED_PENCIL (ANIM_SPRITES_START + 95)
-#define ANIM_TAG_UNUSED_PETAL (ANIM_SPRITES_START + 96)
+#define ANIM_TAG_STRING_2 (ANIM_SPRITES_START + 94) // unused
+#define ANIM_TAG_PENCIL_2 (ANIM_SPRITES_START + 95) // unused
+#define ANIM_TAG_PETAL (ANIM_SPRITES_START + 96) // unused
#define ANIM_TAG_BENT_SPOON (ANIM_SPRITES_START + 97)
-#define ANIM_TAG_UNUSED_WEB (ANIM_SPRITES_START + 98)
+#define ANIM_TAG_WEB (ANIM_SPRITES_START + 98) // unused
#define ANIM_TAG_MILK_BOTTLE (ANIM_SPRITES_START + 99)
#define ANIM_TAG_COIN (ANIM_SPRITES_START + 100)
-#define ANIM_TAG_UNUSED_CRACKED_EGG (ANIM_SPRITES_START + 101)
-#define ANIM_TAG_UNUSED_HATCHED_EGG (ANIM_SPRITES_START + 102)
-#define ANIM_TAG_UNUSED_FRESH_EGG (ANIM_SPRITES_START + 103)
-#define ANIM_TAG_UNUSED_FANGS (ANIM_SPRITES_START + 104)
-#define ANIM_TAG_UNUSED_EXPLOSION_2 (ANIM_SPRITES_START + 105)
-#define ANIM_TAG_UNUSED_EXPLOSION_3 (ANIM_SPRITES_START + 106)
-#define ANIM_TAG_UNUSED_WATER_DROPLET (ANIM_SPRITES_START + 107)
-#define ANIM_TAG_UNUSED_WATER_DROPLET_2 (ANIM_SPRITES_START + 108)
-#define ANIM_TAG_UNUSED_SEED (ANIM_SPRITES_START + 109)
-#define ANIM_TAG_UNUSED_SPROUT (ANIM_SPRITES_START + 110)
-#define ANIM_TAG_UNUSED_RED_WAND (ANIM_SPRITES_START + 111)
-#define ANIM_TAG_UNUSED_PURPLE_GREEN_UNK (ANIM_SPRITES_START + 112)
-#define ANIM_TAG_UNUSED_WATER_COLUMN (ANIM_SPRITES_START + 113)
-#define ANIM_TAG_UNUSED_MUD_UNK (ANIM_SPRITES_START + 114)
+#define ANIM_TAG_CRACKED_EGG (ANIM_SPRITES_START + 101) // unused
+#define ANIM_TAG_HATCHED_EGG (ANIM_SPRITES_START + 102) // unused
+#define ANIM_TAG_FRESH_EGG (ANIM_SPRITES_START + 103) // unused
+#define ANIM_TAG_FANGS (ANIM_SPRITES_START + 104) // unused
+#define ANIM_TAG_EXPLOSION_2 (ANIM_SPRITES_START + 105) // unused
+#define ANIM_TAG_EXPLOSION_3 (ANIM_SPRITES_START + 106) // unused
+#define ANIM_TAG_WATER_DROPLET (ANIM_SPRITES_START + 107) // unused
+#define ANIM_TAG_WATER_DROPLET_2 (ANIM_SPRITES_START + 108) // unused
+#define ANIM_TAG_SEED_2 (ANIM_SPRITES_START + 109) // unused
+#define ANIM_TAG_SPROUT (ANIM_SPRITES_START + 110) // unused
+#define ANIM_TAG_RED_WAND (ANIM_SPRITES_START + 111) // unused
+#define ANIM_TAG_PURPLE_GREEN_UNK (ANIM_SPRITES_START + 112) // unused
+#define ANIM_TAG_WATER_COLUMN (ANIM_SPRITES_START + 113) // unused
+#define ANIM_TAG_MUD_UNK (ANIM_SPRITES_START + 114) // unused
#define ANIM_TAG_RAIN_DROPS (ANIM_SPRITES_START + 115)
-#define ANIM_TAG_UNUSED_FURY_SWIPES (ANIM_SPRITES_START + 116)
-#define ANIM_TAG_UNUSED_VINE_2 (ANIM_SPRITES_START + 117)
-#define ANIM_TAG_UNUSED_TEETH (ANIM_SPRITES_START + 118)
-#define ANIM_TAG_UNUSED_BONE (ANIM_SPRITES_START + 119)
-#define ANIM_TAG_UNUSED_WHITE_BAG (ANIM_SPRITES_START + 120)
-#define ANIM_TAG_UNUSED_UNKNOWN (ANIM_SPRITES_START + 121)
-#define ANIM_TAG_UNUSED_PURPLE_CORAL (ANIM_SPRITES_START + 122)
-#define ANIM_TAG_UNUSED_PURPLE_DROPLET (ANIM_SPRITES_START + 123)
-#define ANIM_TAG_UNUSED_SHOCK_2 (ANIM_SPRITES_START + 124)
-#define ANIM_TAG_UNUSED_CLOSING_EYE_2 (ANIM_SPRITES_START + 125)
-#define ANIM_TAG_UNUSED_METAL_BALL (ANIM_SPRITES_START + 126)
-#define ANIM_TAG_UNUSED_MONSTER_DOLL (ANIM_SPRITES_START + 127)
-#define ANIM_TAG_UNUSED_WHIRLWIND (ANIM_SPRITES_START + 128)
-#define ANIM_TAG_UNUSED_WHIRLWIND_2 (ANIM_SPRITES_START + 129)
-#define ANIM_TAG_UNUSED_EXPLOSION_4 (ANIM_SPRITES_START + 130)
-#define ANIM_TAG_UNUSED_EXPLOSION_5 (ANIM_SPRITES_START + 131)
-#define ANIM_TAG_UNUSED_TONGUE (ANIM_SPRITES_START + 132)
-#define ANIM_TAG_UNUSED_SMOKE (ANIM_SPRITES_START + 133)
-#define ANIM_TAG_UNUSED_SMOKE_2 (ANIM_SPRITES_START + 134)
+#define ANIM_TAG_FURY_SWIPES (ANIM_SPRITES_START + 116) // unused
+#define ANIM_TAG_VINE_2 (ANIM_SPRITES_START + 117) // unused
+#define ANIM_TAG_TEETH (ANIM_SPRITES_START + 118) // unused
+#define ANIM_TAG_BONE_2 (ANIM_SPRITES_START + 119) // unused
+#define ANIM_TAG_WHITE_BAG (ANIM_SPRITES_START + 120) // unused
+#define ANIM_TAG_UNKNOWN (ANIM_SPRITES_START + 121) // unused
+#define ANIM_TAG_PURPLE_CORAL (ANIM_SPRITES_START + 122) // unused
+#define ANIM_TAG_PURPLE_DROPLET (ANIM_SPRITES_START + 123) // unused
+#define ANIM_TAG_SHOCK_2 (ANIM_SPRITES_START + 124) // unused
+#define ANIM_TAG_CLOSING_EYE_2 (ANIM_SPRITES_START + 125) // unused
+#define ANIM_TAG_METAL_BALL (ANIM_SPRITES_START + 126) // unused
+#define ANIM_TAG_MONSTER_DOLL (ANIM_SPRITES_START + 127) // unused
+#define ANIM_TAG_WHIRLWIND (ANIM_SPRITES_START + 128) // unused
+#define ANIM_TAG_WHIRLWIND_2 (ANIM_SPRITES_START + 129) // unused
+#define ANIM_TAG_EXPLOSION_4 (ANIM_SPRITES_START + 130) // unused
+#define ANIM_TAG_EXPLOSION_5 (ANIM_SPRITES_START + 131) // unused
+#define ANIM_TAG_TONGUE (ANIM_SPRITES_START + 132) // unused
+#define ANIM_TAG_SMOKE (ANIM_SPRITES_START + 133) // unused
+#define ANIM_TAG_SMOKE_2 (ANIM_SPRITES_START + 134) // unused
#define ANIM_TAG_IMPACT (ANIM_SPRITES_START + 135)
#define ANIM_TAG_CIRCLE_IMPACT (ANIM_SPRITES_START + 136)
#define ANIM_TAG_SCRATCH (ANIM_SPRITES_START + 137)
@@ -185,11 +185,11 @@
#define ANIM_TAG_LARGE_FRESH_EGG (ANIM_SPRITES_START + 175)
#define ANIM_TAG_SHADOW_BALL (ANIM_SPRITES_START + 176)
#define ANIM_TAG_LICK (ANIM_SPRITES_START + 177)
-#define ANIM_TAG_UNUSED_VOID_LINES (ANIM_SPRITES_START + 178)
+#define ANIM_TAG_VOID_LINES (ANIM_SPRITES_START + 178)
#define ANIM_TAG_STRING (ANIM_SPRITES_START + 179)
#define ANIM_TAG_WEB_THREAD (ANIM_SPRITES_START + 180)
#define ANIM_TAG_SPIDER_WEB (ANIM_SPRITES_START + 181)
-#define ANIM_TAG_UNUSED_LIGHTBULB (ANIM_SPRITES_START + 182)
+#define ANIM_TAG_LIGHTBULB (ANIM_SPRITES_START + 182) // unused
#define ANIM_TAG_SLASH (ANIM_SPRITES_START + 183)
#define ANIM_TAG_FOCUS_ENERGY (ANIM_SPRITES_START + 184)
#define ANIM_TAG_SPHERE_TO_CUBE (ANIM_SPRITES_START + 185)
@@ -211,7 +211,7 @@
#define ANIM_TAG_WARM_ROCK (ANIM_SPRITES_START + 201)
#define ANIM_TAG_BREAKING_EGG (ANIM_SPRITES_START + 202)
#define ANIM_TAG_THIN_RING (ANIM_SPRITES_START + 203)
-#define ANIM_TAG_UNUSED_PUNCH_IMPACT (ANIM_SPRITES_START + 204)
+#define ANIM_TAG_PUNCH_IMPACT (ANIM_SPRITES_START + 204) // unused
#define ANIM_TAG_BELL (ANIM_SPRITES_START + 205)
#define ANIM_TAG_MUSIC_NOTES_2 (ANIM_SPRITES_START + 206)
#define ANIM_TAG_SPEED_DUST (ANIM_SPRITES_START + 207)
@@ -276,17 +276,17 @@
#define ANIM_TAG_GREEN_SPIKE (ANIM_SPRITES_START + 266)
#define ANIM_TAG_WHITE_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 267)
#define ANIM_TAG_GLOWY_BLUE_ORB (ANIM_SPRITES_START + 268)
-#define ANIM_TAG_UNUSED_RED_BRICK (ANIM_SPRITES_START + 269)
+#define ANIM_TAG_RED_BRICK (ANIM_SPRITES_START + 269)
#define ANIM_TAG_WHITE_FEATHER (ANIM_SPRITES_START + 270)
#define ANIM_TAG_SPARKLE_6 (ANIM_SPRITES_START + 271)
#define ANIM_TAG_SPLASH (ANIM_SPRITES_START + 272)
#define ANIM_TAG_SWEAT_BEAD (ANIM_SPRITES_START + 273)
-#define ANIM_TAG_UNUSED_GEM_1 (ANIM_SPRITES_START + 274)
-#define ANIM_TAG_UNUSED_GEM_2 (ANIM_SPRITES_START + 275)
-#define ANIM_TAG_UNUSED_GEM_3 (ANIM_SPRITES_START + 276)
+#define ANIM_TAG_GEM_1 (ANIM_SPRITES_START + 274) // unused
+#define ANIM_TAG_GEM_2 (ANIM_SPRITES_START + 275) // unused
+#define ANIM_TAG_GEM_3 (ANIM_SPRITES_START + 276) // unused
#define ANIM_TAG_SLAM_HIT_2 (ANIM_SPRITES_START + 277)
#define ANIM_TAG_RECYCLE (ANIM_SPRITES_START + 278)
-#define ANIM_TAG_UNUSED_RED_PARTICLES (ANIM_SPRITES_START + 279)
+#define ANIM_TAG_RED_PARTICLES (ANIM_SPRITES_START + 279) // unused
#define ANIM_TAG_PROTECT (ANIM_SPRITES_START + 280)
#define ANIM_TAG_DIRT_MOUND (ANIM_SPRITES_START + 281)
#define ANIM_TAG_SHOCK_3 (ANIM_SPRITES_START + 282)
@@ -313,7 +313,7 @@
// . .
// . .
// 127
-//
+//
#define SOUND_PAN_ATTACKER -64
#define SOUND_PAN_TARGET 63
@@ -335,10 +335,10 @@
#define BG_GUILLOTINE_CONTESTS 14
#define BG_ICE 15
#define BG_COSMIC 16
-#define BG_SEISMICTOSS_SKUUPPERCUT 17
-#define BG_FLYING 18
-#define BG_FLYING_CONTESTS 19
-#define BG_AURORABEAM 20
+#define BG_IN_AIR 17
+#define BG_SKY 18
+#define BG_SKY_CONTESTS 19
+#define BG_AURORA 20
#define BG_FISSURE 21
#define BG_BUG_OPPONENT 22
#define BG_BUG_PLAYER 23
@@ -411,32 +411,32 @@
#define ANIM_WEATHER_HAIL 4
// Battle mon back animations.
-#define BACK_ANIM_NONE 0x00
-#define BACK_ANIM_H_SLIDE_QUICK 0x01
-#define BACK_ANIM_H_SLIDE 0x02
-#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1 0x03
-#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2 0x04
-#define BACK_ANIM_SHRINK_GROW_1 0x05
-#define BACK_ANIM_GROW_1 0x06
-#define BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE 0x07
-#define BACK_ANIM_HORIZONTAL_SHAKE 0x08
-#define BACK_ANIM_VERTICAL_SHAKE 0x09
-#define BACK_ANIM_V_SHAKE_WITH_H_SLIDE 0x0a
-#define BACK_ANIM_VERTICAL_STRETCH 0x0b
-#define BACK_ANIM_HORIZONTAL_STRETCH 0x0c
-#define BACK_ANIM_GROW_2 0x0d
-#define BACK_ANIM_V_SHAKE_WITH_PAUSE 0x0e
-#define BACK_ANIM_CIRCLE_MOVE_CLOCKWISE 0x0f
-#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL 0x10
-#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE 0x11
-#define BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE 0x12
-#define BACK_ANIM_DIP_RIGHT_SIDE 0x13
-#define BACK_ANIM_SHRINK_GROW_2 0x14
-#define BACK_ANIM_JOLT_RIGHT 0x15
-#define BACK_ANIM_FLASH_YELLOW_WITH_SHAKE 0x16
-#define BACK_ANIM_FADE_RED_WITH_SHAKE 0x17
-#define BACK_ANIM_FADE_GREEN_WITH_SHAKE 0x18
-#define BACK_ANIM_FADE_BLUE_WITH_SHAKE 0x19
+#define BACK_ANIM_NONE 0x00
+#define BACK_ANIM_H_SLIDE_QUICK 0x01
+#define BACK_ANIM_H_SLIDE 0x02
+#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1 0x03
+#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2 0x04
+#define BACK_ANIM_SHRINK_GROW_1 0x05
+#define BACK_ANIM_GROW_1 0x06
+#define BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE 0x07
+#define BACK_ANIM_HORIZONTAL_SHAKE 0x08
+#define BACK_ANIM_VERTICAL_SHAKE 0x09
+#define BACK_ANIM_V_SHAKE_WITH_H_SLIDE 0x0a
+#define BACK_ANIM_VERTICAL_STRETCH 0x0b
+#define BACK_ANIM_HORIZONTAL_STRETCH 0x0c
+#define BACK_ANIM_GROW_2 0x0d
+#define BACK_ANIM_V_SHAKE_WITH_PAUSE 0x0e
+#define BACK_ANIM_CIRCLE_MOVE_CLOCKWISE 0x0f
+#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL 0x10
+#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE 0x11
+#define BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE 0x12
+#define BACK_ANIM_DIP_RIGHT_SIDE 0x13
+#define BACK_ANIM_SHRINK_GROW_2 0x14
+#define BACK_ANIM_JOLT_RIGHT 0x15
+#define BACK_ANIM_FLASH_YELLOW_WITH_SHAKE 0x16
+#define BACK_ANIM_FADE_RED_WITH_SHAKE 0x17
+#define BACK_ANIM_FADE_GREEN_WITH_SHAKE 0x18
+#define BACK_ANIM_FADE_BLUE_WITH_SHAKE 0x19
#endif // GUARD_CONSTANTS_BATTLE_ANIM_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/event_object_movement_constants.h b/include/constants/event_object_movement_constants.h
index 2a80f9a09..b1f9b4cb5 100755
--- a/include/constants/event_object_movement_constants.h
+++ b/include/constants/event_object_movement_constants.h
@@ -242,4 +242,6 @@
#define MOVEMENT_ACTION_FLY_UP 0x9C
#define MOVEMENT_ACTION_FLY_DOWN 0x9D
+#define MOVEMENT_ACTION_STEP_END 0xFE
+
#endif // GUARD_CONSTANTS_EVENTOBJMV_H
diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h
index 9973477da..07ed2d40c 100644
--- a/include/constants/event_objects.h
+++ b/include/constants/event_objects.h
@@ -274,6 +274,8 @@
#define TRACKS_FOOT 1
#define TRACKS_BIKE_TIRE 2
+#define FIRST_DECORATION_SPRITE_GFX EVENT_OBJ_GFX_PICHU_DOLL
+
#define EVENT_OBJ_ID_PLAYER 0xFF
#define EVENT_OBJ_ID_CAMERA 0x7F
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 230fbabaf..c56e9013d 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -287,7 +287,7 @@
#define FLAG_RECEIVED_TM41 0x109
#define FLAG_RECEIVED_LAVARIDGE_EGG 0x10A
#define FLAG_RECEIVED_REVIVED_FOSSIL_MON 0x10B
-#define FLAG_DECORATION_16 0x10C
+#define FLAG_SECRET_BASE_REGISTRY_ENABLED 0x10C
#define FLAG_RECEIVED_TM46 0x10D
#define FLAG_CONTEST_SKETCH_CREATED 0x10E
#define FLAG_EVIL_TEAM_ESCAPED_STERN_SPOKE 0x10F
@@ -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
@@ -446,13 +445,14 @@
#define FLAG_REMATCH_NORMAN 0x1A2
#define FLAG_REMATCH_WINONA 0x1A3
#define FLAG_REMATCH_TATE_AND_LIZA 0x1A4
-#define FLAG_REMATCH_JUAN 0x1A5
-#define FLAG_REMATCH_SIDNEY 0x1A6
-#define FLAG_REMATCH_PHOEBE 0x1A7
-#define FLAG_REMATCH_GLACIA 0x1A8
-#define FLAG_REMATCH_DRAKE 0x1A9
-#define FLAG_REMATCH_WALLACE 0x1AA
-
+// Note: FLAG_REMATCH_JUAN is handled by FLAG_ENABLE_JUAN_MATCH_CALL instead.
+#define FLAG_REMATCH_SIDNEY 0x1A5
+#define FLAG_REMATCH_PHOEBE 0x1A6
+#define FLAG_REMATCH_GLACIA 0x1A7
+#define FLAG_REMATCH_DRAKE 0x1A8
+#define FLAG_REMATCH_WALLACE 0x1A9
+
+#define FLAG_UNUSED_0x1AA 0x1AA // Unused Flag
#define FLAG_UNUSED_0x1AB 0x1AB // Unused Flag
#define FLAG_DEFEATED_DEOXYS 0x1AC
diff --git a/include/constants/game_stat.h b/include/constants/game_stat.h
index 7ebf3501b..e302f1345 100644
--- a/include/constants/game_stat.h
+++ b/include/constants/game_stat.h
@@ -51,7 +51,7 @@
#define GAME_STAT_USED_DAYCARE 47
#define GAME_STAT_RODE_CABLE_CAR 48
#define GAME_STAT_ENTERED_HOT_SPRINGS 49
-#define GAME_STAT_50 50
+#define GAME_STAT_NUM_UNION_ROOM_BATTLES 50
#define GAME_STAT_51 51
#define NUM_USED_GAME_STATS 52
diff --git a/include/constants/maps.h b/include/constants/maps.h
index e1e2da992..b849749a9 100644
--- a/include/constants/maps.h
+++ b/include/constants/maps.h
@@ -9,4 +9,10 @@
#define MAP_GROUP(map) (MAP_##map >> 8)
#define MAP_NUM(map) (MAP_##map & 0xFF)
+// These groups are used by pokedex_area_screen.c to find wild
+// pokemon locations.
+#define MAP_GROUP_OVERWORLD_MONS MAP_GROUP(PETALBURG_CITY)
+#define MAP_GROUP_SPECIAL_MONS_1 MAP_GROUP(METEOR_FALLS_1F_1R)
+#define MAP_GROUP_SPECIAL_MONS_2 MAP_GROUP(SAFARI_ZONE_NORTHWEST)
+
#endif // GUARD_CONSTANTS_MAPS_H
diff --git a/include/constants/metatile_behaviors.h b/include/constants/metatile_behaviors.h
index d8d75066c..44bbd9729 100755
--- a/include/constants/metatile_behaviors.h
+++ b/include/constants/metatile_behaviors.h
@@ -182,7 +182,7 @@
#define MB_SECRET_BASE_UNUSED 0xB2
#define MB_BLOCK_DECORATION 0xB3
#define MB_SECRET_BASE_DECORATION 0xB4
-#define MB_SECRET_BASE_LARGE_MAT_EDGE 0xB5
+#define MB_HOLDS_SMALL_DECORATION 0xB5
#define MB_UNUSED_B6 0xB6
#define MB_SECRET_BASE_NORTH_WALL 0xB7
#define MB_SECRET_BASE_BALLOON 0xB8
@@ -196,7 +196,7 @@
#define MB_IMPASSABLE_SOUTH_AND_NORTH 0xC0
#define MB_IMPASSABLE_WEST_AND_EAST 0xC1
#define MB_SECRET_BASE_HOLE 0xC2
-#define MB_LARGE_MAT_CENTER 0xC3
+#define MB_HOLDS_LARGE_DECORATION 0xC3
#define MB_SECRET_BASE_TV_SHIELD 0xC4
#define MB_PLAYER_ROOM_PC_ON 0xC5
#define MB_C6 0xC6
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..6fd1c16dd 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -1,8 +1,6 @@
#ifndef GUARD_CONSTANTS_VARS_H
#define GUARD_CONSTANTS_VARS_H
-#define UNKNOWN_VAR_OFFSET_3F20 0x3F20
-
#define VARS_START 0x4000
// temporary vars
@@ -60,7 +58,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 +72,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 +82,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.h b/include/contest.h
index 8146486cb..a0b1a6b34 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -196,19 +196,33 @@ enum
CONTEST_STRING_NONE = 255
};
+enum {
+ CONTEST_RANK_NORMAL,
+ CONTEST_RANK_SUPER,
+ CONTEST_RANK_HYPER,
+ CONTEST_RANK_MASTER,
+ CONTEST_RANK_LINK
+};
+
+enum {
+ CONTEST_FILTER_NONE,
+ CONTEST_FILTER_NO_POSTGAME,
+ CONTEST_FILTER_ONLY_POSTGAME
+};
+
struct ContestPokemon
{
/*0x00*/ u16 species;
/*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
- /*0x0D*/ u8 trainerName[8];
+ /*0x0D*/ u8 trainerName[PLAYER_NAME_LENGTH + 1];
/*0x15*/ u8 trainerGfxId;
/*0x18*/ u32 flags;
- /*0x1C*/ u8 whichRank:2;
- u8 aiPool_Cool:1;
- u8 aiPool_Beauty:1;
- u8 aiPool_Cute:1;
- u8 aiPool_Smart:1;
- u8 aiPool_Tough:1;
+ /*0x1C*/ u8 whichRank:2; // 0x1 0x2
+ u8 aiPool_Cool:1; // 0x4
+ u8 aiPool_Beauty:1; // 0x8
+ u8 aiPool_Cute:1; // 0x10
+ u8 aiPool_Smart:1; // 0x20
+ u8 aiPool_Tough:1; // 0x40
/*0x1E*/ u16 moves[4]; // moves
/*0x26*/ u8 cool; // cool
/*0x27*/ u8 beauty; // beauty
@@ -219,7 +233,7 @@ struct ContestPokemon
/*0x2C*/ u8 unk2C[12];
/*0x38*/ u32 personality; // personality
/*0x3C*/ u32 otId; // otId
-}; // wow
+};
struct Shared18000
{
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/data.h b/include/data.h
new file mode 100644
index 000000000..f1a4caa6a
--- /dev/null
+++ b/include/data.h
@@ -0,0 +1,119 @@
+#ifndef GUARD_DATA_H
+#define GUARD_DATA_H
+
+#include "constants/moves.h"
+#include "constants/species.h"
+
+#define SPECIES_SHINY_TAG 500
+
+struct MonCoords
+{
+ // This would use a bitfield, but some function
+ // uses it as a u8 and casting won't match.
+ u8 size; // u8 width:4, height:4;
+ u8 y_offset;
+};
+
+struct TrainerMonNoItemDefaultMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+};
+
+struct TrainerMonItemDefaultMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+ u16 heldItem;
+};
+
+struct TrainerMonNoItemCustomMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+ u16 moves[4];
+};
+
+struct TrainerMonItemCustomMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+ u16 heldItem;
+ u16 moves[4];
+};
+
+union TrainerMonPtr
+{
+ const struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
+ const struct TrainerMonNoItemCustomMoves *NoItemCustomMoves;
+ const struct TrainerMonItemDefaultMoves *ItemDefaultMoves;
+ const struct TrainerMonItemCustomMoves *ItemCustomMoves;
+};
+
+struct Trainer
+{
+ /*0x00*/ u8 partyFlags;
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u8 encounterMusic_gender; // last bit is gender
+ /*0x03*/ u8 trainerPic;
+ /*0x04*/ u8 trainerName[12];
+ /*0x10*/ u16 items[4];
+ /*0x18*/ bool8 doubleBattle;
+ /*0x1C*/ u32 aiFlags;
+ /*0x20*/ u8 partySize;
+ /*0x24*/ union TrainerMonPtr party;
+};
+
+#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
+
+extern const u16 gUnknown_082FF1D8[];
+extern const u32 gUnknown_082FF1F8[];
+
+extern const struct SpriteFrameImage gUnknown_082FF3A8[];
+extern const struct SpriteFrameImage gUnknown_082FF3C8[];
+extern const struct SpriteFrameImage gUnknown_082FF3E8[];
+extern const struct SpriteFrameImage gUnknown_082FF408[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Brendan[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_May[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Red[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Leaf[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Wally[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Steven[];
+
+extern const union AffineAnimCmd *const gUnknown_082FF618[];
+extern const union AffineAnimCmd *const gUnknown_082FF694[];
+extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
+
+extern const union AnimCmd *const gUnknown_082FF70C[];
+extern const struct MonCoords gMonFrontPicCoords[];
+extern const struct CompressedSpriteSheet gMonStillFrontPicTable[];
+extern const struct MonCoords gMonBackPicCoords[];
+extern const struct CompressedSpriteSheet gMonBackPicTable[];
+extern const struct CompressedSpritePalette gMonPaletteTable[];
+extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
+extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
+extern const struct MonCoords gTrainerFrontPicCoords[];
+extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
+extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
+extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[];
+extern const struct MonCoords gTrainerBackPicCoords[];
+extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; // functionally unused
+extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
+
+extern const u8 gEnemyMonElevation[NUM_SPECIES];
+
+extern const union AnimCmd *const *const gMonFrontAnimsPtrTable[];
+extern const struct CompressedSpriteSheet gMonFrontPicTable[];
+
+extern const struct Trainer gTrainers[];
+extern const u8 gTrainerClassNames[][13];
+extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
+extern const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1];
+
+#endif // GUARD_DATA_H
diff --git a/include/data2.h b/include/data2.h
deleted file mode 100644
index c1a2608ae..000000000
--- a/include/data2.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef GUARD_DATA2_H
-#define GUARD_DATA2_H
-
-struct MonCoords
-{
- // This would use a bitfield, but some function
- // uses it as a u8 and casting won't match.
- u8 size; // u8 width:4, height:4;
- u8 y_offset;
-};
-
-extern const struct MonCoords gTrainerBackPicCoords[];
-extern const struct MonCoords gTrainerFrontPicCoords[];
-
-extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
-extern const u8 gMoveNames[][MOVE_NAME_LENGTH + 1];
-extern struct CompressedSpriteSheet gUnknown_0831C620;
-extern struct CompressedSpritePalette gUnknown_0831C628;
-extern const struct SpriteTemplate gUnknown_0831C688;
-extern const struct CompressedSpriteSheet gMonBackPicTable[];
-
-#endif // GUARD_DATA2_H
diff --git a/include/decoration.h b/include/decoration.h
index f613c25d2..eed930356 100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -1,7 +1,8 @@
#ifndef GUARD_DECORATION_H
#define GUARD_DECORATION_H
-enum DecorPerm {
+enum DecorationPermission
+{
/*
* The nomenclature here describes collision and placement permissions, in that order.
*/
@@ -9,13 +10,11 @@ enum DecorPerm {
DECORPERM_PASS_FLOOR,
DECORPERM_BEHIND_FLOOR,
DECORPERM_NA_WALL,
- DECORPERM_SOLID_MAT
+ DECORPERM_SPRITE,
};
-enum DecorShape {
- /*
- * Width-x-height
- */
+enum DecorationShape
+{
DECORSHAPE_1x1,
DECORSHAPE_2x1,
DECORSHAPE_3x1, // unused
@@ -25,53 +24,52 @@ enum DecorShape {
DECORSHAPE_1x3, // unused
DECORSHAPE_2x4,
DECORSHAPE_3x3,
- DECORSHAPE_3x2
+ DECORSHAPE_3x2,
};
-enum DecorCat {
- /*
- * In which category you can find the decoration in the PC.
- */
- /*0*/ DECORCAT_DESK,
- /*1*/ DECORCAT_CHAIR,
- /*2*/ DECORCAT_PLANT,
- /*3*/ DECORCAT_ORNAMENT,
- /*4*/ DECORCAT_MAT,
- /*5*/ DECORCAT_POSTER,
- /*6*/ DECORCAT_DOLL,
- /*7*/ DECORCAT_CUSHION
+enum DecorationCategory
+{
+ DECORCAT_DESK,
+ DECORCAT_CHAIR,
+ DECORCAT_PLANT,
+ DECORCAT_ORNAMENT,
+ DECORCAT_MAT,
+ DECORCAT_POSTER,
+ DECORCAT_DOLL,
+ DECORCAT_CUSHION,
+ DECORCAT_COUNT,
};
struct Decoration
{
- /*0x00*/ u8 id;
- /*0x01*/ u8 name[16];
- /*0x11*/ u8 permission;
- /*0x12*/ u8 shape;
- /*0x13*/ u8 category;
- /*0x14*/ u16 price;
- /*0x18*/ const u8 *description;
- /*0x1c*/ const u16 *tiles;
+ u8 id;
+ u8 name[16];
+ u8 permission;
+ u8 shape;
+ u8 category;
+ u16 price;
+ const u8 *description;
+ const u16 *tiles;
};
-struct DecorPCPointers
+struct DecorationPCContext
{
- /* 0x00 */ u8 *items;
- /* 0x04 */ u8 *pos;
- /* 0x08 */ u8 size;
- /* 0x09 */ u8 isPlayerRoom;
+ u8 *items;
+ u8 *pos;
+ u8 size;
+ u8 isPlayerRoom;
};
extern const struct Decoration gDecorations[];
-extern EWRAM_DATA u8 *gCurDecorInventoryItems;
+extern EWRAM_DATA u8 *gCurDecorationItems;
extern EWRAM_DATA u8 gCurDecorationIndex;
-void sub_8126968(void);
-void sub_8126AD8(u8 taskId);
-void sub_8127D38(u16 mapX, u16 mapY, u16 decor);
-void sub_8126B2C(u8 taskId);
-void sub_8127208(u8 taskId);
-void sub_8127250(u8 *dest, u8 decorCat);
+void InitDecorationContextItems(void);
+void DoSecretBaseDecorationMenu(u8 taskId);
+void ShowDecorationOnMap(u16 mapX, u16 mapY, u16 decor);
+void DoPlayerRoomDecorationMenu(u8 taskId);
+void ShowDecorationCategoriesWindow(u8 taskId);
+void CopyDecorationCategoryName(u8 *dest, u8 decorCat);
bool8 IsSelectedDecorInThePC(void);
u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u16 paletteTag);
diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h
index 7539f7240..7362c2da2 100644
--- a/include/decoration_inventory.h
+++ b/include/decoration_inventory.h
@@ -11,13 +11,13 @@ extern struct DecorationInventory gDecorationInventories[];
void SetDecorationInventoriesPointers(void);
void ClearDecorationInventories(void);
-s8 GetFirstEmptyDecorSlot(u8 idx);
+s8 GetFirstEmptyDecorSlot(u8 category);
u8 CheckHasDecoration(u8);
u8 DecorationAdd(u8);
u8 DecorationCheckSpace(u8);
s8 DecorationRemove(u8);
-void CondenseDecorationCategoryN(u8);
-u8 CountDecorationCategoryN(u8 idx);
-u8 CountDecorations(void);
+void CondenseDecorationsInCategory(u8 category);
+u8 GetNumOwnedDecorationsInCategory(u8 category);
+u8 GetNumOwnedDecorations(void);
#endif // GUARD_DECORATION_INVENTORY_H
diff --git a/include/ereader_helpers.h b/include/ereader_helpers.h
new file mode 100755
index 000000000..bcbb68d4f
--- /dev/null
+++ b/include/ereader_helpers.h
@@ -0,0 +1,51 @@
+#ifndef GUARD_EREADER_HELPERS_H
+#define GUARD_EREADER_HELPERS_H
+
+struct Unk81D38FC
+{
+ u8 unk0;
+ u8 filler_1[3];
+ u8 unk4[0x148];
+ u8 unk14C[0x124];
+ int checksum;
+};
+
+struct EReaderTrainerHillSet
+{
+ u8 unk_0;
+ u8 unk_1;
+ u8 unk_2;
+ u8 unk_3;
+ int checksum;
+ struct Unk81D38FC unk_8[6];
+ u8 unk_ec0[40];
+};
+
+struct Unk81D3998Sub
+{
+ u8 unk_000[4];
+ u8 unk_004[0x148];
+ u8 unk_14C[0x148];
+ u8 unk_294[0x124];
+};
+
+struct Unk81D3998
+{
+ u8 unk_000;
+ u8 unk_001;
+ u8 unk_002;
+ int checksum;
+ struct Unk81D3998Sub unk_008[4];
+};
+
+bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer);
+bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0);
+bool32 ReadTrainerHillAndValidate(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..1daea4be0
--- /dev/null
+++ b/include/ereader_screen.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_EREADER_SCREEN_H
+#define GUARD_EREADER_SCREEN_H
+
+void task_add_00_ereader(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_object_movement.h b/include/event_object_movement.h
index 63ac09f2d..4f3f99cd1 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -74,10 +74,10 @@ u8 GetFirstInactiveEventObjectId(void);
void RemoveEventObjectByLocalIdAndMap(u8, u8, u8);
void LoadPlayerObjectReflectionPalette(u16, u8);
void LoadSpecialObjectReflectionPalette(u16, u8);
-void sub_808EBA8(u8, u8, u8, s16, s16);
+void TryMoveEventObjectToMapCoords(u8, u8, u8, s16, s16);
void PatchObjectPalette(u16, u8);
void sub_808E16C(s16, s16);
-void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat);
+void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat);
void sub_8092FF0(s16, s16, s16 *, s16 *);
u8 GetFaceDirectionAnimNum(u8);
void sub_80930E0(s16 *, s16 *, s16, s16);
@@ -86,10 +86,10 @@ void EventObjectClearHeldMovementIfActive(struct EventObject *);
void TrySpawnEventObjects(s16, s16);
u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction);
u8 AddPseudoEventObject(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority);
-u8 show_sprite(u8, u8, u8);
+u8 TrySpawnEventObject(u8, u8, u8);
u8 SpawnSpecialEventObjectParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z);
u8 SpawnSpecialEventObject(struct EventObjectTemplate *);
-void sub_8093038(s16, s16, s16 *, s16 *);
+void SetSpritePosToMapCoords(s16, s16, s16 *, s16 *);
void CameraObjectReset1(void);
void EventObjectSetGraphicsId(struct EventObject *, u8 graphicsId);
void EventObjectTurn(struct EventObject *, u8);
@@ -103,8 +103,8 @@ void sub_808E78C(u8, u8, u8, u8);
void sub_808E75C(s16, s16);
void EventObjectGetLocalIdAndMap(struct EventObject *eventObject, void *localId, void *mapNum, void *mapGroup);
void ShiftEventObjectCoords(struct EventObject *, s16, s16);
-void sub_808EB08(struct EventObject *, s16, s16);
-void sub_808F254(u8, u8, u8);
+void MoveEventObjectToMapCoords(struct EventObject *, s16, s16);
+void TryOverrideEventObjectTemplateCoords(u8, u8, u8);
void InitEventObjectPalettes(u8 palSlot);
void UpdateEventObjectCurrentMovement(struct EventObject *, struct Sprite *, bool8(struct EventObject *, struct Sprite *));
u8 EventObjectFaceOppositeDirection(struct EventObject *, u8);
@@ -413,5 +413,10 @@ u8 MovementType_RunInPlace_Step0(struct EventObject *, struct Sprite *);
u8 MovementType_Invisible_Step0(struct EventObject *, struct Sprite *);
u8 MovementType_Invisible_Step1(struct EventObject *, struct Sprite *);
u8 MovementType_Invisible_Step2(struct EventObject *, struct Sprite *);
+void sub_8097C44(u8 var, bool32 var2);
+bool32 sub_8097C8C(u8 var);
+void sub_8097BB4(u8 var1, u8 graphicsId);
+void sub_8097CC4(u8 var1, u8 var2);
+bool32 sub_8097D9C(u8 var);
#endif //GUARD_FIELD_EVENT_OBJ_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index e3ec8afb4..da96d29d8 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -15,8 +15,8 @@ extern const u8 EventScript_TryDoDoubleTrainerBattle[];
extern const u8 EventScript_TryDoNormalTrainerBattle[];
extern const u8 EventScript_TryDoDoubleRematchBattle[];
extern const u8 EventScript_TryDoRematchBattle[];
-extern const u8 EventScript_SecretPower1[];
-extern const u8 EventScript_SecretPower2[];
+extern const u8 SecretBase_EventScript_DollInteract[];
+extern const u8 SecretBase_EventScript_CushionInteract[];
extern const u8 gTVBravoTrainerText00[];
@@ -381,10 +381,10 @@ extern const u8 SecretBase_RedCave1_Text_2758CC[];
extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88[];
//field effects
-extern const u8 FieryPath_EventScript_2908FD[];
-extern const u8 EventScript_290CAE[];
+extern const u8 EventScript_FldEffStrength[];
+extern const u8 EventScript_FailSweetScent[];
extern const u8 EventScript_2926F8[];
-extern const u8 Route111_EventScript_2907F0[];
+extern const u8 EventScript_FldEffRockSmash[];
//player pc
extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_1F863F[];
@@ -528,8 +528,6 @@ extern const u8 EventScript_PlayerPCMale[];
extern const u8 EventScript_PlayerPCFemale[];
extern const u8 EventScript_SecretBasePC[];
extern const u8 EventScript_RecordMixingSecretBasePC[];
-extern const u8 EventScript_SecretPower1[];
-extern const u8 EventScript_SecretPower2[];
extern const u8 EventScript_PC[];
extern const u8 EventScript_TestSignpostMsg[];
extern const u8 EventScript_HiddenItemScript[];
@@ -544,9 +542,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..4946bda8a
--- /dev/null
+++ b/include/faraway_island.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_FARAWAY_ISLAND_H
+#define GUARD_FARAWAY_ISLAND_H
+
+u32 GetMewMoveDirection(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_effect.h b/include/field_effect.h
index 1f5f4ee29..0dbe600d3 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -1,9 +1,7 @@
#ifndef GUARD_FIELD_EFFECTS_H
#define GUARD_FIELD_EFFECTS_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;
@@ -53,4 +51,4 @@ void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId);
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority);
void StartEscapeRopeFieldEffect(void);
-#endif //GUARD_FIELD_EFFECTS_H
+#endif // GUARD_FIELD_EFFECTS_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index ca3d41546..8d87779e6 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -1,17 +1,6 @@
#ifndef GUARD_FIELD_PLAYER_AVATAR_H
#define GUARD_FIELD_PLAYER_AVATAR_H
-enum {
- PLAYER_AVATAR_STATE_NORMAL,
- PLAYER_AVATAR_STATE_MACH_BIKE,
- PLAYER_AVATAR_STATE_ACRO_BIKE,
- PLAYER_AVATAR_STATE_SURFING,
- PLAYER_AVATAR_STATE_UNDERWATER,
- PLAYER_AVATAR_STATE_FIELD_MOVE,
- PLAYER_AVATAR_STATE_FISHING,
- PLAYER_AVATAR_STATE_WATERING,
-};
-
void player_step(u8 a, u16 b, u16 c);
void ClearPlayerAvatarInfo(void);
void SetPlayerAvatarExtraStateTransition(u8, u8);
@@ -73,5 +62,6 @@ void sub_808D1C8(void);
bool32 sub_808D1B4(void);
bool32 sub_808D1E8(void);
void sub_808C0A8(u8 a);
+u8 player_get_pos_including_state_based_drift(s16 *x, s16 *y);
#endif // GUARD_FIELD_PLAYER_AVATAR_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/field_specials.h b/include/field_specials.h
index 68b233074..b1a50c811 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -1,6 +1,9 @@
#ifndef GUARD_FIELD_SPECIALS_H
#define GUARD_FIELD_SPECIALS_H
+extern bool8 gBikeCyclingChallenge;
+extern u8 gBikeCollisions;
+
u8 GetLeadMonIndex(void);
u8 sub_813B260(void);
u16 get_unknown_box_id(void);
diff --git a/include/field_weather.h b/include/field_weather.h
index 76399200d..3a84a8a73 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -3,6 +3,14 @@
#include "sprite.h"
+#define MAX_RAIN_SPRITES 24
+#define NUM_CLOUD_SPRITES 3
+#define NUM_FOG1_SPRITES 20
+#define NUM_ASH_SPRITES 20
+#define NUM_FOG2_SPRITES 20
+#define NUM_SANDSTORM_SPRITES 20
+#define NUM_SWIRL_SANDSTORM_SPRITES 5
+
// Controls how the weather should be changing the screen palettes.
enum
{
@@ -27,18 +35,18 @@ struct Weather
{
struct
{
- struct Sprite *rainSprites[24];
+ struct Sprite *rainSprites[MAX_RAIN_SPRITES];
struct Sprite *snowflakeSprites[101];
- struct Sprite *cloudSprites[3];
+ struct Sprite *cloudSprites[NUM_CLOUD_SPRITES];
} s1;
struct
{
u8 filler0[0xA0];
- struct Sprite *fog1Sprites[20];
- struct Sprite *ashSprites[20];
- struct Sprite *fog2Sprites[20];
- struct Sprite *sandstormSprites1[20];
- struct Sprite *sandstormSprites2[5];
+ struct Sprite *fog1Sprites[NUM_FOG1_SPRITES];
+ struct Sprite *ashSprites[NUM_ASH_SPRITES];
+ struct Sprite *fog2Sprites[NUM_FOG2_SPRITES];
+ struct Sprite *sandstormSprites1[NUM_SANDSTORM_SPRITES];
+ struct Sprite *sandstormSprites2[NUM_SWIRL_SANDSTORM_SPRITES];
} s2;
} sprites;
u8 gammaShifts[19][32];
@@ -62,57 +70,57 @@ struct Weather
bool8 weatherChangeComplete;
u8 weatherPicSpritePalIndex;
u8 altGammaSpritePalIndex;
- u16 unknown_6D6;
- u8 unknown_6D8;
- u8 unknown_6D9;
+ u16 rainSpriteVisibleCounter;
+ u8 curRainSpriteIndex;
+ u8 targetRainSpriteCount;
u8 rainSpriteCount;
- u8 unknown_6DB;
- u8 unknown_6DC;
+ u8 rainSpriteVisibleDelay;
+ u8 isHeavyRain;
u8 rainStrength;
/*0x6DE*/ u8 cloudSpritesCreated;
u8 filler_6DF[1];
- u16 unknown_6E0;
+ u16 snowflakeVisibleCounter;
u16 unknown_6E2;
u8 snowflakeSpriteCount;
- u8 unknown_6E5;
+ u8 targetSnowflakeSpriteCount;
u16 unknown_6E6;
u16 thunderCounter;
u8 unknown_6EA;
u8 unknown_6EB;
u8 unknown_6EC;
- u8 unknown_6ED;
+ u8 thunderTriggered;
u16 fog1ScrollPosX;
- u16 unknown_6F0;
- u16 unknown_6F2;
+ u16 fog1ScrollCounter;
+ u16 fog1ScrollOffset;
u8 lightenedFogSpritePals[6];
u8 lightenedFogSpritePalsCount;
u8 fog1SpritesCreated;
- u16 unknown_6FC;
+ u16 ashBaseSpritesX;
u16 unknown_6FE;
u8 ashSpritesCreated;
u8 filler_701[3];
- u32 unknown_704;
- u32 unknown_708;
+ u32 sandstormXOffset;
+ u32 sandstormYOffset;
u8 filler_70C[2];
- u16 unknown_70E;
- u16 unknown_710;
- u16 unknown_712;
- u16 unknown_714;
- u8 sandstormSprites1Created;
- u8 sandstormSprites2Created;
- u16 unknown_718;
- u16 unknown_71A;
- u16 unknown_71C;
- u16 unknown_71E;
- u16 unknown_720;
- u16 unknown_722;
+ u16 sandstormBaseSpritesX;
+ u16 sandstormPosY;
+ u16 sandstormWaveIndex;
+ u16 sandstormWaveCounter;
+ u8 sandstormSpritesCreated;
+ u8 sandstormSwirlSpritesCreated;
+ u16 fog2BaseSpritesX;
+ u16 fog2PosY;
+ u16 fog2ScrollXCounter;
+ u16 fog2ScrollYCounter;
+ u16 fog2XOffset;
+ u16 fog2YOffset;
u8 fog2SpritesCreated;
u8 filler_725[1];
- u16 unknown_726;
- u16 unknown_728;
- u16 unknown_72A;
- u16 unknown_72C;
- u8 unknown_72E;
+ u16 bubblesDelayCounter;
+ u16 bubblesDelayIndex;
+ u16 bubblesCoordsIndex;
+ u16 bubblesSpriteCount;
+ u8 bubblesSpritesCreated;
u8 filler_72F;
u16 currBlendEVA;
u16 currBlendEVB;
@@ -174,10 +182,10 @@ void Clouds_InitVars(void);
void Clouds_Main(void);
void Clouds_InitAll(void);
bool8 Clouds_Finish(void);
-void Weather2_InitVars(void);
-void Weather2_Main(void);
-void Weather2_InitAll(void);
-bool8 Weather2_Finish(void);
+void Sunny_InitVars(void);
+void Sunny_Main(void);
+void Sunny_InitAll(void);
+bool8 Sunny_Finish(void);
void LightRain_InitVars(void);
void LightRain_Main(void);
void LightRain_InitAll(void);
diff --git a/include/fieldmap.h b/include/fieldmap.h
index bb5b0e290..2384ed46a 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -50,5 +50,6 @@ void SpriteCB_HallOfFameMonitor(struct Sprite *);
// field_region_map.c
void FieldInitRegionMap(MainCallback callback);
+void sub_8088B94(int x, int y, int a2);
#endif //GUARD_FIELDMAP_H
diff --git a/include/fldeff.h b/include/fldeff.h
index e095396a4..ff6c9823f 100644
--- a/include/fldeff.h
+++ b/include/fldeff.h
@@ -10,6 +10,7 @@ void FixLongGrassMetatilesWindowTop(s16 x, s16 y);
void FixLongGrassMetatilesWindowBottom(s16 x, s16 y);
extern const struct SpritePalette gFieldEffectObjectPaletteInfo6;
+extern struct MapPosition gPlayerFacingPosition;
// groundshake
bool8 sub_81BE66C(void);
diff --git a/include/gba/types.h b/include/gba/types.h
index 3d78b5b5e..9f2594703 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) & 0x03)
+#define SPRITE_SHAPE(dim) (SPRITE_SIZE_##dim & 0x03)
+
struct BgAffineSrcData
{
s32 texX;
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index e35d900d8..3aa44ec9a 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -232,14 +232,25 @@ struct EventObjectGraphicsInfo
/*0x20*/ const union AffineAnimCmd *const *affineAnims;
};
-#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
-#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
-#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
-#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
-#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
-#define PLAYER_AVATAR_FLAG_5 (1 << 5)
-#define PLAYER_AVATAR_FLAG_6 (1 << 6)
-#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
+enum {
+ PLAYER_AVATAR_STATE_NORMAL,
+ PLAYER_AVATAR_STATE_MACH_BIKE,
+ PLAYER_AVATAR_STATE_ACRO_BIKE,
+ PLAYER_AVATAR_STATE_SURFING,
+ PLAYER_AVATAR_STATE_UNDERWATER,
+ PLAYER_AVATAR_STATE_FIELD_MOVE,
+ PLAYER_AVATAR_STATE_FISHING,
+ PLAYER_AVATAR_STATE_WATERING,
+};
+
+#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << PLAYER_AVATAR_STATE_NORMAL)
+#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << PLAYER_AVATAR_STATE_MACH_BIKE)
+#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << PLAYER_AVATAR_STATE_ACRO_BIKE)
+#define PLAYER_AVATAR_FLAG_SURFING (1 << PLAYER_AVATAR_STATE_SURFING)
+#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << PLAYER_AVATAR_STATE_UNDERWATER)
+#define PLAYER_AVATAR_FLAG_5 (1 << PLAYER_AVATAR_STATE_FIELD_MOVE)
+#define PLAYER_AVATAR_FLAG_6 (1 << PLAYER_AVATAR_STATE_FISHING)
+#define PLAYER_AVATAR_FLAG_DASH (1 << PLAYER_AVATAR_STATE_WATERING)
enum
{
diff --git a/include/global.h b/include/global.h
index 1f9ac5185..4523ece21 100644
--- a/include/global.h
+++ b/include/global.h
@@ -471,21 +471,21 @@ struct SecretBaseParty
u8 EVs[PARTY_SIZE];
};
-struct SecretBaseRecord
+struct SecretBase
{
/*0x1A9C*/ u8 secretBaseId;
/*0x1A9D*/ u8 sbr_field_1_0:4;
/*0x1A9D*/ u8 gender:1;
- /*0x1A9D*/ u8 sbr_field_1_5:1;
- /*0x1A9D*/ u8 sbr_field_1_6:2;
+ /*0x1A9D*/ u8 battledOwnerToday:1;
+ /*0x1A9D*/ u8 registryStatus:2;
/*0x1A9E*/ u8 trainerName[PLAYER_NAME_LENGTH];
/*0x1AA5*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
/*0x1AA9*/ u8 language;
- /*0x1AAA*/ u16 sbr_field_e;
- /*0x1AAC*/ u8 sbr_field_10;
+ /*0x1AAA*/ u16 numSecretBasesReceived;
+ /*0x1AAC*/ u8 numTimesEntered;
/*0x1AAD*/ u8 sbr_field_11;
/*0x1AAE*/ u8 decorations[16];
- /*0x1ABE*/ u8 decorationPos[16];
+ /*0x1ABE*/ u8 decorationPositions[16];
/*0x1AD0*/ struct SecretBaseParty party;
};
@@ -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 WonderNews
+{
+ u16 unk_00;
+ u8 unk_02;
+ u8 unk_03;
+ u8 unk_04[40];
+ u8 unk_2C[10][40];
+};
+
+ struct WonderNewsSaveStruct
+{
+ u32 crc;
+ struct WonderNews data;
+};
+
+ struct WonderCard
+{
+ 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 WonderCardSaveStruct
+{
+ u32 crc;
+ struct WonderCard 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 WonderNewsSaveStruct wonderNews;
+ /*0x1c0 0x33EC*/ struct WonderCardSaveStruct wonderCard;
+ /*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;
@@ -845,7 +915,7 @@ struct SaveBlock1
/*0x139C*/ u16 vars[VARS_COUNT];
/*0x159C*/ u32 gameStats[NUM_GAME_STATS];
/*0x169C*/ struct BerryTree berryTrees[BERRY_TREES_COUNT];
- /*0x1A9C*/ struct SecretBaseRecord secretBases[SECRET_BASES_COUNT];
+ /*0x1A9C*/ struct SecretBase secretBases[SECRET_BASES_COUNT];
/*0x271C*/ u8 playerRoomDecor[12];
/*0x2728*/ u8 playerRoomDecorPos[12];
/*0x2734*/ u8 decorDesk[10];
@@ -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 84d48691c..1171d3c1c 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4129,620 +4129,620 @@ extern const u32 gBattleArenaJudgementSymbolsGfx[];
extern const u32 gBattleArenaJudgementSymbolsPalette[];
extern const u32 gContest2Pal[];
-extern const u32 gBattleAnimSpriteSheet_000[];
-extern const u32 gBattleAnimSpriteSheet_001[];
-extern const u32 gBattleAnimSpriteSheet_002[];
-extern const u32 gBattleAnimSpriteSheet_003[];
-extern const u32 gBattleAnimSpriteSheet_004[];
-extern const u32 gBattleAnimSpriteSheet_005[];
-extern const u32 gBattleAnimSpriteSheet_006[];
-extern const u32 gBattleAnimSpriteSheet_007[];
-extern const u32 gBattleAnimSpriteSheet_008[];
-extern const u32 gBattleAnimSpriteSheet_009[];
-extern const u32 gBattleAnimSpriteSheet_010[];
-extern const u32 gBattleAnimSpriteSheet_011[];
-extern const u32 gBattleAnimSpriteSheet_012[];
-extern const u32 gBattleAnimSpriteSheet_013[];
-extern const u32 gBattleAnimSpriteSheet_014[];
-extern const u32 gBattleAnimSpriteSheet_015[];
-extern const u32 gBattleAnimSpriteSheet_016[];
-extern const u32 gBattleAnimSpriteSheet_017[];
-extern const u32 gBattleAnimSpriteSheet_018[];
-extern const u32 gBattleAnimSpriteSheet_019[];
-extern const u32 gBattleAnimSpriteSheet_020[];
-extern const u32 gBattleAnimSpriteSheet_021[];
-extern const u32 gBattleAnimSpriteSheet_021[];
-extern const u32 gBattleAnimSpriteSheet_023[];
-extern const u32 gBattleAnimSpriteSheet_024[];
-extern const u32 gBattleAnimSpriteSheet_025[];
-extern const u32 gBattleAnimSpriteSheet_026[];
-extern const u32 gBattleAnimSpriteSheet_027[];
-extern const u32 gBattleAnimSpriteSheet_028[];
-extern const u32 gBattleAnimSpriteSheet_029[];
-extern const u32 gBattleAnimSpriteSheet_030[];
-extern const u32 gBattleAnimSpriteSheet_031[];
-extern const u32 gBattleAnimSpriteSheet_032[];
-extern const u32 gBattleAnimSpriteSheet_033[];
-extern const u32 gBattleAnimSpriteSheet_034[];
-extern const u32 gBattleAnimSpriteSheet_035[];
-extern const u32 gBattleAnimSpriteSheet_036[];
-extern const u32 gBattleAnimSpriteSheet_037[];
-extern const u32 gBattleAnimSpriteSheet_038[];
-extern const u32 gBattleAnimSpriteSheet_039[];
-extern const u32 gBattleAnimSpriteSheet_040[];
-extern const u32 gBattleAnimSpriteSheet_041[];
-extern const u32 gBattleAnimSpriteSheet_042[];
-extern const u32 gBattleAnimSpriteSheet_043[];
-extern const u32 gBattleAnimSpriteSheet_044[];
-extern const u32 gBattleAnimSpriteSheet_045[];
-extern const u32 gBattleAnimSpriteSheet_046[];
-extern const u32 gBattleAnimSpriteSheet_046[];
-extern const u32 gBattleAnimSpriteSheet_048[];
-extern const u32 gBattleAnimSpriteSheet_048[];
-extern const u32 gBattleAnimSpriteSheet_050[];
-extern const u32 gBattleAnimSpriteSheet_051[];
-extern const u32 gBattleAnimSpriteSheet_052[];
-extern const u32 gBattleAnimSpriteSheet_053[];
+extern const u32 gBattleAnimSpriteGfx_Bone[];
+extern const u32 gBattleAnimSpriteGfx_Spark[];
+extern const u32 gBattleAnimSpriteGfx_Pencil[];
+extern const u32 gBattleAnimSpriteGfx_AirWave[];
+extern const u32 gBattleAnimSpriteGfx_Orb[];
+extern const u32 gBattleAnimSpriteGfx_Sword[];
+extern const u32 gBattleAnimSpriteGfx_Seed[];
+extern const u32 gBattleAnimSpriteGfx_Explosion6[];
+extern const u32 gBattleAnimSpriteGfx_PinkOrb[];
+extern const u32 gBattleAnimSpriteGfx_Gust[];
+extern const u32 gBattleAnimSpriteGfx_IceCube[];
+extern const u32 gBattleAnimSpriteGfx_Spark2[];
+extern const u32 gBattleAnimSpriteGfx_Orange[];
+extern const u32 gBattleAnimSpriteGfx_YellowBall[];
+extern const u32 gBattleAnimSpriteGfx_LockOn[];
+extern const u32 gBattleAnimSpriteGfx_TiedBag[];
+extern const u32 gBattleAnimSpriteGfx_BlackSmoke[];
+extern const u32 gBattleAnimSpriteGfx_BlackBall[];
+extern const u32 gBattleAnimSpriteGfx_Conversion[];
+extern const u32 gBattleAnimSpriteGfx_Glass[];
+extern const u32 gBattleAnimSpriteGfx_HornHit[];
+extern const u32 gBattleAnimSpriteGfx_Hit[];
+extern const u32 gBattleAnimSpriteGfx_Hit[];
+extern const u32 gBattleAnimSpriteGfx_BlueShards[];
+extern const u32 gBattleAnimSpriteGfx_ClosingEye[];
+extern const u32 gBattleAnimSpriteGfx_WavingHand[];
+extern const u32 gBattleAnimSpriteGfx_HitDuplicate[];
+extern const u32 gBattleAnimSpriteGfx_Leer[];
+extern const u32 gBattleAnimSpriteGfx_BlueBurst[];
+extern const u32 gBattleAnimSpriteGfx_SmallEmber[];
+extern const u32 gBattleAnimSpriteGfx_GraySmoke[];
+extern const u32 gBattleAnimSpriteGfx_BlueStar[];
+extern const u32 gBattleAnimSpriteGfx_BubbleBurst[];
+extern const u32 gBattleAnimSpriteGfx_Fire[];
+extern const u32 gBattleAnimSpriteGfx_SpinningFire[];
+extern const u32 gBattleAnimSpriteGfx_FirePlume[];
+extern const u32 gBattleAnimSpriteGfx_Lightning2[];
+extern const u32 gBattleAnimSpriteGfx_Lightning[];
+extern const u32 gBattleAnimSpriteGfx_ClawSlash2[];
+extern const u32 gBattleAnimSpriteGfx_ClawSlash[];
+extern const u32 gBattleAnimSpriteGfx_Scratch3[];
+extern const u32 gBattleAnimSpriteGfx_Scratch2[];
+extern const u32 gBattleAnimSpriteGfx_BubbleBurst2[];
+extern const u32 gBattleAnimSpriteGfx_IceChunk[];
+extern const u32 gBattleAnimSpriteGfx_Glass2[];
+extern const u32 gBattleAnimSpriteGfx_PinkHeart2[];
+extern const u32 gBattleAnimSpriteGfx_SapDrip[];
+extern const u32 gBattleAnimSpriteGfx_SapDrip[];
+extern const u32 gBattleAnimSpriteGfx_Sparkle1[];
+extern const u32 gBattleAnimSpriteGfx_Sparkle1[];
+extern const u32 gBattleAnimSpriteGfx_HumanoidFoot[];
+extern const u32 gBattleAnimSpriteGfx_MonsterFoot[];
+extern const u32 gBattleAnimSpriteGfx_HumanoidHand[];
+extern const u32 gBattleAnimSpriteGfx_NoiseLine[];
extern const u32 gUnknown_08C2EA50[];
extern const u32 gUnknown_08C2EA9C[];
-extern const u32 gBattleAnimSpriteSheet_054[];
-extern const u32 gBattleAnimSpriteSheet_055[];
-extern const u32 gBattleAnimSpriteSheet_056[];
-extern const u32 gBattleAnimSpriteSheet_057[];
-extern const u32 gBattleAnimSpriteSheet_058[];
-extern const u32 gBattleAnimSpriteSheet_059[];
-extern const u32 gBattleAnimSpriteSheet_060[];
-extern const u32 gBattleAnimSpriteSheet_061[];
-extern const u32 gBattleAnimSpriteSheet_062[];
-extern const u32 gBattleAnimSpriteSheet_063[];
-extern const u32 gBattleAnimSpriteSheet_064[];
-extern const u32 gBattleAnimSpriteSheet_065[];
-extern const u32 gBattleAnimSpriteSheet_066[];
-extern const u32 gBattleAnimSpriteSheet_070[];
-extern const u32 gBattleAnimSpriteSheet_071[];
-extern const u32 gBattleAnimSpriteSheet_072[];
-extern const u32 gBattleAnimSpriteSheet_073[];
-extern const u32 gBattleAnimSpriteSheet_074[];
-extern const u32 gBattleAnimSpriteSheet_075[];
-extern const u32 gBattleAnimSpriteSheet_076[];
-extern const u32 gBattleAnimSpriteSheet_077[];
-extern const u32 gBattleAnimSpriteSheet_078[];
-extern const u32 gBattleAnimSpriteSheet_079[];
-extern const u32 gBattleAnimSpriteSheet_080[];
-extern const u32 gBattleAnimSpriteSheet_081[];
-extern const u32 gBattleAnimSpriteSheet_082[];
-extern const u32 gBattleAnimSpriteSheet_083[];
-extern const u32 gBattleAnimSpriteSheet_084[];
-extern const u32 gBattleAnimSpriteSheet_085[];
-extern const u32 gBattleAnimSpriteSheet_086[];
-extern const u32 gBattleAnimSpriteSheet_087[];
-extern const u32 gBattleAnimSpriteSheet_088[];
-extern const u32 gBattleAnimSpriteSheet_089[];
-extern const u32 gBattleAnimSpriteSheet_090[];
-extern const u32 gBattleAnimSpriteSheet_091[];
-extern const u32 gBattleAnimSpriteSheet_092[];
-extern const u32 gBattleAnimSpriteSheet_093[];
-extern const u32 gBattleAnimSpriteSheet_094[];
-extern const u32 gBattleAnimSpriteSheet_095[];
-extern const u32 gBattleAnimSpriteSheet_096[];
-extern const u32 gBattleAnimSpriteSheet_097[];
-extern const u32 gBattleAnimSpriteSheet_098[];
-extern const u32 gBattleAnimSpriteSheet_099[];
-extern const u32 gBattleAnimSpriteSheet_100[];
-extern const u32 gBattleAnimSpriteSheet_101[];
-extern const u32 gBattleAnimSpriteSheet_102[];
-extern const u32 gBattleAnimSpriteSheet_103[];
-extern const u32 gBattleAnimSpriteSheet_104[];
-extern const u32 gBattleAnimSpriteSheet_105[];
-extern const u32 gBattleAnimSpriteSheet_106[];
-extern const u32 gBattleAnimSpriteSheet_107[];
-extern const u32 gBattleAnimSpriteSheet_108[];
-extern const u32 gBattleAnimSpriteSheet_109[];
-extern const u32 gBattleAnimSpriteSheet_110[];
-extern const u32 gBattleAnimSpriteSheet_111[];
-extern const u32 gBattleAnimSpriteSheet_112[];
-extern const u32 gBattleAnimSpriteSheet_113[];
-extern const u32 gBattleAnimSpriteSheet_114[];
-extern const u32 gBattleAnimSpriteSheet_115[];
-extern const u32 gBattleAnimSpriteSheet_116[];
-extern const u32 gBattleAnimSpriteSheet_117[];
-extern const u32 gBattleAnimSpriteSheet_118[];
-extern const u32 gBattleAnimSpriteSheet_119[];
-extern const u32 gBattleAnimSpriteSheet_120[];
-extern const u32 gBattleAnimSpriteSheet_121[];
-extern const u32 gBattleAnimSpriteSheet_122[];
-extern const u32 gBattleAnimSpriteSheet_123[];
-extern const u32 gBattleAnimSpriteSheet_124[];
-extern const u32 gBattleAnimSpriteSheet_125[];
-extern const u32 gBattleAnimSpriteSheet_126[];
-extern const u32 gBattleAnimSpriteSheet_127[];
-extern const u32 gBattleAnimSpriteSheet_128[];
-extern const u32 gBattleAnimSpriteSheet_129[];
-extern const u32 gBattleAnimSpriteSheet_130[];
-extern const u32 gBattleAnimSpriteSheet_131[];
-extern const u32 gBattleAnimSpriteSheet_132[];
-extern const u32 gBattleAnimSpriteSheet_133[];
-extern const u32 gBattleAnimSpriteSheet_134[];
-extern const u32 gBattleAnimSpriteSheet_135[];
-extern const u32 gBattleAnimSpriteSheet_Particles[];
-extern const u32 gBattleAnimSpriteSheet_136[];
-extern const u32 gBattleAnimSpriteSheet_137[];
-extern const u32 gBattleAnimSpriteSheet_138[];
-extern const u32 gBattleAnimSpriteSheet_139[];
-extern const u32 gBattleAnimSpriteSheet_140[];
-extern const u32 gBattleAnimSpriteSheet_141[];
-extern const u32 gBattleAnimSpriteSheet_142[];
-extern const u32 gBattleAnimSpriteSheet_143[];
-extern const u32 gBattleAnimSpriteSheet_144[];
-extern const u32 gBattleAnimSpriteSheet_145[];
-//extern const struct CompressedSpriteSheet gBattleAnimSpriteSheet_146[];
-extern const u32 gBattleAnimSpriteSheet_146[];
-extern const u32 gBattleAnimSpriteSheet_147[];
-extern const u32 gBattleAnimSpriteSheet_148[];
-extern const u32 gBattleAnimSpriteSheet_149[];
-extern const u32 gBattleAnimSpriteSheet_150[];
-extern const u32 gBattleAnimSpriteSheet_151[];
-extern const u32 gBattleAnimSpriteSheet_152[];
-extern const u32 gBattleAnimSpriteSheet_153[];
-extern const u32 gBattleAnimSpriteSheet_154[];
-extern const u32 gBattleAnimSpriteSheet_155[];
-extern const u32 gBattleAnimSpriteSheet_156[];
-extern const u32 gBattleAnimSpriteSheet_157[];
-extern const u32 gBattleAnimSpriteSheet_158[];
-extern const u32 gBattleAnimSpriteSheet_159[];
-extern const u32 gBattleAnimSpriteSheet_160[];
-extern const u32 gBattleAnimSpriteSheet_161[];
-extern const u32 gBattleAnimSpriteSheet_162[];
-extern const u32 gBattleAnimSpriteSheet_163[];
-extern const u32 gBattleAnimSpriteSheet_166[];
-extern const u32 gBattleAnimSpriteSheet_171[];
-extern const u32 gBattleAnimSpriteSheet_173[];
-extern const u32 gBattleAnimSpriteSheet_174[];
-extern const u32 gBattleAnimSpriteSheet_175[];
-extern const u32 gBattleAnimSpriteSheet_176[];
-extern const u32 gBattleAnimSpriteSheet_177[];
-extern const u32 gBattleAnimSpriteSheet_178[];
-extern const u32 gBattleAnimSpriteSheet_179[];
-extern const u32 gBattleAnimSpriteSheet_180[];
-extern const u32 gBattleAnimSpriteSheet_181[];
-extern const u32 gBattleAnimSpriteSheet_182[];
-extern const u32 gBattleAnimSpriteSheet_183[];
-extern const u32 gBattleAnimSpriteSheet_184[];
-extern const u32 gBattleAnimSpriteSheet_185[];
-extern const u32 gBattleAnimSpriteSheet_186[];
-extern const u32 gBattleAnimSpriteSheet_187[];
-extern const u32 gBattleAnimSpriteSheet_188[];
-extern const u32 gBattleAnimSpriteSheet_189[];
-extern const u32 gBattleAnimSpriteSheet_190[];
-extern const u32 gBattleAnimSpriteSheet_191[];
-extern const u32 gBattleAnimSpriteSheet_192[];
-extern const u32 gBattleAnimSpriteSheet_193[];
-extern const u32 gBattleAnimSpriteSheet_194[];
-extern const u32 gBattleAnimSpriteSheet_195[];
-extern const u32 gBattleAnimSpriteSheet_196[];
-extern const u32 gBattleAnimSpriteSheet_197[];
-extern const u32 gBattleAnimSpriteSheet_198[];
-extern const u32 gBattleAnimSpriteSheet_199[];
-extern const u32 gBattleAnimSpriteSheet_200[];
-extern const u32 gBattleAnimSpriteSheet_201[];
-extern const u32 gBattleAnimSpriteSheet_202[];
-extern const u32 gBattleAnimSpriteSheet_203[];
-extern const u32 gBattleAnimSpriteSheet_204[];
-extern const u32 gBattleAnimSpriteSheet_205[];
-extern const u32 gBattleAnimSpriteSheet_206[];
-extern const u32 gBattleAnimSpriteSheet_207[];
-extern const u32 gBattleAnimSpriteSheet_208[];
-extern const u32 gBattleAnimSpriteSheet_209[];
-extern const u32 gBattleAnimSpriteSheet_210[];
-extern const u32 gBattleAnimSpriteSheet_211[];
-extern const u32 gBattleAnimSpriteSheet_212[];
-extern const u32 gBattleAnimSpriteSheet_213[];
-extern const u32 gBattleAnimSpriteSheet_214[];
-extern const u32 gBattleAnimSpriteSheet_215[];
-extern const u32 gBattleAnimSpriteSheet_210[];
-extern const u32 gBattleAnimSpriteSheet_217[];
-extern const u32 gBattleAnimSpriteSheet_218[];
-extern const u32 gBattleAnimSpriteSheet_210[];
-extern const u32 gBattleAnimSpriteSheet_220[];
-extern const u32 gBattleAnimSpriteSheet_221[];
-extern const u32 gBattleAnimSpriteSheet_222[];
-extern const u32 gBattleAnimSpriteSheet_223[];
-extern const u32 gBattleAnimSpriteSheet_224[];
-extern const u32 gBattleAnimSpriteSheet_225[];
-extern const u32 gBattleAnimSpriteSheet_226[];
-extern const u32 gBattleAnimSpriteSheet_227[];
-extern const u32 gBattleAnimSpriteSheet_228[];
-extern const u32 gBattleAnimSpriteSheet_229[];
-extern const u32 gBattleAnimSpriteSheet_230[];
-extern const u32 gBattleAnimSpriteSheet_231[];
-extern const u32 gBattleAnimSpriteSheet_232[];
-extern const u32 gBattleAnimSpriteSheet_233[];
-extern const u32 gBattleAnimSpriteSheet_234[];
-extern const u32 gBattleAnimSpriteSheet_235[];
-extern const u32 gBattleAnimSpriteSheet_235[];
-extern const u32 gBattleAnimSpriteSheet_235[];
-extern const u32 gBattleAnimSpriteSheet_238[];
-extern const u32 gBattleAnimSpriteSheet_239[];
-extern const u32 gBattleAnimSpriteSheet_240[];
-extern const u32 gBattleAnimSpriteSheet_241[];
-extern const u32 gBattleAnimSpriteSheet_242[];
-extern const u32 gBattleAnimSpriteSheet_243[];
-extern const u32 gBattleAnimSpriteSheet_244[];
-extern const u32 gBattleAnimSpriteSheet_245[];
-extern const u32 gBattleAnimSpriteSheet_246[];
-extern const u32 gBattleAnimSpriteSheet_247[];
-extern const u32 gBattleAnimSpriteSheet_248[];
-extern const u32 gBattleAnimSpriteSheet_249[];
-extern const u32 gBattleAnimSpriteSheet_250[];
-extern const u32 gBattleAnimSpriteSheet_251[];
-extern const u32 gBattleAnimSpriteSheet_252[];
-extern const u32 gBattleAnimSpriteSheet_253[];
-extern const u32 gBattleAnimSpriteSheet_254[];
-extern const u32 gBattleAnimSpriteSheet_255[];
-extern const u32 gBattleAnimSpriteSheet_256[];
-extern const u32 gBattleAnimSpriteSheet_257[];
-extern const u32 gBattleAnimSpriteSheet_258[];
-extern const u32 gBattleAnimSpriteSheet_260[];
-extern const u32 gBattleAnimSpriteSheet_261[];
-extern const u32 gBattleAnimSpriteSheet_262[];
-extern const u32 gBattleAnimSpriteSheet_263[];
-extern const u32 gBattleAnimSpriteSheet_264[];
-extern const u32 gBattleAnimSpriteSheet_266[];
-extern const u32 gBattleAnimSpriteSheet_269[];
-extern const u32 gBattleAnimSpriteSheet_270[];
-extern const u32 gBattleAnimSpriteSheet_271[];
-extern const u32 gBattleAnimSpriteSheet_272[];
-extern const u32 gBattleAnimSpriteSheet_273[];
-extern const u32 gBattleAnimSpriteSheet_274[];
-extern const u32 gBattleAnimSpriteSheet_275[];
-extern const u32 gBattleAnimSpriteSheet_276[];
-extern const u32 gBattleAnimSpriteSheet_277[];
-extern const u32 gBattleAnimSpriteSheet_278[];
-extern const u32 gBattleAnimSpriteSheet_279[];
-extern const u32 gBattleAnimSpriteSheet_280[];
-extern const u32 gBattleAnimSpriteSheet_281[];
-extern const u32 gBattleAnimSpriteSheet_282[];
-extern const u32 gBattleAnimSpriteSheet_283[];
-extern const u32 gBattleAnimBackgroundTilemap_ScaryFacePlayer[];
-extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceOpponent[];
-extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceContest[];
-extern const u32 gBattleAnimSpriteSheet_284[];
-extern const u32 gBattleAnimSpriteSheet_285[];
+extern const u32 gBattleAnimSpriteGfx_YellowUnk[];
+extern const u32 gBattleAnimSpriteGfx_RedFist[];
+extern const u32 gBattleAnimSpriteGfx_SlamHit[];
+extern const u32 gBattleAnimSpriteGfx_Ring[];
+extern const u32 gBattleAnimSpriteGfx_Rocks[];
+extern const u32 gBattleAnimSpriteGfx_Z[];
+extern const u32 gBattleAnimSpriteGfx_YellowUnk2[];
+extern const u32 gBattleAnimSpriteGfx_AirSlash[];
+extern const u32 gBattleAnimSpriteGfx_SpinningGreenOrbs[];
+extern const u32 gBattleAnimSpriteGfx_Leaf[];
+extern const u32 gBattleAnimSpriteGfx_Finger[];
+extern const u32 gBattleAnimSpriteGfx_PoisonPowder[];
+extern const u32 gBattleAnimSpriteGfx_BrownTriangle[];
+extern const u32 gBattleAnimSpriteGfx_Sparkle3[];
+extern const u32 gBattleAnimSpriteGfx_Sparkle4[];
+extern const u32 gBattleAnimSpriteGfx_MusicNotes[];
+extern const u32 gBattleAnimSpriteGfx_Duck[];
+extern const u32 gBattleAnimSpriteGfx_MudSand[];
+extern const u32 gBattleAnimSpriteGfx_Alert[];
+extern const u32 gBattleAnimSpriteGfx_BlueFlames[];
+extern const u32 gBattleAnimSpriteGfx_BlueFlames2[];
+extern const u32 gBattleAnimSpriteGfx_Shock4[];
+extern const u32 gBattleAnimSpriteGfx_Shock[];
+extern const u32 gBattleAnimSpriteGfx_Bell2[];
+extern const u32 gBattleAnimSpriteGfx_PinkGlove[];
+extern const u32 gBattleAnimSpriteGfx_BlueLines[];
+extern const u32 gBattleAnimSpriteGfx_Impact3[];
+extern const u32 gBattleAnimSpriteGfx_Impact2[];
+extern const u32 gBattleAnimSpriteGfx_Reticle[];
+extern const u32 gBattleAnimSpriteGfx_Breath[];
+extern const u32 gBattleAnimSpriteGfx_Anger[];
+extern const u32 gBattleAnimSpriteGfx_Snowball[];
+extern const u32 gBattleAnimSpriteGfx_Vine[];
+extern const u32 gBattleAnimSpriteGfx_Sword2[];
+extern const u32 gBattleAnimSpriteGfx_Clapping[];
+extern const u32 gBattleAnimSpriteGfx_RedTube[];
+extern const u32 gBattleAnimSpriteGfx_Amnesia[];
+extern const u32 gBattleAnimSpriteGfx_String2[];
+extern const u32 gBattleAnimSpriteGfx_Pencil2[];
+extern const u32 gBattleAnimSpriteGfx_Petal[];
+extern const u32 gBattleAnimSpriteGfx_BentSpoon[];
+extern const u32 gBattleAnimSpriteGfx_Web[];
+extern const u32 gBattleAnimSpriteGfx_MilkBottle[];
+extern const u32 gBattleAnimSpriteGfx_Coin[];
+extern const u32 gBattleAnimSpriteGfx_CrackedEgg[];
+extern const u32 gBattleAnimSpriteGfx_HatchedEgg[];
+extern const u32 gBattleAnimSpriteGfx_FreshEgg[];
+extern const u32 gBattleAnimSpriteGfx_Fangs[];
+extern const u32 gBattleAnimSpriteGfx_Explosion2[];
+extern const u32 gBattleAnimSpriteGfx_Explosion3[];
+extern const u32 gBattleAnimSpriteGfx_WaterDroplet[];
+extern const u32 gBattleAnimSpriteGfx_WaterDroplet2[];
+extern const u32 gBattleAnimSpriteGfx_Seed2[];
+extern const u32 gBattleAnimSpriteGfx_Sprout[];
+extern const u32 gBattleAnimSpriteGfx_RedWand[];
+extern const u32 gBattleAnimSpriteGfx_PurpleGreenUnk[];
+extern const u32 gBattleAnimSpriteGfx_WaterColumn[];
+extern const u32 gBattleAnimSpriteGfx_MudUnk[];
+extern const u32 gBattleAnimSpriteGfx_RainDrops[];
+extern const u32 gBattleAnimSpriteGfx_FurySwipes[];
+extern const u32 gBattleAnimSpriteGfx_Vine2[];
+extern const u32 gBattleAnimSpriteGfx_Teeth[];
+extern const u32 gBattleAnimSpriteGfx_Bone2[];
+extern const u32 gBattleAnimSpriteGfx_WhiteBag[];
+extern const u32 gBattleAnimSpriteGfx_Unknown[];
+extern const u32 gBattleAnimSpriteGfx_PurpleCoral[];
+extern const u32 gBattleAnimSpriteGfx_PurpleDroplet[];
+extern const u32 gBattleAnimSpriteGfx_Shock2[];
+extern const u32 gBattleAnimSpriteGfx_ClosingEye2[];
+extern const u32 gBattleAnimSpriteGfx_MetalBall[];
+extern const u32 gBattleAnimSpriteGfx_MonsterDoll[];
+extern const u32 gBattleAnimSpriteGfx_Whirlwind[];
+extern const u32 gBattleAnimSpriteGfx_Whirlwind2[];
+extern const u32 gBattleAnimSpriteGfx_Explosion4[];
+extern const u32 gBattleAnimSpriteGfx_Explosion5[];
+extern const u32 gBattleAnimSpriteGfx_Tongue[];
+extern const u32 gBattleAnimSpriteGfx_Smoke[];
+extern const u32 gBattleAnimSpriteGfx_Smoke2[];
+extern const u32 gBattleAnimSpriteGfx_Impact[];
+extern const u32 gBattleAnimSpriteGfx_Particles[];
+extern const u32 gBattleAnimSpriteGfx_CircleImpact[];
+extern const u32 gBattleAnimSpriteGfx_Scratch[];
+extern const u32 gBattleAnimSpriteGfx_Cut[];
+extern const u32 gBattleAnimSpriteGfx_SharpTeeth[];
+extern const u32 gBattleAnimSpriteGfx_RainbowRings[];
+extern const u32 gBattleAnimSpriteGfx_IceCrystals[];
+extern const u32 gBattleAnimSpriteGfx_IceSpikes[];
+extern const u32 gBattleAnimSpriteGfx_HandsAndFeet[];
+extern const u32 gBattleAnimSpriteGfx_MistCloud[];
+extern const u32 gBattleAnimSpriteGfx_Clamp[];
+//extern const struct CompressedSpriteSheet gBattleAnimSpriteGfx_146[];
+extern const u32 gBattleAnimSpriteGfx_Bubble[];
+extern const u32 gBattleAnimSpriteGfx_Orbs[];
+extern const u32 gBattleAnimSpriteGfx_WaterImpact[];
+extern const u32 gBattleAnimSpriteGfx_WaterOrb[];
+extern const u32 gBattleAnimSpriteGfx_PoisonBubble[];
+extern const u32 gBattleAnimSpriteGfx_ToxicBubble[];
+extern const u32 gBattleAnimSpriteGfx_Spikes[];
+extern const u32 gBattleAnimSpriteGfx_HornHit2[];
+extern const u32 gBattleAnimSpriteGfx_AirWave2[];
+extern const u32 gBattleAnimSpriteGfx_SmallBubbles[];
+extern const u32 gBattleAnimSpriteGfx_RoundShadow[];
+extern const u32 gBattleAnimSpriteGfx_Sunlight[];
+extern const u32 gBattleAnimSpriteGfx_Spore[];
+extern const u32 gBattleAnimSpriteGfx_Flower[];
+extern const u32 gBattleAnimSpriteGfx_RazorLeaf[];
+extern const u32 gBattleAnimSpriteGfx_Needle[];
+extern const u32 gBattleAnimSpriteGfx_WhirlwindLines[];
+extern const u32 gBattleAnimSpriteGfx_GoldRing[];
+extern const u32 gBattleAnimSpriteGfx_GreenLightWall[];
+extern const u32 gBattleAnimSpriteGfx_BlackBall2[];
+extern const u32 gBattleAnimSpriteGfx_SparkH[];
+extern const u32 gBattleAnimSpriteGfx_YellowStar[];
+extern const u32 gBattleAnimSpriteGfx_LargeFreshEgg[];
+extern const u32 gBattleAnimSpriteGfx_ShadowBall[];
+extern const u32 gBattleAnimSpriteGfx_Lick[];
+extern const u32 gBattleAnimSpriteGfx_VoidLines[];
+extern const u32 gBattleAnimSpriteGfx_String[];
+extern const u32 gBattleAnimSpriteGfx_WebThread[];
+extern const u32 gBattleAnimSpriteGfx_SpiderWeb[];
+extern const u32 gBattleAnimSpriteGfx_Lightbulb[];
+extern const u32 gBattleAnimSpriteGfx_Slash[];
+extern const u32 gBattleAnimSpriteGfx_FocusEnergy[];
+extern const u32 gBattleAnimSpriteGfx_SphereToCube[];
+extern const u32 gBattleAnimSpriteGfx_Tendrils[];
+extern const u32 gBattleAnimSpriteGfx_Eye[];
+extern const u32 gBattleAnimSpriteGfx_WhiteShadow[];
+extern const u32 gBattleAnimSpriteGfx_TealAlert[];
+extern const u32 gBattleAnimSpriteGfx_OpeningEye[];
+extern const u32 gBattleAnimSpriteGfx_RoundWhiteHalo[];
+extern const u32 gBattleAnimSpriteGfx_FangAttack[];
+extern const u32 gBattleAnimSpriteGfx_PurpleHandOutline[];
+extern const u32 gBattleAnimSpriteGfx_Moon[];
+extern const u32 gBattleAnimSpriteGfx_GreenSparkle[];
+extern const u32 gBattleAnimSpriteGfx_Spiral[];
+extern const u32 gBattleAnimSpriteGfx_SnoreZ[];
+extern const u32 gBattleAnimSpriteGfx_Explosion[];
+extern const u32 gBattleAnimSpriteGfx_Nail[];
+extern const u32 gBattleAnimSpriteGfx_GhostlySpirit[];
+extern const u32 gBattleAnimSpriteGfx_WarmRock[];
+extern const u32 gBattleAnimSpriteGfx_BreakingEgg[];
+extern const u32 gBattleAnimSpriteGfx_ThinRing[];
+extern const u32 gBattleAnimSpriteGfx_PunchImpact[];
+extern const u32 gBattleAnimSpriteGfx_Bell[];
+extern const u32 gBattleAnimSpriteGfx_MusicNotes2[];
+extern const u32 gBattleAnimSpriteGfx_SpeedDust[];
+extern const u32 gBattleAnimSpriteGfx_TornMetal[];
+extern const u32 gBattleAnimSpriteGfx_ThoughtBubble[];
+extern const u32 gBattleAnimSpriteGfx_MagentaHeart[];
+extern const u32 gBattleAnimSpriteGfx_ElectricOrbs[];
+extern const u32 gBattleAnimSpriteGfx_CircleOfLight[];
+extern const u32 gBattleAnimSpriteGfx_Electricity[];
+extern const u32 gBattleAnimSpriteGfx_Finger2[];
+extern const u32 gBattleAnimSpriteGfx_MovementWaves[];
+extern const u32 gBattleAnimSpriteGfx_MagentaHeart[];
+extern const u32 gBattleAnimSpriteGfx_RedOrb[];
+extern const u32 gBattleAnimSpriteGfx_EyeSparkle[];
+extern const u32 gBattleAnimSpriteGfx_MagentaHeart[];
+extern const u32 gBattleAnimSpriteGfx_Angel[];
+extern const u32 gBattleAnimSpriteGfx_Devil[];
+extern const u32 gBattleAnimSpriteGfx_Swipe[];
+extern const u32 gBattleAnimSpriteGfx_Roots[];
+extern const u32 gBattleAnimSpriteGfx_ItemBag[];
+extern const u32 gBattleAnimSpriteGfx_JaggedMusicNote[];
+extern const u32 gBattleAnimSpriteGfx_Pokeball[];
+extern const u32 gBattleAnimSpriteGfx_Spotlight[];
+extern const u32 gBattleAnimSpriteGfx_LetterZ[];
+extern const u32 gBattleAnimSpriteGfx_RapidSpin[];
+extern const u32 gBattleAnimSpriteGfx_TriForceTriangle[];
+extern const u32 gBattleAnimSpriteGfx_WispOrb[];
+extern const u32 gBattleAnimSpriteGfx_WispFire[];
+extern const u32 gBattleAnimSpriteGfx_GoldStars[];
+extern const u32 gBattleAnimSpriteGfx_EclipsingOrb[];
+extern const u32 gBattleAnimSpriteGfx_GrayOrb[];
+extern const u32 gBattleAnimSpriteGfx_GrayOrb[];
+extern const u32 gBattleAnimSpriteGfx_GrayOrb[];
+extern const u32 gBattleAnimSpriteGfx_PinkPetal[];
+extern const u32 gBattleAnimSpriteGfx_PainSplit[];
+extern const u32 gBattleAnimSpriteGfx_Confetti[];
+extern const u32 gBattleAnimSpriteGfx_GreenStar[];
+extern const u32 gBattleAnimSpriteGfx_PinkCloud[];
+extern const u32 gBattleAnimSpriteGfx_SweatDrop[];
+extern const u32 gBattleAnimSpriteGfx_GuardRing[];
+extern const u32 gBattleAnimSpriteGfx_PurpleScratch[];
+extern const u32 gBattleAnimSpriteGfx_PurpleSwipe[];
+extern const u32 gBattleAnimSpriteGfx_TagHand[];
+extern const u32 gBattleAnimSpriteGfx_SmallRedEye[];
+extern const u32 gBattleAnimSpriteGfx_HollowOrb[];
+extern const u32 gBattleAnimSpriteGfx_XSign[];
+extern const u32 gBattleAnimSpriteGfx_BluegreenOrb[];
+extern const u32 gBattleAnimSpriteGfx_PawPrint[];
+extern const u32 gBattleAnimSpriteGfx_PurpleFlame[];
+extern const u32 gBattleAnimSpriteGfx_RedBall[];
+extern const u32 gBattleAnimSpriteGfx_SmellingsaltEffect[];
+extern const u32 gBattleAnimSpriteGfx_Meteor[];
+extern const u32 gBattleAnimSpriteGfx_FlatRock[];
+extern const u32 gBattleAnimSpriteGfx_MagnifyingGlass[];
+extern const u32 gBattleAnimSpriteGfx_MetalSoundWaves[];
+extern const u32 gBattleAnimSpriteGfx_FlyingDirt[];
+extern const u32 gBattleAnimSpriteGfx_IcicleSpear[];
+extern const u32 gBattleAnimSpriteGfx_Hail[];
+extern const u32 gBattleAnimSpriteGfx_GlowyRedOrb[];
+extern const u32 gBattleAnimSpriteGfx_GreenSpike[];
+extern const u32 gBattleAnimSpriteGfx_RedBrick[];
+extern const u32 gBattleAnimSpriteGfx_WhiteFeather[];
+extern const u32 gBattleAnimSpriteGfx_Sparkle6[];
+extern const u32 gBattleAnimSpriteGfx_Splash[];
+extern const u32 gBattleAnimSpriteGfx_SweatBead[];
+extern const u32 gBattleAnimSpriteGfx_Gem1[];
+extern const u32 gBattleAnimSpriteGfx_Gem2[];
+extern const u32 gBattleAnimSpriteGfx_Gem3[];
+extern const u32 gBattleAnimSpriteGfx_SlamHit2[];
+extern const u32 gBattleAnimSpriteGfx_Recycle[];
+extern const u32 gBattleAnimSpriteGfx_RedParticles[];
+extern const u32 gBattleAnimSpriteGfx_Protect[];
+extern const u32 gBattleAnimSpriteGfx_DirtMound[];
+extern const u32 gBattleAnimSpriteGfx_Shock3[];
+extern const u32 gBattleAnimSpriteGfx_WeatherBall[];
+extern const u32 gBattleAnimBgTilemap_ScaryFacePlayer[];
+extern const u32 gBattleAnimBgTilemap_ScaryFaceOpponent[];
+extern const u32 gBattleAnimBgTilemap_ScaryFaceContest[];
+extern const u32 gBattleAnimSpriteGfx_Bird[];
+extern const u32 gBattleAnimSpriteGfx_CrossImpact[];
-extern const u32 gBattleAnimSpritePalette_000[];
-extern const u32 gBattleAnimSpritePalette_001[];
-extern const u32 gBattleAnimSpritePalette_002[];
-extern const u32 gBattleAnimSpritePalette_003[];
-extern const u32 gBattleAnimSpritePalette_004[];
-extern const u32 gBattleAnimSpritePalette_005[];
-extern const u32 gBattleAnimSpritePalette_006[];
-extern const u32 gBattleAnimSpritePalette_007[];
-extern const u32 gBattleAnimSpritePalette_008[];
-extern const u32 gBattleAnimSpritePalette_009[];
-extern const u32 gBattleAnimSpritePalette_010[];
-extern const u32 gBattleAnimSpritePalette_011[];
-extern const u32 gBattleAnimSpritePalette_012[];
-extern const u32 gBattleAnimSpritePalette_013[];
-extern const u32 gBattleAnimSpritePalette_014[];
-extern const u32 gBattleAnimSpritePalette_015[];
-extern const u32 gBattleAnimSpritePalette_016[];
-extern const u32 gBattleAnimSpritePalette_016[];
-extern const u32 gBattleAnimSpritePalette_018[];
-extern const u32 gBattleAnimSpritePalette_019[];
-extern const u32 gBattleAnimSpritePalette_020[];
-extern const u32 gBattleAnimSpritePalette_021[];
-extern const u32 gBattleAnimSpritePalette_022[];
-extern const u32 gBattleAnimSpritePalette_023[];
-extern const u32 gBattleAnimSpritePalette_024[];
-extern const u32 gBattleAnimSpritePalette_025[];
-extern const u32 gBattleAnimSpritePalette_026[];
-extern const u32 gBattleAnimSpritePalette_027[];
-extern const u32 gBattleAnimSpritePalette_028[];
-extern const u32 gBattleAnimSpritePalette_029[];
-extern const u32 gBattleAnimSpritePalette_030[];
-extern const u32 gBattleAnimSpritePalette_031[];
-extern const u32 gBattleAnimSpritePalette_032[];
-extern const u32 gBattleAnimSpritePalette_033[];
-extern const u32 gBattleAnimSpritePalette_033[];
-extern const u32 gBattleAnimSpritePalette_033[];
-extern const u32 gBattleAnimSpritePalette_036[];
-extern const u32 gBattleAnimSpritePalette_036[];
-extern const u32 gBattleAnimSpritePalette_038[];
-extern const u32 gBattleAnimSpritePalette_039[];
-extern const u32 gBattleAnimSpritePalette_038[];
-extern const u32 gBattleAnimSpritePalette_038[];
-extern const u32 gBattleAnimSpritePalette_042[];
-extern const u32 gBattleAnimSpritePalette_043[];
-extern const u32 gBattleAnimSpritePalette_044[];
-extern const u32 gBattleAnimSpritePalette_045[];
-extern const u32 gBattleAnimSpritePalette_046[];
-extern const u32 gBattleAnimSpritePalette_047[];
-extern const u32 gBattleAnimSpritePalette_048[];
-extern const u32 gBattleAnimSpritePalette_049[];
-extern const u32 gBattleAnimSpritePalette_050[];
-extern const u32 gBattleAnimSpritePalette_050[];
-extern const u32 gBattleAnimSpritePalette_050[];
-extern const u32 gBattleAnimSpritePalette_026[];
-extern const u32 gBattleAnimSpritePalette_054[];
-extern const u32 gBattleAnimSpritePalette_050[];
-extern const u32 gBattleAnimSpritePalette_056[];
-extern const u32 gBattleAnimSpritePalette_057[];
-extern const u32 gBattleAnimSpritePalette_058[];
-extern const u32 gBattleAnimSpritePalette_059[];
-extern const u32 gBattleAnimSpritePalette_060[];
-extern const u32 gBattleAnimSpritePalette_061[];
-extern const u32 gBattleAnimSpritePalette_062[];
-extern const u32 gBattleAnimSpritePalette_063[];
-extern const u32 gBattleAnimSpritePalette_064[];
-extern const u32 gBattleAnimSpritePalette_065[];
-extern const u32 gBattleAnimSpritePalette_066[];
-extern const u32 gBattleAnimSpritePalette_067[];
-extern const u32 gBattleAnimSpritePalette_068[];
-extern const u32 gBattleAnimSpritePalette_065[];
-extern const u32 gBattleAnimSpritePalette_070[];
-extern const u32 gBattleAnimSpritePalette_070[];
-extern const u32 gBattleAnimSpritePalette_072[];
-extern const u32 gBattleAnimSpritePalette_073[];
-extern const u32 gBattleAnimSpritePalette_074[];
-extern const u32 gBattleAnimSpritePalette_075[];
-extern const u32 gBattleAnimSpritePalette_076[];
-extern const u32 gBattleAnimSpritePalette_076[];
-extern const u32 gBattleAnimSpritePalette_078[];
-extern const u32 gBattleAnimSpritePalette_078[];
-extern const u32 gBattleAnimSpritePalette_080[];
-extern const u32 gBattleAnimSpritePalette_081[];
-extern const u32 gBattleAnimSpritePalette_082[];
-extern const u32 gBattleAnimSpritePalette_083[];
-extern const u32 gBattleAnimSpritePalette_084[];
-extern const u32 gBattleAnimSpritePalette_085[];
-extern const u32 gBattleAnimSpritePalette_086[];
-extern const u32 gBattleAnimSpritePalette_087[];
-extern const u32 gBattleAnimSpritePalette_088[];
-extern const u32 gBattleAnimSpritePalette_089[];
-extern const u32 gBattleAnimSpritePalette_090[];
-extern const u32 gBattleAnimSpritePalette_091[];
-extern const u32 gBattleAnimSpritePalette_092[];
-extern const u32 gBattleAnimSpritePalette_093[];
-extern const u32 gBattleAnimSpritePalette_094[];
-extern const u32 gBattleAnimSpritePalette_095[];
-extern const u32 gBattleAnimSpritePalette_096[];
-extern const u32 gBattleAnimSpritePalette_097[];
-extern const u32 gBattleAnimSpritePalette_094[];
-extern const u32 gBattleAnimSpritePalette_099[];
-extern const u32 gBattleAnimSpritePalette_100[];
-extern const u32 gBattleAnimSpritePalette_101[];
-extern const u32 gBattleAnimSpritePalette_101[];
-extern const u32 gBattleAnimSpritePalette_103[];
-extern const u32 gBattleAnimSpritePalette_104[];
-extern const u32 gBattleAnimSpritePalette_105[];
-extern const u32 gBattleAnimSpritePalette_105[];
-extern const u32 gBattleAnimSpritePalette_107[];
-extern const u32 gBattleAnimSpritePalette_107[];
-extern const u32 gBattleAnimSpritePalette_109[];
-extern const u32 gBattleAnimSpritePalette_109[];
-extern const u32 gBattleAnimSpritePalette_111[];
-extern const u32 gBattleAnimSpritePalette_112[];
-extern const u32 gBattleAnimSpritePalette_113[];
-extern const u32 gBattleAnimSpritePalette_114[];
-extern const u32 gBattleAnimSpritePalette_115[];
-extern const u32 gBattleAnimSpritePalette_116[];
-extern const u32 gBattleAnimSpritePalette_117[];
-extern const u32 gBattleAnimSpritePalette_118[];
-extern const u32 gBattleAnimSpritePalette_119[];
-extern const u32 gBattleAnimSpritePalette_120[];
-extern const u32 gBattleAnimSpritePalette_121[];
-extern const u32 gBattleAnimSpritePalette_122[];
-extern const u32 gBattleAnimSpritePalette_122[];
-extern const u32 gBattleAnimSpritePalette_124[];
-extern const u32 gBattleAnimSpritePalette_125[];
-extern const u32 gBattleAnimSpritePalette_126[];
-extern const u32 gBattleAnimSpritePalette_127[];
-extern const u32 gBattleAnimSpritePalette_128[];
-extern const u32 gBattleAnimSpritePalette_128[];
-extern const u32 gBattleAnimSpritePalette_130[];
-extern const u32 gBattleAnimSpritePalette_130[];
-extern const u32 gBattleAnimSpritePalette_132[];
-extern const u32 gBattleAnimSpritePalette_133[];
-extern const u32 gBattleAnimSpritePalette_133[];
-extern const u32 gBattleAnimSpritePalette_135[];
-extern const u32 gBattleAnimSpritePalette_136[];
-extern const u32 gBattleAnimSpritePalette_135[];
-extern const u32 gBattleAnimSpritePalette_135[];
-extern const u32 gBattleAnimSpritePalette_139[];
-extern const u32 gBattleAnimSpritePalette_140[];
-extern const u32 gBattleAnimSpritePalette_141[];
-extern const u32 gBattleAnimSpritePalette_141[];
-extern const u32 gBattleAnimSpritePalette_143[];
-extern const u32 gBattleAnimSpritePalette_144[];
-extern const u32 gBattleAnimSpritePalette_139[];
-extern const u32 gBattleAnimSpritePalette_115[];
-extern const u32 gBattleAnimSpritePalette_147[];
-extern const u32 gBattleAnimSpritePalette_148[];
-extern const u32 gBattleAnimSpritePalette_148[];
-extern const u32 gBattleAnimSpritePalette_150[];
-extern const u32 gBattleAnimSpritePalette_150[];
-extern const u32 gBattleAnimSpritePalette_152[];
-extern const u32 gBattleAnimSpritePalette_153[];
-extern const u32 gBattleAnimSpritePalette_154[];
-extern const u32 gBattleAnimSpritePalette_155[];
-extern const u32 gBattleAnimSpritePalette_156[];
-extern const u32 gBattleAnimSpritePalette_157[];
-extern const u32 gBattleAnimSpritePalette_158[];
-extern const u32 gBattleAnimSpritePalette_159[];
-extern const u32 gBattleAnimSpritePalette_160[];
-extern const u32 gBattleAnimSpritePalette_161[];
-extern const u32 gBattleAnimSpritePalette_162[];
-extern const u32 gBattleAnimSpritePalette_163[];
-extern const u32 gBattleAnimSpritePalette_164[];
-extern const u32 gBattleAnimSpritePalette_165[];
-extern const u32 gBattleAnimSpritePalette_166[];
-extern const u32 gBattleAnimSpritePalette_167[];
-extern const u32 gBattleAnimSpritePalette_168[];
-extern const u32 gBattleAnimSpritePalette_169[];
-extern const u32 gBattleAnimSpritePalette_170[];
-extern const u32 gBattleAnimSpritePalette_171[];
-extern const u32 gBattleAnimSpritePalette_172[];
-extern const u32 gBattleAnimSpritePalette_174[];
-extern const u32 gBattleAnimSpritePalette_175[];
-extern const u32 gBattleAnimSpritePalette_176[];
-extern const u32 gBattleAnimSpritePalette_177[];
-extern const u32 gBattleAnimSpritePalette_178[];
-extern const u32 gBattleAnimSpritePalette_179[];
-extern const u32 gBattleAnimSpritePalette_182[];
-extern const u32 gBattleAnimSpritePalette_183[];
-extern const u32 gBattleAnimSpritePalette_184[];
-extern const u32 gBattleAnimSpritePalette_185[];
-extern const u32 gBattleAnimSpritePalette_186[];
-extern const u32 gBattleAnimSpritePalette_187[];
-extern const u32 gBattleAnimSpritePalette_188[];
-extern const u32 gBattleAnimSpritePalette_189[];
-extern const u32 gBattleAnimSpritePalette_190[];
-extern const u32 gBattleAnimSpritePalette_191[];
-extern const u32 gBattleAnimSpritePalette_192[];
-extern const u32 gBattleAnimSpritePalette_193[];
-extern const u32 gBattleAnimSpritePalette_194[];
-extern const u32 gBattleAnimSpritePalette_195[];
-extern const u32 gBattleAnimSpritePalette_196[];
-extern const u32 gBattleAnimSpritePalette_197[];
-extern const u32 gBattleAnimSpritePalette_198[];
-extern const u32 gBattleAnimSpritePalette_199[];
-extern const u32 gBattleAnimSpritePalette_200[];
-extern const u32 gBattleAnimSpritePalette_201[];
-extern const u32 gBattleAnimSpritePalette_202[];
-extern const u32 gBattleAnimSpritePalette_203[];
-extern const u32 gBattleAnimSpritePalette_204[];
-extern const u32 gBattleAnimSpritePalette_205[];
-extern const u32 gBattleAnimSpritePalette_206[];
-extern const u32 gBattleAnimSpritePalette_207[];
-extern const u32 gBattleAnimSpritePalette_209[];
-extern const u32 gBattleAnimSpritePalette_210[];
-extern const u32 gBattleAnimSpritePalette_211[];
-extern const u32 gBattleAnimSpritePalette_215[];
+extern const u32 gBattleAnimSpritePal_Bone[];
+extern const u32 gBattleAnimSpritePal_Spark[];
+extern const u32 gBattleAnimSpritePal_Pencil[];
+extern const u32 gBattleAnimSpritePal_AirWave[];
+extern const u32 gBattleAnimSpritePal_Orb[];
+extern const u32 gBattleAnimSpritePal_Sword[];
+extern const u32 gBattleAnimSpritePal_Seed[];
+extern const u32 gBattleAnimSpritePal_Explosion6[];
+extern const u32 gBattleAnimSpritePal_PinkOrb[];
+extern const u32 gBattleAnimSpritePal_Gust[];
+extern const u32 gBattleAnimSpritePal_IceCube[];
+extern const u32 gBattleAnimSpritePal_Spark2[];
+extern const u32 gBattleAnimSpritePal_Orange[];
+extern const u32 gBattleAnimSpritePal_YellowBall[];
+extern const u32 gBattleAnimSpritePal_LockOn[];
+extern const u32 gBattleAnimSpritePal_TiedBag[];
+extern const u32 gBattleAnimSpritePal_BlackSmoke[];
+extern const u32 gBattleAnimSpritePal_BlackSmoke[];
+extern const u32 gBattleAnimSpritePal_Conversion[];
+extern const u32 gBattleAnimSpritePal_Glass[];
+extern const u32 gBattleAnimSpritePal_HornHit[];
+extern const u32 gBattleAnimSpritePal_Hit[];
+extern const u32 gBattleAnimSpritePal_Hit2[];
+extern const u32 gBattleAnimSpritePal_BlueShards[];
+extern const u32 gBattleAnimSpritePal_ClosingEye[];
+extern const u32 gBattleAnimSpritePal_WavingHand[];
+extern const u32 gBattleAnimSpritePal_HitDuplicate[];
+extern const u32 gBattleAnimSpritePal_Leer[];
+extern const u32 gBattleAnimSpritePal_BlueBurst[];
+extern const u32 gBattleAnimSpritePal_SmallEmber[];
+extern const u32 gBattleAnimSpritePal_GraySmoke[];
+extern const u32 gBattleAnimSpritePal_BlueStar[];
+extern const u32 gBattleAnimSpritePal_BubbleBurst[];
+extern const u32 gBattleAnimSpritePal_Fire[];
+extern const u32 gBattleAnimSpritePal_Fire[];
+extern const u32 gBattleAnimSpritePal_Fire[];
+extern const u32 gBattleAnimSpritePal_Lightning2[];
+extern const u32 gBattleAnimSpritePal_Lightning2[];
+extern const u32 gBattleAnimSpritePal_ClawSlash2[];
+extern const u32 gBattleAnimSpritePal_ClawSlash[];
+extern const u32 gBattleAnimSpritePal_ClawSlash2[];
+extern const u32 gBattleAnimSpritePal_ClawSlash2[];
+extern const u32 gBattleAnimSpritePal_BubbleBurst2[];
+extern const u32 gBattleAnimSpritePal_IceChunk[];
+extern const u32 gBattleAnimSpritePal_Glass2[];
+extern const u32 gBattleAnimSpritePal_PinkHeart2[];
+extern const u32 gBattleAnimSpritePal_SapDrip[];
+extern const u32 gBattleAnimSpritePal_SapDrip2[];
+extern const u32 gBattleAnimSpritePal_Sparkle1[];
+extern const u32 gBattleAnimSpritePal_Sparkle2[];
+extern const u32 gBattleAnimSpritePal_HumanoidFoot[];
+extern const u32 gBattleAnimSpritePal_HumanoidFoot[];
+extern const u32 gBattleAnimSpritePal_HumanoidFoot[];
+extern const u32 gBattleAnimSpritePal_HitDuplicate[];
+extern const u32 gBattleAnimSpritePal_YellowUnk[];
+extern const u32 gBattleAnimSpritePal_HumanoidFoot[];
+extern const u32 gBattleAnimSpritePal_SlamHit[];
+extern const u32 gBattleAnimSpritePal_Ring[];
+extern const u32 gBattleAnimSpritePal_Rocks[];
+extern const u32 gBattleAnimSpritePal_Z[];
+extern const u32 gBattleAnimSpritePal_YellowUnk2[];
+extern const u32 gBattleAnimSpritePal_AirSlash[];
+extern const u32 gBattleAnimSpritePal_SpinningGreenOrbs[];
+extern const u32 gBattleAnimSpritePal_Leaf[];
+extern const u32 gBattleAnimSpritePal_Finger[];
+extern const u32 gBattleAnimSpritePal_PoisonPowder[];
+extern const u32 gBattleAnimSpritePal_BrownTriangle[];
+extern const u32 gBattleAnimSpritePal_SleepPowder[];
+extern const u32 gBattleAnimSpritePal_StunSpore[];
+extern const u32 gBattleAnimSpritePal_PoisonPowder[];
+extern const u32 gBattleAnimSpritePal_Sparkle3[];
+extern const u32 gBattleAnimSpritePal_Sparkle3[];
+extern const u32 gBattleAnimSpritePal_MusicNotes[];
+extern const u32 gBattleAnimSpritePal_Duck[];
+extern const u32 gBattleAnimSpritePal_MudSand[];
+extern const u32 gBattleAnimSpritePal_Alert[];
+extern const u32 gBattleAnimSpritePal_BlueFlames[];
+extern const u32 gBattleAnimSpritePal_BlueFlames[];
+extern const u32 gBattleAnimSpritePal_Shock4[];
+extern const u32 gBattleAnimSpritePal_Shock4[];
+extern const u32 gBattleAnimSpritePal_Bell2[];
+extern const u32 gBattleAnimSpritePal_PinkGlove[];
+extern const u32 gBattleAnimSpritePal_BlueLines[];
+extern const u32 gBattleAnimSpritePal_Impact3[];
+extern const u32 gBattleAnimSpritePal_Impact2[];
+extern const u32 gBattleAnimSpritePal_Reticle[];
+extern const u32 gBattleAnimSpritePal_Breath[];
+extern const u32 gBattleAnimSpritePal_Anger[];
+extern const u32 gBattleAnimSpritePal_Snowball[];
+extern const u32 gBattleAnimSpritePal_Vine[];
+extern const u32 gBattleAnimSpritePal_Sword2[];
+extern const u32 gBattleAnimSpritePal_Clapping[];
+extern const u32 gBattleAnimSpritePal_RedTube[];
+extern const u32 gBattleAnimSpritePal_Amnesia[];
+extern const u32 gBattleAnimSpritePal_String2[];
+extern const u32 gBattleAnimSpritePal_Pencil2[];
+extern const u32 gBattleAnimSpritePal_Petal[];
+extern const u32 gBattleAnimSpritePal_BentSpoon[];
+extern const u32 gBattleAnimSpritePal_String2[];
+extern const u32 gBattleAnimSpritePal_MilkBottle[];
+extern const u32 gBattleAnimSpritePal_Coin[];
+extern const u32 gBattleAnimSpritePal_CrackedEgg[];
+extern const u32 gBattleAnimSpritePal_CrackedEgg[];
+extern const u32 gBattleAnimSpritePal_FreshEgg[];
+extern const u32 gBattleAnimSpritePal_Fangs[];
+extern const u32 gBattleAnimSpritePal_Explosion2[];
+extern const u32 gBattleAnimSpritePal_Explosion2[];
+extern const u32 gBattleAnimSpritePal_WaterDroplet[];
+extern const u32 gBattleAnimSpritePal_WaterDroplet[];
+extern const u32 gBattleAnimSpritePal_Seed2[];
+extern const u32 gBattleAnimSpritePal_Seed2[];
+extern const u32 gBattleAnimSpritePal_RedWand[];
+extern const u32 gBattleAnimSpritePal_PurpleGreenUnk[];
+extern const u32 gBattleAnimSpritePal_WaterColumn[];
+extern const u32 gBattleAnimSpritePal_MudUnk[];
+extern const u32 gBattleAnimSpritePal_RainDrops[];
+extern const u32 gBattleAnimSpritePal_FurySwipes[];
+extern const u32 gBattleAnimSpritePal_Vine2[];
+extern const u32 gBattleAnimSpritePal_Teeth[];
+extern const u32 gBattleAnimSpritePal_Bone2[];
+extern const u32 gBattleAnimSpritePal_WhiteBag[];
+extern const u32 gBattleAnimSpritePal_Unknown[];
+extern const u32 gBattleAnimSpritePal_PurpleCoral[];
+extern const u32 gBattleAnimSpritePal_PurpleCoral[];
+extern const u32 gBattleAnimSpritePal_Shock2[];
+extern const u32 gBattleAnimSpritePal_ClosingEye2[];
+extern const u32 gBattleAnimSpritePal_MetalBall[];
+extern const u32 gBattleAnimSpritePal_MonsterDoll[];
+extern const u32 gBattleAnimSpritePal_Whirlwind[];
+extern const u32 gBattleAnimSpritePal_Whirlwind[];
+extern const u32 gBattleAnimSpritePal_Explosion4[];
+extern const u32 gBattleAnimSpritePal_Explosion4[];
+extern const u32 gBattleAnimSpritePal_Tongue[];
+extern const u32 gBattleAnimSpritePal_Smoke[];
+extern const u32 gBattleAnimSpritePal_Smoke[];
+extern const u32 gBattleAnimSpritePal_Impact[];
+extern const u32 gBattleAnimSpritePal_CircleImpact[];
+extern const u32 gBattleAnimSpritePal_Impact[];
+extern const u32 gBattleAnimSpritePal_Impact[];
+extern const u32 gBattleAnimSpritePal_SharpTeeth[];
+extern const u32 gBattleAnimSpritePal_RainbowRings[];
+extern const u32 gBattleAnimSpritePal_IceCrystals[];
+extern const u32 gBattleAnimSpritePal_IceCrystals[];
+extern const u32 gBattleAnimSpritePal_HandsAndFeet[];
+extern const u32 gBattleAnimSpritePal_MistCloud[];
+extern const u32 gBattleAnimSpritePal_SharpTeeth[];
+extern const u32 gBattleAnimSpritePal_RainDrops[];
+extern const u32 gBattleAnimSpritePal_Orbs[];
+extern const u32 gBattleAnimSpritePal_WaterImpact[];
+extern const u32 gBattleAnimSpritePal_WaterImpact[];
+extern const u32 gBattleAnimSpritePal_PoisonBubble[];
+extern const u32 gBattleAnimSpritePal_PoisonBubble[];
+extern const u32 gBattleAnimSpritePal_Spikes[];
+extern const u32 gBattleAnimSpritePal_HornHit2[];
+extern const u32 gBattleAnimSpritePal_AirWave2[];
+extern const u32 gBattleAnimSpritePal_SmallBubbles[];
+extern const u32 gBattleAnimSpritePal_RoundShadow[];
+extern const u32 gBattleAnimSpritePal_Sunlight[];
+extern const u32 gBattleAnimSpritePal_Spore[];
+extern const u32 gBattleAnimSpritePal_Flower[];
+extern const u32 gBattleAnimSpritePal_RazorLeaf[];
+extern const u32 gBattleAnimSpritePal_Needle[];
+extern const u32 gBattleAnimSpritePal_WhirlwindLines[];
+extern const u32 gBattleAnimSpritePal_GoldRing[];
+extern const u32 gBattleAnimSpritePal_PurpleRing[];
+extern const u32 gBattleAnimSpritePal_BlueRing[];
+extern const u32 gBattleAnimSpritePal_GreenLightWall[];
+extern const u32 gBattleAnimSpritePal_BlueLightWall[];
+extern const u32 gBattleAnimSpritePal_RedLightWall[];
+extern const u32 gBattleAnimSpritePal_GrayLightWall[];
+extern const u32 gBattleAnimSpritePal_OrangeLightWall[];
+extern const u32 gBattleAnimSpritePal_BlackBall2[];
+extern const u32 gBattleAnimSpritePal_PurpleGasCloud[];
+extern const u32 gBattleAnimSpritePal_YellowStar[];
+extern const u32 gBattleAnimSpritePal_LargeFreshEgg[];
+extern const u32 gBattleAnimSpritePal_ShadowBall[];
+extern const u32 gBattleAnimSpritePal_Lick[];
+extern const u32 gBattleAnimSpritePal_VoidLines[];
+extern const u32 gBattleAnimSpritePal_String[];
+extern const u32 gBattleAnimSpritePal_Lightbulb[];
+extern const u32 gBattleAnimSpritePal_Slash[];
+extern const u32 gBattleAnimSpritePal_FocusEnergy[];
+extern const u32 gBattleAnimSpritePal_SphereToCube[];
+extern const u32 gBattleAnimSpritePal_Tendrils[];
+extern const u32 gBattleAnimSpritePal_Eye[];
+extern const u32 gBattleAnimSpritePal_WhiteShadow[];
+extern const u32 gBattleAnimSpritePal_TealAlert[];
+extern const u32 gBattleAnimSpritePal_OpeningEye[];
+extern const u32 gBattleAnimSpritePal_RoundWhiteHalo[];
+extern const u32 gBattleAnimSpritePal_FangAttack[];
+extern const u32 gBattleAnimSpritePal_PurpleHandOutline[];
+extern const u32 gBattleAnimSpritePal_Moon[];
+extern const u32 gBattleAnimSpritePal_GreenSparkle[];
+extern const u32 gBattleAnimSpritePal_Spiral[];
+extern const u32 gBattleAnimSpritePal_SnoreZ[];
+extern const u32 gBattleAnimSpritePal_Explosion[];
+extern const u32 gBattleAnimSpritePal_Nail[];
+extern const u32 gBattleAnimSpritePal_GhostlySpirit[];
+extern const u32 gBattleAnimSpritePal_WarmRock[];
+extern const u32 gBattleAnimSpritePal_BreakingEgg[];
+extern const u32 gBattleAnimSpritePal_ThinRing[];
+extern const u32 gBattleAnimSpritePal_PunchImpact[];
+extern const u32 gBattleAnimSpritePal_Bell[];
+extern const u32 gBattleAnimSpritePal_MusicNotes2[];
+extern const u32 gBattleAnimSpritePal_SpeedDust[];
+extern const u32 gBattleAnimSpritePal_ThoughtBubble[];
+extern const u32 gBattleAnimSpritePal_MagentaHeart[];
+extern const u32 gBattleAnimSpritePal_ElectricOrbs[];
+extern const u32 gBattleAnimSpritePal_MovementWaves[];
extern const u32 gUnknown_08C249D0[];
extern const u32 gUnknown_08C249F8[];
-extern const u32 gBattleAnimSpritePalette_216[];
-extern const u32 gBattleAnimSpritePalette_217[];
-extern const u32 gBattleAnimSpritePalette_218[];
-extern const u32 gBattleAnimSpritePalette_219[];
+extern const u32 gBattleAnimSpritePal_RedHeart[];
+extern const u32 gBattleAnimSpritePal_RedOrb[];
+extern const u32 gBattleAnimSpritePal_EyeSparkle[];
+extern const u32 gBattleAnimSpritePal_PinkHeart[];
extern const u32 gUnknown_08C232E0;
extern const u32 gUnknown_08C23D50;
extern const u32 gUnknown_08C23D78;
-extern const u32 gBattleAnimSpritePalette_220[];
-extern const u32 gBattleAnimSpritePalette_221[];
-extern const u32 gBattleAnimSpritePalette_222[];
-extern const u32 gBattleAnimSpritePalette_223[];
-extern const u32 gBattleAnimSpritePalette_224[];
-extern const u32 gBattleAnimSpritePalette_225[];
-extern const u32 gBattleAnimSpritePalette_226[];
-extern const u32 gBattleAnimSpritePalette_228[];
-extern const u32 gBattleAnimSpritePalette_229[];
-extern const u32 gBattleAnimSpritePalette_230[];
-extern const u32 gBattleAnimSpritePalette_231[];
-extern const u32 gBattleAnimSpritePalette_233[];
-extern const u32 gBattleAnimSpritePalette_234[];
-extern const u32 gBattleAnimSpritePalette_235[];
-extern const u32 gBattleAnimSpritePalette_236[];
-extern const u32 gBattleAnimSpritePalette_237[];
-extern const u32 gBattleAnimSpritePalette_238[];
-extern const u32 gBattleAnimSpritePalette_239[];
-extern const u32 gBattleAnimSpritePalette_240[];
-extern const u32 gBattleAnimSpritePalette_241[];
-extern const u32 gBattleAnimSpritePalette_242[];
-extern const u32 gBattleAnimSpritePalette_243[];
-extern const u32 gBattleAnimSpritePalette_244[];
+extern const u32 gBattleAnimSpritePal_Angel[];
+extern const u32 gBattleAnimSpritePal_Devil[];
+extern const u32 gBattleAnimSpritePal_Swipe[];
+extern const u32 gBattleAnimSpritePal_Roots[];
+extern const u32 gBattleAnimSpritePal_ItemBag[];
+extern const u32 gBattleAnimSpritePal_JaggedMusicNote[];
+extern const u32 gBattleAnimSpritePal_Pokeball[];
+extern const u32 gBattleAnimSpritePal_LetterZ[];
+extern const u32 gBattleAnimSpritePal_RapidSpin[];
+extern const u32 gBattleAnimSpritePal_TriForceTriangle[];
+extern const u32 gBattleAnimSpritePal_WispOrb[];
+extern const u32 gBattleAnimSpritePal_GoldStars[];
+extern const u32 gBattleAnimSpritePal_EclipsingOrb[];
+extern const u32 gBattleAnimSpritePal_GrayOrb[];
+extern const u32 gBattleAnimSpritePal_BlueOrb[];
+extern const u32 gBattleAnimSpritePal_RedOrb2[];
+extern const u32 gBattleAnimSpritePal_PinkPetal[];
+extern const u32 gBattleAnimSpritePal_PainSplit[];
+extern const u32 gBattleAnimSpritePal_Confetti[];
+extern const u32 gBattleAnimSpritePal_GreenStar[];
+extern const u32 gBattleAnimSpritePal_PinkCloud[];
+extern const u32 gBattleAnimSpritePal_SweatDrop[];
+extern const u32 gBattleAnimSpritePal_GuardRing[];
extern const u32 gCureBubblesGfx[];
extern const u32 gCureBubblesPal[];
extern const u32 gCureBubblesTilemap[];
-extern const u32 gBattleAnimSpritePalette_245[];
-extern const u32 gBattleAnimSpritePalette_248[];
-extern const u32 gBattleAnimSpritePalette_249[];
-extern const u32 gBattleAnimSpritePalette_251[];
-extern const u32 gBattleAnimSpritePalette_252[];
-extern const u32 gBattleAnimSpritePalette_253[];
-extern const u32 gBattleAnimSpritePalette_254[];
-extern const u32 gBattleAnimSpritePalette_255[];
-extern const u32 gBattleAnimSpritePalette_256[];
-extern const u32 gBattleAnimSpritePalette_257[];
-extern const u32 gBattleAnimSpritePalette_258[];
-extern const u32 gBattleAnimSpritePalette_259[];
-extern const u32 gBattleAnimSpritePalette_260[];
-extern const u32 gBattleAnimSpritePalette_261[];
-extern const u32 gBattleAnimSpritePalette_262[];
-extern const u32 gBattleAnimSpritePalette_263[];
-extern const u32 gBattleAnimSpritePalette_264[];
-extern const u32 gBattleAnimSpritePalette_265[];
-extern const u32 gBattleAnimSpritePalette_266[];
-extern const u32 gBattleAnimSpritePalette_267[];
-extern const u32 gBattleAnimSpritePalette_268[];
-extern const u32 gBattleAnimSpritePalette_269[];
-extern const u32 gBattleAnimSpritePalette_270[];
-extern const u32 gBattleAnimSpritePalette_271[];
-extern const u32 gBattleAnimSpritePalette_272[];
-extern const u32 gBattleAnimSpritePalette_274[];
-extern const u32 gBattleAnimSpritePalette_277[];
-extern const u32 gBattleAnimSpritePalette_278[];
-extern const u32 gBattleAnimSpritePalette_279[];
-extern const u32 gBattleAnimSpritePalette_280[];
-extern const u32 gBattleAnimSpritePalette_281[];
-extern const u32 gBattleAnimSpritePalette_282[];
-extern const u32 gBattleAnimSpritePalette_283[];
-extern const u32 gBattleAnimSpritePalette_284[];
-extern const u32 gBattleAnimSpritePalette_285[];
-extern const u32 gBattleAnimSpritePalette_286[];
-extern const u32 gBattleAnimSpritePalette_287[];
-extern const u32 gBattleAnimSpritePalette_288[];
+extern const u32 gBattleAnimSpritePal_PurpleScratch[];
+extern const u32 gBattleAnimSpritePal_SmallRedEye[];
+extern const u32 gBattleAnimSpritePal_HollowOrb[];
+extern const u32 gBattleAnimSpritePal_BluegreenOrb[];
+extern const u32 gBattleAnimSpritePal_PawPrint[];
+extern const u32 gBattleAnimSpritePal_PurpleFlame[];
+extern const u32 gBattleAnimSpritePal_RedBall[];
+extern const u32 gBattleAnimSpritePal_SmellingsaltEffect[];
+extern const u32 gBattleAnimSpritePal_Meteor[];
+extern const u32 gBattleAnimSpritePal_FlatRock[];
+extern const u32 gBattleAnimSpritePal_MagnifyingGlass[];
+extern const u32 gBattleAnimSpritePal_BrownOrb[];
+extern const u32 gBattleAnimSpritePal_MetalSoundWaves[];
+extern const u32 gBattleAnimSpritePal_FlyingDirt[];
+extern const u32 gBattleAnimSpritePal_IcicleSpear[];
+extern const u32 gBattleAnimSpritePal_Hail[];
+extern const u32 gBattleAnimSpritePal_GlowyRedOrb[];
+extern const u32 gBattleAnimSpritePal_GlowyGreenOrb[];
+extern const u32 gBattleAnimSpritePal_GreenSpike[];
+extern const u32 gBattleAnimSpritePal_WhiteCircleOfLight[];
+extern const u32 gBattleAnimSpritePal_GlowyBlueOrb[];
+extern const u32 gBattleAnimSpritePal_RedBrick[];
+extern const u32 gBattleAnimSpritePal_WhiteFeather[];
+extern const u32 gBattleAnimSpritePal_Sparkle6[];
+extern const u32 gBattleAnimSpritePal_Splash[];
+extern const u32 gBattleAnimSpritePal_Gem1[];
+extern const u32 gBattleAnimSpritePal_SlamHit2[];
+extern const u32 gBattleAnimSpritePal_Recycle[];
+extern const u32 gBattleAnimSpritePal_RedParticles[];
+extern const u32 gBattleAnimSpritePal_Protect[];
+extern const u32 gBattleAnimSpritePal_DirtMound[];
+extern const u32 gBattleAnimSpritePal_Shock3[];
+extern const u32 gBattleAnimSpritePal_WeatherBall[];
+extern const u32 gBattleAnimSpritePal_Bird[];
+extern const u32 gBattleAnimSpritePal_CrossImpact[];
+extern const u32 gBattleAnimSpritePal_Slash2[];
+extern const u32 gBattleAnimSpritePal_WhipHit[];
+extern const u32 gBattleAnimSpritePal_BlueRing2[];
-extern const u32 gBattleAnimBackgroundImage_00[];
-extern const u32 gBattleAnimBackgroundImage_02[];
-extern const u32 gBattleAnimBackgroundImage_03[];
-extern const u32 gBattleAnimBackgroundImage_04[];
-extern const u32 gBattleAnimBackgroundImage_07[];
-extern const u32 gBattleAnimBackgroundImage_09[];
-extern const u32 gBattleAnimBackgroundImage_11[];
-extern const u32 gBattleAnimBackgroundImage_12[];
-extern const u32 gBattleAnimBackgroundImage_15[];
-extern const u32 gBattleAnimBackgroundImage_16[];
-extern const u32 gBattleAnimBackgroundImage_17[];
-extern const u32 gBattleAnimBackgroundImage_20[];
-extern const u32 gBattleAnimBackgroundImage_21[];
-extern const u32 gBattleAnimBackgroundPalette_00[];
-extern const u32 gBattleAnimBackgroundPalette_02[];
-extern const u32 gBattleAnimBackgroundPalette_03[];
-extern const u32 gBattleAnimBackgroundPalette_04[];
-extern const u32 gBattleAnimBackgroundPalette_07[];
-extern const u32 gBattleAnimBackgroundPalette_09[];
-extern const u32 gBattleAnimBackgroundPalette_11[];
-extern const u32 gBattleAnimBackgroundPalette_12[];
-extern const u32 gBattleAnimBackgroundPalette_15[];
-extern const u32 gBattleAnimBackgroundPalette_16[];
-extern const u32 gBattleAnimBackgroundPalette_17[];
-extern const u32 gBattleAnimBackgroundPalette_18[];
-extern const u32 gBattleAnimBackgroundPalette_20[];
-extern const u32 gBattleAnimBackgroundPalette_21[];
-extern const u32 gBattleAnimBackgroundPalette_22[];
-extern const u32 gBattleAnimBackgroundPalette_24[];
-extern const u32 gBattleAnimBackgroundTilemap_00[];
-extern const u32 gBattleAnimBackgroundTilemap_02[];
-extern const u32 gBattleAnimBackgroundTilemap_03[];
-extern const u32 gBattleAnimBackgroundTilemap_04[];
-extern const u32 gBattleAnimBackgroundTilemap_05[];
-extern const u32 gBattleAnimBackgroundTilemap_06[];
-extern const u32 gBattleAnimBackgroundTilemap_07[];
-extern const u32 gBattleAnimBackgroundTilemap_08[];
-extern const u32 gBattleAnimBackgroundTilemap_09[];
-extern const u32 gBattleAnimBackgroundTilemap_10[];
+extern const u32 gBattleAnimBgImage_Dark[];
+extern const u32 gBattleAnimBgImage_Ghost[];
+extern const u32 gBattleAnimBgImage_Psychic[];
+extern const u32 gBattleAnimBgImage_Impact[];
+extern const u32 gBattleAnimBgImage_Drill[];
+extern const u32 gBattleAnimBgImage_Highspeed[];
+extern const u32 gBattleAnimBgImage_Thunder[];
+extern const u32 gBattleAnimBgImage_Guillotine[];
+extern const u32 gBattleAnimBgImage_Ice[];
+extern const u32 gBattleAnimBgImage_Cosmic[];
+extern const u32 gBattleAnimBgImage_InAir[];
+extern const u32 gBattleAnimBgImage_Aurora[];
+extern const u32 gBattleAnimBgImage_Fissure[];
+extern const u32 gBattleAnimBgPalette_Dark[];
+extern const u32 gBattleAnimBgPalette_Ghost[];
+extern const u32 gBattleAnimBgPalette_Psychic[];
+extern const u32 gBattleAnimBgPalette_Impact[];
+extern const u32 gBattleAnimBgPalette_Drill[];
+extern const u32 gBattleAnimBgPalette_Highspeed[];
+extern const u32 gBattleAnimBgPalette_Thunder[];
+extern const u32 gBattleAnimBgPalette_Guillotine[];
+extern const u32 gBattleAnimBgPalette_Ice[];
+extern const u32 gBattleAnimBgPalette_Cosmic[];
+extern const u32 gBattleAnimBgPalette_InAir[];
+extern const u32 gBattleAnimBgPalette_Sky[];
+extern const u32 gBattleAnimBgPalette_Aurora[];
+extern const u32 gBattleAnimBgPalette_Fissure[];
+extern const u32 gBattleAnimBgPalette_Bug[];
+extern const u32 gBattleAnimBgPalette_Solarbeam[];
+extern const u32 gBattleAnimBgTilemap_Dark[];
+extern const u32 gBattleAnimBgTilemap_Ghost[];
+extern const u32 gBattleAnimBgTilemap_Psychic[];
+extern const u32 gBattleAnimBgTilemap_ImpactOpponent[];
+extern const u32 gBattleAnimBgTilemap_ImpactPlayer[];
+extern const u32 gBattleAnimBgTilemap_ImpactContests[];
+extern const u32 gBattleAnimBgTilemap_Drill[];
+extern const u32 gBattleAnimBgTilemap_DrillContests[];
+extern const u32 gBattleAnimBgTilemap_HighspeedOpponent[];
+extern const u32 gBattleAnimBgTilemap_HighspeedPlayer[];
extern const u32 gUnknown_08C2A634[];
extern const u32 gUnknown_08C2A6D4[];
extern const u32 gUnknown_08C2A6EC[];
-extern const u32 gBattleAnimBackgroundTilemap_11[];
-extern const u32 gBattleAnimBackgroundTilemap_12[];
-extern const u32 gBattleAnimBackgroundTilemap_13[];
-extern const u32 gBattleAnimBackgroundTilemap_14[];
-extern const u32 gBattleAnimBackgroundTilemap_15[];
-extern const u32 gBattleAnimBackgroundTilemap_16[];
-extern const u32 gBattleAnimBackgroundTilemap_17[];
-extern const u32 gBattleAnimBackgroundTilemap_20[];
-extern const u32 gBattleAnimBackgroundTilemap_21[];
+extern const u32 gBattleAnimBgTilemap_Thunder[];
+extern const u32 gBattleAnimBgTilemap_GuillotineOpponent[];
+extern const u32 gBattleAnimBgTilemap_GuillotinePlayer[];
+extern const u32 gBattleAnimBgTilemap_GuillotineContests[];
+extern const u32 gBattleAnimBgTilemap_Ice[];
+extern const u32 gBattleAnimBgTilemap_Cosmic[];
+extern const u32 gBattleAnimBgTilemap_InAir[];
+extern const u32 gBattleAnimBgTilemap_Aurora[];
+extern const u32 gBattleAnimBgTilemap_Fissure[];
extern const u32 gMetalShineGfx[];
extern const u32 gMetalShinePalette[];
@@ -4772,16 +4772,29 @@ extern const u32 gUnknown_08C16FA8[];
extern const u32 gUnknown_08C16E90[];
extern const u32 gUnknown_08C17170[];
extern const u32 gUnknown_08C17980[];
+extern const u32 gTiles_8C19450[];
+extern const u32 gContestNextTurnGfx[];
+extern const u16 gContestPal[];
+extern const u32 gUnknown_08C19168[];
+extern const u32 gContestApplauseGfx[];
+extern const u32 gContestJudgeGfx[];
+extern const u32 gContestJudgeSymbolsGfx[];
+extern const u32 gContest3Pal[];
extern const u32 gUnknown_08D95E00[];
extern const u32 gUnknown_08D960D0[];
extern const u32 gUnknown_08D963A4[];
-extern const u32 gBattleAnimBackgroundImage_Surf[];
-extern const u32 gBattleAnimBackgroundPalette_Surf[];
+extern const u32 gBattleAnimBgImage_Surf[];
+extern const u32 gBattleAnimBgPalette_Surf[];
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[];
@@ -4907,4 +4920,25 @@ 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 u32 gUnknown_08DD4CF8[];
+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/gym_leader_rematch.h b/include/gym_leader_rematch.h
index ef0e5fef1..778d7a1e8 100644
--- a/include/gym_leader_rematch.h
+++ b/include/gym_leader_rematch.h
@@ -75,11 +75,17 @@ enum {
REMATCH_WINONA,
REMATCH_TATE_AND_LIZA,
REMATCH_JUAN,
+
+ // Entries below SIDNEY are considered part of REMATCH_ELITE_FOUR_ENTRIES.
REMATCH_SIDNEY,
REMATCH_PHOEBE,
REMATCH_GLACIA,
REMATCH_DRAKE,
- REMATCH_WALLACE
+ REMATCH_WALLACE,
+
+ // The total number of rematch entries. This must be the last element
+ // in the enum.
+ REMATCH_TABLE_ENTRIES
};
void UpdateGymLeaderRematch(void);
diff --git a/include/international_string_util.h b/include/international_string_util.h
index 2d5b1c871..911cd6935 100644
--- a/include/international_string_util.h
+++ b/include/international_string_util.h
@@ -12,7 +12,7 @@ int GetStringCenterAlignXOffsetWithLetterSpacing(int fontId, const u8 *str, int
int GetStringWidthDifference(int fontId, const u8 *str, int totalWidth, int letterSpacing);
int GetMaxWidthInMenuTable(const struct MenuAction *str, int arg1);
int sub_81DB3D8(const struct MenuAction *str, const u8* arg1, int arg2);
-int sub_81DB41C(const struct ListMenuTemplate *listMenu);
+int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu);
void CopyMonCategoryText(int dexNum, u8 *dest);
u8 *sub_81DB494(u8 *str, int fontId, u8 *str2, int totalStringWidth);
void PadNameString(u8 *dest, u8 padChar);
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..62ae7761c 100644
--- a/include/link.h
+++ b/include/link.h
@@ -200,8 +200,6 @@ extern bool8 gLinkVSyncDisabled;
extern u32 gLinkStatus;
-void c2_mystery_gift(void);
-void sub_801867C(void);
bool8 IsWirelessAdapterConnected(void);
void Task_DestroySelf(u8 taskId);
void OpenLink(void);
@@ -230,14 +228,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 +303,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..edfd0ed20 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -260,7 +260,7 @@ u32 sub_8010714(u16 a0, const u8 *a1);
void sub_8011DC0(const u8 *a0, u16 a1);
bool8 sub_800EF1C(void);
bool32 sub_800EF58(bool32 a0);
-void sub_800E084(void);
+void DestroyWirelessStatusIndicatorSprite(void);
void sub_801103C(void);
void sub_8011C5C(void);
void sub_80106D4(void);
@@ -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);
+void LinkRfu_FatalError(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..16ac31df2 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;
@@ -69,6 +71,6 @@ void RestoreSerialTimer3IntrHandlers(void);
void StartTimer1(void);
void SeedRngAndSetTrainerId(void);
u16 GetGeneratedTrainerIdLower(void);
-
+void sub_819789C(void);
#endif // GUARD_MAIN_H
diff --git a/include/menu.h b/include/menu.h
index 7cd6de04b..08cad40bd 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -31,11 +31,11 @@ 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);
-void sub_81978B0(u16 arg0);
+void Menu_LoadStdPalAt(u16 arg0);
void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16));
void sub_8199DF0(u32 bg, u8 a1, int a2, int a3);
void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str);
@@ -69,7 +69,7 @@ u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16
void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
void sub_8198DBC(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u8 itemCount2, const struct MenuAction *strs, const u8 *a8);
-u8 sub_8199944(u8 windowId, u8 optionWidth, u8 horizontalCount, u8 verticalCount, u8 initialCursorPos);
+u8 sub_8199944(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos);
u8 sub_8199134(s8, s8);
u8 GetStartMenuWindowId(void);
void sub_819A2BC(u8, u8);
@@ -91,7 +91,7 @@ void sub_8199C30(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
void sub_8199D3C(void *ptr, int delta, int width, int height, bool32 is8BPP);
void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyToVram);
void sub_8197AE8(bool8 copyToVram);
-void sub_81997AC(u8 windowId, u8 a4, u8 a6, u8 a7, const struct MenuAction *strs);
+void PrintMenuGridTable(u8 windowId, u8 optionWidth, u8 columns, u8 rows, const struct MenuAction *strs);
s8 Menu_ProcessInputGridLayout(void);
u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted);
s8 Menu_ProcessInputNoWrapAround_other(void);
@@ -100,5 +100,8 @@ 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 ResetBgPositions(void);
+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_helpers.h b/include/menu_helpers.h
index 63af4c731..3b6c13172 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -30,7 +30,7 @@ bool8 itemid_80BF6D8_mail_related(u16 itemId);
bool8 sub_81221AC(void);
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_812225C(u16 *scrollOffset, u16 *cursorPos, u8 maxShownItems, u8 numItems);
void sub_8122298(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3, u8 arg4);
void LoadListMenuArrowsGfx(void);
void sub_8122344(u8 *spriteIds, u8 count);
diff --git a/include/menu_specialized.h b/include/menu_specialized.h
new file mode 100644
index 000000000..014ee2585
--- /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 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);
+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);
+void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bgClr, u8 fgClr, u8 shadowClr);
+void DrawLevelUpWindowPg2(u16 windowId, u16 *currStats, u8 bgClr, u8 fgClr, u8 shadowClr);
+void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *currStats);
+
+#endif // GUARD_MENU_SPECIALIZED_H
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index e18639faf..7fd1d1301 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -59,8 +59,8 @@ bool8 MetatileBehavior_IsSecretBasePoster(u8);
bool8 MetatileBehavior_IsNormal(u8);
bool8 MetatileBehavior_IsSecretBaseNorthWall(u8);
bool8 MetatileBehavior_IsMB_B2_Duplicate(u8);
-bool8 MetatileBehavior_IsSecretBaseLargeMatEdge(u8);
-bool8 MetatileBehavior_IsLargeMatCenter(u8);
+bool8 MetatileBehavior_HoldsSmallDecoration(u8);
+bool8 MetatileBehavior_HoldsLargeDecoration(u8);
bool8 MetatileBehavior_IsSecretBaseHole(u8);
bool8 MetatileBehavior_IsSecretBaseBalloon(u8);
bool8 MetatileBehavior_IsSecretBaseBreakableDoor(u8);
diff --git a/include/mevent.h b/include/mevent.h
new file mode 100755
index 000000000..a34ca355c
--- /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 WonderNews *GetSavedWonderNews(void);
+struct WonderCard *GetSavedWonderCard(void);
+struct MEventBuffer_3430_Sub *sav1_get_mevent_buffer_2(void);
+struct MysteryEventStruct *sub_801B044(void);
+u16 *sub_801B058(void);
+void DestroyWonderNews(void);
+bool32 sub_801B078(const struct WonderNews *src);
+bool32 ValidateReceivedWonderNews(void);
+bool32 WonderNews_Test_Unk_02(void);
+bool32 sub_801B1A4(const u8 *src);
+void DestroyWonderCard(void);
+bool32 sub_801B21C(const struct WonderCard *data);
+bool32 ValidateReceivedWonderCard(void);
+bool32 WonderCard_Test_Unk_08_6(void);
+u16 GetWonderCardFlagID(void);
+void WonderCard_ResetInternalReceivedFlag(struct WonderCard *buffer);
+bool32 CheckReceivedGiftFromWonderCard(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, const void *unused);
+u32 sub_801B708(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, const void *unused);
+bool32 MEventStruct_Unk1442CC_CompareField_unk_16(const struct MEventStruct_Unk1442CC *a0, const u16 *a1);
+u16 MEventStruct_Unk1442CC_GetValueNFrom_unk_20(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..d76bc92c2
--- /dev/null
+++ b/include/mevent_801BAAC.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_MEVENT_801BAAC_H
+#define GUARD_MEVENT_801BAAC_H
+
+bool32 InitWonderCardResources(struct WonderCard * r5, struct MEventBuffer_3430_Sub * r6);
+bool32 InitWonderNewsResources(const struct WonderNews * a0);
+s32 FadeToWonderCardMenu(void);
+s32 FadeToWonderNewsMenu(void);
+s32 FadeOutFromWonderCard(bool32 flag);
+void DestroyWonderCardResources(void);
+s32 FadeOutFromWonderNews(bool32 flag);
+void DestroyWonderNewsResources(void);
+u32 MENews_GetInput(u16 input);
+void MENews_AddScrollIndicatorArrowPair(void);
+void MENews_RemoveScrollIndicatorArrowPair(void);
+
+#endif //GUARD_MEVENT_801BAAC_H
diff --git a/include/mevent_client.h b/include/mevent_client.h
new file mode 100644
index 000000000..c32d14d7a
--- /dev/null
+++ b/include/mevent_client.h
@@ -0,0 +1,33 @@
+#ifndef GUARD_MEVENT_CLIENT_H
+#define GUARD_MEVENT_CLIENT_H
+
+#include "mevent_server_helpers.h"
+
+struct mevent_client_cmd
+{
+ u32 instr;
+ u32 parameter;
+};
+
+struct mevent_client
+{
+ u32 unk_00;
+ u32 param;
+ u32 mainseqno;
+ u32 flag;
+ u32 cmdidx;
+ void * sendBuffer;
+ void * recvBuffer;
+ struct mevent_client_cmd * cmdBuffer;
+ void * buffer;
+ struct mevent_srv_sub manager;
+ u32 unk_4C;
+};
+
+void mevent_client_do_init(u32 arg);
+u32 mevent_client_do_exec(u16 * a0);
+void mevent_client_inc_flag(void);
+void * mevent_client_get_buffer(void);
+void mevent_client_set_param(u32 a0);
+
+#endif //GUARD_MEVENT_CLIENT_H
diff --git a/include/mevent_news.h b/include/mevent_news.h
new file mode 100755
index 000000000..5fa009499
--- /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 GenerateRandomNews(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..e74337cf6
--- /dev/null
+++ b/include/mevent_server.h
@@ -0,0 +1,36 @@
+#ifndef GUARD_MEVENT_SERVER_H
+#define GUARD_MEVENT_SERVER_H
+
+#include "mevent_server_helpers.h"
+
+struct mevent_cmd
+{
+ u32 instr;
+ bool32 flag;
+ const void * parameter;
+};
+
+struct mevent_srv_common
+{
+ u32 unk_00;
+ u32 param;
+ u32 mainseqno;
+ u32 cmdidx;
+ const struct mevent_cmd * cmdBuffer;
+ void * recvBuffer;
+ struct WonderCard * wonder_card;
+ struct WonderNews * wonder_news;
+ struct MEventStruct_Unk1442CC * mevent_unk1442cc;
+ const void * sendBuffer1;
+ u32 sendBuffer1Size;
+ const void * sendBuffer2;
+ u32 sendBuffer2Size;
+ u32 sendWord;
+ struct mevent_srv_sub manager;
+};
+
+void mevent_srv_new_wcard();
+void mevent_srv_init_wnews();
+u32 mevent_srv_common_do_exec(u16 * a0);
+
+#endif //GUARD_MEVENT_SERVER_H
diff --git a/include/mevent_server_helpers.h b/include/mevent_server_helpers.h
new file mode 100644
index 000000000..e4e409862
--- /dev/null
+++ b/include/mevent_server_helpers.h
@@ -0,0 +1,38 @@
+#ifndef GUARD_MEVENT_SERVER_HELPERS_H
+#define GUARD_MEVENT_SERVER_HELPERS_H
+
+#define ME_SEND_BUF_SIZE 0x400
+
+struct mevent_srv_sub
+{
+ s32 seqno;
+ u8 sendPlayerNo;
+ u8 recvPlayerNo;
+ u16 recvIdent;
+ u16 recvCounter;
+ u16 recvCRC;
+ u16 recvSize;
+ u16 sendIdent;
+ u16 sendCounter;
+ u16 sendCRC;
+ u16 sendSize;
+ void * recvBfr;
+ const void * sendBfr;
+ u32 (*recvFunc)(struct mevent_srv_sub *);
+ u32 (*sendFunc)(struct mevent_srv_sub *);
+};
+
+struct send_recv_header
+{
+ u16 ident;
+ u16 crc;
+ u16 size;
+};
+
+void mevent_srv_sub_init(struct mevent_srv_sub *, u32, u32);
+void mevent_srv_sub_init_send(struct mevent_srv_sub * manager, u32 ident, const void * src, u32 size);
+bool32 mevent_srv_sub_recv(struct mevent_srv_sub * manager);
+bool32 mevent_srv_sub_send(struct mevent_srv_sub * manager);
+void mevent_srv_sub_init_recv(struct mevent_srv_sub *, u32, void *);
+
+#endif //GUARD_MEVENT_SERVER_HELPERS_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..243895a67
--- /dev/null
+++ b/include/mystery_gift.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_MYSTERY_GIFT_H
+#define GUARD_MYSTERY_GIFT_H
+
+extern bool8 gGiftIsFromEReader;
+
+u16 GetMysteryGiftBaseBlock(void);
+void c2_mystery_gift_e_reader_run(void);
+void PrintMysteryGiftOrEReaderTopMenu(bool8 isJapanese, bool32 usePickOkCancel);
+void MG_DrawCheckerboardPattern(u32 bg);
+void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void);
+bool32 MG_PrintTextOnWindow1AndWaitButton(u8 *textState, const u8 *str);
+void AddTextPrinterToWindow1(const u8 *src);
+void c2_ereader(void);
+void c2_mystery_gift(void);
+
+#endif //GUARD_MYSTERY_GIFT_H
diff --git a/include/naming_screen.h b/include/naming_screen.h
index b04cb19b6..611f53ef2 100644
--- a/include/naming_screen.h
+++ b/include/naming_screen.h
@@ -59,9 +59,9 @@ struct NamingScreenData {
enum
{
+ PAGE_OTHERS,
PAGE_UPPER,
PAGE_LOWER,
- PAGE_OTHERS,
};
enum
diff --git a/include/pokemon.h b/include/pokemon.h
index 60ccb27f4..26d715d89 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -487,7 +487,7 @@ u8 GetDefaultMoveTarget(u8 battlerId);
u8 GetMonGender(struct Pokemon *mon);
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
-void SetMultiuseSpriteTemplateToPokemon(u16 species, u8 battlerPosition);
+void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerFront(u16 arg0, u8 battlerPosition);
@@ -509,7 +509,7 @@ u8 GetMonsStateToDoubles(void);
u8 GetMonsStateToDoubles_2(void);
u8 GetAbilityBySpecies(u16 species, bool8 altAbility);
u8 GetMonAbility(struct Pokemon *mon);
-void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord);
+void CreateSecretBaseEnemyParty(struct SecretBase *secretBaseRecord);
u8 GetSecretBaseTrainerPicIndex(void);
u8 GetSecretBaseTrainerClass(void);
bool8 IsPlayerPartyAndPokemonStorageFull(void);
diff --git a/include/pokemon_3.h b/include/pokemon_3.h
deleted file mode 100644
index 263839b19..000000000
--- a/include/pokemon_3.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef GUARD_POKEMON_3_H
-#define GUARD_POKEMON_3_H
-
-u16 sub_806EFF0(u16);
-const u8* GetTrainerClassNameFromId(u16 trainerId);
-const u8* GetTrainerNameFromId(u16 trainerId);
-void PlayMapChosenOrBattleBGM(u16 song);
-u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
-
-#endif // GUARD_POKEMON_3_H
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index bd99fed0e..20d881702 100755
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -1,8 +1,13 @@
#ifndef GUARD_POKEMON_SUMMARY_SCREEN_H
#define GUARD_POKEMON_SUMMARY_SCREEN_H
+#include "main.h"
+
extern u8 gLastViewedMonIndex;
+extern const u8 *const gMoveDescriptionPointers[];
+extern const u8 *const gNatureNamePointers[];
+
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
void sub_81C4F98(u8, void(*)(void));
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
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/save.h b/include/save.h
index 88e5f2280..5e2cf7267 100644
--- a/include/save.h
+++ b/include/save.h
@@ -33,6 +33,7 @@ struct SaveSectionOffsets
#define NUM_SECTORS_PER_SLOT 16
#define UNKNOWN_CHECK_VALUE 0x8012025
+#define SPECIAL_SECTION_SENTINEL 0xB39D
// SetDamagedSectorBits states
enum
@@ -88,8 +89,8 @@ bool8 CheckSaveFile(void);
u8 Save_LoadGameData(u8 a1);
u16 sub_815355C(void);
u8 sub_81534D0(u8);
-u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
-u32 sub_8153634(u8 sector, u8* src);
+u32 TryReadSpecialSaveSection(u8 sector, u8* dst);
+u32 TryWriteSpecialSaveSection(u8 sector, u8* src);
void sub_8153688(u8 taskId);
// save_failed_screen.c
diff --git a/include/script.h b/include/script.h
index 34f4635bb..cfe493479 100644
--- a/include/script.h
+++ b/include/script.h
@@ -57,9 +57,9 @@ u32 CalculateRamScriptChecksum(void);
void ClearRamScript(void);
bool8 InitRamScript(const u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
const u8 *GetRamScript(u8 objectId, const u8 *script);
-bool32 sub_80991F8(void);
-u8 *sub_8099244(void);
-void sub_80992A0(u8 *script, u16 scriptSize);
+bool32 ValidateSavedRamScript(void);
+u8 *GetSavedRamScriptIfValid(void);
+void InitRamScript_NoEventObject(u8 *script, u16 scriptSize);
// srccmd.h
void sub_809BE48(u16 npcId);
diff --git a/include/script_menu.h b/include/script_menu.h
index 1f4e549fe..efb51870b 100644
--- a/include/script_menu.h
+++ b/include/script_menu.h
@@ -11,7 +11,7 @@ bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3);
bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void);
int convert_pixel_width_to_tile_width(int);
u8 CreateWindowFromRect(u8, u8, u8, u8);
-void sub_80E2A78(u8);
+void ClearToTransparentAndRemoveWindow(u8);
int display_text_and_get_width(const u8*, int);
int sub_80E2D5C(int arg0, int tileWidth);
bool16 ScrSpecial_CreatePCMenu(void);
diff --git a/include/secret_base.h b/include/secret_base.h
index 17efc314d..4e323b0c6 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -1,40 +1,30 @@
#ifndef GUARD_SECRET_BASE_H
#define GUARD_SECRET_BASE_H
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-void sub_80E9578(void);
-void sub_80E980C(void);
-void sub_80EB18C(struct SecretBaseRecord *dest);
-void sub_80E9914(void);
+void HideSecretBaseDecorationSprites(void);
+void CopyCurSecretBaseOwnerName_StrVar1(void);
+void ClearJapaneseSecretBases(struct SecretBase *dest);
+void SetPlayerSecretBaseParty(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 SetOccupiedSecretBaseEntranceMetatiles(struct MapEvents const *events);
+void InitSecretBaseAppearance(bool8 hidePC);
+bool8 CurMapIsSecretBase(void);
void SecretBasePerStepCallback(u8 taskId);
-bool8 sub_80E9680(void);
-void sub_80EB498(void);
-void sub_80EB56C(void);
-void sub_80EB9E0(void);
-void sub_80EBB28(void);
+bool8 TrySetCurSecretBase(void);
+void SetSecretBaseSecretsTvFlags_Poster(void);
+void SetSecretBaseSecretsTvFlags_MiscFurnature(void);
+void SetSecretBaseSecretsTvFlags_LargeDecorationSpot(void);
+void SetSecretBaseSecretsTvFlags_SmallDecorationSpot(void);
void WarpIntoSecretBase(const struct MapPosition *position, const struct MapEvents *events);
-bool8 sub_80E909C(void);
+bool8 SecretBaseMapPopupEnabled(void);
void sub_80EB218(void);
-void ResetSecretBases(void);
-
-// SetCurrentSecretBaseFromPosition
-void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events);
-// SetCurrentSecretBaseVar
-void sub_80E8B6C(void);
-void sub_80E8BC8(void);
-void sub_80E8D4C(void);
+void ClearSecretBases(void);
+void SetCurSecretBaseIdFromPosition(const struct MapPosition *position, const struct MapEvents *events);
+void TrySetCurSecretBaseIndex(void);
+void CheckPlayerHasSecretBase(void);
+void ToggleSecretBaseEntranceMetatile(void);
void EnableBothScriptContexts(void);
void ReceiveSecretBasesData(void *records, size_t recordSize, u8 linkIdx);
-
-
#endif //GUARD_SECRET_BASE_H
diff --git a/include/strings.h b/include/strings.h
index d0c339d4a..c62835ca1 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[];
@@ -126,7 +132,7 @@ extern const u8 gText_ApostropheSBase[];
extern const u8 gText_NoRegistry[];
extern const u8 gText_OkayToDeleteFromRegistry[];
extern const u8 gText_RegisteredDataDeleted[];
-extern const u8 gUnknown_085EA79D[];
+extern const u8 gText_DelRegist[];
extern const u8 gText_CommErrorEllipsis[];
extern const u8 gText_MoveCloserToLinkPartner[];
extern const u8 gText_CommErrorCheckConnections[];
@@ -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
@@ -464,6 +471,14 @@ extern const u8 gText_EggCantBattle[];
extern const u8 gText_PkmnAlreadySelected[];
extern const u8 gText_PkmnAlreadyInBattle[];
extern const u8 gText_PkmnCantSwitchOut[];
+extern const u8 gUnknown_085EEA46[];
+extern const u8 gUnknown_085EEA4E[];
+extern const u8 gUnknown_085EEA55[];
+extern const u8 gUnknown_085EEA63[];
+extern const u8 gUnknown_085EEA6B[];
+extern const u8 gUnknown_085EEA5D[];
+extern const u8 gText_Dash[];
+extern const u8 gText_UnkCtrlF904[];
//pokedex text
extern const u8 gText_CryOf[];
@@ -859,15 +874,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[];
@@ -2559,4 +2581,131 @@ 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[];
+extern const u8 gText_WirelessCommStatus[];
+extern const u8 gText_PeopleTrading[];
+extern const u8 gText_PeopleBattling[];
+extern const u8 gText_PeopleInUnionRoom[];
+extern const u8 gText_PeopleCommunicating[];
+extern const u8 gText_CommStandbyAwaitingOtherPlayer[];
+extern const u8 gText_RefusedBattle[];
+extern const u8 gText_BattleWasRefused[];
+extern const u8 gText_QuitChatting[];
+extern const u8 gText_RegisterTextWhere[];
+extern const u8 gText_RegisterTextHere[];
+extern const u8 gText_InputText[];
+extern const u8 gText_ExitingChat[];
+extern const u8 gText_LeaderLeftEndingChat[];
+extern const u8 gText_RegisteredTextChanged[];
+extern const u8 gText_AlreadySavedFile_Unused[];
+extern const u8 gText_SavingDontTurnOff_Unused[];
+extern const u8 gText_PlayerSavedGame_Unused[];
+extern const u8 gText_IfLeaderLeavesChatEnds[];
+extern const u8 gText_Upper[];
+extern const u8 gText_Lower[];
+extern const u8 gText_Symbols[];
+extern const u8 gText_Register2[];
+extern const u8 gText_Exit2[];
+
#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/text_window.h b/include/text_window.h
index 53a6df2e9..501597aa2 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -17,8 +17,8 @@ void LoadMessageBoxGfx(u8 windowId, u16 destOffset, u8 palOffset);
void LoadUserWindowBorderGfx(u8 windowId, u16 destOffset, u8 palOffset);
void LoadWindowGfx(u8 windowId, u8 frameId, u16 destOffset, u8 palOffset);
void LoadUserWindowBorderGfx_(u8 windowId, u16 destOffset, u8 palOffset);
-void sub_8098858(u8 windowId, u16 tileNum, u8 palNum);
-void sub_80989E0(u8 windowId, u16 tileNum, u8 palNum);
+void DrawTextBorderOuter(u8 windowId, u16 tileNum, u8 palNum);
+void DrawTextBorderInner(u8 windowId, u16 tileNum, u8 palNum);
void rbox_fill_rectangle(u8 windowId);
const u16 *stdpal_get(u8 id);
const u16 *GetOverworldTextboxPalettePtr(void);
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/trader.h b/include/trader.h
index c07ea81bd..25d72bd3b 100644
--- a/include/trader.h
+++ b/include/trader.h
@@ -6,7 +6,7 @@
#define GUARD_TRADER_H
void sub_8133DA0(u8 taskId);
-void sub_8133E1C(u8 taskId);
+void ExitTraderMenu(u8 taskId);
void TraderSetup(void);
void Trader_ResetFlag(void);
diff --git a/include/union_room.h b/include/union_room.h
new file mode 100644
index 000000000..538d37716
--- /dev/null
+++ b/include/union_room.h
@@ -0,0 +1,172 @@
+#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;
+ s8 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);
+void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0);
+void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0);
+void MEvent_CreateTask_Leader(u32 arg0);
+
+#endif //GUARD_UNION_ROOM_H
diff --git a/include/union_room_battle.h b/include/union_room_battle.h
new file mode 100644
index 000000000..2f5086008
--- /dev/null
+++ b/include/union_room_battle.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_UNION_ROOM_BATTLE_H
+#define GUARD_UNION_ROOM_BATTLE_H
+
+u8 sub_8013C40(void);
+void sub_8014210(u16 battleFlags);
+
+#endif //GUARD_UNION_ROOM_BATTLE_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
diff --git a/include/union_room_player_avatar.h b/include/union_room_player_avatar.h
new file mode 100644
index 000000000..9870d0981
--- /dev/null
+++ b/include/union_room_player_avatar.h
@@ -0,0 +1,14 @@
+#ifndef GUARD_UNION_ROOM_PLAYER_AVATAR_H
+#define GUARD_UNION_ROOM_PLAYER_AVATAR_H
+
+u8 sub_8019BA8(struct UnkStruct_8019BA8 * ptr);
+void sub_8019E3C(void);
+void sub_8019E70(u8 *arg0, s32 arg1);
+void sub_8019F04(u8 *spriteIds);
+void sub_8019F2C(void);
+void sub_801A274(struct UnkStruct_URoom *arg0);
+void sub_801A284(struct UnkStruct_URoom *arg0);
+bool32 sub_801A2A8(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3);
+void sub_801A3D0(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2);
+
+#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H
diff --git a/include/util.h b/include/util.h
index 56c89359a..77062de96 100644
--- a/include/util.h
+++ b/include/util.h
@@ -10,8 +10,8 @@ u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *));
void StoreWordInTwoHalfwords(u16 *, u32);
void LoadWordFromTwoHalfwords(u16 *, u32 *);
int CountTrailingZeroBits(u32 value);
-u16 CalcCRC16(u8 *data, s32 length);
-u16 CalcCRC16WithTable(u8 *data, u32 length);
+u16 CalcCRC16(const u8 *data, s32 length);
+u16 CalcCRC16WithTable(const u8 *data, u32 length);
u32 CalcByteArraySum(const u8* data, u32 length);
void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor);
void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha);