summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorCameron Hall <cameronghall@cox.net>2018-01-16 22:39:45 -0600
committerCameron Hall <cameronghall@cox.net>2018-01-16 22:39:45 -0600
commite11494a4c10765c5cd8b7fd18bafae48c1141c92 (patch)
treeafb3c407d504283ff6f7f0f53070ebe4f123865c /include
parent2f4f96ca5d62b4d18eb4d78eed71ea8073a385ff (diff)
parent58dd1c92ac6270d229c6762ca640118e4dd5e3cf (diff)
Merge branch 'master' into german_debug
Diffstat (limited to 'include')
-rw-r--r--include/battle.h148
-rw-r--r--include/battle_ai.h8
-rw-r--r--include/battle_script_commands.h65
-rw-r--r--include/battle_string_ids.h387
-rw-r--r--include/battle_util.h4
-rw-r--r--include/constants/items.h131
-rw-r--r--include/constants/songs.h708
-rw-r--r--include/contest.h103
-rw-r--r--include/contest_ai.h16
-rw-r--r--include/easy_chat.h2
-rw-r--r--[-rwxr-xr-x]include/ewram.h6
-rw-r--r--[-rwxr-xr-x]include/gba/isagbprint.h0
-rw-r--r--include/graphics.h604
-rw-r--r--include/pokemon.h5
-rw-r--r--include/pokemon_item_effect.h2
-rw-r--r--[-rwxr-xr-x]include/region_map_sections.h0
-rw-r--r--include/save.h83
17 files changed, 1721 insertions, 551 deletions
diff --git a/include/battle.h b/include/battle.h
index 27ed57045..d3cbd24f5 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -4,6 +4,30 @@
#include "sprite.h"
#include "constants/battle_constants.h"
+/*
+ Banks are a name given to what could be called a 'battlerId' or 'monControllerId'.
+ Each bank has a value consisting of two bits.
+ 0x1 bit is responsible for the side, 0 = player's side, 1 = opponent's side.
+ 0x2 bit is responsible for the id of sent out pokemon. 0 means it's the first sent out pokemon, 1 it's the second one. (Triple battle didn't exist at the time yet.)
+*/
+
+#define BATTLE_BANKS_COUNT 4
+
+#define IDENTITY_PLAYER_MON1 0
+#define IDENTITY_OPPONENT_MON1 1
+#define IDENTITY_PLAYER_MON2 2
+#define IDENTITY_OPPONENT_MON2 3
+
+#define SIDE_PLAYER 0x0
+#define SIDE_OPPONENT 0x1
+
+#define BIT_SIDE 0x1
+#define BIT_MON 0x2
+
+#define GET_BANK_IDENTITY(bank)((gBanksByIdentity[bank]))
+#define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & BIT_SIDE))
+#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE))
+
enum
{
BATTLE_TERRAIN_GRASS,
@@ -49,16 +73,16 @@ struct AI_Stack
struct AI_ThinkingStruct /* 0x2016800 */
{
-/* 0x00 */ u8 aiState;
-/* 0x01 */ u8 movesetIndex;
-/* 0x02 */ u16 moveConsidered;
-/* 0x04 */ s8 score[4]; // score?
-/* 0x08 */ u32 funcResult;
-/* 0x0C */ u32 aiFlags;
-/* 0x10 */ u8 aiAction;
-/* 0x11 */ u8 aiLogicId;
-/* 0x12 */ u8 filler12[6];
-/* 0x18 */ u8 simulatedRNG[4];
+ /*0x00*/ u8 aiState;
+ /*0x01*/ u8 movesetIndex;
+ /*0x02*/ u16 moveConsidered;
+ /*0x04*/ s8 score[4]; // score?
+ /*0x08*/ u32 funcResult;
+ /*0x0C*/ u32 aiFlags;
+ /*0x10*/ u8 aiAction;
+ /*0x11*/ u8 aiLogicId;
+ /*0x12*/ u8 filler12[6];
+ /*0x18*/ u8 simulatedRNG[4];
};
struct BattleStruct /* 0x2000000 */
@@ -302,6 +326,18 @@ struct BattleStruct /* 0x2000000 */
/* 0x16A00 */ struct UnkBattleStruct1 unk_2016A00_2;
};
+struct StatsArray
+{
+ u16 hp;
+ u16 atk;
+ u16 def;
+ u16 spd;
+ u16 spAtk;
+ u16 spDef;
+};
+
+#define gBattleResources_statsBeforeLvlUp ((struct StatsArray *)(gSharedMem + 0x17180))
+
struct DisableStruct
{
/*0x00*/ u32 transformedMonPersonality;
@@ -473,7 +509,7 @@ struct sideTimer
u8 lightscreenTimer; //0x1
u8 mistTimer; //0x2
u8 field3; //0x3
- u16 field4; //0x4
+ u16 field4; //0x4
u8 spikesAmount; //0x6
u8 safeguardTimer; //0x7
u8 followmeTimer; //0x8
@@ -491,7 +527,7 @@ struct WishFutureKnock
u8 wishCounter[MAX_BANKS_BATTLE];
u8 wishUserID[MAX_BANKS_BATTLE];
u8 weatherDuration;
- u16 knockedOffPokes;
+ u8 knockedOffPokes[2];
};
extern struct UnkBattleStruct1 unk_2016A00;
@@ -504,6 +540,88 @@ extern struct WishFutureKnock gWishFutureKnock;
extern struct AI_ThinkingStruct gAIThinkingSpace;
extern struct Struct20238C8 gUnknown_020238C8;
+#define GET_MOVE_TYPE(move, typeArg) \
+{ \
+ if (gBattleStruct->dynamicMoveType) \
+ typeArg = gBattleStruct->dynamicMoveType & 0x3F; \
+ else \
+ typeArg = gBattleMoves[move].type; \
+}
+
+#define MOVE_EFFECT_SLEEP 0x1
+#define MOVE_EFFECT_POISON 0x2
+#define MOVE_EFFECT_BURN 0x3
+#define MOVE_EFFECT_FREEZE 0x4
+#define MOVE_EFFECT_PARALYSIS 0x5
+#define MOVE_EFFECT_TOXIC 0x6
+#define MOVE_EFFECT_CONFUSION 0x7
+#define MOVE_EFFECT_FLINCH 0x8
+#define MOVE_EFFECT_TRI_ATTACK 0x9
+#define MOVE_EFFECT_UPROAR 0xA
+#define MOVE_EFFECT_PAYDAY 0xB
+#define MOVE_EFFECT_CHARGING 0xC
+#define MOVE_EFFECT_WRAP 0xD
+#define MOVE_EFFECT_RECOIL_25 0xE
+#define MOVE_EFFECT_ATK_PLUS_1 0xF
+#define MOVE_EFFECT_DEF_PLUS_1 0x10
+#define MOVE_EFFECT_SPD_PLUS_1 0x11
+#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12
+#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13
+#define MOVE_EFFECT_ACC_PLUS_1 0x14
+#define MOVE_EFFECT_EVS_PLUS_1 0x15
+#define MOVE_EFFECT_ATK_MINUS_1 0x16
+#define MOVE_EFFECT_DEF_MINUS_1 0x17
+#define MOVE_EFFECT_SPD_MINUS_1 0x18
+#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19
+#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A
+#define MOVE_EFFECT_ACC_MINUS_1 0x1B
+#define MOVE_EFFECT_EVS_MINUS_1 0x1C
+#define MOVE_EFFECT_RECHARGE 0x1D
+#define MOVE_EFFECT_RAGE 0x1E
+#define MOVE_EFFECT_STEAL_ITEM 0x1F
+#define MOVE_EFFECT_PREVENT_ESCAPE 0x20
+#define MOVE_EFFECT_NIGHTMARE 0x21
+#define MOVE_EFFECT_ALL_STATS_UP 0x22
+#define MOVE_EFFECT_RAPIDSPIN 0x23
+#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24
+#define MOVE_EFFECT_ATK_DEF_DOWN 0x25
+#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26
+#define MOVE_EFFECT_ATK_PLUS_2 0x27
+#define MOVE_EFFECT_DEF_PLUS_2 0x28
+#define MOVE_EFFECT_SPD_PLUS_2 0x29
+#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A
+#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B
+#define MOVE_EFFECT_ACC_PLUS_2 0x2C
+#define MOVE_EFFECT_EVS_PLUS_2 0x2D
+#define MOVE_EFFECT_ATK_MINUS_2 0x2E
+#define MOVE_EFFECT_DEF_MINUS_2 0x2F
+#define MOVE_EFFECT_SPD_MINUS_2 0x30
+#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31
+#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32
+#define MOVE_EFFECT_ACC_MINUS_2 0x33
+#define MOVE_EFFECT_EVS_MINUS_2 0x34
+#define MOVE_EFFECT_THRASH 0x35
+#define MOVE_EFFECT_KNOCK_OFF 0x36
+#define MOVE_EFFECT_NOTHING_37 0x37
+#define MOVE_EFFECT_NOTHING_38 0x38
+#define MOVE_EFFECT_NOTHING_39 0x39
+#define MOVE_EFFECT_NOTHING_3A 0x3A
+#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
+#define MOVE_EFFECT_NOTHING_3C 0x3C
+#define MOVE_EFFECT_NOTHING_3D 0x3D
+#define MOVE_EFFECT_NOTHING_3E 0x3E
+#define MOVE_EFFECT_NOTHING_3F 0x3F
+#define MOVE_EFFECT_AFFECTS_USER 0x40
+#define MOVE_EFFECT_CERTAIN 0x80
+
+#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
+#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
+#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
+
+#define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0))
+
+#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
+
// used in many battle files, it seems as though Hisashi Sogabe wrote
// some sort of macro to replace the use of actually calling memset.
// Perhaps it was thought calling memset was much slower?
@@ -540,7 +658,7 @@ struct funcStack
struct scriptsStack
{
- u8* ptr[8];
+ const u8 *ptr[8];
u8 size;
};
@@ -676,11 +794,11 @@ void nullsub_10(int);
void load_gfxc_health_bar();
u8 battle_load_something();
void sub_8031F88(u8);
-void sub_80324F8(struct Pokemon *, u8);
+void HandleLowHpMusicChange(struct Pokemon *, u8);
void sub_8032638();
void sub_8032AA8(u8, u8);
void SetBankFuncToOpponentBufferRunCommand(void);
-void BattleMusicStop(void);
+void BattleStopLowHpSound(void);
// asm/battle_9.o
void SetBankFuncToLinkOpponentBufferRunCommand(void);
diff --git a/include/battle_ai.h b/include/battle_ai.h
index c22ca8633..fdad0c7e9 100644
--- a/include/battle_ai.h
+++ b/include/battle_ai.h
@@ -10,10 +10,10 @@ enum
// AI states
enum
{
- AIState_SettingUp,
- AIState_Processing,
- AIState_FinishedProcessing,
- AIState_DoNotProcess
+ BATTLEAI_SETTING_UP,
+ BATTLEAI_PROCESSING,
+ BATTLEAI_FINISHED,
+ BATTLEAI_DO_NOT_PROCESS
};
// battle_ai
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
new file mode 100644
index 000000000..030844ec3
--- /dev/null
+++ b/include/battle_script_commands.h
@@ -0,0 +1,65 @@
+#ifndef GUARD_BATTLE_SCRIPT_COMMANDS_H
+#define GUARD_BATTLE_SCRIPT_COMMANDS_H
+
+#define NO_ACC_CALC 0xFFFE
+#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF
+#define ACC_CURR_MOVE 0
+
+#define CMP_EQUAL 0x0
+#define CMP_NOT_EQUAL 0x1
+#define CMP_GREATER_THAN 0x2
+#define CMP_LESS_THAN 0x3
+#define CMP_COMMON_BITS 0x4
+#define CMP_NO_COMMON_BITS 0x5
+
+#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
+#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
+#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
+
+#define ATK48_STAT_NEGATIVE 0x1
+#define ATK48_STAT_BY_TWO 0x2
+#define ATK48_BIT_x4 0x4
+#define ATK48_LOWER_FAIL_CHECK 0x8
+
+#define ATK4F_DONT_CHECK_STATUSES 0x80
+
+#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
+#define VARIOUS_SET_MAGIC_COAT_TARGET 1
+#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
+#define VARIOUS_GET_MOVE_TARGET 3
+#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
+#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
+#define VARIOUS_EMIT_YESNOBOX 13
+#define VARIOUS_WAIT_CRY 18
+#define VARIOUS_RETURN_OPPONENT_MON1 19
+#define VARIOUS_RETURN_OPPONENT_MON2 20
+#define VARIOUS_SET_TELEPORT_OUTCOME 25
+#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
+
+#define ATK80_DMG_CHANGE_SIGN 0
+#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1
+#define ATK80_DMG_DOUBLED 2
+
+#define STAT_CHANGE_BS_PTR 0x1
+#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20
+
+#define STAT_CHANGE_WORKED 0
+#define STAT_CHANGE_DIDNT_WORK 1
+
+#define WINDOW_CLEAR 0x1
+#define WINDOW_x80 0x80
+
+void AI_CalcDmg(u8 bankAtk, u8 bankDef);
+u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef);
+u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
+u8 BankGetTurnOrder(u8 bank);
+void SetMoveEffect(bool8 primary, u8 certain);
+void BattleDestroyYesNoCursorAt(u8 cursorPosition);
+void BattleCreateYesNoCursorAt(u8 cursorPosition);
+void BufferMoveToLearnIntoBattleTextBuff2(void);
+void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
+bool8 UproarWakeUpCheck(u8 bank);
+
+extern void (* const gBattleScriptingCommandsTable[])(void);
+
+#endif // GUARD_BATTLE_SCRIPT_COMMANDS_H
diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h
new file mode 100644
index 000000000..f242284b0
--- /dev/null
+++ b/include/battle_string_ids.h
@@ -0,0 +1,387 @@
+#ifndef GUARD_BATTLE_STRING_IDS_H
+#define GUARD_BATTLE_STRING_IDS_H
+
+#define BATTLESTRINGS_COUNT 369
+
+#define BATTLESTRINGS_ID_ADDER 12 // all battlestrings have its ID + 12, because first 5 are reserved
+
+#define STRINGID_INTROMSG 0
+#define STRINGID_INTROSENDOUT 1
+#define STRINGID_RETURNMON 2
+#define STRINGID_SWITCHINMON 3
+#define STRINGID_USEDMOVE 4
+#define STRINGID_BATTLEEND 5
+
+
+// todo: make some of those names less vague: attacker/target vs pkmn, etc.
+#define STRINGID_TRAINER1LOSETEXT 12
+#define STRINGID_PKMNGAINEDEXP 13
+#define STRINGID_PKMNGREWTOLV 14
+#define STRINGID_PKMNLEARNEDMOVE 15
+#define STRINGID_TRYTOLEARNMOVE1 16
+#define STRINGID_TRYTOLEARNMOVE2 17
+#define STRINGID_TRYTOLEARNMOVE3 18
+#define STRINGID_PKMNFORGOTMOVE 19
+#define STRINGID_STOPLEARNINGMOVE 20
+#define STRINGID_DIDNOTLEARNMOVE 21
+#define STRINGID_PKMNLEARNEDMOVE2 22
+#define STRINGID_ATTACKMISSED 23
+#define STRINGID_PKMNPROTECTEDITSELF 24
+#define STRINGID_STATSWONTINCREASE2 25
+#define STRINGID_AVOIDEDDAMAGE 26
+#define STRINGID_ITDOESNTAFFECT 27
+#define STRINGID_ATTACKERFAINTED 28
+#define STRINGID_TARGETFAINTED 29
+#define STRINGID_PLAYERGOTMONEY 30
+#define STRINGID_PLAYERWHITEOUT 31
+#define STRINGID_PLAYERWHITEOUT2 32
+#define STRINGID_PREVENTSESCAPE 33
+#define STRINGID_HITXTIMES 34
+#define STRINGID_PKMNFELLASLEEP 35
+#define STRINGID_PKMNMADESLEEP 36
+#define STRINGID_PKMNALREADYASLEEP 37
+#define STRINGID_PKMNALREADYASLEEP2 38
+#define STRINGID_PKMNWASNTAFFECTED 39
+#define STRINGID_PKMNWASPOISONED 40
+#define STRINGID_PKMNPOISONEDBY 41
+#define STRINGID_PKMNHURTBYPOISON 42
+#define STRINGID_PKMNALREADYPOISONED 43
+#define STRINGID_PKMNBADLYPOISONED 44
+#define STRINGID_PKMNENERGYDRAINED 45
+#define STRINGID_PKMNWASBURNED 46
+#define STRINGID_PKMNBURNEDBY 47
+#define STRINGID_PKMNHURTBYBURN 48
+#define STRINGID_PKMNWASFROZEN 49
+#define STRINGID_PKMNFROZENBY 50
+#define STRINGID_PKMNISFROZEN 51
+#define STRINGID_PKMNWASDEFROSTED 52
+#define STRINGID_PKMNWASDEFROSTED2 53
+#define STRINGID_PKMNWASDEFROSTEDBY 54
+#define STRINGID_PKMNWASPARALYZED 55
+#define STRINGID_PKMNWASPARALYZEDBY 56
+#define STRINGID_PKMNISPARALYZED 57
+#define STRINGID_PKMNISALREADYPARALYZED 58
+#define STRINGID_PKMNHEALEDPARALYSIS 59
+#define STRINGID_PKMNDREAMEATEN 60
+#define STRINGID_STATSWONTINCREASE 61
+#define STRINGID_STATSWONTDECREASE 62
+#define STRINGID_TEAMSTOPPEDWORKING 63
+#define STRINGID_FOESTOPPEDWORKING 64
+#define STRINGID_PKMNISCONFUSED 65
+#define STRINGID_PKMNHEALEDCONFUSION 66
+#define STRINGID_PKMNWASCONFUSED 67
+#define STRINGID_PKMNALREADYCONFUSED 68
+#define STRINGID_PKMNFELLINLOVE 69
+#define STRINGID_PKMNINLOVE 70
+#define STRINGID_PKMNIMMOBILIZEDBYLOVE 71
+#define STRINGID_PKMNBLOWNAWAY 72
+#define STRINGID_PKMNCHANGEDTYPE 73
+#define STRINGID_PKMNFLINCHED 74
+#define STRINGID_PKMNREGAINEDHEALTH 75
+#define STRINGID_PKMNHPFULL 76
+#define STRINGID_PKMNRAISEDSPDEF 77
+#define STRINGID_PKMNRAISEDDEF 78
+#define STRINGID_PKMNCOVEREDBYVEIL 79
+#define STRINGID_PKMNUSEDSAFEGUARD 80
+#define STRINGID_PKMNSAFEGUARDEXPIRED 81
+#define STRINGID_PKMNWENTTOSLEEP 82
+#define STRINGID_PKMNSLEPTHEALTHY 83
+#define STRINGID_PKMNWHIPPEDWHIRLWIND 84
+#define STRINGID_PKMNTOOKSUNLIGHT 85
+#define STRINGID_PKMNLOWEREDHEAD 86
+#define STRINGID_PKMNISGLOWING 87
+#define STRINGID_PKMNFLEWHIGH 88
+#define STRINGID_PKMNDUGHOLE 89
+#define STRINGID_PKMNSQUEEZEDBYBIND 90
+#define STRINGID_PKMNTRAPPEDINVORTEX 91
+#define STRINGID_PKMNWRAPPEDBY 92
+#define STRINGID_PKMNCLAMPED 93
+#define STRINGID_PKMNHURTBY 94
+#define STRINGID_PKMNFREEDFROM 95
+#define STRINGID_PKMNCRASHED 96
+#define STRINGID_PKMNSHROUDEDINMIST 97
+#define STRINGID_PKMNPROTECTEDBYMIST 98
+#define STRINGID_PKMNGETTINGPUMPED 99
+#define STRINGID_PKMNHITWITHRECOIL 100
+#define STRINGID_PKMNPROTECTEDITSELF2 101
+#define STRINGID_PKMNBUFFETEDBYSANDSTORM 102
+#define STRINGID_PKMNPELTEDBYHAIL 103
+#define STRINGID_PKMNSEEDED 104
+#define STRINGID_PKMNEVADEDATTACK 105
+#define STRINGID_PKMNSAPPEDBYLEECHSEED 106
+#define STRINGID_PKMNFASTASLEEP 107
+#define STRINGID_PKMNWOKEUP 108
+#define STRINGID_PKMNUPROARKEPTAWAKE 109
+#define STRINGID_PKMNWOKEUPINUPROAR 110
+#define STRINGID_PKMNCAUSEDUPROAR 111
+#define STRINGID_PKMNMAKINGUPROAR 112
+#define STRINGID_PKMNCALMEDDOWN 113
+#define STRINGID_PKMNCANTSLEEPINUPROAR 114
+#define STRINGID_PKMNSTOCKPILED 115
+#define STRINGID_PKMNCANTSTOCKPILE 116
+#define STRINGID_PKMNCANTSLEEPINUPROAR2 117
+#define STRINGID_UPROARKEPTPKMNAWAKE 118
+#define STRINGID_PKMNSTAYEDAWAKEUSING 119
+#define STRINGID_PKMNSTORINGENERGY 120
+#define STRINGID_PKMNUNLEASHEDENERGY 121
+#define STRINGID_PKMNFATIGUECONFUSION 122
+#define STRINGID_PKMNPICKEDUPITEM 123
+#define STRINGID_PKMNUNAFFECTED 124
+#define STRINGID_PKMNTRANSFORMEDINTO 125
+#define STRINGID_PKMNMADESUBSTITUTE 126
+#define STRINGID_PKMNHASSUBSTITUTE 127
+#define STRINGID_SUBSTITUTEDAMAGED 128
+#define STRINGID_PKMNSUBSTITUTEFADED 129
+#define STRINGID_PKMNMUSTRECHARGE 130
+#define STRINGID_PKMNRAGEBUILDING 131
+#define STRINGID_PKMNMOVEWASDISABLED 132
+#define STRINGID_PKMNMOVEISDISABLED 133
+#define STRINGID_PKMNMOVEDISABLEDNOMORE 134
+#define STRINGID_PKMNGOTENCORE 135
+#define STRINGID_PKMNENCOREENDED 136
+#define STRINGID_PKMNTOOKAIM 137
+#define STRINGID_PKMNSKETCHEDMOVE 138
+#define STRINGID_PKMNTRYINGTOTAKEFOE 139
+#define STRINGID_PKMNTOOKFOE 140
+#define STRINGID_PKMNREDUCEDPP 141
+#define STRINGID_PKMNSTOLEITEM 142
+#define STRINGID_TARGETCANTESCAPENOW 143
+#define STRINGID_PKMNFELLINTONIGHTMARE 144
+#define STRINGID_PKMNLOCKEDINNIGHTMARE 145
+#define STRINGID_PKMNLAIDCURSE 146
+#define STRINGID_PKMNAFFLICTEDBYCURSE 147
+#define STRINGID_SPIKESSCATTERED 148
+#define STRINGID_PKMNHURTBYSPIKES 149
+#define STRINGID_PKMNIDENTIFIED 150
+#define STRINGID_PKMNPERISHCOUNTFELL 151
+#define STRINGID_PKMNBRACEDITSELF 152
+#define STRINGID_PKMNENDUREDHIT 153
+#define STRINGID_MAGNITUDESTRENGTH 154
+#define STRINGID_PKMNCUTHPMAXEDATTACK 155
+#define STRINGID_PKMNCOPIEDSTATCHANGES 156
+#define STRINGID_PKMNGOTFREE 157
+#define STRINGID_PKMNSHEDLEECHSEED 158
+#define STRINGID_PKMNBLEWAWAYSPIKES 159
+#define STRINGID_PKMNFLEDFROMBATTLE 160
+#define STRINGID_PKMNFORESAWATTACK 161
+#define STRINGID_PKMNTOOKATTACK 162
+#define STRINGID_PKMNATTACK 163
+#define STRINGID_PKMNCENTERATTENTION 164
+#define STRINGID_PKMNCHARGINGPOWER 165
+#define STRINGID_NATUREPOWERTURNEDINTO 166
+#define STRINGID_PKMNSTATUSNORMAL 167
+#define STRINGID_PKMNHASNOMOVESLEFT 168
+#define STRINGID_PKMNSUBJECTEDTOTORMENT 169
+#define STRINGID_PKMNCANTUSEMOVETORMENT 170
+#define STRINGID_PKMNTIGHTENINGFOCUS 171
+#define STRINGID_PKMNFELLFORTAUNT 172
+#define STRINGID_PKMNCANTUSEMOVETAUNT 173
+#define STRINGID_PKMNREADYTOHELP 174
+#define STRINGID_PKMNSWITCHEDITEMS 175
+#define STRINGID_PKMNCOPIEDFOE 176
+#define STRINGID_PKMNMADEWISH 177
+#define STRINGID_PKMNWISHCAMETRUE 178
+#define STRINGID_PKMNPLANTEDROOTS 179
+#define STRINGID_PKMNABSORBEDNUTRIENTS 180
+#define STRINGID_PKMNANCHOREDITSELF 181
+#define STRINGID_PKMNWASMADEDROWSY 182
+#define STRINGID_PKMNKNOCKEDOFF 183
+#define STRINGID_PKMNSWAPPEDABILITIES 184
+#define STRINGID_PKMNSEALEDOPPONENTMOVE 185
+#define STRINGID_PKMNCANTUSEMOVESEALED 186
+#define STRINGID_PKMNWANTSGRUDGE 187
+#define STRINGID_PKMNLOSTPPGRUDGE 188
+#define STRINGID_PKMNSHROUDEDITSELF 189
+#define STRINGID_PKMNMOVEBOUNCED 190
+#define STRINGID_PKMNWAITSFORTARGET 191
+#define STRINGID_PKMNSNATCHEDMOVE 192
+#define STRINGID_PKMNMADEITRAIN 193
+#define STRINGID_PKMNRAISEDSPEED 194
+#define STRINGID_PKMNPROTECTEDBY 195
+#define STRINGID_PKMNPREVENTSUSAGE 196
+#define STRINGID_PKMNRESTOREDHPUSING 197
+#define STRINGID_PKMNCHANGEDTYPEWITH 198
+#define STRINGID_PKMNPREVENTSPARALYSISWITH 199
+#define STRINGID_PKMNPREVENTSROMANCEWITH 200
+#define STRINGID_PKMNPREVENTSPOISONINGWITH 201
+#define STRINGID_PKMNPREVENTSCONFUSIONWITH 202
+#define STRINGID_PKMNRAISEDFIREPOWERWITH 203
+#define STRINGID_PKMNANCHORSITSELFWITH 204
+#define STRINGID_PKMNCUTSATTACKWITH 205
+#define STRINGID_PKMNPREVENTSSTATLOSSWITH 206
+#define STRINGID_PKMNHURTSWITH 207
+#define STRINGID_PKMNTRACED 208
+#define STRINGID_STATSHARPLY 209
+#define STRINGID_STATROSE 210
+#define STRINGID_STATHARSHLY 211
+#define STRINGID_STATFELL 212
+#define STRINGID_PKMNSSTATCHANGED 213
+#define STRINGID_PKMNSSTATCHANGED2 214
+#define STRINGID_PKMNSSTATCHANGED3 215
+#define STRINGID_PKMNSSTATCHANGED4 216
+#define STRINGID_CRITICALHIT 217
+#define STRINGID_ONEHITKO 218
+#define STRINGID_123POOF 219
+#define STRINGID_ANDELLIPSIS 220
+#define STRINGID_NOTVERYEFFECTIVE 221
+#define STRINGID_SUPEREFFECTIVE 222
+#define STRINGID_GOTAWAYSAFELY 223
+#define STRINGID_WILDPKMNFLED 224
+#define STRINGID_NORUNNINGFROMTRAINERS 225
+#define STRINGID_CANTESCAPE 226
+#define STRINGID_DONTLEAVEBIRCH 227
+#define STRINGID_BUTNOTHINGHAPPENED 228
+#define STRINGID_BUTITFAILED 229
+#define STRINGID_ITHURTCONFUSION 230
+#define STRINGID_MIRRORMOVEFAILED 231
+#define STRINGID_STARTEDTORAIN 232
+#define STRINGID_DOWNPOURSTARTED 233
+#define STRINGID_RAINCONTINUES 234
+#define STRINGID_DOWNPOURCONTINUES 235
+#define STRINGID_RAINSTOPPED 236
+#define STRINGID_SANDSTORMBREWED 237
+#define STRINGID_SANDSTORMRAGES 238
+#define STRINGID_SANDSTORMSUBSIDED 239
+#define STRINGID_SUNLIGHTGOTBRIGHT 240
+#define STRINGID_SUNLIGHTSTRONG 241
+#define STRINGID_SUNLIGHTFADED 242
+#define STRINGID_STARTEDHAIL 243
+#define STRINGID_HAILCONTINUES 244
+#define STRINGID_HAILSTOPPED 245
+#define STRINGID_FAILEDTOSPITUP 246
+#define STRINGID_FAILEDTOSWALLOW 247
+#define STRINGID_WINDBECAMEHEATWAVE 248
+#define STRINGID_STATCHANGESGONE 249
+#define STRINGID_COINSSCATTERED 250
+#define STRINGID_TOOWEAKFORSUBSTITUTE 251
+#define STRINGID_SHAREDPAIN 252
+#define STRINGID_BELLCHIMED 253
+#define STRINGID_FAINTINTHREE 254
+#define STRINGID_NOPPLEFT 255
+#define STRINGID_BUTNOPPLEFT 256
+#define STRINGID_PLAYERUSEDITEM 257
+#define STRINGID_WALLYUSEDITEM 258
+#define STRINGID_TRAINERBLOCKEDBALL 259
+#define STRINGID_DONTBEATHIEF 260
+#define STRINGID_ITDODGEDBALL 261
+#define STRINGID_YOUMISSEDPKMN 262
+#define STRINGID_PKMNBROKEFREE 263
+#define STRINGID_ITAPPEAREDCAUGHT 264
+#define STRINGID_AARGHALMOSTHADIT 265
+#define STRINGID_SHOOTSOCLOSE 266
+#define STRINGID_GOTCHAPKMNCAUGHT 267
+#define STRINGID_GOTCHAPKMNCAUGHT2 268
+#define STRINGID_GIVENICKNAMECAPTURED 269
+#define STRINGID_PKMNSENTTOPC 270
+#define STRINGID_PKMNDATAADDEDTODEX 271
+#define STRINGID_ITISRAINING 272
+#define STRINGID_SANDSTORMISRAGING 273
+#define STRINGID_CANTESCAPE2 274
+#define STRINGID_PKMNIGNORESASLEEP 275
+#define STRINGID_PKMNIGNOREDORDERS 276
+#define STRINGID_PKMNBEGANTONAP 277
+#define STRINGID_PKMNLOAFING 278
+#define STRINGID_PKMNWONTOBEY 279
+#define STRINGID_PKMNTURNEDAWAY 280
+#define STRINGID_PKMNPRETENDNOTNOTICE 281
+#define STRINGID_ENEMYABOUTTOSWITCHPKMN 282
+#define STRINGID_CREPTCLOSER 283
+#define STRINGID_CANTGETCLOSER 284
+#define STRINGID_PKMNWATCHINGCAREFULLY 285
+#define STRINGID_PKMNCURIOUSABOUTX 286
+#define STRINGID_PKMNENTHRALLEDBYX 287
+#define STRINGID_PKMNIGNOREDX 288
+#define STRINGID_THREWPOKEBLOCKATPKMN 289
+#define STRINGID_OUTOFSAFARIBALLS 290
+#define STRINGID_PKMNSITEMCUREDPARALYSIS 291
+#define STRINGID_PKMNSITEMCUREDPOISON 292
+#define STRINGID_PKMNSITEMHEALEDBURN 293
+#define STRINGID_PKMNSITEMDEFROSTEDIT 294
+#define STRINGID_PKMNSITEMWOKEIT 295
+#define STRINGID_PKMNSITEMSNAPPEDOUT 296
+#define STRINGID_PKMNSITEMCUREDPROBLEM 297
+#define STRINGID_PKMNSITEMRESTOREDHEALTH 298
+#define STRINGID_PKMNSITEMRESTOREDPP 299
+#define STRINGID_PKMNSITEMRESTOREDSTATUS 300
+#define STRINGID_PKMNSITEMRESTOREDHPALITTLE 301
+#define STRINGID_ITEMALLOWSONLYYMOVE 302
+#define STRINGID_PKMNHUNGONWITHX 303
+#define STRINGID_EMPTYSTRING3 304
+#define STRINGID_PKMNSXPREVENTSBURNS 305
+#define STRINGID_PKMNSXBLOCKSY 306
+#define STRINGID_PKMNSXRESTOREDHPALITTLE2 307
+#define STRINGID_PKMNSXWHIPPEDUPSANDSTORM 308
+#define STRINGID_PKMNSXPREVENTSYLOSS 309
+#define STRINGID_PKMNSXINFATUATEDY 310
+#define STRINGID_PKMNSXMADEYINEFFECTIVE 311
+#define STRINGID_PKMNSXCUREDYPROBLEM 312
+#define STRINGID_ITSUCKEDLIQUIDOOZE 313
+#define STRINGID_PKMNTRANSFORMED 314
+#define STRINGID_ELECTRICITYWEAKENED 315
+#define STRINGID_FIREWEAKENED 316
+#define STRINGID_PKMNHIDUNDERWATER 317
+#define STRINGID_PKMNSPRANGUP 318
+#define STRINGID_HMMOVESCANTBEFORGOTTEN 319
+#define STRINGID_XFOUNDONEY 320
+#define STRINGID_PLAYERDEFEATEDTRAINER1 321
+#define STRINGID_SOOTHINGAROMA 322
+#define STRINGID_ITEMSCANTBEUSEDNOW 323
+#define STRINGID_FORXCOMMAYZ 324
+#define STRINGID_USINGXTHEYOFZN 325
+#define STRINGID_PKMNUSEDXTOGETPUMPED 326
+#define STRINGID_PKMNSXMADEYUSELESS 327
+#define STRINGID_PKMNTRAPPEDBYSANDTOMB 328
+#define STRINGID_EMPTYSTRING4 329
+#define STRINGID_ABOOSTED 330
+#define STRINGID_PKMNSXINTENSIFIEDSUN 331
+#define STRINGID_PKMNMAKESGROUNDMISS 332
+#define STRINGID_YOUTHROWABALLNOWRIGHT 333
+#define STRINGID_PKMNSXTOOKATTACK 334
+#define STRINGID_PKMNCHOSEXASDESTINY 335
+#define STRINGID_PKMNLOSTFOCUS 336
+#define STRINGID_USENEXTPKMN 337
+#define STRINGID_PKMNFLEDUSINGITS 338
+#define STRINGID_PKMNFLEDUSING 339
+#define STRINGID_PKMNWASDRAGGEDOUT 340
+#define STRINGID_PREVENTEDFROMWORKING 341
+#define STRINGID_PKMNSITEMNORMALIZEDSTATUS 342
+#define STRINGID_TRAINER1USEDITEM 343
+#define STRINGID_BOXISFULL 344
+#define STRINGID_PKMNAVOIDEDATTACK 345
+#define STRINGID_PKMNSXMADEITINEFFECTIVE 346
+#define STRINGID_PKMNSXPREVENTSFLINCHING 347
+#define STRINGID_PKMNALREADYHASBURN 348
+#define STRINGID_STATSWONTDECREASE2 349
+#define STRINGID_PKMNSXBLOCKSY2 350
+#define STRINGID_PKMNSXWOREOFF 351
+#define STRINGID_PKMNRAISEDDEFALITTLE 352
+#define STRINGID_PKMNRAISEDSPDEFALITTLE 353
+#define STRINGID_THEWALLSHATTERED 354
+#define STRINGID_PKMNSXPREVENTSYSZ 355
+#define STRINGID_PKMNSXCUREDITSYPROBLEM 356
+#define STRINGID_ATTACKERCANTESCAPE 357
+#define STRINGID_PKMNOBTAINEDX 358
+#define STRINGID_PKMNOBTAINEDX2 359
+#define STRINGID_PKMNOBTAINEDXYOBTAINEDZ 360
+#define STRINGID_BUTNOEFFECT 361
+#define STRINGID_PKMNSXHADNOEFFECTONY 362
+#define STRINGID_TWOENEMIESDEFEATED 363
+#define STRINGID_TRAINER2LOSETEXT 364
+#define STRINGID_PKMNINCAPABLEOFPOWER 365
+#define STRINGID_GLINTAPPEARSINEYE 366
+#define STRINGID_PKMNGETTINGINTOPOSITION 367
+#define STRINGID_PKMNBEGANGROWLINGDEEPLY 368
+#define STRINGID_PKMNEAGERFORMORE 369
+#define STRINGID_DEFEATEDOPPONENTBYREFEREE 370
+#define STRINGID_LOSTTOOPPONENTBYREFEREE 371
+#define STRINGID_TIEDOPPONENTBYREFEREE 372
+#define STRINGID_QUESTIONFORFEITMATCH 373
+#define STRINGID_FORFEITEDMATCH 374
+#define STRINGID_PKMNTRANSFERREDSOMEONESPC 375
+#define STRINGID_PKMNTRANSFERREDLANETTESPC 376
+#define STRINGID_PKMNBOXSOMEONESPCFULL 377
+#define STRINGID_PKMNBOXLANETTESPCFULL 378
+#define STRINGID_TRAINER1WINTEXT 379
+#define STRINGID_TRAINER2WINTEXT 380
+
+#endif // GUARD_BATTLE_STRING_IDS_H
diff --git a/include/battle_util.h b/include/battle_util.h
index f47b00b2c..15fa39d1a 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -11,7 +11,7 @@
#define BS_GET_OPPONENT2 14
void TryClearRageStatuses(void);
-void BattleScriptPush(u8* BS_ptr);
+void BattleScriptPush(const u8* BS_ptr);
void PressurePPLoseOnUsingImprision(u8 bankAtk);
void PressurePPLoseOnUsingPerishSong(u8 bankAtk);
void sub_80155A4(u8);
@@ -22,7 +22,7 @@ void ResetSentPokesToOpponentValue(void);
void sub_8015740(u8 bank);
void sub_80157C4(u8 bank);
bool8 HandleWishPerishSongOnTurnEnd(void);
-void BattleScriptExecute(u8* BS_ptr);
+void BattleScriptExecute(const u8* BS_ptr);
void BattleScriptPushCursorAndCallback(u8* BS_ptr);
u8 IsMonDisobedient(void);
diff --git a/include/constants/items.h b/include/constants/items.h
index 48fba1427..9b88db1da 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -2,6 +2,8 @@
#define GUARD_CONSTANTS_ITEMS_H
#define ITEM_NONE 0
+
+// Balls
#define ITEM_MASTER_BALL 1
#define ITEM_ULTRA_BALL 2
#define ITEM_GREAT_BALL 3
@@ -14,6 +16,8 @@
#define ITEM_TIMER_BALL 10
#define ITEM_LUXURY_BALL 11
#define ITEM_PREMIER_BALL 12
+
+// Pokemon Items
#define ITEM_POTION 13
#define ITEM_ANTIDOTE 14
#define ITEM_BURN_HEAL 15
@@ -180,6 +184,8 @@
#define ITEM_0B0 176
#define ITEM_0B1 177
#define ITEM_0B2 178
+
+// hold items
#define ITEM_BRIGHT_POWDER 179
#define ITEM_WHITE_HERB 180
#define ITEM_MACHO_BRACE 181
@@ -260,6 +266,8 @@
#define ITEM_PINK_SCARF 256
#define ITEM_GREEN_SCARF 257
#define ITEM_YELLOW_SCARF 258
+
+// Key Items
#define ITEM_MACH_BIKE 259
#define ITEM_COIN_CASE 260
#define ITEM_ITEMFINDER 261
@@ -290,64 +298,68 @@
#define ITEM_ROOT_FOSSIL 286
#define ITEM_CLAW_FOSSIL 287
#define ITEM_DEVON_SCOPE 288
-#define ITEM_TM01 289
-#define ITEM_TM02 290
-#define ITEM_TM03 291
-#define ITEM_TM04 292
-#define ITEM_TM05 293
-#define ITEM_TM06 294
-#define ITEM_TM07 295
-#define ITEM_TM08 296
-#define ITEM_TM09 297
-#define ITEM_TM10 298
-#define ITEM_TM11 299
-#define ITEM_TM12 300
-#define ITEM_TM13 301
-#define ITEM_TM14 302
-#define ITEM_TM15 303
-#define ITEM_TM16 304
-#define ITEM_TM17 305
-#define ITEM_TM18 306
-#define ITEM_TM19 307
-#define ITEM_TM20 308
-#define ITEM_TM21 309
-#define ITEM_TM22 310
-#define ITEM_TM23 311
-#define ITEM_TM24 312
-#define ITEM_TM25 313
-#define ITEM_TM26 314
-#define ITEM_TM27 315
-#define ITEM_TM28 316
-#define ITEM_TM29 317
-#define ITEM_TM30 318
-#define ITEM_TM31 319
-#define ITEM_TM32 320
-#define ITEM_TM33 321
-#define ITEM_TM34 322
-#define ITEM_TM35 323
-#define ITEM_TM36 324
-#define ITEM_TM37 325
-#define ITEM_TM38 326
-#define ITEM_TM39 327
-#define ITEM_TM40 328
-#define ITEM_TM41 329
-#define ITEM_TM42 330
-#define ITEM_TM43 331
-#define ITEM_TM44 332
-#define ITEM_TM45 333
-#define ITEM_TM46 334
-#define ITEM_TM47 335
-#define ITEM_TM48 336
-#define ITEM_TM49 337
-#define ITEM_TM50 338
-#define ITEM_HM01 339
-#define ITEM_HM02 340
-#define ITEM_HM03 341
-#define ITEM_HM04 342
-#define ITEM_HM05 343
-#define ITEM_HM06 344
-#define ITEM_HM07 345
-#define ITEM_HM08 346
+
+// TMs/HMs
+#define ITEM_TM01_FOCUS_PUNCH 289
+#define ITEM_TM02_DRAGON_CLAW 290
+#define ITEM_TM03_WATER_PULSE 291
+#define ITEM_TM04_CALM_MIND 292
+#define ITEM_TM05_ROAR 293
+#define ITEM_TM06_TOXIC 294
+#define ITEM_TM07_HAIL 295
+#define ITEM_TM08_BULK_UP 296
+#define ITEM_TM09_BULLET_SEED 297
+#define ITEM_TM10_HIDDEN_POWER 298
+#define ITEM_TM11_SUNNY_DAY 299
+#define ITEM_TM12_TAUNT 300
+#define ITEM_TM13_ICE_BEAM 301
+#define ITEM_TM14_BLIZZARD 302
+#define ITEM_TM15_HYPER_BEAM 303
+#define ITEM_TM16_LIGHT_SCREEN 304
+#define ITEM_TM17_PROTECT 305
+#define ITEM_TM18_RAIN_DANCE 306
+#define ITEM_TM19_GIGA_DRAIN 307
+#define ITEM_TM20_SAFEGUARD 308
+#define ITEM_TM21_FRUSTRATION 309
+#define ITEM_TM22_SOLARBEAM 310
+#define ITEM_TM23_IRON_TAIL 311
+#define ITEM_TM24_THUNDERBOLT 312
+#define ITEM_TM25_THUNDER 313
+#define ITEM_TM26_EARTHQUAKE 314
+#define ITEM_TM27_RETURN 315
+#define ITEM_TM28_DIG 316
+#define ITEM_TM29_PSYCHIC 317
+#define ITEM_TM30_SHADOW_BALL 318
+#define ITEM_TM31_BRICK_BREAK 319
+#define ITEM_TM32_DOUBLE_TEAM 320
+#define ITEM_TM33_REFLECT 321
+#define ITEM_TM34_SHOCK_WAVE 322
+#define ITEM_TM35_FLAMETHROWER 323
+#define ITEM_TM36_SLUDGE_BOMB 324
+#define ITEM_TM37_SANDSTORM 325
+#define ITEM_TM38_FIRE_BLAST 326
+#define ITEM_TM39_ROCK_TOMB 327
+#define ITEM_TM40_AERIAL_ACE 328
+#define ITEM_TM41_TORMENT 329
+#define ITEM_TM42_FACADE 330
+#define ITEM_TM43_SECRET_POWER 331
+#define ITEM_TM44_REST 332
+#define ITEM_TM45_ATTRACT 333
+#define ITEM_TM46_THIEF 334
+#define ITEM_TM47_STEEL_WING 335
+#define ITEM_TM48_SKILL_SWAP 336
+#define ITEM_TM49_SNATCH 337
+#define ITEM_TM50_OVERHEAT 338
+#define ITEM_HM01_CUT 339
+#define ITEM_HM02_FLY 340
+#define ITEM_HM03_SURF 341
+#define ITEM_HM04_STRENGTH 342
+#define ITEM_HM05_FLASH 343
+#define ITEM_HM06_ROCK_SMASH 344
+#define ITEM_HM07_WATERFALL 345
+#define ITEM_HM08_DIVE 346
+
+// Unknown
#define ITEM_15B 347
#define ITEM_15C 348
@@ -386,4 +398,7 @@
#define NUM_TECHNICAL_MACHINES 50
#define NUM_HIDDEN_MACHINES 8
+// Check if the item is one that can be used on a Pokemon.
+#define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
+
#endif // GUARD_CONSTANTS_ITEMS_H
diff --git a/include/constants/songs.h b/include/constants/songs.h
index 5225f5899..920873a7c 100644
--- a/include/constants/songs.h
+++ b/include/constants/songs.h
@@ -2,371 +2,371 @@
#define GUARD_CONSTANTS_SONGS_H
#define SE_STOP 0
-#define SE_KAIFUKU 1
-#define SE_PC_LOGON 2
-#define SE_PC_OFF 3
-#define SE_PC_ON 4
-#define SE_SELECT 5
-#define SE_WIN_OPEN 6
-#define SE_WALL_HIT 7
-#define SE_DOOR 8
-#define SE_KAIDAN 9
-#define SE_DANSA 10
-#define SE_JITENSYA 11
-#define SE_KOUKA_L 12
-#define SE_KOUKA_M 13
-#define SE_KOUKA_H 14
-#define SE_BOWA2 15
-#define SE_POKE_DEAD 16
-#define SE_NIGERU 17
-#define SE_JIDO_DOA 18
-#define SE_NAMINORI 19
-#define SE_BAN 20
-#define SE_PIN 21
-#define SE_BOO 22
-#define SE_BOWA 23
-#define SE_JYUNI 24
-#define SE_A 25
-#define SE_I 26
-#define SE_U 27
-#define SE_E 28
-#define SE_O 29
-#define SE_N 30
-#define SE_SEIKAI 31
-#define SE_HAZURE 32
-#define SE_EXP 33
-#define SE_JITE_PYOKO 34
+#define SE_KAIFUKU 1 // Healing Item
+#define SE_PC_LOGON 2 // PC Logon
+#define SE_PC_OFF 3 // PC Shutdown
+#define SE_PC_ON 4 // PC Startup
+#define SE_SELECT 5 // Cursor Selection
+#define SE_WIN_OPEN 6 // Start Menu
+#define SE_WALL_HIT 7 // Wall Bump
+#define SE_DOOR 8 // Opening Door
+#define SE_KAIDAN 9 // Stairs
+#define SE_DANSA 10 // Ledge
+#define SE_JITENSYA 11 // Bicycle Bell
+#define SE_KOUKA_L 12 // Not Very Effective
+#define SE_KOUKA_M 13 // Normal Effectiveness
+#define SE_KOUKA_H 14 // Super Effective
+#define SE_BOWA2 15 // Pokémon Withdrawl
+#define SE_POKE_DEAD 16 // Pokémon Fainted
+#define SE_NIGERU 17 // Flee from Wild Battle
+#define SE_JIDO_DOA 18 // Pokémon Center Door
+#define SE_NAMINORI 19 // Briney's Ship
+#define SE_BAN 20 // Bang
+#define SE_PIN 21 // Exclamation Bubble
+#define SE_BOO 22 // Contest Jam
+#define SE_BOWA 23 // Giving Poké Ball to Nurse, Poké Ball Wiggle
+#define SE_JYUNI 24 // Places in Contest Appearing
+#define SE_A 25 // Bard A
+#define SE_I 26 // Bard I
+#define SE_U 27 // Bard U
+#define SE_E 28 // Bard E
+#define SE_O 29 // Bard O
+#define SE_N 30 // Bard N
+#define SE_SEIKAI 31 // Success
+#define SE_HAZURE 32 // Failure
+#define SE_EXP 33 // Exp. Bar
+#define SE_JITE_PYOKO 34 // Bunny Hop
#define SE_MU_PACHI 35
-#define SE_TK_KASYA 36
+#define SE_TK_KASYA 36 // Mossdeep Gym/Trick House Switch
#define SE_FU_ZAKU 37
#define SE_FU_ZAKU2 38
-#define SE_FU_ZUZUZU 39
-#define SE_RU_GASHIN 40
-#define SE_RU_GASYAN 41
-#define SE_RU_BARI 42
-#define SE_RU_HYUU 43
+#define SE_FU_ZUZUZU 39 // Lavaridge Gym Warp
+#define SE_RU_GASHIN 40 // Sootopolis Gym - Stairs Appear
+#define SE_RU_GASYAN 41 // Sootopolis Gym - Ice Breaking
+#define SE_RU_BARI 42 // Sootopolis Gym - Stepping on Ice
+#define SE_RU_HYUU 43 // Falling Down
#define SE_KI_GASYAN 44
-#define SE_TK_WARPIN 45
-#define SE_TK_WARPOUT 46
-#define SE_TU_SAA 47
-#define SE_HI_TURUN 48
-#define SE_TRACK_MOVE 49
-#define SE_TRACK_STOP 50
-#define SE_TRACK_HAIK 51
-#define SE_TRACK_DOOR 52
+#define SE_TK_WARPIN 45 // Warp In
+#define SE_TK_WARPOUT 46 // Warp Out
+#define SE_TU_SAA 47 // Repel
+#define SE_HI_TURUN 48 // Moving Obstacle in Fortree Gym
+#define SE_TRACK_MOVE 49 // Moving Truck
+#define SE_TRACK_STOP 50 // Moving Truck Stop
+#define SE_TRACK_HAIK 51 // Moving Truck Unload
+#define SE_TRACK_DOOR 52 // Moving Truck Door
#define SE_MOTER 53
#define SE_CARD 54
-#define SE_SAVE 55
-#define SE_KON 56
-#define SE_KON2 57
-#define SE_KON3 58
-#define SE_KON4 59
-#define SE_SUIKOMU 60
-#define SE_NAGERU 61
-#define SE_TOY_C 62
-#define SE_TOY_D 63
-#define SE_TOY_E 64
-#define SE_TOY_F 65
-#define SE_TOY_G 66
-#define SE_TOY_A 67
-#define SE_TOY_B 68
-#define SE_TOY_C1 69
-#define SE_MIZU 70
-#define SE_HASHI 71
-#define SE_DAUGI 72
-#define SE_PINPON 73
-#define SE_FUUSEN1 74
-#define SE_FUUSEN2 75
-#define SE_FUUSEN3 76
-#define SE_TOY_KABE 77
-#define SE_TOY_DANGO 78
-#define SE_DOKU 79
-#define SE_ESUKA 80
-#define SE_T_AME 81
-#define SE_T_AME_E 82
-#define SE_T_OOAME 83
-#define SE_T_OOAME_E 84
-#define SE_T_KOAME 85
-#define SE_T_KOAME_E 86
-#define SE_T_KAMI 87
-#define SE_T_KAMI2 88
-#define SE_ELEBETA 89
-#define SE_HINSI 90
-#define SE_EXPMAX 91
-#define SE_TAMAKORO 92
-#define SE_TAMAKORO_E 93
+#define SE_SAVE 55 // Save
+#define SE_KON 56 // Poké Ball Bounce 1
+#define SE_KON2 57 // Poké Ball Bounce 2
+#define SE_KON3 58 // Poké Ball Bounce 3
+#define SE_KON4 59 // Poké Ball Bounce 4
+#define SE_SUIKOMU 60 // Poké Ball Trade
+#define SE_NAGERU 61 // Poké Ball Throw
+#define SE_TOY_C 62 // Note C
+#define SE_TOY_D 63 // Note D
+#define SE_TOY_E 64 // Note E
+#define SE_TOY_F 65 // Note F
+#define SE_TOY_G 66 // Note G
+#define SE_TOY_A 67 // Note A
+#define SE_TOY_B 68 // Note B
+#define SE_TOY_C1 69 // Note High C
+#define SE_MIZU 70 // Puddle
+#define SE_HASHI 71 // Boardwalk
+#define SE_DAUGI 72 // Slots Credits
+#define SE_PINPON 73 // Ding-dong!
+#define SE_FUUSEN1 74 // Red Balloon
+#define SE_FUUSEN2 75 // Blue Balloon
+#define SE_FUUSEN3 76 // Yellow Balloon
+#define SE_TOY_KABE 77 // Breakable Door
+#define SE_TOY_DANGO 78 // Mud Ball
+#define SE_DOKU 79 // Overworld Poison Damage
+#define SE_ESUKA 80 // Escalator
+#define SE_T_AME 81 // Rain
+#define SE_T_AME_E 82 // Rain stop
+#define SE_T_OOAME 83 // Heavy Rain
+#define SE_T_OOAME_E 84 // Heavy Rain Stop
+#define SE_T_KOAME 85 // Light Rain
+#define SE_T_KOAME_E 86 // Light Rain Stop
+#define SE_T_KAMI 87 // Thunder
+#define SE_T_KAMI2 88 // Thunder 2
+#define SE_ELEBETA 89 // Elevator
+#define SE_HINSI 90 // Low Health
+#define SE_EXPMAX 91 // Exp. Max
+#define SE_TAMAKORO 92 // Roulette Ball
+#define SE_TAMAKORO_E 93 // Roulette Ball 2
#define SE_BASABASA 94
-#define SE_REGI 95
-#define SE_C_GAJI 96
-#define SE_C_MAKU_U 97
-#define SE_C_MAKU_D 98
+#define SE_REGI 95 // Cash Register
+#define SE_C_GAJI 96 // Contest Hearts
+#define SE_C_MAKU_U 97 // Contest Curtain rise
+#define SE_C_MAKU_D 98 // Contest Curtain fall
#define SE_C_PASI 99
#define SE_C_SYU 100
-#define SE_C_PIKON 101
-#define SE_REAPOKE 102
-#define SE_OP_BASYU 103
-#define SE_BT_START 104
-#define SE_DENDOU 105
-#define SE_JIHANKI 106
-#define SE_TAMA 107
-#define SE_Z_SCROLL 108
-#define SE_Z_PAGE 109
-#define SE_PN_ON 110
-#define SE_PN_OFF 111
-#define SE_Z_SEARCH 112
-#define SE_TAMAGO 113
-#define SE_TB_START 114
-#define SE_TB_KON 115
-#define SE_TB_KARA 116
+#define SE_C_PIKON 101 // Pokémon Appears in Contest
+#define SE_REAPOKE 102 // Shiny Pokémon
+#define SE_OP_BASYU 103 // Opening Movie -> Title Screen whoosh
+#define SE_BT_START 104 // Battle Mugshot whoosh
+#define SE_DENDOU 105 // Audience Cheering
+#define SE_JIHANKI 106 // Vending Machine
+#define SE_TAMA 107 // Orb Used
+#define SE_Z_SCROLL 108 // Pokédex Scrolling
+#define SE_Z_PAGE 109 // Pokédex Page
+#define SE_PN_ON 110 // PokéNav On
+#define SE_PN_OFF 111 // PokéNav Off
+#define SE_Z_SEARCH 112 // Pokédex Search
+#define SE_TAMAGO 113 // Egg hatch
+#define SE_TB_START 114 // Battle - Poké Ball Tray slide in
+#define SE_TB_KON 115 // Battle - Poké Ball Tray ball sound
+#define SE_TB_KARA 116 // Battle - Poké Ball Tray slide out
#define SE_BIDORO 117
-#define SE_W085 118
-#define SE_W085B 119
-#define SE_W231 120
-#define SE_W171 121
-#define SE_W233 122
-#define SE_W233B 123
-#define SE_W145 124
-#define SE_W145B 125
-#define SE_W145C 126
-#define SE_W240 127
-#define SE_W015 128
-#define SE_W081 129
-#define SE_W081B 130
-#define SE_W088 131
-#define SE_W016 132
-#define SE_W016B 133
-#define SE_W003 134
-#define SE_W104 135
-#define SE_W013 136
-#define SE_W196 137
-#define SE_W086 138
-#define SE_W004 139
-#define SE_W025 140
-#define SE_W025B 141
-#define SE_W152 142
-#define SE_W026 143
-#define SE_W172 144
-#define SE_W172B 145
-#define SE_W053 146
-#define SE_W007 147
-#define SE_W092 148
-#define SE_W221 149
-#define SE_W221B 150
-#define SE_W052 151
-#define SE_W036 152
-#define SE_W059 153
-#define SE_W059B 154
-#define SE_W010 155
-#define SE_W011 156
-#define SE_W017 157
-#define SE_W019 158
-#define SE_W028 159
-#define SE_W013B 160
-#define SE_W044 161
-#define SE_W029 162
-#define SE_W057 163
-#define SE_W056 164
-#define SE_W250 165
-#define SE_W030 166
-#define SE_W039 167
-#define SE_W054 168
-#define SE_W077 169
-#define SE_W020 170
-#define SE_W082 171
-#define SE_W047 172
-#define SE_W195 173
-#define SE_W006 174
-#define SE_W091 175
-#define SE_W146 176
-#define SE_W120 177
-#define SE_W153 178
-#define SE_W071B 179
-#define SE_W071 180
-#define SE_W103 181
-#define SE_W062 182
-#define SE_W062B 183
-#define SE_W048 184
-#define SE_W187 185
-#define SE_W118 186
-#define SE_W155 187
-#define SE_W122 188
-#define SE_W060 189
-#define SE_W185 190
-#define SE_W014 191
-#define SE_W043 192
-#define SE_W207 193
-#define SE_W207B 194
-#define SE_W215 195
-#define SE_W109 196
-#define SE_W173 197
-#define SE_W280 198
-#define SE_W202 199
-#define SE_W060B 200
-#define SE_W076 201
-#define SE_W080 202
-#define SE_W100 203
-#define SE_W107 204
-#define SE_W166 205
-#define SE_W129 206
-#define SE_W115 207
-#define SE_W112 208
-#define SE_W197 209
-#define SE_W199 210
-#define SE_W236 211
-#define SE_W204 212
-#define SE_W268 213
-#define SE_W070 214
-#define SE_W063 215
-#define SE_W127 216
-#define SE_W179 217
-#define SE_W151 218
-#define SE_W201 219
-#define SE_W161 220
-#define SE_W161B 221
-#define SE_W227 222
-#define SE_W227B 223
-#define SE_W226 224
-#define SE_W208 225
-#define SE_W213 226
-#define SE_W213B 227
-#define SE_W234 228
-#define SE_W260 229
-#define SE_W328 230
-#define SE_W320 231
-#define SE_W255 232
-#define SE_W291 233
-#define SE_W089 234
-#define SE_W239 235
-#define SE_W230 236
-#define SE_W281 237
-#define SE_W327 238
-#define SE_W287 239
-#define SE_W257 240
-#define SE_W253 241
-#define SE_W258 242
-#define SE_W322 243
-#define SE_W298 244
-#define SE_W287B 245
-#define SE_W114 246
-#define SE_W063B 247
+#define SE_W085 118 // Thunderbolt
+#define SE_W085B 119 // Thunderbolt 2
+#define SE_W231 120 // Harden
+#define SE_W171 121 // Nightmare
+#define SE_W233 122 // Vital Throw
+#define SE_W233B 123 // Vital Throw 2
+#define SE_W145 124 // Bubble
+#define SE_W145B 125 // Bubble 2
+#define SE_W145C 126 // Bubble 3
+#define SE_W240 127 // Rain Dance
+#define SE_W015 128 // Cut
+#define SE_W081 129 // String Shot
+#define SE_W081B 130 // String Shot 2
+#define SE_W088 131 // Rock Throw
+#define SE_W016 132 // Gust
+#define SE_W016B 133 // Gust 2
+#define SE_W003 134 // DoubleSlap
+#define SE_W104 135 // Double Team
+#define SE_W013 136 // Razor Wind
+#define SE_W196 137 // Icy Wind
+#define SE_W086 138 // Thunder Wave
+#define SE_W004 139 // Comet Punch
+#define SE_W025 140 // Mega Kick
+#define SE_W025B 141 // Mega Kick 2
+#define SE_W152 142 // Crabhammer
+#define SE_W026 143 // Jump Kick
+#define SE_W172 144 // Flame Wheel
+#define SE_W172B 145 // Flame Wheel 2
+#define SE_W053 146 // Flamethrower
+#define SE_W007 147 // Fire Punch
+#define SE_W092 148 // Toxic
+#define SE_W221 149 // Sacred Fire
+#define SE_W221B 150 // Sacred Fire 2
+#define SE_W052 151 // Ember
+#define SE_W036 152 // Take Down
+#define SE_W059 153 // Blizzard
+#define SE_W059B 154 // Blizzard 2
+#define SE_W010 155 // Scratch
+#define SE_W011 156 // Vicegrip
+#define SE_W017 157 // Wing Attack
+#define SE_W019 158 // Fly
+#define SE_W028 159 // Sand-Attack
+#define SE_W013B 160 // Razor Wind 2
+#define SE_W044 161 // Bite
+#define SE_W029 162 // Headbutt
+#define SE_W057 163 // Surf
+#define SE_W056 164 // Hydro Pump
+#define SE_W250 165 // Whirlpool
+#define SE_W030 166 // Horn Attack
+#define SE_W039 167 // Tail Whip
+#define SE_W054 168 // Mist
+#define SE_W077 169 // PoisonPowder
+#define SE_W020 170 // Bind
+#define SE_W082 171 // Dragon Rage
+#define SE_W047 172 // Sing
+#define SE_W195 173 // Perish Song
+#define SE_W006 174 // Pay Day
+#define SE_W091 175 // Dig
+#define SE_W146 176 // Dizzy Punch
+#define SE_W120 177 // Self-Destruct
+#define SE_W153 178 // Explosion
+#define SE_W071B 179 // Absorb 2
+#define SE_W071 180 // Absorb
+#define SE_W103 181 // Screech
+#define SE_W062 182 // BubbleBeam
+#define SE_W062B 183 // BubbleBeam 2
+#define SE_W048 184 // Supersonic
+#define SE_W187 185 // Belly Drum
+#define SE_W118 186 // Metronome
+#define SE_W155 187 // Bonemerang
+#define SE_W122 188 // Lick
+#define SE_W060 189 // Psybeam
+#define SE_W185 190 // Faint Attack
+#define SE_W014 191 // Swords Dance
+#define SE_W043 192 // Leer
+#define SE_W207 193 // Swagger
+#define SE_W207B 194 // Swagger 2
+#define SE_W215 195 // Heal Bell
+#define SE_W109 196 // Confuse Ray
+#define SE_W173 197 // Snore
+#define SE_W280 198 // Brick Break
+#define SE_W202 199 // Giga Drain
+#define SE_W060B 200 // Psybeam 2
+#define SE_W076 201 // SolarBeam
+#define SE_W080 202 // Petal Dance
+#define SE_W100 203 // Teleport
+#define SE_W107 204 // Minimize
+#define SE_W166 205 // Sketch
+#define SE_W129 206 // Swift
+#define SE_W115 207 // Reflect
+#define SE_W112 208 // Barrier
+#define SE_W197 209 // Detect
+#define SE_W199 210 // Lock-On
+#define SE_W236 211 // Moonlight
+#define SE_W204 212 // Charm
+#define SE_W268 213 // Charge
+#define SE_W070 214 // Strength
+#define SE_W063 215 // Hyper Beam
+#define SE_W127 216 // Waterfall
+#define SE_W179 217 // Reversal
+#define SE_W151 218 // Acid Armor
+#define SE_W201 219 // Sandstorm
+#define SE_W161 220 // Tri-Attack
+#define SE_W161B 221 // Tri-Attack 2
+#define SE_W227 222 // Encore
+#define SE_W227B 223 // Encore 2
+#define SE_W226 224 // Baton Pass
+#define SE_W208 225 // Milk Drink
+#define SE_W213 226 // Attract
+#define SE_W213B 227 // Attract 2
+#define SE_W234 228 // Morning Sun
+#define SE_W260 229 // Flatter
+#define SE_W328 230 // Sand Tomb
+#define SE_W320 231 // GrassWhistle
+#define SE_W255 232 // Spit Up
+#define SE_W291 233 // Dive
+#define SE_W089 234 // Earthquake
+#define SE_W239 235 // Twister
+#define SE_W230 236 // Sweet Scent
+#define SE_W281 237 // Yawn
+#define SE_W327 238 // Sky Uppercut
+#define SE_W287 239 // Stat Increased
+#define SE_W257 240 // Heat Wave
+#define SE_W253 241 // Uproar
+#define SE_W258 242 // Hail
+#define SE_W322 243 // Cosmic Power
+#define SE_W298 244 // Teeter Dance
+#define SE_W287B 245 // Stat Decreased
+#define SE_W114 246 // Haze
+#define SE_W063B 247 // Hyper Beam 2
#define BGM_STOP 349
-#define BGM_TETSUJI 350
-#define BGM_FIELD13 351
-#define BGM_KACHI22 352
-#define BGM_KACHI2 353
-#define BGM_KACHI3 354
-#define BGM_KACHI5 355
-#define BGM_PCC 356
-#define BGM_NIBI 357
-#define BGM_SUIKUN 358
-#define BGM_DOORO1 359
-#define BGM_DOORO_X1 360
-#define BGM_DOORO_X3 361
-#define BGM_MACHI_S2 362
-#define BGM_MACHI_S4 363
-#define BGM_GIM 364
-#define BGM_NAMINORI 365
-#define BGM_DAN01 366
-#define BGM_FANFA1 367
-#define BGM_ME_ASA 368
-#define BGM_ME_BACHI 369
-#define BGM_FANFA4 370
-#define BGM_FANFA5 371
-#define BGM_ME_WAZA 372
-#define BGM_BIJYUTU 373
-#define BGM_DOORO_X4 374
-#define BGM_FUNE_KAN 375
-#define BGM_ME_SHINKA 376
-#define BGM_SHINKA 377
-#define BGM_ME_WASURE 378
-#define BGM_SYOUJOEYE 379
-#define BGM_BOYEYE 380
-#define BGM_DAN02 381
-#define BGM_MACHI_S3 382
-#define BGM_ODAMAKI 383
-#define BGM_B_TOWER 384
-#define BGM_SWIMEYE 385
-#define BGM_DAN03 386
-#define BGM_ME_KINOMI 387
-#define BGM_ME_TAMA 388
-#define BGM_ME_B_BIG 389
-#define BGM_ME_B_SMALL 390
-#define BGM_ME_ZANNEN 391
-#define BGM_BD_TIME 392
-#define BGM_TEST1 393
-#define BGM_TEST2 394
-#define BGM_TEST3 395
-#define BGM_TEST4 396
-#define BGM_TEST 397
-#define BGM_GOMACHI0 398
-#define BGM_GOTOWN 399
-#define BGM_POKECEN 400
-#define BGM_NEXTROAD 401
-#define BGM_GRANROAD 402
-#define BGM_CYCLING 403
-#define BGM_FRIENDLY 404
-#define BGM_MISHIRO 405
-#define BGM_TOZAN 406
-#define BGM_GIRLEYE 407
-#define BGM_MINAMO 408
-#define BGM_ASHROAD 409
-#define BGM_EVENT0 410
-#define BGM_DEEPDEEP 411
-#define BGM_KACHI1 412
-#define BGM_TITLE3 413
-#define BGM_DEMO1 414
-#define BGM_GIRL_SUP 415
-#define BGM_HAGESHII 416
-#define BGM_KAKKOII 417
-#define BGM_KAZANBAI 418
-#define BGM_AQA_0 419
-#define BGM_TSURETEK 420
-#define BGM_BOY_SUP 421
-#define BGM_RAINBOW 422
-#define BGM_AYASII 423
-#define BGM_KACHI4 424
-#define BGM_ROPEWAY 425
-#define BGM_CASINO 426
-#define BGM_HIGHTOWN 427
-#define BGM_SAFARI 428
-#define BGM_C_ROAD 429
-#define BGM_AJITO 430
-#define BGM_M_BOAT 431
-#define BGM_M_DUNGON 432
-#define BGM_FINECITY 433
-#define BGM_MACHUPI 434
-#define BGM_P_SCHOOL 435
-#define BGM_DENDOU 436
-#define BGM_TONEKUSA 437
-#define BGM_MABOROSI 438
-#define BGM_CON_FAN 439
-#define BGM_CONTEST0 440
-#define BGM_MGM0 441
-#define BGM_T_BATTLE 442
-#define BGM_OOAME 443
-#define BGM_HIDERI 444
-#define BGM_RUNECITY 445
-#define BGM_CON_K 446
-#define BGM_EIKOU_R 447
-#define BGM_KARAKURI 448
-#define BGM_HUTAGO 449
-#define BGM_SITENNOU 450
-#define BGM_YAMA_EYE 451
-#define BGM_CONLOBBY 452
-#define BGM_INTER_V 453
-#define BGM_DAIGO 454
-#define BGM_THANKFOR 455
-#define BGM_END 456
-#define BGM_BATTLE27 457
-#define BGM_BATTLE31 458
-#define BGM_BATTLE20 459
-#define BGM_BATTLE32 460
-#define BGM_BATTLE33 461
-#define BGM_BATTLE36 462
-#define BGM_BATTLE34 463
-#define BGM_BATTLE35 464
-#define BGM_BATTLE38 465
-#define BGM_BATTLE30 466
+#define BGM_TETSUJI 350 // Littleroot Town Test 'TETSUJI'
+#define BGM_FIELD13 351 // GSC - Route 38
+#define BGM_KACHI22 352 // Wild Pokémon Defeated
+#define BGM_KACHI2 353 // Wild Pokémon Defeated with Intro
+#define BGM_KACHI3 354 // Gym Leader Defeated
+#define BGM_KACHI5 355 // Victory! Elite Four
+#define BGM_PCC 356 // Crystal - Pokémon Communication Center
+#define BGM_NIBI 357 // GSC - Viridian/Saffron/Pewter/etc
+#define BGM_SUIKUN 358 // Crystal - Battle! Legendary Beasts
+#define BGM_DOORO1 359 // Route 101
+#define BGM_DOORO_X1 360 // Route 110
+#define BGM_DOORO_X3 361 // Route 120
+#define BGM_MACHI_S2 362 // Petalburg City
+#define BGM_MACHI_S4 363 // Oldale Town
+#define BGM_GIM 364 // Gym
+#define BGM_NAMINORI 365 // Surfing
+#define BGM_DAN01 366 // Caves and Darkness
+#define BGM_FANFA1 367 // Level Up!
+#define BGM_ME_ASA 368 // Pokémon Healed
+#define BGM_ME_BACHI 369 // Obtained a Badge!
+#define BGM_FANFA4 370 // Obtained an Item!
+#define BGM_FANFA5 371 // Your Pokémon Just Evolved!
+#define BGM_ME_WAZA 372 // Obtained a TM/HM!
+#define BGM_BIJYUTU 373 // Lilycove Musseum
+#define BGM_DOORO_X4 374 // Route 122/Intro
+#define BGM_FUNE_KAN 375 // Slateport Museum
+#define BGM_ME_SHINKA 376 // Evolution Intro
+#define BGM_SHINKA 377 // Evolution
+#define BGM_ME_WASURE 378 // Move Deleted
+#define BGM_SYOUJOEYE 379 // Encounter! Tuber
+#define BGM_BOYEYE 380 // Encounter! Boy
+#define BGM_DAN02 381 // Abandoned Ship
+#define BGM_MACHI_S3 382 // Fortree City
+#define BGM_ODAMAKI 383 // Professor Birch's Lab
+#define BGM_B_TOWER 384 // Battle Tower (RS)
+#define BGM_SWIMEYE 385 // Encounter! Swimmer
+#define BGM_DAN03 386 // Meteor Falls
+#define BGM_ME_KINOMI 387 // Obtained a Berry!
+#define BGM_ME_TAMA 388 // Awakening the Super-Ancient Pokémon
+#define BGM_ME_B_BIG 389 // Slots Jackpot!
+#define BGM_ME_B_SMALL 390 // Slots Victory!
+#define BGM_ME_ZANNEN 391 // Too bad!
+#define BGM_BD_TIME 392 // Roulette!
+#define BGM_TEST1 393 // Contest Test 1
+#define BGM_TEST2 394 // Contest Test 2
+#define BGM_TEST3 395 // Contest Test 3
+#define BGM_TEST4 396 // Contest Test 4
+#define BGM_TEST 397 // Encounter! Gentleman (Test?)
+#define BGM_GOMACHI0 398 // Verdanturf Town
+#define BGM_GOTOWN 399 // Rustboro City
+#define BGM_POKECEN 400 // Pokémon Center
+#define BGM_NEXTROAD 401 // Route 104
+#define BGM_GRANROAD 402 // Route 119
+#define BGM_CYCLING 403 // Cycling
+#define BGM_FRIENDLY 404 // Pokémart
+#define BGM_MISHIRO 405 // Littleroot Town
+#define BGM_TOZAN 406 // Sky Pillar
+#define BGM_GIRLEYE 407 // Encounter! Girl
+#define BGM_MINAMO 408 // Lilycove City
+#define BGM_ASHROAD 409 // Route 111
+#define BGM_EVENT0 410 // Help me!
+#define BGM_DEEPDEEP 411 // Underwater
+#define BGM_KACHI1 412 // Victory! Trainer
+#define BGM_TITLE3 413 // Title Screen
+#define BGM_DEMO1 414 // Opening Movie
+#define BGM_GIRL_SUP 415 // Encounter! May
+#define BGM_HAGESHII 416 // Encounter! Biker
+#define BGM_KAKKOII 417 // Encounter! Electric Trainer
+#define BGM_KAZANBAI 418 // Route 113
+#define BGM_AQA_0 419 // Encounter! Team Aqua
+#define BGM_TSURETEK 420 // Follow Me!
+#define BGM_BOY_SUP 421 // Encounter! Brendan
+#define BGM_RAINBOW 422 // Ever Grande City
+#define BGM_AYASII 423 // Encounter! Psychic
+#define BGM_KACHI4 424 // Victory! Aqua/Magma Grunt
+#define BGM_ROPEWAY 425 // Cable Car
+#define BGM_CASINO 426 // Game Corner
+#define BGM_HIGHTOWN 427 // Dewford Town
+#define BGM_SAFARI 428 // Safari Zone
+#define BGM_C_ROAD 429 // Victory Toad
+#define BGM_AJITO 430 // Aqua/Magma Hideout
+#define BGM_M_BOAT 431 // Sailing
+#define BGM_M_DUNGON 432 // Mt. Pyre (Inside)
+#define BGM_FINECITY 433 // Slateport City
+#define BGM_MACHUPI 434 // Mt. Pyre (Outside)
+#define BGM_P_SCHOOL 435 // Pokémon Trainer's School
+#define BGM_DENDOU 436 // Hall of Fame
+#define BGM_TONEKUSA 437 // Lavaridge Town
+#define BGM_MABOROSI 438 // Sealed Chamber
+#define BGM_CON_FAN 439 // You are the Champion!
+#define BGM_CONTEST0 440 // Pokémon Contest
+#define BGM_MGM0 441 // Encounter! Team Magma
+#define BGM_T_BATTLE 442 // Opening Battle
+#define BGM_OOAME 443 // The Flood
+#define BGM_HIDERI 444 // The Drought
+#define BGM_RUNECITY 445 // Sootopolis City
+#define BGM_CON_K 446 // Berry Blending Results
+#define BGM_EIKOU_R 447 // Hall of Fame
+#define BGM_KARAKURI 448 // Trick House
+#define BGM_HUTAGO 449 // Encounter! Kid
+#define BGM_SITENNOU 450 // Encounter! Elite Four
+#define BGM_YAMA_EYE 451 // Encounter! Hiker
+#define BGM_CONLOBBY 452 // Contest Lobby
+#define BGM_INTER_V 453 // Encounter! Gabby and Ty
+#define BGM_DAIGO 454 // Encounter! Wallace
+#define BGM_THANKFOR 455 // Credits
+#define BGM_END 456 // The End
+#define BGM_BATTLE27 457 // Battle! Wild Pokémon
+#define BGM_BATTLE31 458 // Battle! Team Aqua/Magma
+#define BGM_BATTLE20 459 // Battle! Trainer
+#define BGM_BATTLE32 460 // Battle! Gym Leader
+#define BGM_BATTLE33 461 // Battle! Champion
+#define BGM_BATTLE36 462 // Battle! Regi Trio
+#define BGM_BATTLE34 463 // Battle! Legendary Pokémon
+#define BGM_BATTLE35 464 // Battle! Rival
+#define BGM_BATTLE38 465 // Battle! Elite Four
+#define BGM_BATTLE30 466 // Battle! Archie/Maxie
#define BGM_ROUTE_118 0x7FFF // What is this for?
diff --git a/include/contest.h b/include/contest.h
index 6e71358a2..6b1f1f520 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -67,6 +67,22 @@ struct ContestPokemon
/*0x3C*/ u32 otId; // otId
}; // wow
+struct ContestAIInfo {
+ /*0x00*/ u8 aiState;
+ /*0x02*/ u16 unk2;
+ /*0x04*/ u8 unk4;
+ /*0x05*/ u8 unk5[4];
+ /*0x09*/ u8 aiAction;
+ /*0x0A*/ u8 fillerA[0x6]; // TODO: don't know what's here
+ /*0x10*/ u8 unk10;
+ /*0x14*/ u32 flags;
+ /*0x18*/ s16 scriptResult;
+ /*0x1A*/ s16 scriptArr[3];
+ /*0x20*/ u32 stack[8];
+ /*0x40*/ u8 unk40;
+ /*0x41*/ u8 unk41;
+};
+
extern struct ContestPokemon gContestMons[];
extern const struct ContestMove gContestMoves[];
extern const struct ContestEffect gContestEffects[];
@@ -86,6 +102,7 @@ void sub_80B0F28(u8);
bool8 Contest_SaveWinner(u8);
u8 sub_80B2C4C(u8, u8);
void Contest_ResetWinners(void);
+s8 Contest_GetMoveExcitement(u16);
// Contest Shared EWRAM
@@ -135,48 +152,48 @@ struct Contest
struct ContestantStatus
{
- s16 appeal1; // move appeal?
- s16 appeal2; // final appeal after end of turn, maybe?
- s16 unk4;
- u16 currMove;
- u16 prevMove;
- u8 moveCategory;
- u8 unkB_0:2;
- u8 unkB_2:2;
- u8 moveRepeatCount:3;
- u8 unkB_7:1; // used a one-time move?
- u8 unkC_0:1;
- u8 unkC_1:2;
- s8 unkD;
- u8 unkE;
- u8 unkF;
- u8 unk10_0:1;
- u8 unk10_1:1;
- u8 unk10_2:1;
- u8 unk10_3:1;
- u8 unk10_4:2;
- u8 unk10_6:2;
- u8 unk11_0:2;
- u8 unk11_2:1;
- u8 unk11_3:1;
- u8 unk11_4:1;
- u8 unk11_5:1;
- u8 unk12;
- u8 unk13; // status action?
- u8 unk14;
- u8 disappointedRepeat:1;
- u8 unk15_1:1;
- u8 unk15_2:1;
- u8 unk15_3:1;
- u8 unk15_4:1;
- u8 unk15_5:1;
- u8 unk15_6:1;
- u8 unk16;
- u8 unk17;
- u8 unk18;
- u8 unk19; // turn position
- u8 attentionLevel; // How much the Pokemon "stood out"
- u8 unk1B;
+ /*0x00*/ s16 appeal1; // move appeal?
+ /*0x02*/ s16 appeal2; // final appeal after end of turn, maybe?
+ /*0x04*/ s16 unk4;
+ /*0x06*/ u16 currMove;
+ /*0x08*/ u16 prevMove;
+ /*0x0A*/ u8 moveCategory;
+ /*0x0B*/ u8 unkB_0:2;
+ u8 unkB_2:2;
+ u8 moveRepeatCount:3;
+ u8 unkB_7:1; // used a one-time move?
+ /*0x0C*/ u8 unkC_0:1;
+ u8 unkC_1:2;
+ /*0x0D*/ s8 unkD;
+ /*0x0E*/ u8 unkE;
+ /*0x0F*/ u8 unkF;
+ /*0x10*/ u8 unk10_0:1;
+ u8 unk10_1:1;
+ u8 unk10_2:1;
+ u8 unk10_3:1;
+ u8 unk10_4:2;
+ u8 unk10_6:2;
+ /*0x11*/ u8 unk11_0:2;
+ u8 unk11_2:1;
+ u8 unk11_3:1;
+ u8 unk11_4:1;
+ u8 unk11_5:1;
+ /*0x12*/ u8 unk12;
+ /*0x13*/ u8 unk13; // status action?
+ /*0x14*/ u8 unk14;
+ /*0x15*/ u8 disappointedRepeat:1;
+ u8 unk15_1:1;
+ u8 unk15_2:1;
+ u8 unk15_3:1;
+ u8 unk15_4:1;
+ u8 unk15_5:1;
+ u8 unk15_6:1;
+ /*0x16*/ u8 unk16;
+ /*0x17*/ u8 unk17;
+ /*0x18*/ u8 unk18;
+ /*0x19*/ u8 unk19; // turn position
+ /*0x1A*/ u8 attentionLevel; // How much the Pokemon "stood out"
+ /*0x1B*/ u8 unk1B;
};
struct UnknownContestStruct3
@@ -241,6 +258,7 @@ struct UnknownContestStruct6
s32 unkC;
};
+// TODO: Please move these to ewram.h once the defines are settled down and figured out completely.
#define shared15800 (gSharedMem + 0x15800)
#define shared15DE0 (*(struct ContestWinner *)(gSharedMem + 0x15DE0))
#define shared16800 (gSharedMem + 0x16800)
@@ -248,7 +266,6 @@ struct UnknownContestStruct6
#define shared18004 ((u16 *)(gSharedMem + 0x18004))
#define sContest (*(struct Contest *)(gSharedMem + 0x19204))
#define sContestantStatus ((struct ContestantStatus *)(gSharedMem + 0x19260))
-#define shared192D0 (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0))
#define shared192E4 (gSharedMem + 0x192E4)
#define shared19328 (*(struct UnknownContestStruct5 *)(gSharedMem + 0x19328))
#define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338))
diff --git a/include/contest_ai.h b/include/contest_ai.h
new file mode 100644
index 000000000..da143b541
--- /dev/null
+++ b/include/contest_ai.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_CONTESTAI_H
+#define GUARD_CONTESTAI_H
+
+// AI states
+enum
+{
+ CONTESTAI_SETTING_UP,
+ CONTESTAI_PROCESSING,
+ CONTESTAI_FINISHED,
+ CONTESTAI_DO_NOT_PROCESS
+};
+
+void ContestAI_ResetAI(u8);
+u8 ContestAI_GetActionToUse(void);
+
+#endif
diff --git a/include/easy_chat.h b/include/easy_chat.h
index c68a3fa02..58750fa92 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -114,8 +114,6 @@ struct Shared1000
u8 unk9F8E[7]; // unknown length
};
-extern u8 gUnknown_020388AC;
-
// const pointer to shared1000. easy_chat might be two separate files.
extern struct Shared1000 *const gEasyChatStruct;
diff --git a/include/ewram.h b/include/ewram.h
index 809d4ff66..6f42925c1 100755..100644
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -9,7 +9,7 @@ extern u8 gSharedMem[];
// dupes can be determined to be the same, they will be deliberate
// seperated.
#define eWeatherPaletteData (*(struct WeatherPaletteData *)gSharedMem)
-#define BATTLE_STRUCT ((struct BattleStruct *) (gSharedMem + 0x0))
+#define gBattleStruct ((struct BattleStruct *) (gSharedMem + 0x0))
#define ewram0_2 (*(struct Struct2000000 *)(gSharedMem + 0x0))
#define namingScreenData (*(struct NamingScreenData *)(gSharedMem + 0x0))
#define ewramBerryPic (gSharedMem + 0x0)
@@ -20,7 +20,7 @@ extern u8 gSharedMem[];
#define eBrendanSprite (gSharedMem + 0x0)
#define ewram0_6 (u32)(&gSharedMem[0])
#define ewram0_7 (&gSharedMem[0])
-#define eSaveSection (struct SaveSection *)(gSharedMem + 0x0)
+#define eSaveSection (struct SaveSector *)(gSharedMem + 0x0)
#define ewram0arr ((u8 (*)[32])gSharedMem)
#define eVoidSharedArr (void *)(ewram_addr + 0x0)
#define eVoidSharedArr2 (u32)(ewram_addr) // ew(ram)
@@ -234,6 +234,8 @@ extern u8 gSharedMem[];
#define eCableCar2 ((struct CableCarEwramStruct2 *)(gSharedMem + 0x19000))
#define ePokedexView3 (struct PokedexView *)(gSharedMem + 0x19000)
#define eRoulette ((struct Roulette *)(gSharedMem + 0x19000))
+#define shared192D0 (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0))
+#define eContestAI ((struct ContestAIInfo *)(gSharedMem + 0x192E4))
#define EWRAM_19348 (*(u16 *)(gSharedMem + 0x19348))
#define ewram19800 (&gSharedMem[0x19800])
#define ePokedexView4 (struct PokedexView *)(gSharedMem + 0x19800)
diff --git a/include/gba/isagbprint.h b/include/gba/isagbprint.h
index c5eb456c3..c5eb456c3 100755..100644
--- a/include/gba/isagbprint.h
+++ b/include/gba/isagbprint.h
diff --git a/include/graphics.h b/include/graphics.h
index 00a210350..76a45f6f6 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -51,11 +51,7 @@ extern const u8 gMonFootprint_QuestionMark[];
extern const u8 gContestNextTurnGfx[];
extern const u8 gContestNextTurnNumbersGfx[];
extern const u8 gContestNextTurnRandomGfx[];
-extern const u8 gBattleAnimSpriteSheet_264[];
-extern const u8 gBattleAnimSpritePalette_264[];
-extern const u8 gBattleAnimSpritePalette_265[];
-extern const u8 gBattleAnimSpritePalette_067[];
-extern const u8 gBattleAnimSpritePalette_068[];
+// extern const u8 gBattleAnimSpriteSheet_264[];
extern const u8 gContestApplauseGfx[];
extern const u8 gContestApplauseMeterGfx[];
extern const u16 gContestPal[];
@@ -2743,4 +2739,602 @@ extern const u16 gCableCar_Pal[];
extern const u16 gCableCarBG_Pal[];
extern const u8 gCableCarBG_Gfx[];
+// data/graphics.s
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_000;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_001;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_002;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_003;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_004;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_005;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_006;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_007;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_008;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_009;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_010;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_011;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_012;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_013;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_014;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_015;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_016;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_017;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_018;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_019;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_020;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_021;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_021;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_023;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_024;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_025;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_026;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_027;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_028;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_029;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_030;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_031;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_032;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_033;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_034;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_035;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_036;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_037;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_038;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_039;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_040;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_041;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_042;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_043;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_044;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_045;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_046;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_046;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_048;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_048;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_050;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_051;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_052;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_053;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_054;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_055;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_056;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_057;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_058;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_059;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_060;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_061;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_062;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_063;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_064;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_065;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_066;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_070;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_071;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_072;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_073;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_074;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_075;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_076;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_077;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_078;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_079;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_080;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_081;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_082;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_083;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_084;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_085;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_086;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_087;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_088;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_089;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_090;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_091;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_092;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_093;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_094;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_095;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_096;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_097;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_098;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_099;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_100;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_101;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_102;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_103;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_104;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_105;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_106;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_107;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_108;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_109;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_110;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_111;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_112;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_113;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_114;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_115;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_116;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_117;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_118;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_119;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_120;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_121;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_122;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_123;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_124;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_125;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_126;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_127;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_128;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_129;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_130;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_131;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_132;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_133;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_134;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_135;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_136;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_137;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_138;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_139;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_140;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_141;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_142;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_143;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_144;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_145;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_146;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_147;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_148;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_149;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_150;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_151;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_152;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_153;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_154;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_155;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_156;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_157;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_158;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_159;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_160;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_161;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_162;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_163;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_166;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_171;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_173;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_174;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_175;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_176;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_177;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_178;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_179;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_180;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_181;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_182;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_183;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_184;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_185;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_186;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_187;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_188;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_189;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_190;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_191;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_192;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_193;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_194;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_195;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_196;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_197;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_198;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_199;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_200;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_201;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_202;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_203;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_204;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_205;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_206;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_207;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_208;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_209;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_210;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_211;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_212;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_213;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_214;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_215;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_210;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_217;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_218;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_210;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_220;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_221;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_222;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_223;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_224;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_225;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_226;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_227;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_228;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_229;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_230;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_231;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_232;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_233;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_234;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_235;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_235;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_235;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_238;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_239;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_240;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_241;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_242;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_243;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_244;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_245;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_246;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_247;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_248;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_249;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_250;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_251;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_252;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_253;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_254;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_255;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_256;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_257;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_258;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_260;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_261;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_262;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_263;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_264;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_266;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_269;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_270;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_271;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_272;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_273;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_274;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_275;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_276;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_277;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_278;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_279;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_280;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_281;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_282;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_283;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_284;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_285;
+
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_000;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_001;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_002;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_003;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_004;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_005;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_006;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_007;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_008;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_009;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_010;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_011;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_012;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_013;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_014;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_015;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_016;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_016;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_018;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_019;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_020;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_021;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_022;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_023;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_024;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_025;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_026;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_027;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_028;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_029;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_030;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_031;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_032;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_033;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_033;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_033;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_036;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_036;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_038;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_039;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_038;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_038;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_042;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_043;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_044;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_045;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_046;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_047;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_048;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_049;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_050;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_050;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_050;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_026;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_054;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_050;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_056;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_057;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_058;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_059;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_060;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_061;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_062;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_063;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_064;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_065;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_066;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_067;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_068;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_065;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_070;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_070;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_072;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_073;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_074;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_075;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_076;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_076;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_078;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_078;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_080;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_081;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_082;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_083;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_084;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_085;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_086;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_087;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_088;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_089;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_090;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_091;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_092;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_093;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_094;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_095;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_096;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_097;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_094;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_099;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_100;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_101;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_101;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_103;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_104;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_105;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_105;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_107;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_107;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_109;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_109;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_111;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_112;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_113;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_114;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_115;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_116;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_117;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_118;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_119;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_120;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_121;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_122;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_122;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_124;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_125;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_126;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_127;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_128;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_128;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_130;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_130;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_132;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_133;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_133;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_135;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_136;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_135;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_135;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_139;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_140;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_141;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_141;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_143;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_144;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_139;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_115;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_147;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_148;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_148;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_150;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_150;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_152;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_153;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_154;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_155;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_156;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_157;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_158;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_159;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_160;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_161;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_162;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_163;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_164;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_165;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_166;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_167;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_168;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_169;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_170;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_171;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_172;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_174;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_175;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_176;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_177;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_178;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_179;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_182;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_183;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_184;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_185;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_186;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_187;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_188;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_189;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_190;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_191;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_192;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_193;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_194;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_195;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_196;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_197;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_198;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_199;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_200;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_201;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_202;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_203;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_204;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_205;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_206;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_207;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_209;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_210;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_211;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_215;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_216;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_217;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_218;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_219;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_220;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_221;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_222;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_223;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_224;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_225;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_226;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_228;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_229;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_230;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_231;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_233;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_234;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_235;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_236;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_237;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_238;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_239;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_240;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_241;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_242;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_243;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_244;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_245;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_248;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_249;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_251;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_252;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_253;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_254;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_255;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_256;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_257;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_258;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_259;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_260;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_261;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_262;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_263;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_264;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_265;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_266;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_267;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_268;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_269;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_270;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_271;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_272;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_274;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_277;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_278;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_279;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_280;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_281;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_282;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_283;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_284;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_285;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_286;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_287;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_288;
+
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_00;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_02;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_03;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_04;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_07;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_09;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_11;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_12;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_15;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_16;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_17;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_20;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_21;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_00;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_02;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_03;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_04;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_07;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_09;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_11;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_12;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_15;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_16;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_17;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_18;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_20;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_21;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_22;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_24;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_00;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_02;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_03;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_04;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_05;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_06;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_07;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_08;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_09;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_10;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_11;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_12;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_13;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_14;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_15;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_16;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_17;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_20;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_21;
+
#endif // GUARD_GRAPHICS_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 539323bdb..8f1b46387 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -351,6 +351,8 @@ struct BattlePokemon
/*0x54*/ u32 otId;
};
+// Shouldn't these be the same enum?
+
enum
{
STAT_STAGE_HP, // 0
@@ -628,5 +630,8 @@ void PartySpreadPokerus(struct Pokemon *party);
struct Sprite *sub_80F7920(u16, u16, const u16 *);
+bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId);
+
+
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_item_effect.h b/include/pokemon_item_effect.h
index c09649aff..014612b05 100644
--- a/include/pokemon_item_effect.h
+++ b/include/pokemon_item_effect.h
@@ -1,6 +1,6 @@
#ifndef GUARD_POKEMON_ITEM_EFFECT_H
#define GUARD_POKEMON_ITEM_EFFECT_H
-bool8 ExecuteTableBasedItemEffect_(struct Pokemon *mon, u16, u8, u16);
+bool8 ExecuteTableBasedItemEffect_(struct Pokemon *mon, u16, u8, u8);
#endif // GUARD_POKEMON_ITEM_EFFECT_H
diff --git a/include/region_map_sections.h b/include/region_map_sections.h
index a3bd60b59..a3bd60b59 100755..100644
--- a/include/region_map_sections.h
+++ b/include/region_map_sections.h
diff --git a/include/save.h b/include/save.h
index c35ad547a..13e07d06a 100644
--- a/include/save.h
+++ b/include/save.h
@@ -1,85 +1,38 @@
#ifndef GUARD_SAVE_H
#define GUARD_SAVE_H
-struct SaveSectionLocation
-{
- u8 *data;
- u16 size;
-};
-
-struct SaveSection
-{
- u8 data[0xFF4];
- u16 id;
- u16 checksum;
- u32 security;
- u32 counter;
-}; // size is 0x1000
-
-// headless save section?
-struct UnkSaveSection
-{
- u8 data[0xFF4];
- u32 security;
-}; // size is 0xFF8
-
// Ruby/Sapphire's save data is Flash 128K, which is 32 save sectors.
#define NUM_SECTORS 32 // defined in agb_flash but not in a header
-#define UNKNOWN_CHECK_VALUE 0x8012025
+#define SAVE_STATUS_EMPTY 0
+#define SAVE_STATUS_OK 1
+#define SAVE_STATUS_NO_FLASH 4
+#define SAVE_STATUS_ERROR 0xFF
-// SetDamagedSectorBits states
-enum
-{
- ENABLE,
- DISABLE,
- CHECK // unused
-};
+extern u16 gSaveFileStatus;
+
+void Save_EraseAllData(void);
+void Save_ResetSaveCounters(void);
-// Do save types
enum
{
- NORMAL_SAVE,
- LINK_SAVE,
- EREADER_SAVE, // mossdeep event
- HOF_SAVE,
- DIFFERENT_FILE_SAVE,
- HOF_DELETE_SAVE // unused
+ SAVE_NORMAL,
+ SAVE_LINK,
+ SAVE_EREADER,
+ SAVE_HALL_OF_FAME,
+ SAVE_OVERWRITE_DIFFERENT_FILE,
+ SAVE_HALL_OF_FAME_ERASE_BEFORE, // unused
};
-void ClearSaveData(void);
-void ResetSaveCounters(void);
-bool32 ManipulateSectorBits(u8 op, u8 bit);
-u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *a2);
-u8 HandleWriteSector(u16, const struct SaveSectionLocation *);
-u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size);
-u8 TryWriteSector(u8, u8 *);
-u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location);
-u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location);
-u8 sub_812550C(u16 a1, const struct SaveSectionLocation *location);
-u8 sub_812556C(u16 a1, const struct SaveSectionLocation *location);
-u8 sub_81255B8(u16, const struct SaveSectionLocation *location);
-u8 sub_8125758(u16 a1, const struct SaveSectionLocation *location);
-u8 sub_81257F0(u16 a1, const struct SaveSectionLocation *location);
-u8 sub_812587C(u16 a1, const struct SaveSectionLocation *location);
-u8 sub_81258BC(u16, const struct SaveSectionLocation *location);
-u8 GetSaveValidStatus(const struct SaveSectionLocation *location);
-u8 sub_8125B88(u8 a1, u8 *data, u16 size);
-u8 DoReadFlashWholeSection(u8, struct SaveSection *);
-u16 CalculateChecksum(void *, u16);
-u8 HandleSavingData(u8 saveType);
-u8 TrySavingData(u8 saveType);
+u8 Save_WriteDataInternal(u8 saveType);
+u8 Save_WriteData(u8 saveType);
+
u8 sub_8125D80(void);
bool8 sub_8125DA8(void);
u8 sub_8125DDC(void);
u8 sub_8125E04(void);
u8 sub_8125E2C(void);
bool8 sub_8125E6C(void);
-u8 sub_8125EC8(u8 a1);
-bool8 unref_sub_8125F4C(struct UnkSaveSection *a1);
-u8 unref_sub_8125FA0(void);
-u8 unref_sub_8125FF0(u8 *data, u16 size);
-u8 unref_sub_8126068(u8 sector, u8 *data, u32 size);
-u8 unref_sub_8126080(u8 sector, u8 *data);
+u8 Save_LoadGameData(u8 a1);
#endif // GUARD_SAVE_H