diff options
| author | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-05 18:53:19 -0500 | 
|---|---|---|
| committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-05 18:53:19 -0500 | 
| commit | f6527d12428c8a8bd2561c3da50ebb36968e061c (patch) | |
| tree | 1882d862a18e61ddddf94dee1f9b4dae43336538 /include/constants | |
| parent | cbd3aa95d12bab05042025bd143a2a7cacf0b86d (diff) | |
| parent | f5fbe5b66226f4e7e38fe5d4638831d1ce19b36b (diff) | |
Merge branch 'master' into cable_car
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 | 
