diff options
Diffstat (limited to 'include/constants')
-rw-r--r-- | include/constants/battle_constants.h | 241 | ||||
-rw-r--r-- | include/constants/flags.h | 110 | ||||
-rw-r--r-- | include/constants/map_objects.h | 20 | ||||
-rw-r--r-- | include/constants/secret_bases.h | 110 | ||||
-rw-r--r-- | include/constants/vars.h | 194 | ||||
-rw-r--r-- | include/constants/weather.h | 39 |
6 files changed, 683 insertions, 31 deletions
diff --git a/include/constants/battle_constants.h b/include/constants/battle_constants.h new file mode 100644 index 000000000..f7efb0dfd --- /dev/null +++ b/include/constants/battle_constants.h @@ -0,0 +1,241 @@ +#ifndef GUARD_CONSTANTS_BATTLE_CONSTANTS_H +#define GUARD_CONSTANTS_BATTLE_CONSTANTS_H + +#define STATUS_SLEEP 0x7 +#define STATUS_POISON 0x8 +#define STATUS_BURN 0x10 +#define STATUS_FREEZE 0x20 +#define STATUS_PARALYSIS 0x40 +#define STATUS_TOXIC_POISON 0x80 +#define STATUS_TOXIC_COUNTER 0xF00 + +#define STATUS_PSN_ANY ((STATUS_POISON | STATUS_TOXIC_POISON)) +#define STATUS_ANY ((STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) + +#define STATUS2_CONFUSION 0x00000007 +#define STATUS2_FLINCHED 0x00000008 +#define STATUS2_UPROAR 0x00000070 +#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200 +#define STATUS2_LOCK_CONFUSE 0x00000C00 +#define STATUS2_MULTIPLETURNS 0x00001000 +#define STATUS2_WRAPPED 0x0000E000 +#define STATUS2_INFATUATION 0x000F0000 +#define STATUS2_FOCUS_ENERGY 0x00100000 +#define STATUS2_TRANSFORMED 0x00200000 +#define STATUS2_RECHARGE 0x00400000 +#define STATUS2_RAGE 0x00800000 +#define STATUS2_SUBSTITUTE 0x01000000 +#define STATUS2_DESTINY_BOND 0x02000000 +#define STATUS2_ESCAPE_PREVENTION 0x04000000 +#define STATUS2_NIGHTMARE 0x08000000 +#define STATUS2_CURSED 0x10000000 +#define STATUS2_FORESIGHT 0x20000000 +#define STATUS2_DEFENSE_CURL 0x40000000 +#define STATUS2_TORMENT 0x80000000 + +#define STATUS3_LEECHSEED_BANK 0x3 +#define STATUS3_LEECHSEED 0x4 +#define STATUS3_ALWAYS_HITS 0x18 //two bits +#define STATUS3_PERISH_SONG 0x20 +#define STATUS3_ON_AIR 0x40 +#define STATUS3_UNDERGROUND 0x80 +#define STATUS3_MINIMIZED 0x100 +#define STATUS3_ROOTED 0x400 +#define STATUS3_CHARGED_UP 0x200 +#define STATUS3_YAWN 0x1800 //two bits +#define STATUS3_IMPRISIONED 0x2000 +#define STATUS3_GRUDGE 0x4000 +#define STATUS3_CANT_SCORE_A_CRIT 0x8000 +#define STATUS3_MUDSPORT 0x10000 +#define STATUS3_WATERSPORT 0x20000 +#define STATUS3_UNDERWATER 0x40000 +#define STATUS3_INTIMIDATE_POKES 0x80000 +#define STATUS3_TRACE 0x100000 + +#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)) + +#define HITMARKER_x10 0x00000010 +#define HITMARKER_x20 0x00000020 +#define HITMARKER_DESTINYBOND 0x00000040 +#define HITMARKER_NO_ANIMATIONS 0x00000080 +#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100 +#define HITMARKER_NO_ATTACKSTRING 0x00000200 +#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400 +#define HITMARKER_NO_PPDEDUCT 0x00000800 +#define HITMARKER_PURSUIT_TRAP 0x00001000 +#define HITMARKER_IGNORE_SAFEGUARD 0x00002000 +#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000 +#define HITMARKER_IGNORE_ON_AIR 0x00010000 +#define HITMARKER_IGNORE_UNDERGROUND 0x00020000 +#define HITMARKER_IGNORE_UNDERWATER 0x00040000 +#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000 +#define HITMARKER_x100000 0x00100000 +#define HITMARKER_x200000 0x00200000 +#define HITMARKER_x400000 0x00400000 +#define HITMARKER_x800000 0x00800000 +#define HITMARKER_GRUDGE 0x01000000 +#define HITMARKER_OBEYS 0x02000000 +#define HITMARKER_x8000000 0x08000000 +#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C)) +#define HITMARKER_UNK(bank) ((0x10000000 << bank)) + +#define MOVESTATUS_MISSED (1 << 0) +#define MOVESTATUS_SUPEREFFECTIVE (1 << 1) +#define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2) +#define MOVESTATUS_NOTAFFECTED (1 << 3) +#define MOVESTATUS_ONEHITKO (1 << 4) +#define MOVESTATUS_FAILED (1 << 5) +#define MOVESTATUS_ENDURED (1 << 6) +#define MOVESTATUS_HUNGON (1 << 7) + +#define BATTLE_TYPE_DOUBLE 0x0001 +#define BATTLE_TYPE_LINK 0x0002 +#define BATTLE_TYPE_WILD 0x0004 +#define BATTLE_TYPE_TRAINER 0x0008 +#define BATTLE_TYPE_FIRST_BATTLE 0x0010 +#define BATTLE_TYPE_20 0x0020 +#define BATTLE_TYPE_MULTI 0x0040 +#define BATTLE_TYPE_SAFARI 0x0080 +#define BATTLE_TYPE_BATTLE_TOWER 0x0100 +#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200 +#define BATTLE_TYPE_ROAMER 0x0400 +#define BATTLE_TYPE_EREADER_TRAINER 0x0800 +#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 +#define BATTLE_TYPE_LEGENDARY 0x2000 +#define BATTLE_TYPE_REGI 0x4000 +#define BATTLE_TYPE_LINK_DOUBLE (BATTLE_TYPE_MULTI | BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE) + +#define SECRET_BASE_OPPONENT 0x400 + +#define BATTLE_WON 0x1 +#define BATTLE_LOST 0x2 +#define BATTLE_DREW 0x3 +#define BATTLE_RAN 0x4 +#define BATTLE_PLAYER_TELEPORTED 0x5 +#define BATTLE_POKE_FLED 0x6 +#define BATTLE_CAUGHT 0x7 +#define BATTLE_OUT_OF_BALLS 0x8 +#define BATTLE_OPPONENT_TELEPORTED 0xA + +#define SIDE_STATUS_REFLECT (1 << 0) +#define SIDE_STATUS_LIGHTSCREEN (1 << 1) +#define SIDE_STATUS_X4 (1 << 2) +#define SIDE_STATUS_SPIKES (1 << 4) +#define SIDE_STATUS_SAFEGUARD (1 << 5) +#define SIDE_STATUS_FUTUREATTACK (1 << 6) +#define SIDE_STATUS_MIST (1 << 8) +#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) + +#define TARGET_SELECTED_POKEMON 0 +#define TARGET_SPECIAL (1 << 0) +#define TARGET_UNK2 (1 << 1) +#define TARGET_RANDOM (1 << 2) +#define TARGET_BOTH_ENEMIES (1 << 3) +#define TARGET_USER (1 << 4) +#define TARGET_ALL_EXCEPT_USER (1 << 5) +#define TARGET_ENEMY_SIDE (1 << 6) + +#define F_MAKES_CONTACT (1 << 0) +#define F_AFFECTED_BY_PROTECT (1 << 1) +#define F_AFFECTED_BY_MAGIC_COAT (1 << 2) +#define F_AFFECTED_BY_SNATCH (1 << 3) +#define F_MIRROR_MOVE_COMPATIBLE (1 << 4) +#define F_AFFECTED_BY_KINGS_ROCK (1 << 5) + +#define AI_ACTION_DONE 0x0001 +#define AI_ACTION_FLEE 0x0002 +#define AI_ACTION_WATCH 0x0004 +#define AI_ACTION_DO_NOT_ATTACK 0x0008 +#define AI_ACTION_UNK5 0x0010 +#define AI_ACTION_UNK6 0x0020 +#define AI_ACTION_UNK7 0x0040 +#define AI_ACTION_UNK8 0x0080 + +#define ABILITYEFFECT_ON_SWITCHIN 0x0 +#define ABILITYEFFECT_ENDTURN 0x1 +#define ABILITYEFFECT_MOVES_BLOCK 0x2 +#define ABILITYEFFECT_ABSORBING 0x3 +#define ABILITYEFFECT_CONTACT 0x4 +#define ABILITYEFFECT_IMMUNITY 0x5 +#define ABILITYEFFECT_FORECAST 0x6 +#define ABILITYEFFECT_SYNCHRONIZE 0x7 +#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 +#define ABILITYEFFECT_INTIMIDATE1 0x9 +#define ABILITYEFFECT_INTIMIDATE2 0xA +#define ABILITYEFFECT_TRACE 0xB +#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC +#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD +#define ABILITYEFFECT_FIELD_SPORT 0xE +#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF +#define ABILITYEFFECT_COUNT_OTHER_SIZE 0x10 +#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11 +#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 +#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 + +#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) + +#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)) + +#define MAX_TRAINER_ITEMS 4 +#define MAX_MON_MOVES 4 +#define MAX_BANKS_BATTLE 4 + +#define WEATHER_RAIN_TEMPORARY (1 << 0) +#define WEATHER_RAIN_DOWNPOUR (1 << 1) +#define WEATHER_RAIN_PERMANENT (1 << 2) +#define WEATHER_RAIN_ANY ((WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)) +#define WEATHER_SANDSTORM_TEMPORARY (1 << 3) +#define WEATHER_SANDSTORM_PERMANENT (1 << 4) +#define WEATHER_SANDSTORM_ANY ((WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)) +#define WEATHER_SUN_TEMPORARY (1 << 5) +#define WEATHER_SUN_PERMANENT (1 << 6) +#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)) +#define WEATHER_HAIL (1 << 7) + +// 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 + +// general animation table +#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_ITEM_EFFECT 0x7 +#define B_ANIM_SMOKEBALL_ESCAPE 0x8 +#define B_ANIM_HANGED_ON 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_SET_UP 0x14 +#define B_ANIM_INGRAIN_HEAL 0x15 +#define B_ANIM_WISH_HEAL 0x16 + +// special animation 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_SAFARI_BALL_THROW 0x4 +#define B_ANIM_SUBSTITUTE_TO_MON 0x5 +#define B_ANIM_MON_TO_SUBSTITUTE 0x6 + +#endif // GUARD_CONSTANTS_BATTLE_CONSTANTS_H diff --git a/include/constants/flags.h b/include/constants/flags.h index eff147fb8..a8067f6ca 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -2,8 +2,8 @@ #define GUARD_CONSTANTS_FLAGS_H // temporary flags -// These temporary are are cleared every time a map is loaded. They are used for -// things like shortening an NPCs introduction text if the player already spoke +// These temporary flags are are cleared every time a map is loaded. They are used +// for things like shortening an NPCs introduction text if the player already spoke // to them once. #define FLAG_TEMP_1 0x1 #define FLAG_TEMP_2 0x2 @@ -255,8 +255,109 @@ #define FLAG_RIVAL_LEFT_FOR_ROUTE103 0x12D #define FLAG_OMIT_DIVE_FROM_STEVEN_LETTER 0x12E -#define FLAG_UNKNOWN_2B8 0x2B8 // TODO: pokemon storage system? - +// hidden item flags +#define FLAG_HIDDEN_ITEMS_START 0x258 +#define FLAG_HIDDEN_ITEM_0 0x258 +#define FLAG_HIDDEN_ITEM_1 0x259 +#define FLAG_HIDDEN_ITEM_2 0x25A +#define FLAG_HIDDEN_ITEM_3 0x25B +#define FLAG_HIDDEN_ITEM_4 0x25C +#define FLAG_HIDDEN_ITEM_5 0x25D +#define FLAG_HIDDEN_ITEM_6 0x25E +#define FLAG_HIDDEN_ITEM_7 0x25F +#define FLAG_HIDDEN_ITEM_8 0x260 +#define FLAG_HIDDEN_ITEM_9 0x261 +#define FLAG_HIDDEN_ITEM_A 0x262 +#define FLAG_HIDDEN_ITEM_B 0x263 +#define FLAG_HIDDEN_ITEM_C 0x264 +#define FLAG_HIDDEN_ITEM_D 0x265 +#define FLAG_HIDDEN_ITEM_E 0x266 +#define FLAG_HIDDEN_ITEM_F 0x267 +#define FLAG_HIDDEN_ITEM_10 0x268 +#define FLAG_HIDDEN_ITEM_11 0x269 +#define FLAG_HIDDEN_ITEM_12 0x26A +#define FLAG_HIDDEN_ITEM_13 0x26B +#define FLAG_HIDDEN_ITEM_14 0x26C +#define FLAG_HIDDEN_ITEM_15 0x26D +#define FLAG_HIDDEN_ITEM_16 0x26E +#define FLAG_HIDDEN_ITEM_17 0x26F +#define FLAG_HIDDEN_ITEM_18 0x270 +#define FLAG_HIDDEN_ITEM_19 0x271 +#define FLAG_HIDDEN_ITEM_1A 0x272 +#define FLAG_HIDDEN_ITEM_1B 0x273 +#define FLAG_HIDDEN_ITEM_1C 0x274 +#define FLAG_HIDDEN_ITEM_1D 0x275 +#define FLAG_HIDDEN_ITEM_1E 0x276 +#define FLAG_HIDDEN_ITEM_1F 0x277 +#define FLAG_HIDDEN_ITEM_20 0x278 +#define FLAG_HIDDEN_ITEM_21 0x279 +#define FLAG_HIDDEN_ITEM_22 0x27A +#define FLAG_HIDDEN_ITEM_23 0x27B +#define FLAG_HIDDEN_ITEM_24 0x27C +#define FLAG_HIDDEN_ITEM_25 0x27D +#define FLAG_HIDDEN_ITEM_26 0x27E +#define FLAG_HIDDEN_ITEM_27 0x27F +#define FLAG_HIDDEN_ITEM_28 0x280 +#define FLAG_HIDDEN_ITEM_29 0x281 +#define FLAG_HIDDEN_ITEM_2A 0x282 +#define FLAG_HIDDEN_ITEM_2B 0x283 +#define FLAG_HIDDEN_ITEM_2C 0x284 +#define FLAG_HIDDEN_ITEM_2D 0x285 +#define FLAG_HIDDEN_ITEM_2E 0x286 +#define FLAG_HIDDEN_ITEM_2F 0x287 +#define FLAG_HIDDEN_ITEM_30 0x288 +#define FLAG_HIDDEN_ITEM_31 0x289 +#define FLAG_HIDDEN_ITEM_32 0x28A +#define FLAG_HIDDEN_ITEM_33 0x28B +#define FLAG_HIDDEN_ITEM_34 0x28C +#define FLAG_HIDDEN_ITEM_35 0x28D +#define FLAG_HIDDEN_ITEM_36 0x28E +#define FLAG_HIDDEN_ITEM_37 0x28F +#define FLAG_HIDDEN_ITEM_38 0x290 +#define FLAG_HIDDEN_ITEM_39 0x291 +#define FLAG_HIDDEN_ITEM_3A 0x292 +#define FLAG_HIDDEN_ITEM_3B 0x293 +#define FLAG_HIDDEN_ITEM_3C 0x294 +#define FLAG_HIDDEN_ITEM_3D 0x295 +#define FLAG_HIDDEN_ITEM_3E 0x296 +#define FLAG_HIDDEN_ITEM_3F 0x297 +#define FLAG_HIDDEN_ITEM_40 0x298 +#define FLAG_HIDDEN_ITEM_41 0x299 +#define FLAG_HIDDEN_ITEM_42 0x29A +#define FLAG_HIDDEN_ITEM_43 0x29B +#define FLAG_HIDDEN_ITEM_44 0x29C +#define FLAG_HIDDEN_ITEM_45 0x29D +#define FLAG_HIDDEN_ITEM_46 0x29E +#define FLAG_HIDDEN_ITEM_47 0x29F +#define FLAG_HIDDEN_ITEM_48 0x2A0 +#define FLAG_HIDDEN_ITEM_49 0x2A1 +#define FLAG_HIDDEN_ITEM_4A 0x2A2 +#define FLAG_HIDDEN_ITEM_4B 0x2A3 +#define FLAG_HIDDEN_ITEM_4C 0x2A4 +#define FLAG_HIDDEN_ITEM_4D 0x2A5 +#define FLAG_HIDDEN_ITEM_4E 0x2A6 +#define FLAG_HIDDEN_ITEM_4F 0x2A7 +#define FLAG_HIDDEN_ITEM_50 0x2A8 +#define FLAG_HIDDEN_ITEM_51 0x2A9 +#define FLAG_HIDDEN_ITEM_52 0x2AA +#define FLAG_HIDDEN_ITEM_53 0x2AB +#define FLAG_HIDDEN_ITEM_54 0x2AC +#define FLAG_HIDDEN_ITEM_55 0x2AD +#define FLAG_HIDDEN_ITEM_56 0x2AE +#define FLAG_HIDDEN_ITEM_57 0x2AF +#define FLAG_HIDDEN_ITEM_58 0x2B0 +#define FLAG_HIDDEN_ITEM_59 0x2B1 +#define FLAG_HIDDEN_ITEM_5A 0x2B2 +#define FLAG_HIDDEN_ITEM_5B 0x2B3 +#define FLAG_HIDDEN_ITEM_5C 0x2B4 +#define FLAG_HIDDEN_ITEM_5D 0x2B5 +#define FLAG_HIDDEN_ITEM_5E 0x2B6 +#define FLAG_HIDDEN_ITEM_5F 0x2B7 +#define FLAG_HIDDEN_ITEM_BLACK_GLASSES 0x2B8 +#define FLAG_HIDDEN_ITEM_61 0x2B9 + + +// map object hide/show flags #define FLAG_HIDE_BIRCH_STARTERS_BAG 0x2BC #define FLAG_HIDE_BIRCH_BATTLE_POOCHYENA 0x2D0 @@ -799,6 +900,7 @@ // SPECIAL FLAGS (unknown purpose) +#define FLAG_SPECIAL_FLAG_0 0x4000 #define FLAG_SPECIAL_FLAG_1 0x4001 #endif // GUARD_CONSTANTS_FLAGS_H diff --git a/include/constants/map_objects.h b/include/constants/map_objects.h index 6a1c9e11a..7e5aef744 100644 --- a/include/constants/map_objects.h +++ b/include/constants/map_objects.h @@ -220,6 +220,26 @@ #define MAP_OBJ_GFX_LINK_BRENDAN 216 #define MAP_OBJ_GFX_LINK_MAY 217 +// These are dynamic object gfx ids. +// They correspond with the values of the VAR_OBJ_GFX_ID_X vars. +// More info about them in include/constants/vars.h +#define MAP_OBJ_GFX_VAR_0 240 +#define MAP_OBJ_GFX_VAR_1 241 +#define MAP_OBJ_GFX_VAR_2 242 +#define MAP_OBJ_GFX_VAR_3 243 +#define MAP_OBJ_GFX_VAR_4 244 +#define MAP_OBJ_GFX_VAR_5 245 +#define MAP_OBJ_GFX_VAR_6 246 +#define MAP_OBJ_GFX_VAR_7 247 +#define MAP_OBJ_GFX_VAR_8 248 +#define MAP_OBJ_GFX_VAR_9 249 +#define MAP_OBJ_GFX_VAR_A 250 +#define MAP_OBJ_GFX_VAR_B 251 +#define MAP_OBJ_GFX_VAR_C 252 +#define MAP_OBJ_GFX_VAR_D 253 +#define MAP_OBJ_GFX_VAR_E 254 +#define MAP_OBJ_GFX_VAR_F 255 + #define SHADOW_SIZE_S 0 #define SHADOW_SIZE_M 1 #define SHADOW_SIZE_L 2 diff --git a/include/constants/secret_bases.h b/include/constants/secret_bases.h new file mode 100644 index 000000000..0f51054a8 --- /dev/null +++ b/include/constants/secret_bases.h @@ -0,0 +1,110 @@ +#ifndef GUARD_CONSTANTS_SECRET_BASES_H +#define GUARD_CONSTANTS_SECRET_BASES_H + +// Each secret base location is assigned an identifier value. +// The secret base's map is determined by (id / 10). The ones +// digit is used to differentiate secret bases using the same map. +// Therefore, each secret base map can be used by up to 10 different +// secret bases in the game. These ids are 1-based, but there is no +// apparent reason for that. + +#define SECRET_BASE_RED_CAVE1_1 1 +#define SECRET_BASE_RED_CAVE1_2 2 +#define SECRET_BASE_RED_CAVE1_3 3 + +#define SECRET_BASE_RED_CAVE2_1 11 +#define SECRET_BASE_RED_CAVE2_2 12 +#define SECRET_BASE_RED_CAVE2_3 13 + +#define SECRET_BASE_RED_CAVE3_1 21 +#define SECRET_BASE_RED_CAVE3_2 22 +#define SECRET_BASE_RED_CAVE3_3 23 + +#define SECRET_BASE_RED_CAVE4_1 31 +#define SECRET_BASE_RED_CAVE4_2 32 +#define SECRET_BASE_RED_CAVE4_3 33 + +#define SECRET_BASE_BROWN_CAVE1_1 41 +#define SECRET_BASE_BROWN_CAVE1_2 42 +#define SECRET_BASE_BROWN_CAVE1_3 43 + +#define SECRET_BASE_BROWN_CAVE2_1 51 +#define SECRET_BASE_BROWN_CAVE2_2 52 +#define SECRET_BASE_BROWN_CAVE2_3 53 + +#define SECRET_BASE_BROWN_CAVE3_1 61 +#define SECRET_BASE_BROWN_CAVE3_2 62 +#define SECRET_BASE_BROWN_CAVE3_3 63 + +#define SECRET_BASE_BROWN_CAVE4_1 71 +#define SECRET_BASE_BROWN_CAVE4_2 72 +#define SECRET_BASE_BROWN_CAVE4_3 73 + +#define SECRET_BASE_BLUE_CAVE1_1 81 +#define SECRET_BASE_BLUE_CAVE1_2 82 +#define SECRET_BASE_BLUE_CAVE1_3 83 + +#define SECRET_BASE_BLUE_CAVE2_1 91 +#define SECRET_BASE_BLUE_CAVE2_2 92 +#define SECRET_BASE_BLUE_CAVE2_3 93 + +#define SECRET_BASE_BLUE_CAVE3_1 101 +#define SECRET_BASE_BLUE_CAVE3_2 102 +#define SECRET_BASE_BLUE_CAVE3_3 103 + +#define SECRET_BASE_BLUE_CAVE4_1 111 +#define SECRET_BASE_BLUE_CAVE4_2 112 +#define SECRET_BASE_BLUE_CAVE4_3 113 + +#define SECRET_BASE_YELLOW_CAVE1_1 121 +#define SECRET_BASE_YELLOW_CAVE1_2 122 +#define SECRET_BASE_YELLOW_CAVE1_3 123 + +#define SECRET_BASE_YELLOW_CAVE2_1 131 +#define SECRET_BASE_YELLOW_CAVE2_2 132 +#define SECRET_BASE_YELLOW_CAVE2_3 133 + +#define SECRET_BASE_YELLOW_CAVE3_1 141 +#define SECRET_BASE_YELLOW_CAVE3_2 142 +#define SECRET_BASE_YELLOW_CAVE3_3 143 + +#define SECRET_BASE_YELLOW_CAVE4_1 151 +#define SECRET_BASE_YELLOW_CAVE4_2 152 +#define SECRET_BASE_YELLOW_CAVE4_3 153 + +#define SECRET_BASE_TREE1_1 161 +#define SECRET_BASE_TREE1_2 162 +#define SECRET_BASE_TREE1_3 163 +#define SECRET_BASE_TREE1_4 164 + +#define SECRET_BASE_TREE2_1 171 +#define SECRET_BASE_TREE2_2 172 +#define SECRET_BASE_TREE2_3 173 +#define SECRET_BASE_TREE2_4 174 + +#define SECRET_BASE_TREE3_1 181 +#define SECRET_BASE_TREE3_2 182 +#define SECRET_BASE_TREE3_3 183 + +#define SECRET_BASE_TREE4_1 191 +#define SECRET_BASE_TREE4_2 192 +#define SECRET_BASE_TREE4_3 193 + +#define SECRET_BASE_SHRUB1_1 201 +#define SECRET_BASE_SHRUB1_2 202 +#define SECRET_BASE_SHRUB1_3 203 +#define SECRET_BASE_SHRUB1_4 204 + +#define SECRET_BASE_SHRUB2_1 211 +#define SECRET_BASE_SHRUB2_2 212 +#define SECRET_BASE_SHRUB2_3 213 + +#define SECRET_BASE_SHRUB3_1 221 +#define SECRET_BASE_SHRUB3_2 222 +#define SECRET_BASE_SHRUB3_3 223 + +#define SECRET_BASE_SHRUB4_1 231 +#define SECRET_BASE_SHRUB4_2 232 +#define SECRET_BASE_SHRUB4_3 233 + +#endif // GUARD_CONSTANTS_SECRET_BASES_H diff --git a/include/constants/vars.h b/include/constants/vars.h index 21834879f..682d45003 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -3,54 +3,194 @@ #define VAR_0x3F20 0x3F20 -#define VAR_0x4000 0x4000 -#define VAR_0x4001 0x4001 -#define VAR_0x4002 0x4002 -#define VAR_0x4003 0x4003 -#define VAR_0x4004 0x4004 -#define VAR_0x4005 0x4005 -#define VAR_0x4006 0x4006 -#define VAR_0x4007 0x4007 -#define VAR_0x4008 0x4008 -#define VAR_0x4009 0x4009 -#define VAR_0x400A 0x400A -#define VAR_0x401F 0x401F +#define VARS_START 0x4000 + +// temporary vars +// The first 0x10 vars are are temporary--they are cleared every time a map is loaded. +#define VAR_TEMP_0 0x4000 +#define VAR_TEMP_1 0x4001 +#define VAR_TEMP_2 0x4002 +#define VAR_TEMP_3 0x4003 +#define VAR_TEMP_4 0x4004 +#define VAR_TEMP_5 0x4005 +#define VAR_TEMP_6 0x4006 +#define VAR_TEMP_7 0x4007 +#define VAR_TEMP_8 0x4008 +#define VAR_TEMP_9 0x4009 +#define VAR_TEMP_A 0x400A +#define VAR_TEMP_B 0x400B +#define VAR_TEMP_C 0x400C +#define VAR_TEMP_D 0x400D +#define VAR_TEMP_E 0x400E +#define VAR_TEMP_F 0x400F + +// object gfx id vars +// These 0x10 vars are used to dynamically control a map object's sprite. +// For example, the rival's sprite id is dynamically set based on the player's gender. +// See VarGetFieldObjectGraphicsId(). +#define VAR_OBJ_GFX_ID_0 0x4010 +#define VAR_OBJ_GFX_ID_1 0x4011 +#define VAR_OBJ_GFX_ID_2 0x4012 +#define VAR_OBJ_GFX_ID_3 0x4013 +#define VAR_OBJ_GFX_ID_4 0x4014 +#define VAR_OBJ_GFX_ID_5 0x4015 +#define VAR_OBJ_GFX_ID_6 0x4016 +#define VAR_OBJ_GFX_ID_7 0x4017 +#define VAR_OBJ_GFX_ID_8 0x4018 +#define VAR_OBJ_GFX_ID_9 0x4019 +#define VAR_OBJ_GFX_ID_A 0x401A +#define VAR_OBJ_GFX_ID_B 0x401B +#define VAR_OBJ_GFX_ID_C 0x401C +#define VAR_OBJ_GFX_ID_D 0x401D +#define VAR_OBJ_GFX_ID_E 0x401E +#define VAR_OBJ_GFX_ID_F 0x401F + +// general purpose vars #define VAR_RECYCLE_GOODS 0x4020 #define VAR_REPEL_STEP_COUNT 0x4021 #define VAR_ICE_STEP_COUNT 0x4022 -#define VAR_FIRST_POKE 0x4023 +#define VAR_STARTER_MON 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip #define VAR_MIRAGE_RND_H 0x4024 #define VAR_MIRAGE_RND_L 0x4025 #define VAR_SECRET_BASE_MAP 0x4026 - +#define VAR_CYCLING_ROAD_RECORD_COLLISIONS 0x4027 +#define VAR_CYCLING_ROAD_RECORD_TIME_L 0x4028 +#define VAR_CYCLING_ROAD_RECORD_TIME_H 0x4029 #define VAR_HAPPINESS_STEP_COUNTER 0x402A #define VAR_POISON_STEP_COUNTER 0x402B #define VAR_RESET_RTC_ENABLE 0x402C +#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D #define VAR_DAYS 0x4040 - +#define VAR_FANCLUB_UNKNOWN_1 0x4041 // TODO: document these two fanclub vars +#define VAR_FANCLUB_UNKNOWN_2 0x4042 #define VAR_DEPT_STORE_FLOOR 0x4043 -#define VAR_POKELOT_PRIZE 0x4045 +#define VAR_TRICK_HOUSE_ROOMS_COMPLETED 0x4044 +#define VAR_LOTTERY_PRIZE 0x4045 #define VAR_NATIONAL_DEX 0x4046 #define VAR_SHROOMISH_SIZE_RECORD 0x4047 #define VAR_ASH_GATHER_COUNT 0x4048 #define VAR_BIRCH_STATE 0x4049 #define VAR_CRUISE_STEP_COUNT 0x404A -#define VAR_POKELOT_RND1 0x404B -#define VAR_POKELOT_RND2 0x404C +#define VAR_LOTTERY_RND_L 0x404B +#define VAR_LOTTERY_RND_H 0x404C #define VAR_BARBOACH_SIZE_RECORD 0x404F +#define VAR_LITTLEROOT_STATE 0x4050 +#define VAR_ROUTE102_ACCESSIBLE 0x4051 + +#define VAR_LAVARIDGE_RIVAL_STATE 0x4053 +#define VAR_CURRENT_SECRET_BASE 0x4054 + +#define VAR_PETALBURG_STATE 0x4057 +#define VAR_SLATEPORT_STATE 0x4058 + +#define VAR_RUSTBORO_STATE 0x405A + +#define VAR_SOOTOPOLIS_STATE 0x405E + +#define VAR_ROUTE101_STATE 0x4060 + +#define VAR_ROUTE103_STATE 0x4062 + +#define VAR_ROUTE110_STATE 0x4069 + +#define VAR_ROUTE116_STATE 0x406F + +#define VAR_ROUTE118_STATE 0x4071 +#define VAR_ROUTE119_STATE 0x4072 + +#define VAR_ROUTE121_STATE 0x4074 +#define VAR_ROUTE128_STATE 0x407B + +#define VAR_LITTLEROOT_HOUSES_STATE 0x4082 // TODO: needs more investigation + +#define VAR_BIRCH_LAB_STATE 0x4084 +#define VAR_PETALBURG_GYM_STATE 0x4085 +#define VAR_LINK_CONTEST_ROOM_STATE 0x4086 +#define VAR_CABLE_CLUB_STATE 0x4087 +#define VAR_CONTEST_LOCATION 0x4088 +#define VAR_0x4089 0x4089 // TODO: related to decorations +#define VAR_CONTEST_PRIZE_PICKUP 0x408A + +#define VAR_LITTLEROOT_HOUSES_STATE_2 0x408C // TODO: needs more investigation +#define VAR_LITTLEROOT_RIVAL_STATE 0x408D +#define VAR_BOARD_BRINEY_BOAT_ROUTE104_STATE 0x408E +#define VAR_DEVON_CORP_3F_STATE 0x408F +#define VAR_BRINEY_HOUSE_STATE 0x4090 + +#define VAR_LITTLEROOT_INTRO_STATE 0x4092 +#define VAR_MAUVILLE_GYM_STATE 0x4093 +#define VAR_LILYCOVE_MUSEUM_2F_STATE 0x4094 +#define VAR_LILYCOVE_FAN_CLUB_STATE 0x4095 +#define VAR_BRINEY_LOCATION 0x4096 +#define VAR_0x4097 0x4097 // TODO: related to creating new secret base +#define VAR_PETALBURG_WOODS_STATE 0x4098 +#define VAR_LILYCOVE_CONTEST_LOBBY_STATE 0x4099 +#define VAR_RUSTURF_TUNNEL_STATE 0x409a +#define VAR_CAVE_OF_ORIGIN_B4F_STATE 0x409B +#define VAR_ELITE_4_STATE 0x409C + +#define VAR_SLATEPORT_HARBOR_STATE 0x40A0 + +#define VAR_SEAFLOOR_CAVERN_STATE 0x40A2 +#define VAR_CABLE_CAR_STATION_STATE 0x40A3 +#define VAR_SAFARI_ZONE_STATE 0x40A4 +#define VAR_TRICK_HOUSE_ENTRANCE_STATE 0x40A5 +#define VAR_TRICK_HOUSE_ENTRANCE_STATE_2 0x40A6 +#define VAR_TRICK_HOUSE_ENTRANCE_STATE_3 0x40A7 + +#define VAR_CYCLING_CHALLENGE_STATE 0x40A9 +#define VAR_SLATEPORT_MUSEUM_1F_STATE 0x40AA +#define VAR_TRICK_HOUSE_PUZZLE_1_STATE 0x40AB +#define VAR_TRICK_HOUSE_PUZZLE_2_STATE 0x40AC +#define VAR_TRICK_HOUSE_PUZZLE_3_STATE 0x40AD +#define VAR_TRICK_HOUSE_PUZZLE_4_STATE 0x40AE +#define VAR_TRICK_HOUSE_PUZZLE_5_STATE 0x40AF +#define VAR_TRICK_HOUSE_PUZZLE_6_STATE 0x40B0 +#define VAR_TRICK_HOUSE_PUZZLE_7_STATE 0x40B1 +#define VAR_TRICK_HOUSE_PUZZLE_8_STATE 0x40B2 +#define VAR_WEATHER_INSTITUTE_STATE 0x40B3 +#define VAR_PORTHOLE_STATE 0x40B4 +#define VAR_TRICK_HOUSE_STATE 0x40B5 // TODO: needs some further investigation +#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2 0x40B6 +#define VAR_SLATEPORT_FAN_CLUB_STATE 0x40B7 -#define VAR_0x4054 0x4054 +#define VAR_MT_PYRE_STATE 0x40B9 +#define VAR_NEW_MAUVILLE_STATE 0x40BA -#define VAR_0x4089 0x4089 -#define VAR_0x4095 0x4095 -#define VAR_0x4097 0x4097 -#define VAR_0x409a 0x409a -#define VAR_WEATHER_INSTITUTE_CLEARED 0x040B3 -#define VAR_PORTHOLE 0x40B4 +#define VAR_BRAVO_TRAINER_BATTLE_TOWER_ON 0x40BC +#define VAR_JAGGED_PASS_ASH_WEATHER 0x40BD +#define VAR_GLASS_WORKSHOP_STATE 0x40BE +#define VAR_METEOR_FALLS_STATE 0x40BF +#define VAR_GAME_CORNER_STATE 0x40C0 +#define VAR_TRICK_HOUSE_PRIZE_PICKUP 0x40C1 +#define VAR_PACIFIDLOG_TM_RECEIVED_DAY 0x40C2 +#define VAR_VICTORY_ROAD_1F_STATE 0x40C3 +#define VAR_FOSSIL_RESURRECTION_STATE 0x40C4 +#define VAR_WHICH_FOSSIL_REVIVED 0x40C5 +#define VAR_STEVENS_HOUSE_STATE 0x40C6 +#define VAR_OLDALE_STATE 0x40C7 -#define VAR_0x40BC 0x40BC -#define VAR_0x40C2 0x40C2 +// special vars +// They are commonly used as parameters to commands, or return values from commands. +#define VAR_SPECIAL_0 0x8000 +#define VAR_SPECIAL_1 0x8001 +#define VAR_SPECIAL_2 0x8002 +#define VAR_SPECIAL_3 0x8003 +#define VAR_SPECIAL_4 0x8004 +#define VAR_SPECIAL_5 0x8005 +#define VAR_SPECIAL_6 0x8006 +#define VAR_SPECIAL_7 0x8007 +#define VAR_SPECIAL_8 0x8008 +#define VAR_SPECIAL_9 0x8009 +#define VAR_SPECIAL_A 0x800A +#define VAR_SPECIAL_B 0x800B +#define FACING 0x800C +#define RESULT 0x800D +#define ITEM_ID 0x800E +#define LAST_TALKED 0x800F +#define CONTEST_RANK 0x8010 +#define CONTEST_CATEGORY 0x8011 #endif // GUARD_CONSTANTS_VARS_H diff --git a/include/constants/weather.h b/include/constants/weather.h new file mode 100644 index 000000000..946316984 --- /dev/null +++ b/include/constants/weather.h @@ -0,0 +1,39 @@ +#ifndef GUARD_CONSTANTS_WEATHER_H +#define GUARD_CONSTANTS_WEATHER_H + +#define WEATHER_NONE 0 +#define WEATHER_CLOUDS 1 +#define WEATHER_SUNNY 2 +#define WEATHER_RAIN_LIGHT 3 +#define WEATHER_SNOW 4 +#define WEATHER_RAIN_MED 5 +#define WEATHER_FOG_1 6 +#define WEATHER_ASH 7 +#define WEATHER_SANDSTORM 8 +#define WEATHER_FOG_2 9 +#define WEATHER_FOG_3 10 +#define WEATHER_DARK 11 +#define WEATHER_DROUGHT 12 +#define WEATHER_RAIN_HEAVY 13 +#define WEATHER_BUBBLES 14 +#define WEATHER_ROUTE119_CYCLE 20 +#define WEATHER_ROUTE123_CYCLE 21 + +// These are used in maps' coord_weather_event entries. +// They are not a one-to-one mapping with the engine's +// internal weather constants above. +#define COORD_EVENT_WEATHER_CLOUDS 1 +#define COORD_EVENT_WEATHER_SUNNY 2 +#define COORD_EVENT_WEATHER_RAIN_LIGHT 3 +#define COORD_EVENT_WEATHER_SNOW 4 +#define COORD_EVENT_WEATHER_RAIN_MED 5 +#define COORD_EVENT_WEATHER_FOG_1 6 +#define COORD_EVENT_WEATHER_FOG_2 7 +#define COORD_EVENT_WEATHER_ASH 8 +#define COORD_EVENT_WEATHER_SANDSTORM 9 +#define COORD_EVENT_WEATHER_DARK 10 +#define COORD_EVENT_WEATHER_DROUGHT 11 +#define COORD_EVENT_WEATHER_ROUTE119_CYCLE 20 +#define COORD_EVENT_WEATHER_ROUTE123_CYCLE 21 + +#endif // GUARD_CONSTANTS_WEATHER_H |