#ifndef GUARD_CONSTANTS_VARS_H
#define GUARD_CONSTANTS_VARS_H

#define VAR_0x3F20                 0x3F20

#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 VarGetEventObjectGraphicsId().
#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_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_0x402E                 0x402E

#define VAR_FRONTIER_MANIAC_FACILITY        0x402F
#define VAR_FRONTIER_GAMBLER_FACILITY       0x4030
#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031
#define VAR_FRONTIER_GAMBLER_AMOUNT_BET     0x4032
#define VAR_FRONTIER_GAMBLER_PLACED_BET_F   0x4033

#define VAR_0x4034                 0x4034
#define VAR_0x4035                 0x4035
#define VAR_STORAGE_UNKNOWN        0x4036
#define VAR_0x4037                 0x4037
#define VAR_0x4038                 0x4038
#define VAR_0x4039                 0x4039
#define VAR_0x403A                 0x403A
#define VAR_0x403B                 0x403B
#define VAR_0x403C                 0x403C
#define VAR_0x403D                 0x403D
#define VAR_ALTERING_CAVE_WILD_SET 0x403E
#define VAR_0x403F                 0x403F
#define VAR_DAYS                   0x4040
#define VAR_FANCLUB_UNKNOWN_1                 0x4041
#define VAR_FANCLUB_UNKNOWN_2                 0x4042
#define VAR_DEPT_STORE_FLOOR       0x4043
#define VAR_0x4044                 0x4044
#define VAR_POKELOT_PRIZE          0x4045
#define VAR_NATIONAL_DEX           0x4046
#define VAR_SEEDOT_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_0x404D                 0x404D
#define VAR_0x404E                 0x404E
#define VAR_LOTAD_SIZE_RECORD      0x404F
#define VAR_0x4050                 0x4050
#define VAR_0x4051                 0x4051
#define VAR_0x4052                 0x4052
#define VAR_0x4053                 0x4053
#define VAR_0x4054                 0x4054
#define VAR_0x4055                 0x4055
#define VAR_0x4056                 0x4056
#define VAR_0x4057                 0x4057
#define VAR_0x4058                 0x4058
#define VAR_0x4059                 0x4059
#define VAR_0x405A                 0x405A
#define VAR_0x405B                 0x405B
#define VAR_0x405C                 0x405C
#define VAR_0x405D                 0x405D
#define VAR_0x405E                 0x405E
#define VAR_0x405F                 0x405F
#define VAR_0x4060                 0x4060
#define VAR_0x4061                 0x4061
#define VAR_0x4062                 0x4062
#define VAR_0x4063                 0x4063
#define VAR_0x4064                 0x4064
#define VAR_0x4065                 0x4065
#define VAR_0x4066                 0x4066
#define VAR_0x4067                 0x4067
#define VAR_0x4068                 0x4068
#define VAR_0x4069                 0x4069
#define VAR_0x406A                 0x406A
#define VAR_0x406B                 0x406B
#define VAR_0x406C                 0x406C
#define VAR_0x406D                 0x406D
#define VAR_0x406E                 0x406E
#define VAR_0x406F                 0x406F
#define VAR_0x4070                 0x4070
#define VAR_0x4071                 0x4071
#define VAR_0x4072                 0x4072
#define VAR_0x4073                 0x4073
#define VAR_0x4074                 0x4074
#define VAR_0x4075                 0x4075
#define VAR_0x4076                 0x4076
#define VAR_0x4077                 0x4077
#define VAR_0x4078                 0x4078
#define VAR_0x4079                 0x4079
#define VAR_0x407A                 0x407A
#define VAR_0x407B                 0x407B
#define VAR_0x407C                 0x407C
#define VAR_0x407D                 0x407D
#define VAR_0x407E                 0x407E
#define VAR_0x407F                 0x407F
#define VAR_0x4080                 0x4080
#define VAR_0x4081                 0x4081
#define VAR_0x4082                 0x4082
#define VAR_0x4083                 0x4083
#define VAR_0x4084                 0x4084
#define VAR_0x4085                 0x4085
#define VAR_0x4086                 0x4086
#define VAR_0x4087                 0x4087
#define VAR_0x4088                 0x4088
#define VAR_0x4089                 0x4089
#define VAR_0x408A                 0x408A
#define VAR_0x408B                 0x408B
#define VAR_0x408C                 0x408C
#define VAR_0x408D                 0x408D
#define VAR_0x408E                 0x408E
#define VAR_0x408F                 0x408F
#define VAR_0x4090                 0x4090
#define VAR_0x4091                 0x4091
#define VAR_0x4092                 0x4092
#define VAR_0x4093                 0x4093
#define VAR_0x4094                 0x4094
#define VAR_LILYCOVE_FAN_CLUB_STATE                 0x4095
#define VAR_0x4096                 0x4096
#define VAR_0x4097                 0x4097
#define VAR_0x4098                 0x4098
#define VAR_0x4099                 0x4099
#define VAR_RUSTURF_TUNNEL_STATE                 0x409A
#define VAR_0x409B                 0x409B
#define VAR_0x409C                 0x409C
#define VAR_0x409D                 0x409D
#define VAR_0x409E                 0x409E
#define VAR_0x409F                 0x409F
#define VAR_0x40A0                 0x40A0
#define VAR_0x40A1                 0x40A1
#define VAR_0x40A2                 0x40A2
#define VAR_0x40A3                 0x40A3
#define VAR_0x40A4                 0x40A4
#define VAR_0x40A5                 0x40A5
#define VAR_0x40A6                 0x40A6
#define VAR_0x40A7                 0x40A7
#define VAR_0x40A8                 0x40A8
#define VAR_CYCLING_CHALLENGE_STATE                 0x40A9
#define VAR_0x40AA                 0x40AA
#define VAR_0x40AB                 0x40AB
#define VAR_0x40AC                 0x40AC
#define VAR_0x40AD                 0x40AD
#define VAR_0x40AE                 0x40AE
#define VAR_0x40AF                 0x40AF
#define VAR_0x40B0                 0x40B0
#define VAR_0x40B1                 0x40B1
#define VAR_0x40B2                 0x40B2
#define VAR_WEATHER_INSTITUTE_STATE                 0x40B3
#define VAR_PORTHOLE_STATE               0x40B4
#define VAR_0x40B5                 0x40B5
#define VAR_0x40B6                 0x40B6
#define VAR_0x40B7                 0x40B7
#define VAR_0x40B8                 0x40B8
#define VAR_0x40B9                 0x40B9
#define VAR_0x40BA                 0x40BA
#define VAR_0x40BB                 0x40BB
#define VAR_0x40BC                 0x40BC
#define VAR_0x40BD                 0x40BD
#define VAR_0x40BE                 0x40BE
#define VAR_0x40BF                 0x40BF
#define VAR_0x40C0                 0x40C0
#define VAR_0x40C1                 0x40C1
#define VAR_PACIFIDLOG_TM_RECEIVED_DAY                 0x40C2
#define VAR_0x40C3                 0x40C3
#define VAR_0x40C4                 0x40C4
#define VAR_0x40C5                 0x40C5
#define VAR_0x40C6                 0x40C6
#define VAR_0x40C7                 0x40C7
#define VAR_0x40C8                 0x40C8
#define VAR_0x40C9                 0x40C9
#define VAR_0x40CA                 0x40CA
#define VAR_0x40CB                 0x40CB
#define VAR_0x40CC                 0x40CC
#define VAR_0x40CD                 0x40CD
#define VAR_FRONTIER_BATTLE_MODE                 0x40CE
#define VAR_FRONTIER_FACILITY      0x40CF
#define VAR_0x40D0                 0x40D0
#define VAR_0x40D1                 0x40D1
#define VAR_0x40D2                 0x40D2
#define VAR_0x40D3                 0x40D3
#define VAR_0x40D4                 0x40D4
#define VAR_0x40D5                 0x40D5
#define VAR_0x40D6                 0x40D6
#define VAR_0x40D7                 0x40D7
#define VAR_0x40D8                 0x40D8
#define VAR_0x40D9                 0x40D9
#define VAR_0x40DA                 0x40DA
#define VAR_0x40DB                 0x40DB
#define VAR_0x40DC                 0x40DC
#define VAR_EVENT_PICHU_SLOT       0x40DD
#define VAR_0x40DE                 0x40DE
#define VAR_0x40DF                 0x40DF
#define VAR_0x40E0                 0x40E0
#define VAR_0x40E1                 0x40E1
#define VAR_0x40E2                 0x40E2
#define VAR_0x40E3                 0x40E3
#define VAR_0x40E4                 0x40E4
#define VAR_0x40E5                 0x40E5
#define VAR_DAILY_SLOTS            0x40E6
#define VAR_DAILY_WILDS            0x40E7
#define VAR_DAILY_BLENDER          0x40E8
#define VAR_DAILY_PLANTED_BERRIES  0x40E9
#define VAR_DAILY_PICKED_BERRIES   0x40EA
#define VAR_DAILY_ROULETTE         0x40EB
#define VAR_0x40EC                 0x40EC
#define VAR_0x40ED                 0x40ED
#define VAR_0x40EE                 0x40EE
#define VAR_0x40EF                 0x40EF
#define VAR_0x40F0                 0x40F0
#define VAR_DAILY_BP               0x40F1
#define VAR_0x40F2                 0x40F2
#define VAR_0x40F3                 0x40F3
#define VAR_0x40F4                 0x40F4
#define VAR_0x40F5                 0x40F5
#define VAR_0x40F6                 0x40F6
#define VAR_0x40F7                 0x40F7
#define VAR_0x40F8                 0x40F8
#define VAR_0x40F9                 0x40F9
#define VAR_0x40FA                 0x40FA
#define VAR_0x40FB                 0x40FB
#define VAR_0x40FC                 0x40FC
#define VAR_0x40FD                 0x40FD
#define VAR_0x40FE                 0x40FE
#define VAR_0x40FF                 0x40FF

#define SPECIAL_VARS_START 0x8000
// special vars
// They are commonly used as parameters to commands, or return values from commands.
#define VAR_0x8000                 0x8000
#define VAR_0x8001                 0x8001
#define VAR_0x8002                 0x8002
#define VAR_0x8003                 0x8003
#define VAR_0x8004                 0x8004
#define VAR_0x8005                 0x8005
#define VAR_0x8006                 0x8006
#define VAR_0x8007                 0x8007
#define VAR_0x8008                 0x8008
#define VAR_0x8009                 0x8009
#define VAR_0x800A                 0x800A
#define VAR_0x800B                 0x800B
#define VAR_FACING                 0x800C
#define VAR_RESULT                 0x800D
#define VAR_ITEM_ID                0x800E
#define VAR_LAST_TALKED            0x800F
#define VAR_CONTEST_RANK           0x8010
#define VAR_CONTEST_CATEGORY       0x8011
#define VAR_MON_BOX_ID             0x8012
#define VAR_MON_BOX_POS            0x8013
#define VAR_0x8014                 0x8014

#endif // GUARD_CONSTANTS_VARS_H
