summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/constants/battle.h64
-rw-r--r--include/constants/battle_anim.h86
-rw-r--r--include/constants/battle_move_effects.h2
-rw-r--r--include/constants/battle_string_ids.h2
-rw-r--r--include/constants/items.h30
-rw-r--r--include/constants/pokemon.h3
-rw-r--r--include/constants/rgb.h23
-rw-r--r--include/event_object_movement.h22
-rw-r--r--include/pokemon.h10
-rw-r--r--include/recorded_battle.h2
-rw-r--r--include/tv.h2
11 files changed, 147 insertions, 99 deletions
diff --git a/include/constants/battle.h b/include/constants/battle.h
index fa8f422c4..e6ebc85e4 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -44,38 +44,38 @@
#define BIT_FLANK 2
// Battle Type Flags
-#define BATTLE_TYPE_DOUBLE (1 << 0)
-#define BATTLE_TYPE_LINK (1 << 1)
-#define BATTLE_TYPE_IS_MASTER (1 << 2) // In not-link battles, it's always set.
-#define BATTLE_TYPE_TRAINER (1 << 3)
-#define BATTLE_TYPE_FIRST_BATTLE (1 << 4)
-#define BATTLE_TYPE_20 (1 << 5)
-#define BATTLE_TYPE_MULTI (1 << 6)
-#define BATTLE_TYPE_SAFARI (1 << 7)
-#define BATTLE_TYPE_BATTLE_TOWER (1 << 8)
-#define BATTLE_TYPE_WALLY_TUTORIAL (1 << 9)
-#define BATTLE_TYPE_ROAMER (1 << 10)
-#define BATTLE_TYPE_EREADER_TRAINER (1 << 11)
-#define BATTLE_TYPE_KYOGRE_GROUDON (1 << 12)
-#define BATTLE_TYPE_LEGENDARY (1 << 13)
-#define BATTLE_TYPE_REGI (1 << 14)
-#define BATTLE_TYPE_TWO_OPPONENTS (1 << 15)
-#define BATTLE_TYPE_DOME (1 << 16)
-#define BATTLE_TYPE_PALACE (1 << 17)
-#define BATTLE_TYPE_ARENA (1 << 18)
-#define BATTLE_TYPE_FACTORY (1 << 19)
-#define BATTLE_TYPE_PIKE (1 << 20)
-#define BATTLE_TYPE_PYRAMID (1 << 21)
-#define BATTLE_TYPE_INGAME_PARTNER (1 << 22)
-#define BATTLE_TYPE_x800000 (1 << 23)
-#define BATTLE_TYPE_RECORDED (1 << 24)
-#define BATTLE_TYPE_x2000000 (1 << 25)
-#define BATTLE_TYPE_TRAINER_HILL (1 << 26)
-#define BATTLE_TYPE_SECRET_BASE (1 << 27)
-#define BATTLE_TYPE_GROUDON (1 << 28)
-#define BATTLE_TYPE_KYOGRE (1 << 29)
-#define BATTLE_TYPE_RAYQUAZA (1 << 30)
-#define BATTLE_TYPE_x80000000 (1 << 31)
+#define BATTLE_TYPE_DOUBLE (1 << 0)
+#define BATTLE_TYPE_LINK (1 << 1)
+#define BATTLE_TYPE_IS_MASTER (1 << 2) // In not-link battles, it's always set.
+#define BATTLE_TYPE_TRAINER (1 << 3)
+#define BATTLE_TYPE_FIRST_BATTLE (1 << 4)
+#define BATTLE_TYPE_LINK_IN_BATTLE (1 << 5) // Set on battle entry, cleared on exit. Checked rarely
+#define BATTLE_TYPE_MULTI (1 << 6)
+#define BATTLE_TYPE_SAFARI (1 << 7)
+#define BATTLE_TYPE_BATTLE_TOWER (1 << 8)
+#define BATTLE_TYPE_WALLY_TUTORIAL (1 << 9)
+#define BATTLE_TYPE_ROAMER (1 << 10)
+#define BATTLE_TYPE_EREADER_TRAINER (1 << 11)
+#define BATTLE_TYPE_KYOGRE_GROUDON (1 << 12)
+#define BATTLE_TYPE_LEGENDARY (1 << 13)
+#define BATTLE_TYPE_REGI (1 << 14)
+#define BATTLE_TYPE_TWO_OPPONENTS (1 << 15)
+#define BATTLE_TYPE_DOME (1 << 16)
+#define BATTLE_TYPE_PALACE (1 << 17)
+#define BATTLE_TYPE_ARENA (1 << 18)
+#define BATTLE_TYPE_FACTORY (1 << 19)
+#define BATTLE_TYPE_PIKE (1 << 20)
+#define BATTLE_TYPE_PYRAMID (1 << 21)
+#define BATTLE_TYPE_INGAME_PARTNER (1 << 22)
+#define BATTLE_TYPE_TOWER_LINK_MULTI (1 << 23)
+#define BATTLE_TYPE_RECORDED (1 << 24)
+#define BATTLE_TYPE_RECORDED_LINK (1 << 25)
+#define BATTLE_TYPE_TRAINER_HILL (1 << 26)
+#define BATTLE_TYPE_SECRET_BASE (1 << 27)
+#define BATTLE_TYPE_GROUDON (1 << 28)
+#define BATTLE_TYPE_KYOGRE (1 << 29)
+#define BATTLE_TYPE_RAYQUAZA (1 << 30)
+#define BATTLE_TYPE_RECORDED_IS_MASTER (1 << 31)
#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID)
#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE)
diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h
index ebc422b18..5f8900bf6 100644
--- a/include/constants/battle_anim.h
+++ b/include/constants/battle_anim.h
@@ -346,51 +346,51 @@
#define BG_SOLARBEAM_PLAYER 25
#define BG_SOLARBEAM_CONTESTS 26
-// table ids for general animations
-#define B_ANIM_CASTFORM_CHANGE 0x0
-#define B_ANIM_STATS_CHANGE 0x1
-#define B_ANIM_SUBSTITUTE_FADE 0x2
-#define B_ANIM_SUBSTITUTE_APPEAR 0x3
-#define B_ANIM_POKEBLOCK_THROW 0x4
-#define B_ANIM_ITEM_KNOCKOFF 0x5
-#define B_ANIM_TURN_TRAP 0x6
-#define B_ANIM_HELD_ITEM_EFFECT 0x7
-#define B_ANIM_SMOKEBALL_ESCAPE 0x8
-#define B_ANIM_FOCUS_BAND 0x9
-#define B_ANIM_RAIN_CONTINUES 0xA
-#define B_ANIM_SUN_CONTINUES 0xB
-#define B_ANIM_SANDSTORM_CONTINUES 0xC
-#define B_ANIM_HAIL_CONTINUES 0xD
-#define B_ANIM_LEECH_SEED_DRAIN 0xE
-#define B_ANIM_MON_HIT 0xF
-#define B_ANIM_ITEM_STEAL 0x10
-#define B_ANIM_SNATCH_MOVE 0x11
-#define B_ANIM_FUTURE_SIGHT_HIT 0x12
-#define B_ANIM_DOOM_DESIRE_HIT 0x13
-#define B_ANIM_FOCUS_PUNCH_SETUP 0x14
-#define B_ANIM_INGRAIN_HEAL 0x15
-#define B_ANIM_WISH_HEAL 0x16
+// table ids for general animations (gBattleAnims_General)
+#define B_ANIM_CASTFORM_CHANGE 0
+#define B_ANIM_STATS_CHANGE 1
+#define B_ANIM_SUBSTITUTE_FADE 2
+#define B_ANIM_SUBSTITUTE_APPEAR 3
+#define B_ANIM_POKEBLOCK_THROW 4
+#define B_ANIM_ITEM_KNOCKOFF 5
+#define B_ANIM_TURN_TRAP 6
+#define B_ANIM_HELD_ITEM_EFFECT 7
+#define B_ANIM_SMOKEBALL_ESCAPE 8
+#define B_ANIM_FOCUS_BAND 9
+#define B_ANIM_RAIN_CONTINUES 10
+#define B_ANIM_SUN_CONTINUES 11
+#define B_ANIM_SANDSTORM_CONTINUES 12
+#define B_ANIM_HAIL_CONTINUES 13
+#define B_ANIM_LEECH_SEED_DRAIN 14
+#define B_ANIM_MON_HIT 15
+#define B_ANIM_ITEM_STEAL 16
+#define B_ANIM_SNATCH_MOVE 17
+#define B_ANIM_FUTURE_SIGHT_HIT 18
+#define B_ANIM_DOOM_DESIRE_HIT 19
+#define B_ANIM_FOCUS_PUNCH_SETUP 20
+#define B_ANIM_INGRAIN_HEAL 21
+#define B_ANIM_WISH_HEAL 22
-// special animations table
-#define B_ANIM_LVL_UP 0x0
-#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1
-#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2
-#define B_ANIM_BALL_THROW 0x3
-#define B_ANIM_BALL_THROW_WITH_TRAINER 0x4
-#define B_ANIM_SUBSTITUTE_TO_MON 0x5
-#define B_ANIM_MON_TO_SUBSTITUTE 0x6
+// special animations table (gBattleAnims_Special)
+#define B_ANIM_LVL_UP 0
+#define B_ANIM_SWITCH_OUT_PLAYER_MON 1
+#define B_ANIM_SWITCH_OUT_OPPONENT_MON 2
+#define B_ANIM_BALL_THROW 3
+#define B_ANIM_BALL_THROW_WITH_TRAINER 4
+#define B_ANIM_SUBSTITUTE_TO_MON 5
+#define B_ANIM_MON_TO_SUBSTITUTE 6
-// status animation table
-#define B_ANIM_STATUS_PSN 0x0
-#define B_ANIM_STATUS_CONFUSION 0x1
-#define B_ANIM_STATUS_BRN 0x2
-#define B_ANIM_STATUS_INFATUATION 0x3
-#define B_ANIM_STATUS_SLP 0x4
-#define B_ANIM_STATUS_PRZ 0x5
-#define B_ANIM_STATUS_FRZ 0x6
-#define B_ANIM_STATUS_CURSED 0x7
-#define B_ANIM_STATUS_NIGHTMARE 0x8
-#define B_ANIM_STATUS_WRAPPED 0x9 // does not actually exist
+// status animation table (gBattleAnims_StatusConditions)
+#define B_ANIM_STATUS_PSN 0
+#define B_ANIM_STATUS_CONFUSION 1
+#define B_ANIM_STATUS_BRN 2
+#define B_ANIM_STATUS_INFATUATION 3
+#define B_ANIM_STATUS_SLP 4
+#define B_ANIM_STATUS_PRZ 5
+#define B_ANIM_STATUS_FRZ 6
+#define B_ANIM_STATUS_CURSED 7
+#define B_ANIM_STATUS_NIGHTMARE 8
+#define B_ANIM_STATUS_WRAPPED 9 // does not actually exist
// Tasks with return values often assign them to gBattleAnimArgs[7].
#define ARG_RET_ID 7
diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h
index b54f01353..cc62208fa 100644
--- a/include/constants/battle_move_effects.h
+++ b/include/constants/battle_move_effects.h
@@ -216,4 +216,6 @@
#define EFFECT_DRAGON_DANCE 212
#define EFFECT_CAMOUFLAGE 213
+#define NUM_BATTLE_MOVE_EFFECTS 214
+
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h
index 9e0d8e0be..1886043f1 100644
--- a/include/constants/battle_string_ids.h
+++ b/include/constants/battle_string_ids.h
@@ -124,7 +124,7 @@
#define STRINGID_PKMNSTORINGENERGY 120
#define STRINGID_PKMNUNLEASHEDENERGY 121
#define STRINGID_PKMNFATIGUECONFUSION 122
-#define STRINGID_PKMNPICKEDUPITEM 123
+#define STRINGID_PLAYERPICKEDUPMONEY 123
#define STRINGID_PKMNUNAFFECTED 124
#define STRINGID_PKMNTRANSFORMEDINTO 125
#define STRINGID_PKMNMADESUBSTITUTE 126
diff --git a/include/constants/items.h b/include/constants/items.h
index 95c6aacfe..71338da8e 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -17,7 +17,11 @@
#define ITEM_LUXURY_BALL 11
#define ITEM_PREMIER_BALL 12
-#define LAST_BALL ITEM_PREMIER_BALL
+// Note: If moving ball IDs around, updating FIRST_BALL/LAST_BALL is not sufficient
+// Several places expect the ball IDs to be first and contiguous (e.g. gBattlescriptsForBallThrow and MON_DATA_POKEBALL)
+// If adding new balls, it's easiest to insert them after the last ball and increment the below IDs (and removing ITEM_034 for example)
+#define FIRST_BALL ITEM_MASTER_BALL
+#define LAST_BALL ITEM_PREMIER_BALL
// Pokemon Items
#define ITEM_POTION 13
@@ -145,6 +149,8 @@
#define ITEM_FAB_MAIL 131
#define ITEM_RETRO_MAIL 132
+#define FIRST_MAIL_INDEX ITEM_ORANGE_MAIL
+
// Berries
#define ITEM_CHERI_BERRY 133
#define ITEM_CHESTO_BERRY 134
@@ -189,6 +195,10 @@
#define ITEM_LANSAT_BERRY 173
#define ITEM_STARF_BERRY 174
#define ITEM_ENIGMA_BERRY 175
+
+#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
+#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY
+
#define ITEM_0B0 176
#define ITEM_0B1 177
#define ITEM_0B2 178
@@ -467,9 +477,6 @@
#define ITEMS_COUNT 377
#define ITEM_FIELD_ARROW ITEMS_COUNT
-#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
-#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY
-
// Range of berries given out by various NPCS
#define FIRST_BERRY_MASTER_BERRY ITEM_POMEG_BERRY
#define LAST_BERRY_MASTER_BERRY ITEM_NOMEL_BERRY
@@ -506,6 +513,21 @@
#define GOOD_ROD 1
#define SUPER_ROD 2
+// Secondary IDs for bikes
+#define MACH_BIKE 0
+#define ACRO_BIKE 1
+
+// Item type IDs (used to determine the exit callback)
+#define ITEM_USE_MAIL 0
+#define ITEM_USE_PARTY_MENU 1
+#define ITEM_USE_FIELD 2
+#define ITEM_USE_PBLOCK_CASE 3
+#define ITEM_USE_BAG_MENU 4 // No exit callback, stays in bag menu
+
+// Item battle usage IDs (only checked to see if nonzero)
+#define ITEM_B_USE_MEDICINE 1
+#define ITEM_B_USE_OTHER 2
+
// Check if the item is one that can be used on a Pokemon.
#define ITEM_HAS_EFFECT(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index bac914fec..d4f6e5684 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -232,6 +232,9 @@
#define STATUS_PRIMARY_POKERUS 6
#define STATUS_PRIMARY_FAINTED 7
+#define MAX_PER_STAT_IVS 31
+#define MAX_IV_MASK 31
+#define USE_RANDOM_IVS (MAX_PER_STAT_IVS + 1)
#define MAX_PER_STAT_EVS 255
#define MAX_TOTAL_EVS 510
#define EV_ITEM_RAISE_LIMIT 100
diff --git a/include/constants/rgb.h b/include/constants/rgb.h
index 1896250d2..be3049d3c 100644
--- a/include/constants/rgb.h
+++ b/include/constants/rgb.h
@@ -5,18 +5,21 @@
#define GET_G(color) (((color) >> 5) & 0x1F)
#define GET_B(color) (((color) >> 10) & 0x1F)
-#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
+#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r))
#define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F))
-#define RGB_BLACK RGB(0, 0, 0)
-#define RGB_WHITE RGB(31, 31, 31)
-#define RGB_RED RGB(31, 0, 0)
-#define RGB_GREEN RGB(0, 31, 0)
-#define RGB_BLUE RGB(0, 0, 31)
-#define RGB_YELLOW RGB(31, 31, 0)
-#define RGB_MAGENTA RGB(31, 0, 31)
-#define RGB_CYAN RGB(0, 31, 31)
-#define RGB_WHITEALPHA (RGB_WHITE | 0x8000)
+#define RGB_ALPHA (1 << 15)
+#define IS_ALPHA(color) ((color) & RGB_ALPHA)
+
+#define RGB_BLACK RGB(0, 0, 0)
+#define RGB_WHITE RGB(31, 31, 31)
+#define RGB_RED RGB(31, 0, 0)
+#define RGB_GREEN RGB(0, 31, 0)
+#define RGB_BLUE RGB(0, 0, 31)
+#define RGB_YELLOW RGB(31, 31, 0)
+#define RGB_MAGENTA RGB(31, 0, 31)
+#define RGB_CYAN RGB(0, 31, 31)
+#define RGB_WHITEALPHA (RGB_WHITE | RGB_ALPHA)
#endif // GUARD_RGB_H
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index 9b4d9302f..cd76cac11 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -16,14 +16,22 @@ enum SpinnerRunnerFollowPatterns
RUNFOLLOW_SOUTH_EAST_WEST
};
+enum ReflectionTypes
+{
+ REFL_TYPE_NONE,
+ REFL_TYPE_ICE,
+ REFL_TYPE_WATER,
+ NUM_REFLECTION_TYPES
+};
+
#define FIGURE_8_LENGTH 72
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN (1 << 0)
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE (1 << 1)
#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN (1 << 2)
#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_MOVE (1 << 3)
-#define GROUND_EFFECT_FLAG_ICE_REFLECTION (1 << 4)
-#define GROUND_EFFECT_FLAG_REFLECTION (1 << 5)
+#define GROUND_EFFECT_FLAG_WATER_REFLECTION (1 << 4)
+#define GROUND_EFFECT_FLAG_ICE_REFLECTION (1 << 5)
#define GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER (1 << 6)
#define GROUND_EFFECT_FLAG_SAND (1 << 7)
#define GROUND_EFFECT_FLAG_DEEP_SAND (1 << 8)
@@ -414,10 +422,10 @@ u8 MovementType_RunInPlace_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementType_Invisible_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementType_Invisible_Step1(struct ObjectEvent *, struct Sprite *);
u8 MovementType_Invisible_Step2(struct ObjectEvent *, struct Sprite *);
-void SetObjectEventSpriteInvisibility(u8 var, bool32 var2);
-bool32 IsObjectEventSpriteInvisible(u8 var);
-void SetObjectEventSpriteGraphics(u8 var1, u8 graphicsId);
-void SetObjectEventSpriteAnim(u8 var1, u8 var2);
-bool32 IsObjectEventSpriteAnimating(u8 var);
+void SetObjectEventSpriteInvisibility(u8 objectEventId, bool32 invisible);
+bool32 IsObjectEventSpriteInvisible(u8 objectEventId);
+void SetObjectEventSpriteGraphics(u8 objectEventId, u8 graphicsId);
+void SetObjectEventSpriteAnim(u8 objectEventId, u8 animNum);
+bool32 IsObjectEventSpriteAnimating(u8 objectEventId);
#endif //GUARD_EVENT_OBJECT_MOVEMENT_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 497e8070b..0ff635a3f 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -11,6 +11,7 @@ struct PokemonSubstruct0
u32 experience;
u8 ppBonuses;
u8 friendship;
+ u16 filler;
};
struct PokemonSubstruct1
@@ -237,6 +238,15 @@ struct Evolution
u16 targetSpecies;
};
+#define NUM_UNOWN_FORMS 28
+
+#define GET_UNOWN_LETTER(personality) (( \
+ (((personality) & 0x03000000) >> 18) \
+ | (((personality) & 0x00030000) >> 12) \
+ | (((personality) & 0x00000300) >> 6) \
+ | (((personality) & 0x00000003) >> 0) \
+) % NUM_UNOWN_FORMS)
+
extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[PARTY_SIZE];
extern u8 gEnemyPartyCount;
diff --git a/include/recorded_battle.h b/include/recorded_battle.h
index 252b25502..55353a6d1 100644
--- a/include/recorded_battle.h
+++ b/include/recorded_battle.h
@@ -3,7 +3,7 @@
extern u32 gRecordedBattleRngSeed;
extern u32 gBattlePalaceMoveSelectionRngValue;
-extern u8 gUnknown_0203C7B4;
+extern u8 gRecordedBattleMultiplayerId;
void sub_8184DA4(u8 arg0);
void sub_8184E58(void);
diff --git a/include/tv.h b/include/tv.h
index 4dc14143c..482909499 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -8,7 +8,7 @@ extern u8 *const gTVStringVarPtrs[3];
void ClearTVShowData(void);
void sub_80EE184(void);
-void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove);
+void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove);
void TryPutFrontierTVShowOnAir(u16 winStreak, u8 facility);
void DoTVShow(void);
void DoTVShowInSearchOfTrainers(void);