diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/constants/battle.h | 64 | ||||
-rw-r--r-- | include/constants/battle_anim.h | 86 | ||||
-rw-r--r-- | include/constants/battle_move_effects.h | 2 | ||||
-rw-r--r-- | include/constants/battle_string_ids.h | 2 | ||||
-rw-r--r-- | include/constants/items.h | 30 | ||||
-rw-r--r-- | include/constants/pokemon.h | 3 | ||||
-rw-r--r-- | include/constants/rgb.h | 23 | ||||
-rw-r--r-- | include/event_object_movement.h | 22 | ||||
-rw-r--r-- | include/pokemon.h | 10 | ||||
-rw-r--r-- | include/recorded_battle.h | 2 | ||||
-rw-r--r-- | include/tv.h | 2 |
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); |