summaryrefslogtreecommitdiff
path: root/include/constants
diff options
context:
space:
mode:
Diffstat (limited to 'include/constants')
-rw-r--r--include/constants/battle.h12
-rw-r--r--include/constants/coins.h6
-rw-r--r--include/constants/easy_chat.h17
-rw-r--r--include/constants/event_bg.h10
-rw-r--r--include/constants/event_object_movement.h323
-rw-r--r--include/constants/event_objects.h181
-rw-r--r--include/constants/facility_trainer_classes.h8
-rw-r--r--include/constants/field_effects.h16
-rw-r--r--include/constants/field_tasks.h13
-rw-r--r--include/constants/flags.h17
-rw-r--r--include/constants/global.h2
-rw-r--r--include/constants/help_system.h42
-rw-r--r--include/constants/layouts.h144
-rw-r--r--include/constants/map_groups.h40
-rw-r--r--include/constants/map_types.h22
-rw-r--r--include/constants/maps.h30
-rw-r--r--include/constants/metatile_labels.h241
-rw-r--r--include/constants/movement_commands.h121
-rw-r--r--include/constants/object_events.h186
-rw-r--r--include/constants/party_menu.h1
-rw-r--r--include/constants/region_map_sections.h (renamed from include/constants/region_map.h)6
-rw-r--r--include/constants/species.h1145
-rw-r--r--include/constants/trainer_card.h17
-rw-r--r--include/constants/trainer_tower.h46
-rw-r--r--include/constants/union_room.h45
-rw-r--r--include/constants/vars.h12
-rw-r--r--include/constants/weather.h2
27 files changed, 1484 insertions, 1221 deletions
diff --git a/include/constants/battle.h b/include/constants/battle.h
index 63be37936..e7c9d9d17 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -71,7 +71,7 @@
#define BATTLE_TYPE_x800000 0x800000
#define BATTLE_TYPE_RECORDED 0x1000000
#define BATTLE_TYPE_x2000000 0x2000000
-#define BATTLE_TYPE_TRAINER_HILL 0x4000000
+#define BATTLE_TYPE_x4000000 0x4000000
#define BATTLE_TYPE_SECRET_BASE 0x8000000
#define BATTLE_TYPE_GROUDON 0x10000000
#define BATTLE_TYPE_KYOGRE 0x20000000
@@ -298,6 +298,16 @@
#define BATTLE_TERRAIN_CAVE 7
#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
+#define BATTLE_TERRAIN_LINK 10
+#define BATTLE_TERRAIN_GYM 11
+#define BATTLE_TERRAIN_LEADER 12
+#define BATTLE_TERRAIN_INDOOR_2 13
+#define BATTLE_TERRAIN_INDOOR_1 14
+#define BATTLE_TERRAIN_LORELEI 15
+#define BATTLE_TERRAIN_BRUNO 16
+#define BATTLE_TERRAIN_AGATHA 17
+#define BATTLE_TERRAIN_LANCE 18
+#define BATTLE_TERRAIN_CHAMPION 19
// Return value for IsRunningFromBattleImpossible.
#define BATTLE_RUN_SUCCESS 0
diff --git a/include/constants/coins.h b/include/constants/coins.h
new file mode 100644
index 000000000..3ae3bb23f
--- /dev/null
+++ b/include/constants/coins.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_CONSTANTS_COINS_H
+#define GUARD_CONSTANTS_COINS_H
+
+#define MAX_COINS 9999
+
+#endif // GUARD_CONSTANTS_COINS_H
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
index 4ef90ed60..b43e93da2 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -6,22 +6,11 @@
#define EASY_CHAT_TYPE_BATTLE_WON 2
#define EASY_CHAT_TYPE_BATTLE_LOST 3
#define EASY_CHAT_TYPE_MAIL 4
-#define EASY_CHAT_TYPE_INTERVIEW 5
+#define EASY_CHAT_TYPE_MAIL_NO_CONFIRM 5
#define EASY_CHAT_TYPE_BARD_SONG 6
-#define EASY_CHAT_TYPE_FAN_CLUB 7
-#define EASY_CHAT_TYPE_UNK_8 8
+#define EASY_CHAT_TYPE_INTERVIEW 7
#define EASY_CHAT_TYPE_TRENDY_PHRASE 9
-#define EASY_CHAT_TYPE_GABBY_AND_TY 10
-#define EASY_CHAT_TYPE_CONTEST_INTERVIEW 11
-#define EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW 12
-#define EASY_CHAT_TYPE_GOOD_SAYING 13
-#define EASY_CHAT_TYPE_FAN_QUESTION 14
-#define EASY_CHAT_TYPE_QUIZ_ANSWER 15
-#define EASY_CHAT_TYPE_QUIZ_QUESTION 16
-#define EASY_CHAT_TYPE_QUIZ_SET_QUESTION 17
-#define EASY_CHAT_TYPE_QUIZ_SET_ANSWER 18
-#define EASY_CHAT_TYPE_APPRENTICE 19
-#define EASY_CHAT_TYPE_QUESTIONNAIRE 20
+#define EASY_CHAT_TYPE_QUESTIONNAIRE 14
#define EC_GROUP_POKEMON_2 0x0
#define EC_GROUP_TRAINER 0x1
diff --git a/include/constants/event_bg.h b/include/constants/event_bg.h
new file mode 100644
index 000000000..b106a74ef
--- /dev/null
+++ b/include/constants/event_bg.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_CONSTANTS_EVENT_BG_H
+#define GUARD_CONSTANTS_EVENT_BG_H
+
+#define BG_EVENT_PLAYER_FACING_ANY 0
+#define BG_EVENT_PLAYER_FACING_NORTH 1
+#define BG_EVENT_PLAYER_FACING_SOUTH 2
+#define BG_EVENT_PLAYER_FACING_EAST 3
+#define BG_EVENT_PLAYER_FACING_WEST 4
+
+#endif // GUARD_CONSTANTS_EVENT_BG_H
diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h
index bf75a47cc..d2f0a945b 100644
--- a/include/constants/event_object_movement.h
+++ b/include/constants/event_object_movement.h
@@ -88,163 +88,180 @@
#define MOVEMENT_ACTION_FACE_UP 0x1
#define MOVEMENT_ACTION_FACE_LEFT 0x2
#define MOVEMENT_ACTION_FACE_RIGHT 0x3
-#define MOVEMENT_ACTION_WALK_SLOW_DOWN 0x4
-#define MOVEMENT_ACTION_WALK_SLOW_UP 0x5
-#define MOVEMENT_ACTION_WALK_SLOW_LEFT 0x6
-#define MOVEMENT_ACTION_WALK_SLOW_RIGHT 0x7
-#define MOVEMENT_ACTION_WALK_NORMAL_DOWN 0x8
-#define MOVEMENT_ACTION_WALK_NORMAL_UP 0x9
-#define MOVEMENT_ACTION_WALK_NORMAL_LEFT 0xA
-#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT 0xB
-#define MOVEMENT_ACTION_JUMP_2_DOWN 0xC
-#define MOVEMENT_ACTION_JUMP_2_UP 0xD
-#define MOVEMENT_ACTION_JUMP_2_LEFT 0xE
-#define MOVEMENT_ACTION_JUMP_2_RIGHT 0xF
-#define MOVEMENT_ACTION_DELAY_1 0x10
-#define MOVEMENT_ACTION_DELAY_2 0x11
-#define MOVEMENT_ACTION_DELAY_4 0x12
-#define MOVEMENT_ACTION_DELAY_8 0x13
-#define MOVEMENT_ACTION_DELAY_16 0x14
-#define MOVEMENT_ACTION_WALK_FAST_DOWN 0x15
-#define MOVEMENT_ACTION_WALK_FAST_UP 0x16
-#define MOVEMENT_ACTION_WALK_FAST_LEFT 0x17
-#define MOVEMENT_ACTION_WALK_FAST_RIGHT 0x18
-#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN 0x19
-#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP 0x1A
-#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT 0x1B
-#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT 0x1C
-#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN 0x1D
-#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP 0x1E
-#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT 0x1F
-#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT 0x20
-#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN 0x21
-#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP 0x22
-#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT 0x23
-#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT 0x24
-#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN 0x25
-#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP 0x26
-#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT 0x27
-#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT 0x28
-#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN 0x29
-#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP 0x2A
-#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT 0x2B
-#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT 0x2C
-#define MOVEMENT_ACTION_WALK_FASTEST_DOWN 0x2D
-#define MOVEMENT_ACTION_WALK_FASTEST_UP 0x2E
-#define MOVEMENT_ACTION_WALK_FASTEST_LEFT 0x2F
-#define MOVEMENT_ACTION_WALK_FASTEST_RIGHT 0x30
-#define MOVEMENT_ACTION_SLIDE_DOWN 0x31
-#define MOVEMENT_ACTION_SLIDE_UP 0x32
-#define MOVEMENT_ACTION_SLIDE_LEFT 0x33
-#define MOVEMENT_ACTION_SLIDE_RIGHT 0x34
-#define MOVEMENT_ACTION_PLAYER_RUN_DOWN 0x35
-#define MOVEMENT_ACTION_PLAYER_RUN_UP 0x36
-#define MOVEMENT_ACTION_PLAYER_RUN_LEFT 0x37
-#define MOVEMENT_ACTION_PLAYER_RUN_RIGHT 0x38
-#define MOVEMENT_ACTION_START_ANIM_IN_DIRECTION 0x39
-#define MOVEMENT_ACTION_JUMP_SPECIAL_DOWN 0x3A
-#define MOVEMENT_ACTION_JUMP_SPECIAL_UP 0x3B
-#define MOVEMENT_ACTION_JUMP_SPECIAL_LEFT 0x3C
-#define MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT 0x3D
-#define MOVEMENT_ACTION_FACE_PLAYER 0x3E
-#define MOVEMENT_ACTION_FACE_AWAY_PLAYER 0x3F
-#define MOVEMENT_ACTION_LOCK_FACING_DIRECTION 0x40
-#define MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION 0x41
-#define MOVEMENT_ACTION_JUMP_DOWN 0x42
-#define MOVEMENT_ACTION_JUMP_UP 0x43
-#define MOVEMENT_ACTION_JUMP_LEFT 0x44
-#define MOVEMENT_ACTION_JUMP_RIGHT 0x45
-#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN 0x46
-#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP 0x47
-#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT 0x48
-#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT 0x49
-#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP 0x4A
-#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN 0x4B
-#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT 0x4C
-#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT 0x4D
-#define MOVEMENT_ACTION_FACE_ORIGINAL_DIRECTION 0x4E
-#define MOVEMENT_ACTION_NURSE_JOY_BOW_DOWN 0x4F
-#define MOVEMENT_ACTION_ENABLE_JUMP_LANDING_GROUND_EFFECT 0x50
-#define MOVEMENT_ACTION_DISABLE_JUMP_LANDING_GROUND_EFFECT 0x51
-#define MOVEMENT_ACTION_DISABLE_ANIMATION 0x52
-#define MOVEMENT_ACTION_RESTORE_ANIMATION 0x53
-#define MOVEMENT_ACTION_SET_INVISIBLE 0x54
-#define MOVEMENT_ACTION_SET_VISIBLE 0x55
-#define MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK 0x56
-#define MOVEMENT_ACTION_EMOTE_QUESTION_MARK 0x57
-#define MOVEMENT_ACTION_EMOTE_HEART 0x58
-#define MOVEMENT_ACTION_REVEAL_TRAINER 0x59
-#define MOVEMENT_ACTION_ROCK_SMASH_BREAK 0x5A
-#define MOVEMENT_ACTION_CUT_TREE 0x5B
-#define MOVEMENT_ACTION_SET_FIXED_PRIORITY 0x5C
-#define MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY 0x5D
-#define MOVEMENT_ACTION_INIT_AFFINE_ANIM 0x5E
-#define MOVEMENT_ACTION_CLEAR_AFFINE_ANIM 0x5F
-#define MOVEMENT_ACTION_HIDE_REFLECTION 0x60
-#define MOVEMENT_ACTION_SHOW_REFLECTION 0x61
-#define MOVEMENT_ACTION_WALK_DOWN_START_AFFINE 0x62
-#define MOVEMENT_ACTION_WALK_DOWN_AFFINE 0x63
-#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN 0x64
-#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP 0x65
-#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT 0x66
-#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT 0x67
-#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN 0x68
-#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP 0x69
-#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT 0x6A
-#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT 0x6B
-#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN 0x6C
-#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP 0x6D
-#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT 0x6E
-#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT 0x6F
-#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN 0x70
-#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP 0x71
-#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT 0x72
-#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT 0x73
-#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN 0x74
-#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP 0x75
-#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT 0x76
-#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT 0x77
-#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN 0x78
-#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP 0x79
-#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT 0x7A
-#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT 0x7B
-#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN 0x7C
-#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP 0x7D
-#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT 0x7E
-#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT 0x7F
-#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN 0x80
-#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP 0x81
-#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT 0x82
-#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT 0x83
-#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN 0x84
-#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP 0x85
-#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT 0x86
-#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT 0x87
-#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN 0x88
-#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP 0x89
-#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT 0x8A
-#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT 0x8B
-#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_LEFT 0x8C
-#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_RIGHT 0x8D
-#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_LEFT 0x8E
-#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_RIGHT 0x8F
-#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_LEFT 0x90
-#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT 0x91
-#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT 0x92
-#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT 0x93
-#define MOVEMENT_ACTION_STORE_AND_LOCK_ANIM 0x94
-#define MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM 0x95
-#define MOVEMENT_ACTION_WALK_LEFT_AFFINE 0x96
-#define MOVEMENT_ACTION_WALK_RIGHT_AFFINE 0x97
-#define MOVEMENT_ACTION_LEVITATE 0x98
-#define MOVEMENT_ACTION_STOP_LEVITATE 0x99
-#define MOVEMENT_ACTION_DESTROY_EXTRA_TASK_IF_AT_TOP 0x9A
-#define MOVEMENT_ACTION_FIGURE_8 0x9B
+#define MOVEMENT_ACTION_FACE_DOWN_FAST 0x4
+#define MOVEMENT_ACTION_FACE_UP_FAST 0x5
+#define MOVEMENT_ACTION_FACE_LEFT_FAST 0x6
+#define MOVEMENT_ACTION_FACE_RIGHT_FAST 0x7
+#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN 0x8
+#define MOVEMENT_ACTION_WALK_SLOWEST_UP 0x9
+#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT 0xA
+#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT 0xB
+#define MOVEMENT_ACTION_WALK_SLOW_DOWN 0xC
+#define MOVEMENT_ACTION_WALK_SLOW_UP 0xD
+#define MOVEMENT_ACTION_WALK_SLOW_LEFT 0xE
+#define MOVEMENT_ACTION_WALK_SLOW_RIGHT 0xF
+#define MOVEMENT_ACTION_WALK_NORMAL_DOWN 0x10
+#define MOVEMENT_ACTION_WALK_NORMAL_UP 0x11
+#define MOVEMENT_ACTION_WALK_NORMAL_LEFT 0x12
+#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT 0x13
+#define MOVEMENT_ACTION_JUMP_2_DOWN 0x14
+#define MOVEMENT_ACTION_JUMP_2_UP 0x15
+#define MOVEMENT_ACTION_JUMP_2_LEFT 0x16
+#define MOVEMENT_ACTION_JUMP_2_RIGHT 0x17
+#define MOVEMENT_ACTION_DELAY_1 0x18
+#define MOVEMENT_ACTION_DELAY_2 0x19
+#define MOVEMENT_ACTION_DELAY_4 0x1A
+#define MOVEMENT_ACTION_DELAY_8 0x1B
+#define MOVEMENT_ACTION_DELAY_16 0x1C
+#define MOVEMENT_ACTION_WALK_FAST_DOWN 0x1D
+#define MOVEMENT_ACTION_WALK_FAST_UP 0x1E
+#define MOVEMENT_ACTION_WALK_FAST_LEFT 0x1F
+#define MOVEMENT_ACTION_WALK_FAST_RIGHT 0x20
+#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN 0x21
+#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP 0x22
+#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT 0x23
+#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT 0x24
+#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN 0x25
+#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP 0x26
+#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT 0x27
+#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT 0x28
+#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN 0x29
+#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP 0x2A
+#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT 0x2B
+#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT 0x2C
+#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN 0x2D
+#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP 0x2E
+#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT 0x2F
+#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT 0x30
+#define MOVEMENT_ACTION_FACE_DOWN_SLOW 0x31
+#define MOVEMENT_ACTION_FACE_UP_SLOW 0x32
+#define MOVEMENT_ACTION_FACE_LEFT_SLOW 0x33
+#define MOVEMENT_ACTION_FACE_RIGHT_SLOW 0x34
+#define MOVEMENT_ACTION_WALK_FASTEST_DOWN 0x35
+#define MOVEMENT_ACTION_WALK_FASTEST_UP 0x36
+#define MOVEMENT_ACTION_WALK_FASTEST_LEFT 0x37
+#define MOVEMENT_ACTION_WALK_FASTEST_RIGHT 0x38
+#define MOVEMENT_ACTION_SLIDE_DOWN 0x39
+#define MOVEMENT_ACTION_SLIDE_UP 0x3A
+#define MOVEMENT_ACTION_SLIDE_LEFT 0x3B
+#define MOVEMENT_ACTION_SLIDE_RIGHT 0x3C
+#define MOVEMENT_ACTION_PLAYER_RUN_DOWN 0x3D
+#define MOVEMENT_ACTION_PLAYER_RUN_UP 0x3E
+#define MOVEMENT_ACTION_PLAYER_RUN_LEFT 0x3F
+#define MOVEMENT_ACTION_PLAYER_RUN_RIGHT 0x40
+#define MOVEMENT_ACTION_PLAYER_RUN_DOWN_SLOW 0x41
+#define MOVEMENT_ACTION_PLAYER_RUN_UP_SLOW 0x42
+#define MOVEMENT_ACTION_PLAYER_RUN_LEFT_SLOW 0x43
+#define MOVEMENT_ACTION_PLAYER_RUN_RIGHT_SLOW 0x44
+#define MOVEMENT_ACTION_START_ANIM_IN_DIRECTION 0x45
+#define MOVEMENT_ACTION_JUMP_SPECIAL_DOWN 0x46
+#define MOVEMENT_ACTION_JUMP_SPECIAL_UP 0x47
+#define MOVEMENT_ACTION_JUMP_SPECIAL_LEFT 0x48
+#define MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT 0x49
+#define MOVEMENT_ACTION_FACE_PLAYER 0x4A
+#define MOVEMENT_ACTION_FACE_AWAY_PLAYER 0x4B
+#define MOVEMENT_ACTION_LOCK_FACING_DIRECTION 0x4C
+#define MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION 0x4D
+#define MOVEMENT_ACTION_JUMP_DOWN 0x4E
+#define MOVEMENT_ACTION_JUMP_UP 0x4F
+#define MOVEMENT_ACTION_JUMP_LEFT 0x50
+#define MOVEMENT_ACTION_JUMP_RIGHT 0x51
+#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN 0x52
+#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP 0x53
+#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT 0x54
+#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT 0x55
+#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP 0x56
+#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN 0x57
+#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT 0x58
+#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT 0x59
+#define MOVEMENT_ACTION_FACE_ORIGINAL_DIRECTION 0x5A
+#define MOVEMENT_ACTION_NURSE_JOY_BOW_DOWN 0x5B
+#define MOVEMENT_ACTION_ENABLE_JUMP_LANDING_GROUND_EFFECT 0x5C
+#define MOVEMENT_ACTION_DISABLE_JUMP_LANDING_GROUND_EFFECT 0x5D
+#define MOVEMENT_ACTION_DISABLE_ANIMATION 0x5E
+#define MOVEMENT_ACTION_RESTORE_ANIMATION 0x5F
+#define MOVEMENT_ACTION_SET_INVISIBLE 0x60
+#define MOVEMENT_ACTION_SET_VISIBLE 0x61
+#define MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK 0x62
+#define MOVEMENT_ACTION_EMOTE_QUESTION_MARK 0x63
+#define MOVEMENT_ACTION_EMOTE_X 0x64
+#define MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK 0x65
+#define MOVEMENT_ACTION_EMOTE_SMILE 0x66
+#define MOVEMENT_ACTION_REVEAL_TRAINER 0x67
+#define MOVEMENT_ACTION_ROCK_SMASH_BREAK 0x68
+#define MOVEMENT_ACTION_CUT_TREE 0x69
+#define MOVEMENT_ACTION_SET_FIXED_PRIORITY 0x6A
+#define MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY 0x6B
+#define MOVEMENT_ACTION_INIT_AFFINE_ANIM 0x6C
+#define MOVEMENT_ACTION_CLEAR_AFFINE_ANIM 0x6D
+
+// These still exist in FRLG for some reason. They're not used by anything obvious.
+#define MOVEMENT_ACTION_WALK_DOWN_START_AFFINE 0x6E
+#define MOVEMENT_ACTION_WALK_DOWN_AFFINE 0x6F
+#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN 0x70
+#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP 0x71
+#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT 0x72
+#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT 0x73
+#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN 0x74
+#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP 0x75
+#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT 0x76
+#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT 0x77
+#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN 0x78
+#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP 0x79
+#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT 0x7A
+#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT 0x7B
+#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN 0x7C
+#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP 0x7D
+#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT 0x7E
+#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT 0x7F
+#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN 0x80
+#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP 0x81
+#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT 0x82
+#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT 0x83
+#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN 0x84
+#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP 0x85
+#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT 0x86
+#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT 0x87
+#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN 0x88
+#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP 0x89
+#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT 0x8A
+#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT 0x8B
+#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN 0x8C
+#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP 0x8D
+#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT 0x8E
+#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT 0x8F
+#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN 0x90
+#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP 0x91
+#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT 0x92
+#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT 0x93
+#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN 0x94
+#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP 0x95
+#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT 0x96
+#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT 0x97
+
+// 98-A3 are unknown
+#define MOVEMENT_ACTION_0x98 0x98
+#define MOVEMENT_ACTION_0x99 0x99
+#define MOVEMENT_ACTION_0x9A 0x9A
+#define MOVEMENT_ACTION_0x9B 0x9B
+#define MOVEMENT_ACTION_0x9C 0x9C
+#define MOVEMENT_ACTION_0x9D 0x9D
+#define MOVEMENT_ACTION_0x9E 0x9E
+#define MOVEMENT_ACTION_0x9F 0x9F
+#define MOVEMENT_ACTION_0xA0 0xA0
+#define MOVEMENT_ACTION_0xA1 0xA1
+#define MOVEMENT_ACTION_0xA2 0xA2
+#define MOVEMENT_ACTION_0xA3 0xA3
-// These two are verified correct in FRLG
#define MOVEMENT_ACTION_FLY_UP 0xA4
#define MOVEMENT_ACTION_FLY_DOWN 0xA5
+// Duplicates of JUMP_SPECIAL?
+#define MOVEMENT_ACTION_0xA6 0xA6
+#define MOVEMENT_ACTION_0xA7 0xA7
+#define MOVEMENT_ACTION_0xA8 0xA8
+#define MOVEMENT_ACTION_0xA9 0xA9
+
#define MOVEMENT_ACTION_STEP_END 0xFE
#endif // GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h
index 3e48cf029..2d51cd74d 100644
--- a/include/constants/event_objects.h
+++ b/include/constants/event_objects.h
@@ -1,12 +1,193 @@
#ifndef GUARD_CONSTANTS_EVENT_OBJECTS_H
#define GUARD_CONSTANTS_EVENT_OBJECTS_H
+#define OBJ_EVENT_GFX_RED_NORMAL 0
+#define OBJ_EVENT_GFX_RED_BIKE 1
+#define OBJ_EVENT_GFX_RED_SURF 2
+#define OBJ_EVENT_GFX_RED_ITEM 3
+#define OBJ_EVENT_GFX_RED_FISH 4
+#define OBJ_EVENT_GFX_RED_ITEM_COPY 5
+#define OBJ_EVENT_GFX_RED_VS_SEEKER 6
+#define OBJ_EVENT_GFX_GREEN_NORMAL 7
+#define OBJ_EVENT_GFX_GREEN_BIKE 8
+#define OBJ_EVENT_GFX_GREEN_SURF 9
+#define OBJ_EVENT_GFX_GREEN_ITEM 10
+#define OBJ_EVENT_GFX_GREEN_FISH 11
+#define OBJ_EVENT_GFX_GREEN_ITEM_COPY 12
+#define OBJ_EVENT_GFX_GREEN_VS_SEEKER 13
+#define OBJ_EVENT_GFX_RS_BRENDAN 14
+#define OBJ_EVENT_GFX_RS_MAY 15
+#define OBJ_EVENT_GFX_LITTLE_BOY 16
+#define OBJ_EVENT_GFX_LITTLE_GIRL 17
+#define OBJ_EVENT_GFX_YOUNGSTER 18
+#define OBJ_EVENT_GFX_BOY 19
+#define OBJ_EVENT_GFX_BUG_CATCHER 20
+#define OBJ_EVENT_GFX_SITTING_BOY 21
+#define OBJ_EVENT_GFX_LASS 22
+#define OBJ_EVENT_GFX_WOMAN_1 23
+#define OBJ_EVENT_GFX_BATTLE_GIRL 24
+#define OBJ_EVENT_GFX_MAN 25
+#define OBJ_EVENT_GFX_ROCKER 26
+#define OBJ_EVENT_GFX_FAT_MAN 27
+#define OBJ_EVENT_GFX_WOMAN_2 28
+#define OBJ_EVENT_GFX_BEAUTY 29
+#define OBJ_EVENT_GFX_BALDING_MAN 30
+#define OBJ_EVENT_GFX_WOMAN_3 31
+#define OBJ_EVENT_GFX_OLD_MAN_1 32
+#define OBJ_EVENT_GFX_OLD_MAN_2 33
+#define OBJ_EVENT_GFX_OLD_MAN_LYING_DOWN 34
+#define OBJ_EVENT_GFX_OLD_WOMAN 35
+#define OBJ_EVENT_GFX_TUBER_M_1 36
+#define OBJ_EVENT_GFX_TUBER_F 37
+#define OBJ_EVENT_GFX_TUBER_M_2 38
+#define OBJ_EVENT_GFX_CAMPER 39
+#define OBJ_EVENT_GFX_PICNICKER 40
+#define OBJ_EVENT_GFX_COOLTRAINER_M 41
+#define OBJ_EVENT_GFX_COOLTRAINER_F 42
+#define OBJ_EVENT_GFX_SWIMMER_M_WATER 43
+#define OBJ_EVENT_GFX_SWIMMER_F_WATER 44
+#define OBJ_EVENT_GFX_SWIMMER_M_LAND 45
+#define OBJ_EVENT_GFX_SWIMMER_F_LAND 46
+#define OBJ_EVENT_GFX_WORKER_M 47
+#define OBJ_EVENT_GFX_WORKER_F 48
+#define OBJ_EVENT_GFX_ROCKET_M 49
+#define OBJ_EVENT_GFX_ROCKET_F 50
+#define OBJ_EVENT_GFX_GBA_KID 51
+#define OBJ_EVENT_GFX_SUPER_NERD 52
+#define OBJ_EVENT_GFX_BIKER 53
+#define OBJ_EVENT_GFX_BLACKBELT 54
+#define OBJ_EVENT_GFX_SCIENTIST 55
+#define OBJ_EVENT_GFX_HIKER 56
+#define OBJ_EVENT_GFX_FISHER 57
+#define OBJ_EVENT_GFX_CHANNELER 58
+#define OBJ_EVENT_GFX_CHEF 59
+#define OBJ_EVENT_GFX_POLICEMAN 60
+#define OBJ_EVENT_GFX_GENTLEMAN 61
+#define OBJ_EVENT_GFX_SAILOR 62
+#define OBJ_EVENT_GFX_CAPTAIN 63
+#define OBJ_EVENT_GFX_NURSE 64
+#define OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST 65
+#define OBJ_EVENT_GFX_UNION_ROOM_RECEPTIONIST 66
+#define OBJ_EVENT_GFX_UNUSED_MALE_RECEPTIONIST 67
+#define OBJ_EVENT_GFX_CLERK 68
+#define OBJ_EVENT_GFX_MG_DELIVERYMAN 69
+#define OBJ_EVENT_GFX_TRAINER_TOWER_DUDE 70
+#define OBJ_EVENT_GFX_PROF_OAK 71
+#define OBJ_EVENT_GFX_BLUE 72
+#define OBJ_EVENT_GFX_BILL 73
+#define OBJ_EVENT_GFX_LANCE 74
+#define OBJ_EVENT_GFX_AGATHA 75
+#define OBJ_EVENT_GFX_DAISY 76
+#define OBJ_EVENT_GFX_LORELEI 77
+#define OBJ_EVENT_GFX_MR_FUJI 78
+#define OBJ_EVENT_GFX_BRUNO 79
+#define OBJ_EVENT_GFX_BROCK 80
+#define OBJ_EVENT_GFX_MISTY 81
+#define OBJ_EVENT_GFX_LT_SURGE 82
+#define OBJ_EVENT_GFX_ERIKA 83
+#define OBJ_EVENT_GFX_KOGA 84
+#define OBJ_EVENT_GFX_SABRINA 85
+#define OBJ_EVENT_GFX_BLAINE 86
+#define OBJ_EVENT_GFX_GIOVANNI 87
+#define OBJ_EVENT_GFX_MOM 88
+#define OBJ_EVENT_GFX_CELIO 89
+#define OBJ_EVENT_GFX_TEACHY_TV_HOST 90
+#define OBJ_EVENT_GFX_GYM_GUY 91
+#define OBJ_EVENT_GFX_ITEM_BALL 92
+#define OBJ_EVENT_GFX_TOWN_MAP 93
+#define OBJ_EVENT_GFX_POKEDEX 94
+#define OBJ_EVENT_GFX_CUT_TREE 95
+#define OBJ_EVENT_GFX_ROCK_SMASH_ROCK 96
+#define OBJ_EVENT_GFX_STRENGTH_BOULDER 97
+#define OBJ_EVENT_GFX_FOSSIL 98
+#define OBJ_EVENT_GFX_RUBY 99
+#define OBJ_EVENT_GFX_SAPPHIRE 100
+#define OBJ_EVENT_GFX_OLD_AMBER 101
+#define OBJ_EVENT_GFX_GYM_SIGN 102
+#define OBJ_EVENT_GFX_SIGN 103
+#define OBJ_EVENT_GFX_TRAINER_TIPS 104
+#define OBJ_EVENT_GFX_CLIPBOARD 105
+#define OBJ_EVENT_GFX_METEORITE 106
+#define OBJ_EVENT_GFX_LAPRAS_DOLL 107
+#define OBJ_EVENT_GFX_SEAGALLOP 108
+#define OBJ_EVENT_GFX_SNORLAX 109
+#define OBJ_EVENT_GFX_SPEAROW 110
+#define OBJ_EVENT_GFX_CUBONE 111
+#define OBJ_EVENT_GFX_POLIWRATH 112
+#define OBJ_EVENT_GFX_CLEFAIRY 113
+#define OBJ_EVENT_GFX_PIDGEOT 114
+#define OBJ_EVENT_GFX_JIGGLYPUFF 115
+#define OBJ_EVENT_GFX_PIDGEY 116
+#define OBJ_EVENT_GFX_CHANSEY 117
+#define OBJ_EVENT_GFX_OMANYTE 118
+#define OBJ_EVENT_GFX_KANGASKHAN 119
+#define OBJ_EVENT_GFX_PIKACHU 120
+#define OBJ_EVENT_GFX_PSYDUCK 121
+#define OBJ_EVENT_GFX_NIDORAN_F 122
+#define OBJ_EVENT_GFX_NIDORAN_M 123
+#define OBJ_EVENT_GFX_NIDORINO 124
+#define OBJ_EVENT_GFX_MEOWTH 125
+#define OBJ_EVENT_GFX_SEEL 126
+#define OBJ_EVENT_GFX_VOLTORB 127
+#define OBJ_EVENT_GFX_SLOWPOKE 128
+#define OBJ_EVENT_GFX_SLOWBRO 129
+#define OBJ_EVENT_GFX_MACHOP 130
+#define OBJ_EVENT_GFX_WIGGLYTUFF 131
+#define OBJ_EVENT_GFX_DODUO 132
+#define OBJ_EVENT_GFX_FEAROW 133
+#define OBJ_EVENT_GFX_MACHOKE 134
+#define OBJ_EVENT_GFX_LAPRAS 135
+#define OBJ_EVENT_GFX_ZAPDOS 136
+#define OBJ_EVENT_GFX_MOLTRES 137
+#define OBJ_EVENT_GFX_ARTICUNO 138
+#define OBJ_EVENT_GFX_MEWTWO 139
+#define OBJ_EVENT_GFX_MEW 140
+#define OBJ_EVENT_GFX_ENTEI 141
+#define OBJ_EVENT_GFX_SUICUNE 142
+#define OBJ_EVENT_GFX_RAIKOU 143
+#define OBJ_EVENT_GFX_LUGIA 144
+#define OBJ_EVENT_GFX_HO_OH 145
+#define OBJ_EVENT_GFX_CELEBI 146
+#define OBJ_EVENT_GFX_KABUTO 147
+#define OBJ_EVENT_GFX_DEOXYS_D 148
+#define OBJ_EVENT_GFX_DEOXYS_A 149
+#define OBJ_EVENT_GFX_DEOXYS_N 150
+#define OBJ_EVENT_GFX_SS_ANNE 151
+
#define NUM_OBJ_EVENT_GFX 239
// 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 OBJ_EVENT_GFX_VARS (NUM_OBJ_EVENT_GFX + 1)
+#define OBJ_EVENT_GFX_VAR_0 (OBJ_EVENT_GFX_VARS + 0x0) // 240
+#define OBJ_EVENT_GFX_VAR_1 (OBJ_EVENT_GFX_VARS + 0x1)
+#define OBJ_EVENT_GFX_VAR_2 (OBJ_EVENT_GFX_VARS + 0x2)
+#define OBJ_EVENT_GFX_VAR_3 (OBJ_EVENT_GFX_VARS + 0x3)
+#define OBJ_EVENT_GFX_VAR_4 (OBJ_EVENT_GFX_VARS + 0x4)
+#define OBJ_EVENT_GFX_VAR_5 (OBJ_EVENT_GFX_VARS + 0x5)
+#define OBJ_EVENT_GFX_VAR_6 (OBJ_EVENT_GFX_VARS + 0x6)
+#define OBJ_EVENT_GFX_VAR_7 (OBJ_EVENT_GFX_VARS + 0x7)
+#define OBJ_EVENT_GFX_VAR_8 (OBJ_EVENT_GFX_VARS + 0x8)
+#define OBJ_EVENT_GFX_VAR_9 (OBJ_EVENT_GFX_VARS + 0x9)
+#define OBJ_EVENT_GFX_VAR_A (OBJ_EVENT_GFX_VARS + 0xA)
+#define OBJ_EVENT_GFX_VAR_B (OBJ_EVENT_GFX_VARS + 0xB)
+#define OBJ_EVENT_GFX_VAR_C (OBJ_EVENT_GFX_VARS + 0xC)
+#define OBJ_EVENT_GFX_VAR_D (OBJ_EVENT_GFX_VARS + 0xD)
+#define OBJ_EVENT_GFX_VAR_E (OBJ_EVENT_GFX_VARS + 0xE)
+#define OBJ_EVENT_GFX_VAR_F (OBJ_EVENT_GFX_VARS + 0xF) // 255
+
+#define SHADOW_SIZE_S 0
+#define SHADOW_SIZE_M 1
+#define SHADOW_SIZE_L 2
+#define SHADOW_SIZE_XL 3
+
+#define F_INANIMATE (1 << 6)
+#define F_DISABLE_REFLECTION_PALETTE_LOAD (1 << 7)
+
+#define TRACKS_NONE 0
+#define TRACKS_FOOT 1
+#define TRACKS_BIKE_TIRE 2
#define OBJ_EVENT_ID_PLAYER 0xFF
#define OBJ_EVENT_ID_CAMERA 0x7F
diff --git a/include/constants/facility_trainer_classes.h b/include/constants/facility_trainer_classes.h
index 10500ff35..fe94608dd 100644
--- a/include/constants/facility_trainer_classes.h
+++ b/include/constants/facility_trainer_classes.h
@@ -133,10 +133,10 @@
#define FACILITY_CLASS_CRUSH_KIN 0x81
#define FACILITY_CLASS_SIS_AND_BRO_2 0x82
#define FACILITY_CLASS_PKMN_PROF 0x83
-#define FACILITY_CLASS_PLAYER 0x84
-#define FACILITY_CLASS_PLAYER_2 0x85
-#define FACILITY_CLASS_PLAYER_3 0x86
-#define FACILITY_CLASS_PLAYER_4 0x87
+#define FACILITY_CLASS_BRENDAN 0x84
+#define FACILITY_CLASS_MAY 0x85
+#define FACILITY_CLASS_RED 0x86
+#define FACILITY_CLASS_LEAF 0x87
#define FACILITY_CLASS_TEAM_ROCKET_2 0x88
#define FACILITY_CLASS_PSYCHIC_4 0x89
#define FACILITY_CLASS_CRUSH_GIRL 0x8A
diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h
index e8246ccc5..a4ecd3e21 100644
--- a/include/constants/field_effects.h
+++ b/include/constants/field_effects.h
@@ -1,7 +1,7 @@
#ifndef GUARD_CONSTANTS_FIELD_EFFECTS_H
#define GUARD_CONSTANTS_FIELD_EFFECTS_H
-
-#define FLDEFF_EXCLAMATION_MARK_ICON 0
+
+#define FLDEFF_EXCLAMATION_MARK_ICON 0
#define FLDEFF_USE_CUT_ON_GRASS 1
#define FLDEFF_USE_CUT_ON_TREE 2
#define FLDEFF_SHADOW 3
@@ -47,7 +47,7 @@
#define FLDEFF_USE_WATERFALL 43
#define FLDEFF_USE_DIVE 44
#define FLDEFF_POKEBALL 45
-#define FLDEFF_HEART_ICON 46
+#define FLDEFF_X_ICON 46
#define FLDEFF_NOP_47 47
#define FLDEFF_NOP_48 48
#define FLDEFF_POP_OUT_OF_ASH 49
@@ -65,11 +65,11 @@
#define FLDEFF_PCTURN_ON 61
#define FLDEFF_HALL_OF_FAME_RECORD 62
#define FLDEFF_USE_TELEPORT 63
-#define FLDEFF_UNK_40 64
-#define FLDEFF_UNK_41 65 // TODO: related to vs_seeker
-#define FLDEFF_UNK_42 66 // TODO: related to trainer see
-#define FLDEFF_UNK_43 67 // TODO: related to deoxys
-#define FLDEFF_UNK_44 68 // TODO: related to trainer see
+#define FLDEFF_SMILEY_FACE_ICON 64
+#define FLDEFF_USE_VS_SEEKER 65
+#define FLDEFF_DOUBLE_EXCL_MARK_ICON 66
+#define FLDEFF_MOVE_DEOXYS_ROCK 67
+#define FLDEFF_UNK_44 68 // TODO: related to ???
#define FLDEFF_UNK_45 69 // TODO: related to fame checker photos
#endif // GUARD_CONSTANTS_FIELD_EFFECTS_H
diff --git a/include/constants/field_tasks.h b/include/constants/field_tasks.h
new file mode 100644
index 000000000..31edb6ffe
--- /dev/null
+++ b/include/constants/field_tasks.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_CONSTANTS_FIELD_TASKS_H
+#define GUARD_CONSTANTS_FIELD_TASKS_H
+
+#define STEP_CB_DUMMY 0
+#define STEP_CB_ASH 1 // Unused
+#define STEP_CB_FORTREE_BRIDGE 2 // Unused, dummied
+#define STEP_CB_PACIFIDLOG_BRIDGE 3 // Unused, dummied
+#define STEP_CB_ICE 4
+#define STEP_CB_TRUCK 5 // Unused, dummied
+#define STEP_CB_SECRET_BASE 6 // Unused, dummied
+#define STEP_CB_CRACKED_FLOOR 7 // Unused
+
+#endif // GUARD_CONSTANTS_FIELD_TASKS_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 26ffa8a7c..85d704680 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -670,7 +670,7 @@
#define FLAG_SILPH_11F_DOOR 0x28D
#define FLAG_0x28E 0x28E
#define FLAG_0x28F 0x28F
-#define FLAG_MET_STICKER_LADY 0x290
+#define FLAG_MET_STICKER_MAN 0x290
#define FLAG_PALLET_LADY_NOT_BLOCKING_SIGN 0x291
#define FLAG_GOT_VS_SEEKER 0x292
#define FLAG_GOT_TM19_FROM_ERIKA 0x293
@@ -766,8 +766,8 @@
#define FLAG_REVIVED_HELIX 0x2ED
#define FLAG_REVIVED_AMBER 0x2EE
#define FLAG_GOT_HM06 0x2EF
-#define FLAG_SHOWED_MYSTICTICKET_TO_CAPTAIN 0x2F0
-#define FLAG_SHOWED_AURORATICKET_TO_CAPTAIN 0x2F1
+#define FLAG_SHOWN_MYSTIC_TICKET 0x2F0
+#define FLAG_SHOWN_AURORA_TICKET 0x2F1
#define FLAG_FOUGHT_LUGIA 0x2F2
#define FLAG_FOUGHT_HO_OH 0x2F3
#define FLAG_OAK_SAW_DEX_COMPLETION 0x2F4
@@ -1046,7 +1046,7 @@
#define HIDDEN_ITEM_SAFARI_ZONE_WEST_REVIVE 23
#define HIDDEN_ITEM_SILPH_CO_5F_ELIXIR 24
#define HIDDEN_ITEM_SILPH_CO_9F_MAX_POTION 25
-#define HIDDEN_ITEM_SAFFRON_CITY_HOUSE1_2F_NUGGET 26
+#define HIDDEN_ITEM_SAFFRON_CITY_COPYCATS_HOUSE_2F_NUGGET 26
#define HIDDEN_ITEM_POWER_PLANT_MAX_ELIXIR 27
#define HIDDEN_ITEM_POWER_PLANT_THUNDER_STONE 28
#define HIDDEN_ITEM_SEAFOAM_ISLANDS_B3F_NUGGET 29
@@ -1327,6 +1327,7 @@
#define FLAG_0x808 (SYS_FLAGS + 0x8)
#define PERMA_SYS_FLAGS_START 0x820
+
#define FLAG_BADGE01_GET (SYS_FLAGS + 0x20)
#define FLAG_BADGE02_GET (SYS_FLAGS + 0x21)
#define FLAG_BADGE03_GET (SYS_FLAGS + 0x22)
@@ -1335,6 +1336,8 @@
#define FLAG_BADGE06_GET (SYS_FLAGS + 0x25)
#define FLAG_BADGE07_GET (SYS_FLAGS + 0x26)
#define FLAG_BADGE08_GET (SYS_FLAGS + 0x27)
+#define NUM_BADGES (1 + FLAG_BADGE08_GET - FLAG_BADGE01_GET)
+
#define FLAG_SYS_POKEMON_GET (SYS_FLAGS + 0x28)
#define FLAG_SYS_POKEDEX_GET (SYS_FLAGS + 0x29)
#define FLAG_0x82A (SYS_FLAGS + 0x2A)
@@ -1369,8 +1372,8 @@
#define FLAG_SYS_GOT_BERRY_POUCH (SYS_FLAGS + 0x47)
#define FLAG_SYS_DEOXYS_AWAKENED (SYS_FLAGS + 0x48)
#define FLAG_SYS_UNLOCKED_TANOBY_RUINS (SYS_FLAGS + 0x49)
-#define FLAG_SYS_GOT_MYSTIC_TICKET (SYS_FLAGS + 0x4A)
-#define FLAG_SYS_GOT_AURORA_TICKET (SYS_FLAGS + 0x4B)
+#define FLAG_ENABLE_SHIP_NAVEL_ROCK (SYS_FLAGS + 0x4A)
+#define FLAG_ENABLE_SHIP_BIRTH_ISLAND (SYS_FLAGS + 0x4B)
// World Map Flags
#define FLAG_WORLD_MAP_PALLET_TOWN (SYS_FLAGS + 0x90)
@@ -1415,7 +1418,7 @@
#define FLAG_WORLD_MAP_THREE_ISLAND_BERRY_FOREST (SYS_FLAGS + 0xB7)
#define FLAG_WORLD_MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE (SYS_FLAGS + 0xB8)
#define FLAG_WORLD_MAP_FIVE_ISLAND_ROCKET_WAREHOUSE (SYS_FLAGS + 0xB9)
-#define FLAG_WORLD_MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY (SYS_FLAGS + 0xBA)
+#define FLAG_WORLD_MAP_TRAINER_TOWER_LOBBY (SYS_FLAGS + 0xBA)
#define FLAG_WORLD_MAP_SIX_ISLAND_DOTTED_HOLE_1F (SYS_FLAGS + 0xBB)
#define FLAG_WORLD_MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE (SYS_FLAGS + 0xBC)
#define FLAG_WORLD_MAP_SIX_ISLAND_PATTERN_BUSH (SYS_FLAGS + 0xBD)
diff --git a/include/constants/global.h b/include/constants/global.h
index e398cc5be..28fe660e3 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -35,6 +35,8 @@
#define QUEST_LOG_SCENE_COUNT 4
+#define NUM_TOWER_CHALLENGE_TYPES 4
+
#define MALE 0
#define FEMALE 1
#define GENDER_COUNT 2
diff --git a/include/constants/help_system.h b/include/constants/help_system.h
new file mode 100644
index 000000000..628703d3e
--- /dev/null
+++ b/include/constants/help_system.h
@@ -0,0 +1,42 @@
+#ifndef GUARD_CONSTANTS_HELP_SYSTEM_H
+#define GUARD_CONSTANTS_HELP_SYSTEM_H
+
+#define HELPCONTEXT_NONE 0
+#define HELPCONTEXT_TITLE_SCREEN 1
+#define HELPCONTEXT_NEW_GAME 2
+#define HELPCONTEXT_NAMING_SCREEN 3
+#define HELPCONTEXT_POKEDEX 4
+#define HELPCONTEXT_PARTY_MENU 5
+#define HELPCONTEXT_POKEMON_INFO 6
+#define HELPCONTEXT_POKEMON_SKILLS 7
+#define HELPCONTEXT_POKEMON_MOVES 8
+#define HELPCONTEXT_BAG 9
+#define HELPCONTEXT_TRAINER_CARD_FRONT 10
+#define HELPCONTEXT_TRAINER_CARD_BACK 11
+#define HELPCONTEXT_SAVE 12
+#define HELPCONTEXT_OPTIONS 13
+#define HELPCONTEXT_PLAYERS_HOUSE 14
+#define HELPCONTEXT_OAKS_LAB 15
+#define HELPCONTEXT_POKECENTER 16
+#define HELPCONTEXT_MART 17
+#define HELPCONTEXT_GYM 18
+#define HELPCONTEXT_INDOORS 19
+#define HELPCONTEXT_OVERWORLD 20
+#define HELPCONTEXT_DUNGEON 21 // Caves and Forests
+#define HELPCONTEXT_SURFING 22
+#define HELPCONTEXT_WILD_BATTLE 23
+#define HELPCONTEXT_TRAINER_BATTLE_SINGLE 24
+#define HELPCONTEXT_TRAINER_BATTLE_DOUBLE 25
+#define HELPCONTEXT_SAFARI_BATTLE 26
+#define HELPCONTEXT_PC 27
+#define HELPCONTEXT_BILLS_PC 28
+#define HELPCONTEXT_PLAYERS_PC_ITEMS 29
+#define HELPCONTEXT_PLAYERS_PC_MAILBOX 30
+#define HELPCONTEXT_PC_MISC 31 // Prof Oaks PC and the HoF PC
+#define HELPCONTEXT_BEDROOM_PC 32
+#define HELPCONTEXT_BEDROOM_PC_ITEMS 33
+#define HELPCONTEXT_BEDROOM_PC_MAILBOX 34
+#define HELPCONTEXT_UNUSED 35
+#define HELPCONTEXT_COUNT 36
+
+#endif //GUARD_CONSTANTS_HELP_SYSTEM_H
diff --git a/include/constants/layouts.h b/include/constants/layouts.h
index 657d531e8..431ca198a 100644
--- a/include/constants/layouts.h
+++ b/include/constants/layouts.h
@@ -4,7 +4,7 @@
#define LAYOUT_PALLET_TOWN_PLAYERS_HOUSE_1F 1
#define LAYOUT_PALLET_TOWN_PLAYERS_HOUSE_2F 2
#define LAYOUT_PALLET_TOWN_GARYS_HOUSE 3
-#define LAYOUT_UNUSED_LAYOUT_82D54D8 4
+#define LAYOUT_LITTLEROOT_TOWN_MAYS_HOUSE_2F 4
#define LAYOUT_PALLET_TOWN_PROFESSOR_OAKS_LAB 5
#define LAYOUT_HOUSE1 6
#define LAYOUT_HOUSE2 7
@@ -14,53 +14,53 @@
#define LAYOUT_HOUSE3 11
#define LAYOUT_CERULEAN_CITY_GYM 12
#define LAYOUT_HOUSE4 13
-#define LAYOUT_UNUSED_LAYOUT_82D6144 14
+#define LAYOUT_LAVARIDGE_TOWN_HERB_SHOP 14
#define LAYOUT_CELADON_CITY_GYM 15
-#define LAYOUT_UNUSED_LAYOUT_82D6490 16
+#define LAYOUT_RS_POKEMON_CENTER_1F 16
#define LAYOUT_FIVE_ISLAND_RESORT_GORGEOUS_HOUSE 17
-#define LAYOUT_UNUSED_LAYOUT_82D6654 18
-#define LAYOUT_UNUSED_LAYOUT_82D672C 19
+#define LAYOUT_PACIFIDLOG_TOWN_HOUSE1 18
+#define LAYOUT_PACIFIDLOG_TOWN_HOUSE2 19
#define LAYOUT_FUCHSIA_CITY_GYM 20
#define LAYOUT_HOUSE5 21
-#define LAYOUT_UNUSED_LAYOUT_82D6C34 24
+#define LAYOUT_UNUSED1 24
#define LAYOUT_VERMILION_CITY_GYM 25
#define LAYOUT_CERULEAN_CITY_BIKE_SHOP 26
#define LAYOUT_CELADON_CITY_GAME_CORNER 27
#define LAYOUT_PEWTER_CITY_GYM 28
#define LAYOUT_FOUR_ISLAND_LORELEIS_HOUSE 30
#define LAYOUT_THREE_ISLAND_HOUSE1 31
-#define LAYOUT_UNUSED_LAYOUT_82D75F0 32
-#define LAYOUT_UNUSED_LAYOUT_82D7674 33
+#define LAYOUT_RUSTBORO_CITY_CUTTERS_HOUSE 32
+#define LAYOUT_FORTREE_CITY_HOUSE1 33
#define LAYOUT_SAFFRON_CITY_GYM 34
-#define LAYOUT_UNUSED_LAYOUT_82D7CC8 35
+#define LAYOUT_FORTREE_CITY_HOUSE2 35
#define LAYOUT_CINNABAR_ISLAND_GYM 36
#define LAYOUT_VIRIDIAN_CITY_GYM 37
-#define LAYOUT_UNUSED_LAYOUT_82D88C8 46
+#define LAYOUT_RS_SAFARI_ZONE_ENTRANCE 46
#define LAYOUT_BATTLE_COLOSSEUM_2P 47
#define LAYOUT_TRADE_CENTER 48
#define LAYOUT_RECORD_CENTER 49
#define LAYOUT_BATTLE_COLOSSEUM_4P 50
#define LAYOUT_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE 51
-#define LAYOUT_UNUSED_LAYOUT_82D9B24 52
-#define LAYOUT_UNUSED_LAYOUT_82DA7C8 53
-#define LAYOUT_UNUSED_LAYOUT_82DB46C 54
-#define LAYOUT_UNUSED_LAYOUT_82DB4F0 55
-#define LAYOUT_UNUSED_LAYOUT_82DBBE0 57
-#define LAYOUT_UNUSED_LAYOUT_82DBDD8 62
-#define LAYOUT_UNUSED_LAYOUT_82DBFB8 63
-#define LAYOUT_UNUSED_LAYOUT_82DC4EC 64
-#define LAYOUT_UNUSED_LAYOUT_82DC60C 65
-#define LAYOUT_UNUSED_LAYOUT_82DC72C 66
-#define LAYOUT_UNUSED_LAYOUT_82DC84C 67
-#define LAYOUT_UNUSED_LAYOUT_82DCA70 68
-#define LAYOUT_UNUSED_LAYOUT_82DCB44 69
-#define LAYOUT_UNUSED_LAYOUT_82DCC40 70
-#define LAYOUT_UNUSED_LAYOUT_82DCCD4 71
-#define LAYOUT_UNUSED_LAYOUT_82DCD68 72
-#define LAYOUT_UNUSED_LAYOUT_82DCDFC 73
-#define LAYOUT_UNUSED_LAYOUT_82DCF00 74
-#define LAYOUT_UNUSED_LAYOUT_82DD004 75
-#define LAYOUT_UNUSED_LAYOUT_82DD0DC 77
+#define LAYOUT_RS_SAFARI_ZONE_NORTHEAST 52
+#define LAYOUT_RS_SAFARI_ZONE_SOUTHWEST 53
+#define LAYOUT_RS_SAFARI_ZONE_SOUTHEAST 54
+#define LAYOUT_FORTREE_CITY_DECORATION_SHOP 55
+#define LAYOUT_RS_BATTLE_TOWER 57
+#define LAYOUT_SS_TIDAL_CORRIDOR 62
+#define LAYOUT_SS_TIDAL_LOWER_DECK 63
+#define LAYOUT_SS_TIDAL_ROOMS 64
+#define LAYOUT_RUSTBORO_CITY_FLAT2_1F 65
+#define LAYOUT_RUSTBORO_CITY_FLAT2_2F 66
+#define LAYOUT_RUSTBORO_CITY_FLAT2_3F 67
+#define LAYOUT_EVER_GRANDE_CITY_HALL_OF_FAME 68
+#define LAYOUT_MOSSDEEP_CITY_EREADER_TRAINER_HOUSE_1F 69
+#define LAYOUT_MOSSDEEP_CITY_EREADER_TRAINER_HOUSE_2F 70
+#define LAYOUT_SOOTOPOLIS_CITY_HOUSE1 71
+#define LAYOUT_SOOTOPOLIS_CITY_HOUSE2 72
+#define LAYOUT_SOOTOPOLIS_CITY_HOUSE3 73
+#define LAYOUT_RUSTBORO_CITY_FLAT1_1F 74
+#define LAYOUT_RUSTBORO_CITY_FLAT1_2F 75
+#define LAYOUT_RS_SAFARI_ZONE_REST_HOUSE 77
#define LAYOUT_PALLET_TOWN 78
#define LAYOUT_VIRIDIAN_CITY 79
#define LAYOUT_PEWTER_CITY 80
@@ -71,7 +71,7 @@
#define LAYOUT_FUCHSIA_CITY 85
#define LAYOUT_CINNABAR_ISLAND 86
#define LAYOUT_INDIGO_PLATEAU_EXTERIOR 87
-#define LAYOUT_SAFFRON_CITY_CLASSIC 88
+#define LAYOUT_SAFFRON_CITY_CONNECTION 88
#define LAYOUT_ROUTE1 89
#define LAYOUT_ROUTE2 90
#define LAYOUT_ROUTE3 91
@@ -208,8 +208,8 @@
#define LAYOUT_ROUTE16_NORTH_ENTRANCE_1F 223
#define LAYOUT_ENTRANCE_1F 224
#define LAYOUT_ROCKET_HIDEOUT_ELEVATOR 225
-#define LAYOUT_SAFFRON_CITY_HOUSE1_1F 226
-#define LAYOUT_SAFFRON_CITY_HOUSE1_2F 227
+#define LAYOUT_SAFFRON_CITY_COPYCATS_HOUSE_1F 226
+#define LAYOUT_SAFFRON_CITY_COPYCATS_HOUSE_2F 227
#define LAYOUT_SAFFRON_CITY_DOJO 228
#define LAYOUT_SILPH_CO_ELEVATOR 229
#define LAYOUT_ONE_ISLAND 230
@@ -224,10 +224,10 @@
#define LAYOUT_TWO_ISLAND_CAPE_BRINK 239
#define LAYOUT_THREE_ISLAND_BOND_BRIDGE 240
#define LAYOUT_THREE_ISLAND_PORT 241
-#define LAYOUT_UNKNOWN_MAP_03_50 242
-#define LAYOUT_UNKNOWN_MAP_03_51 243
-#define LAYOUT_UNKNOWN_MAP_03_52 244
-#define LAYOUT_UNKNOWN_MAP_03_53 245
+#define LAYOUT_PROTOTYPE_SEVII_ISLE_6 242
+#define LAYOUT_PROTOTYPE_SEVII_ISLE_7 243
+#define LAYOUT_PROTOTYPE_SEVII_ISLE_8 244
+#define LAYOUT_PROTOTYPE_SEVII_ISLE_9 245
#define LAYOUT_FIVE_ISLAND_RESORT_GORGEOUS 246
#define LAYOUT_FIVE_ISLAND_WATER_LABYRINTH 247
#define LAYOUT_FIVE_ISLAND_MEADOW 248
@@ -240,17 +240,17 @@
#define LAYOUT_SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE 255
#define LAYOUT_SEVEN_ISLAND_SEVAULT_CANYON 256
#define LAYOUT_SEVEN_ISLAND_TANOBY_RUINS 257
-#define LAYOUT_UNUSED_LAYOUT_833614C 258
-#define LAYOUT_UNUSED_LAYOUT_83377F0 259
-#define LAYOUT_UNUSED_LAYOUT_8338354 260
-#define LAYOUT_UNUSED_LAYOUT_8338738 261
+#define LAYOUT_PROTOTYPE_SEVII_ISLE_22 258
+#define LAYOUT_PROTOTYPE_SEVII_ISLE_23_EAST 259
+#define LAYOUT_PROTOTYPE_SEVII_ISLE_23_WEST 260
+#define LAYOUT_PROTOTYPE_SEVII_ISLE_24 261
#define LAYOUT_UNION_ROOM 262
#define LAYOUT_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB 263
-#define LAYOUT_UNUSED_LAYOUT_8338B4C 264
+#define LAYOUT_SEVEN_ISLAND_HOUSE_ROOM1_DOOR_OPEN 264
#define LAYOUT_SEVEN_ISLAND_HOUSE_ROOM2 265
#define LAYOUT_VIRIDIAN_CITY_HOUSE2 266
-#define LAYOUT_UNUSED_LAYOUT_8338E90 267
-#define LAYOUT_UNUSED_LAYOUT_833902C 268
+#define LAYOUT_CELADON_CITY_RESTAURANT_DUPLICATE 267
+#define LAYOUT_CELADON_CITY_HOTEL_DUPLICATE 268
#define LAYOUT_MT_EMBER_RUBY_PATH_B4F 269
#define LAYOUT_THREE_ISLAND_BERRY_FOREST 270
#define LAYOUT_ONE_ISLAND_POKEMON_CENTER_1F 271
@@ -279,17 +279,17 @@
#define LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_1F 294
#define LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_B1F 295
#define LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_BACK 296
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_LOBBY 297
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_1F 298
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_2F 299
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_3F 300
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_4F 301
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_5F 302
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_6F 303
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_7F 304
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_8F 305
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_ROOF 306
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR 307
+#define LAYOUT_TRAINER_TOWER_LOBBY 297
+#define LAYOUT_TRAINER_TOWER_1F 298
+#define LAYOUT_TRAINER_TOWER_2F 299
+#define LAYOUT_TRAINER_TOWER_3F 300
+#define LAYOUT_TRAINER_TOWER_4F 301
+#define LAYOUT_TRAINER_TOWER_5F 302
+#define LAYOUT_TRAINER_TOWER_6F 303
+#define LAYOUT_TRAINER_TOWER_7F 304
+#define LAYOUT_TRAINER_TOWER_8F 305
+#define LAYOUT_TRAINER_TOWER_ROOF 306
+#define LAYOUT_TRAINER_TOWER_ELEVATOR 307
#define LAYOUT_CERULEAN_CITY_HOUSE5 308
#define LAYOUT_SIX_ISLAND_DOTTED_HOLE_1F 309
#define LAYOUT_SIX_ISLAND_DOTTED_HOLE_B1F 310
@@ -301,7 +301,7 @@
#define LAYOUT_ONE_ISLAND_POKEMON_CENTER_2F 316
#define LAYOUT_SIX_ISLAND_PATTERN_BUSH 317
#define LAYOUT_THREE_ISLAND_DUNSPARCE_TUNNEL 318
-#define LAYOUT_THREE_ISLAND_DUNSPARCE_TUNNEL_2 319
+#define LAYOUT_THREE_ISLAND_DUNSPARCE_TUNNEL_DUG_OUT 319
#define LAYOUT_FIVE_ISLAND_LOST_CAVE_ENTRANCE 320
#define LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM1 321
#define LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM2 322
@@ -348,22 +348,22 @@
#define LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_VIAPOIS_CHAMBER 363
#define LAYOUT_NAVEL_ROCK_B1F 364
#define LAYOUT_NAVEL_ROCK_FORK 365
-#define LAYOUT_UNUSED_LAYOUT_834BC2C 366
-#define LAYOUT_UNUSED_LAYOUT_834BEB4 367
-#define LAYOUT_UNUSED_LAYOUT_834C13C 368
-#define LAYOUT_UNUSED_LAYOUT_834C3C4 369
-#define LAYOUT_UNUSED_LAYOUT_834C64C 370
-#define LAYOUT_UNUSED_LAYOUT_834C8D4 371
-#define LAYOUT_UNUSED_LAYOUT_834CB5C 372
-#define LAYOUT_UNUSED_LAYOUT_834CDE4 373
-#define LAYOUT_UNUSED_LAYOUT_834D06C 374
-#define LAYOUT_UNUSED_LAYOUT_834D2F4 375
-#define LAYOUT_UNUSED_LAYOUT_834D57C 376
-#define LAYOUT_UNUSED_LAYOUT_834D804 377
-#define LAYOUT_UNUSED_LAYOUT_834DA8C 378
-#define LAYOUT_UNUSED_LAYOUT_834DD14 379
-#define LAYOUT_UNUSED_LAYOUT_834DF9C 380
-#define LAYOUT_UNUSED_LAYOUT_834E224 381
+#define LAYOUT_TRAINER_TOWER_1F_DOUBLES 366
+#define LAYOUT_TRAINER_TOWER_2F_DOUBLES 367
+#define LAYOUT_TRAINER_TOWER_3F_DOUBLES 368
+#define LAYOUT_TRAINER_TOWER_4F_DOUBLES 369
+#define LAYOUT_TRAINER_TOWER_5F_DOUBLES 370
+#define LAYOUT_TRAINER_TOWER_6F_DOUBLES 371
+#define LAYOUT_TRAINER_TOWER_7F_DOUBLES 372
+#define LAYOUT_TRAINER_TOWER_8F_DOUBLES 373
+#define LAYOUT_TRAINER_TOWER_1F_KNOCKOUT 374
+#define LAYOUT_TRAINER_TOWER_2F_KNOCKOUT 375
+#define LAYOUT_TRAINER_TOWER_3F_KNOCKOUT 376
+#define LAYOUT_TRAINER_TOWER_4F_KNOCKOUT 377
+#define LAYOUT_TRAINER_TOWER_5F_KNOCKOUT 378
+#define LAYOUT_TRAINER_TOWER_6F_KNOCKOUT 379
+#define LAYOUT_TRAINER_TOWER_7F_KNOCKOUT 380
+#define LAYOUT_TRAINER_TOWER_8F_KNOCKOUT 381
#define LAYOUT_SEVEN_ISLAND_HOUSE_ROOM1 382
#define LAYOUT_ONE_ISLAND_KINDLE_ROAD_EMBER_SPA 383
diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h
index 0cc1c27fb..27e74b337 100644
--- a/include/constants/map_groups.h
+++ b/include/constants/map_groups.h
@@ -135,17 +135,17 @@
// Map Group 2
#define MAP_NAVEL_ROCK_EXTERIOR (0 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_1F (1 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_2F (2 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_3F (3 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_4F (4 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_5F (5 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_6F (6 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_7F (7 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_8F (8 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_ROOF (9 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY (10 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR (11 | (2 << 8))
+#define MAP_TRAINER_TOWER_1F (1 | (2 << 8))
+#define MAP_TRAINER_TOWER_2F (2 | (2 << 8))
+#define MAP_TRAINER_TOWER_3F (3 | (2 << 8))
+#define MAP_TRAINER_TOWER_4F (4 | (2 << 8))
+#define MAP_TRAINER_TOWER_5F (5 | (2 << 8))
+#define MAP_TRAINER_TOWER_6F (6 | (2 << 8))
+#define MAP_TRAINER_TOWER_7F (7 | (2 << 8))
+#define MAP_TRAINER_TOWER_8F (8 | (2 << 8))
+#define MAP_TRAINER_TOWER_ROOF (9 | (2 << 8))
+#define MAP_TRAINER_TOWER_LOBBY (10 | (2 << 8))
+#define MAP_TRAINER_TOWER_ELEVATOR (11 | (2 << 8))
#define MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE (12 | (2 << 8))
#define MAP_FIVE_ISLAND_LOST_CAVE_ROOM1 (13 | (2 << 8))
#define MAP_FIVE_ISLAND_LOST_CAVE_ROOM2 (14 | (2 << 8))
@@ -207,7 +207,7 @@
#define MAP_CINNABAR_ISLAND (8 | (3 << 8))
#define MAP_INDIGO_PLATEAU_EXTERIOR (9 | (3 << 8))
#define MAP_SAFFRON_CITY (10 | (3 << 8))
-#define MAP_SAFFRON_CITY_CLASSIC (11 | (3 << 8))
+#define MAP_SAFFRON_CITY_CONNECTION (11 | (3 << 8))
#define MAP_ONE_ISLAND (12 | (3 << 8))
#define MAP_TWO_ISLAND (13 | (3 << 8))
#define MAP_THREE_ISLAND (14 | (3 << 8))
@@ -246,10 +246,10 @@
#define MAP_TWO_ISLAND_CAPE_BRINK (47 | (3 << 8))
#define MAP_THREE_ISLAND_BOND_BRIDGE (48 | (3 << 8))
#define MAP_THREE_ISLAND_PORT (49 | (3 << 8))
-#define MAP_UNKNOWN_MAP_03_50 (50 | (3 << 8))
-#define MAP_UNKNOWN_MAP_03_51 (51 | (3 << 8))
-#define MAP_UNKNOWN_MAP_03_52 (52 | (3 << 8))
-#define MAP_UNKNOWN_MAP_03_53 (53 | (3 << 8))
+#define MAP_PROTOTYPE_SEVII_ISLE_6 (50 | (3 << 8))
+#define MAP_PROTOTYPE_SEVII_ISLE_7 (51 | (3 << 8))
+#define MAP_PROTOTYPE_SEVII_ISLE_8 (52 | (3 << 8))
+#define MAP_PROTOTYPE_SEVII_ISLE_9 (53 | (3 << 8))
#define MAP_FIVE_ISLAND_RESORT_GORGEOUS (54 | (3 << 8))
#define MAP_FIVE_ISLAND_WATER_LABYRINTH (55 | (3 << 8))
#define MAP_FIVE_ISLAND_MEADOW (56 | (3 << 8))
@@ -366,15 +366,15 @@
#define MAP_INDIGO_PLATEAU_POKEMON_CENTER_2F (1 | (13 << 8))
// Map Group 14
-#define MAP_SAFFRON_CITY_HOUSE1_1F (0 | (14 << 8))
-#define MAP_SAFFRON_CITY_HOUSE1_2F (1 | (14 << 8))
+#define MAP_SAFFRON_CITY_COPYCATS_HOUSE_1F (0 | (14 << 8))
+#define MAP_SAFFRON_CITY_COPYCATS_HOUSE_2F (1 | (14 << 8))
#define MAP_SAFFRON_CITY_DOJO (2 | (14 << 8))
#define MAP_SAFFRON_CITY_GYM (3 | (14 << 8))
-#define MAP_SAFFRON_CITY_HOUSE2 (4 | (14 << 8))
+#define MAP_SAFFRON_CITY_HOUSE (4 | (14 << 8))
#define MAP_SAFFRON_CITY_MART (5 | (14 << 8))
#define MAP_SAFFRON_CITY_POKEMON_CENTER_1F (6 | (14 << 8))
#define MAP_SAFFRON_CITY_POKEMON_CENTER_2F (7 | (14 << 8))
-#define MAP_SAFFRON_CITY_HOUSE3 (8 | (14 << 8))
+#define MAP_SAFFRON_CITY_MR_PSYCHICS_HOUSE (8 | (14 << 8))
#define MAP_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB (9 | (14 << 8))
// Map Group 15
diff --git a/include/constants/map_types.h b/include/constants/map_types.h
index 96ea73702..d32a4e2a4 100644
--- a/include/constants/map_types.h
+++ b/include/constants/map_types.h
@@ -1,15 +1,25 @@
#ifndef GUARD_CONSTANTS_MAP_TYPES_H
#define GUARD_CONSTANTS_MAP_TYPES_H
-#define MAP_TYPE_0 0
+#define MAP_TYPE_NONE 0
#define MAP_TYPE_TOWN 1
-#define MAP_TYPE_CITY 2
+#define MAP_TYPE_CITY 2 // Unused. RSE use this map type to distinguish Town and City. FRLG make no distinction
#define MAP_TYPE_ROUTE 3
#define MAP_TYPE_UNDERGROUND 4
-#define MAP_TYPE_UNDERWATER 5
-#define MAP_TYPE_OCEAN_ROUTE 6
-#define MAP_TYPE_7 7
+#define MAP_TYPE_UNDERWATER 5 // Unused
+#define MAP_TYPE_OCEAN_ROUTE 6 // Unused
+#define MAP_TYPE_UNKNOWN 7 // Unused
#define MAP_TYPE_INDOOR 8
-#define MAP_TYPE_SECRET_BASE 9
+#define MAP_TYPE_SECRET_BASE 9 // Unused
+
+#define MAP_BATTLE_SCENE_NORMAL 0
+#define MAP_BATTLE_SCENE_GYM 1
+#define MAP_BATTLE_SCENE_INDOOR_1 2 // Pokemon Tower, Tanoby ruins
+#define MAP_BATTLE_SCENE_INDOOR_2 3 // Pokemon Mansion, Power Plant, Rocket Hideout/Warehouse
+#define MAP_BATTLE_SCENE_LORELEI 4
+#define MAP_BATTLE_SCENE_BRUNO 5
+#define MAP_BATTLE_SCENE_AGATHA 6
+#define MAP_BATTLE_SCENE_LANCE 7
+#define MAP_BATTLE_SCENE_LINK 8
#endif // GUARD_CONSTANTS_MAP_TYPES_H
diff --git a/include/constants/maps.h b/include/constants/maps.h
index db8ee451c..395b07f46 100644
--- a/include/constants/maps.h
+++ b/include/constants/maps.h
@@ -2,6 +2,7 @@
#define GUARD_CONSTANTS_MAPS_H
#include "constants/map_groups.h"
+#include "constants/map_types.h"
#define MAP_NONE (0x7F | (0x7F << 8))
#define MAP_UNDEFINED (0xFF | (0xFF << 8))
@@ -11,33 +12,4 @@
#define MAP(map) MAP_GROUP(map), MAP_NUM(map)
-// temporary map constants
-#define BATTLE_SCENE_0 0
-#define BATTLE_SCENE_1 1
-#define BATTLE_SCENE_2 2
-#define BATTLE_SCENE_3 3
-#define BATTLE_SCENE_4 4
-#define BATTLE_SCENE_5 5
-#define BATTLE_SCENE_6 6
-#define BATTLE_SCENE_7 7
-#define BATTLE_SCENE_8 8
-#define BATTLE_SCENE_9 9
-#define BATTLE_SCENE_10 10
-#define BATTLE_SCENE_11 11
-#define BATTLE_SCENE_12 12
-#define BATTLE_SCENE_13 13
-#define BATTLE_SCENE_14 14
-#define BATTLE_SCENE_15 15
-
-#define MAP_TYPE_0 0
-#define MAP_TYPE_1 1
-#define MAP_TYPE_2 2
-#define MAP_TYPE_3 3
-#define MAP_TYPE_4 4
-#define MAP_TYPE_5 5
-#define MAP_TYPE_6 6
-#define MAP_TYPE_7 7
-#define MAP_TYPE_8 8
-#define MAP_TYPE_9 9
-
#endif // GUARD_CONSTANTS_MAPS_H
diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h
index 8726113f4..a9642eeac 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -1,14 +1,102 @@
#ifndef GUARD_METATILE_LABELS_H
#define GUARD_METATILE_LABELS_H
-// General
+// gTileset_General
+#define METATILE_General_Plain_Mowed 0x001
+#define METATILE_General_ThinTreeTop_Grass 0x00A
+#define METATILE_General_WideTreeTopLeft_Grass 0x00B
+#define METATILE_General_WideTreeTopRight_Grass 0x00C
+#define METATILE_General_Plain_Grass 0x00D
+#define METATILE_General_WideTreeTopLeft_Mowed 0x00E
+#define METATILE_General_WideTreeTopRight_Mowed 0x00F
+#define METATILE_General_ThinTreeTop_Mowed 0x013
#define METATILE_General_CalmWater 0x12B
+#define METATILE_General_Door 0x03D
+#define METATILE_General_SlidingSingleDoor 0x062
+#define METATILE_General_SlidingDoubleDoor 0x15B
-// PokeMart
-#define METATILE_Shop_CounterMid_Top 0x2BF
-#define METATILE_Shop_CounterMid_Bottom 0x2C0
+// gTileset_Building
+#define METATILE_Building_PCOff 0x062
+#define METATILE_Building_PCOn 0x063
-// Vermilion Gym
+// gTileset_GenericBuilding1
+#define METATILE_GenericBuilding1_PlayersPCOn 0x28A
+#define METATILE_GenericBuilding1_PlayersPCOff 0x28F
+
+// gTileset_Mart
+#define METATILE_Mart_CounterMid_Top 0x2BF
+#define METATILE_Mart_CounterMid_Bottom 0x2C0
+
+// gTileset_PokemonCenter
+#define METATILE_PokemonCenter_Floor_ShadeLeft 0x2C5
+#define METATILE_PokemonCenter_CounterBarrier 0x2F9
+#define METATILE_PokemonCenter_NetworkMachine_ScreenLeft_On 0x35A
+#define METATILE_PokemonCenter_NetworkMachine_ScreenRight_On 0x35B
+#define METATILE_PokemonCenter_NetworkMachine_Ruby 0x35D
+#define METATILE_PokemonCenter_NetworkMachine_Sapphire 0x35F
+#define METATILE_PokemonCenter_Escalator_Top_Normal 0x2E4
+#define METATILE_PokemonCenter_Escalator_Top_Transition1 0x317
+#define METATILE_PokemonCenter_Escalator_Top_Transition2 0x315
+#define METATILE_PokemonCenter_Escalator_TopNext_Normal 0x2E3
+#define METATILE_PokemonCenter_Escalator_TopNext_Transition1 0x316
+#define METATILE_PokemonCenter_Escalator_TopNext_Transition2 0x314
+#define METATILE_PokemonCenter_Escalator_TopNextRail_Normal 0x2EB
+#define METATILE_PokemonCenter_Escalator_TopNextRail_Transition1 0x31E
+#define METATILE_PokemonCenter_Escalator_TopNextRail_Transition2 0x31C
+#define METATILE_PokemonCenter_Escalator_Bottom_Normal 0x2D9
+#define METATILE_PokemonCenter_Escalator_Bottom_Transition1 0x313
+#define METATILE_PokemonCenter_Escalator_Bottom_Transition2 0x311
+#define METATILE_PokemonCenter_Escalator_BottomRail_Normal 0x2D1
+#define METATILE_PokemonCenter_Escalator_BottomRail_Transition1 0x30B
+#define METATILE_PokemonCenter_Escalator_BottomRail_Transition2 0x309
+#define METATILE_PokemonCenter_Escalator_BottomNext_Normal 0x2D8
+#define METATILE_PokemonCenter_Escalator_BottomNext_Transition1 0x312
+#define METATILE_PokemonCenter_Escalator_BottomNext_Transition2 0x310
+#define METATILE_PokemonCenter_Escalator_BottomNextRail_Normal 0x2D0
+#define METATILE_PokemonCenter_Escalator_BottomNextRail_Transition1 0x30A
+#define METATILE_PokemonCenter_Escalator_BottomNextRail_Transition2 0x308
+#define METATILE_PokemonCenter_CableClubDoor 0x2DE
+
+// gTileset_Cave
+#define METATILE_Cave_Floor_Ledge_Top 0x2D1
+#define METATILE_Cave_Floor_Ledge_Bottom 0x2E1
+#define METATILE_Cave_RockBarrier_Top 0x307
+#define METATILE_Cave_RockBarrier_Bottom 0x317
+
+// gTileset_PalletTown
+#define METATILE_PalletTown_Door 0x2A3
+#define METATILE_PalletTown_OaksLabDoor 0x2AC
+
+// gTileset_ViridianCity
+#define METATILE_ViridianCity_Door 0x299
+
+// gTileset_ViridianForest
+#define METATILE_ViridianForest_HugeTreeTopMiddle_Grass 0x284
+#define METATILE_ViridianForest_HugeTreeTopMiddle_Mowed 0x281
+
+// gTileset_PewterCity
+#define METATILE_PewterCity_Door 0x2CE
+
+// gTileset_CeruleanCity
+#define METATILE_CeruleanCity_Door 0x298
+
+// gTileset_SeaCottage
+#define METATILE_SeaCottage_Teleporter_Light_Green 0x28A
+#define METATILE_SeaCottage_Teleporter_Light_Yellow 0x2B5
+#define METATILE_SeaCottage_Teleporter_Light_Red 0x2B6
+#define METATILE_SeaCottage_Teleporter_Cable_Top 0x285
+#define METATILE_SeaCottage_Teleporter_Cable_Bottom 0x2B4
+#define METATILE_SeaCottage_Teleporter_CableBall_Top 0x2B9
+#define METATILE_SeaCottage_Teleporter_CableBall_Bottom 0x2BA
+#define METATILE_SeaCottage_Teleporter_Door 0x296
+#define METATILE_SeaCottage_Teleporter_Door_HalfGlowing 0x2B7
+#define METATILE_SeaCottage_Teleporter_Door_FullGlowing 0x2B8
+
+// gTileset_VermilionCity
+#define METATILE_VermilionCity_Door 0x29E
+#define METATILE_VermilionCity_PokemonFanClubDoor 0x2E1 // Used to reference door tiles in field_door.c, but the metatile in the tileset is dummied
+
+// gTileset_VermilionGym
#define METATILE_VermilionGym_Floor 0x281
#define METATILE_VermilionGym_Beam_MidTop 0x285
#define METATILE_VermilionGym_Beam_MidBottom 0x28D
@@ -39,7 +127,100 @@
#define METATILE_VermilionGym_Beam_Node_BottomRight_Edge_HalfOn 0x2C6
#define METATILE_VermilionGym_Beam_Node_BottomRight_HalfOn 0x2C7
-// Pokemon Mansion
+// gTileset_SSAnne
+#define METATILE_SSAnne_Door 0x281
+
+// gTileset_LavenderTown
+#define METATILE_LavenderTown_Door 0x2A2
+
+// gTilset_CeladonCity
+#define METATILE_CeladonCity_DeptStoreDoor 0x294
+#define METATILE_CeladonCity_CyclingRoad_Grass 0x352
+#define METATILE_CeladonCity_CyclingRoad_Mowed 0x33E
+
+// gTileset_DepartmentStore
+#define METATILE_DepartmentStore_ElevatorDoor 0x28D
+
+// gTileset_GameCorner
+#define METATILE_GameCorner_Floor_ShadeFull 0x292
+#define METATILE_GameCorner_Floor_StairsTop 0x29D
+#define METATILE_GameCorner_StairsTop 0x29E
+#define METATILE_GameCorner_StairsBottom 0x29F
+#define METATILE_GameCorner_PurpleWall_Floor 0x2CF
+#define METATILE_GameCorner_PurpleWall_StairsTop 0x2A6
+#define METATILE_GameCorner_PurpleWall_stairsBottom 0x2A7
+#define METATILE_GameCorner_CheckeredFloor_ShadeLeft 0x2E1
+#define METATILE_GameCorner_CounterBarrier 0x2F7
+
+// gTileset_SaffronCity
+#define METATILE_SaffronCity_Door 0x284
+#define METATILE_SaffronCity_SilphCoDoor 0x2BC
+
+// gTileset_SilphCo Includes Silph Co, Rocket Hideout/Warehouse, and all Elevators
+#define METATILE_SilphCo_HideoutFloor 0x281
+#define METATILE_SilphCo_HideoutFloor_ShadeFull 0x282
+#define METATILE_SilphCo_Arrow_Up 0x2A0
+#define METATILE_SilphCo_Arrow_Left 0x2A1
+#define METATILE_SilphCo_Arrow_Down 0x2A8
+#define METATILE_SilphCo_Arrow_Right 0x2A9
+#define METATILE_SilphCo_HideoutBarrier_TopLeft_Wall 0x2C6
+#define METATILE_SilphCo_HideoutBarrier_TopRight_Wall 0x2C7
+#define METATILE_SilphCo_HideoutBarrier_TopLeft_Floor 0x2CE
+#define METATILE_SilphCo_HideoutBarrier_TopRight_Floor 0x2CF
+#define METATILE_SilphCo_HideoutBarrier_BottomLeft 0x2D6
+#define METATILE_SilphCo_HideoutBarrier_BottomRight 0x2D7
+#define METATILE_SilphCo_HideoutElevatorDoor 0x2AB
+#define METATILE_SilphCo_ElevatorDoor 0x2E2
+#define METATILE_SilphCo_ElevatorWindow_Top0 0x2E8
+#define METATILE_SilphCo_ElevatorWindow_Top1 0x2E9
+#define METATILE_SilphCo_ElevatorWindow_Top2 0x2EA
+#define METATILE_SilphCo_ElevatorWindow_Mid0 0x2F0
+#define METATILE_SilphCo_ElevatorWindow_Mid1 0x2F1
+#define METATILE_SilphCo_ElevatorWindow_Mid2 0x2F2
+#define METATILE_SilphCo_ElevatorWindow_Bottom0 0x2F8
+#define METATILE_SilphCo_ElevatorWindow_Bottom1 0x2F9
+#define METATILE_SilphCo_ElevatorWindow_Bottom2 0x2FA
+#define METATILE_SilphCo_Floor 0x334
+#define METATILE_SilphCo_Floor_ShadeFull 0x335
+#define METATILE_SilphCo_Floor_WallLeftCorner 0x339
+#define METATILE_SilphCo_Floor_WallRightCorner 0x33A
+#define METATILE_SilphCo_Wall_RightEdge 0x346
+#define METATILE_SilphCo_Wall_LeftEdge 0x347
+#define METATILE_SilphCo_HorizontalBarrier_TopLeft 0x3B0
+#define METATILE_SilphCo_HorizontalBarrier_TopRight 0x3B1
+#define METATILE_SilphCo_HorizontalBarrier_BottomLeft 0x3B8
+#define METATILE_SilphCo_HorizontalBarrier_BottomRight 0x3B9
+#define METATILE_SilphCo_VerticalBarrier_TopLeft 0x3C0
+#define METATILE_SilphCo_VerticalBarrier_TopRight 0x3C1
+#define METATILE_SilphCo_VerticalBarrier_MidLeft 0x3C2
+#define METATILE_SilphCo_VerticalBarrier_MidRight 0x3C3
+#define METATILE_SilphCo_VerticalBarrier_BottomLeft 0x3C4
+#define METATILE_SilphCo_VerticalBarrier_BottomRight 0x3C5
+
+// gTileset_FuchsiaCity
+#define METATILE_FuchsiaCity_Door 0x2BF
+#define METATILE_FuchsiaCity_SafariZoneDoor 0x2D2
+#define METATILE_FuchsiaCity_SafariZoneTreeTopLeft_Grass 0x300
+#define METATILE_FuchsiaCity_SafariZoneTreeTopMiddle_Grass 0x301
+#define METATILE_FuchsiaCity_SafariZoneTreeTopRight_Grass 0x302
+#define METATILE_FuchsiaCity_SafariZoneTreeTopLeft_Mowed 0x310
+#define METATILE_FuchsiaCity_SafariZoneTreeTopMiddle_Mowed 0x311
+#define METATILE_FuchsiaCity_SafariZoneTreeTopRight_Mowed 0x312
+
+// gTileset_CinnabarIsland
+#define METATILE_CinnabarIsland_LabDoor 0x2AD
+
+// gTileset_CinnabarGym
+#define METATILE_CinnabarGym_Floor 0x281
+#define METATILE_CinnabarGym_Floor_ShadeDiagonal 0x282
+#define METATILE_CinnabarGym_Floor_ShadeFull 0x289
+#define METATILE_CinnabarGym_Floor_WallRightCorner 0x2C6
+#define METATILE_CinnabarGym_Floor_WallLeftCorner 0x2C7
+#define METATILE_CinnabarGym_Floor_WallRightEdge 0x2CE
+#define METATILE_CinnabarGym_Floor_WallLeftEdge 0x2CF
+#define METATILE_CinnabarGym_Wall_RetractedBarrier 0x2D1
+
+// gTileset_PokemonMansion
#define METATILE_PokemonMansion_Floor 0x284
#define METATILE_PokemonMansion_Floor_ShadeFull 0x285
#define METATILE_PokemonMansion_BasementFloor 0x286
@@ -72,18 +253,46 @@
#define METATILE_PokemonMansion_Statue_RedEyes_Shade 0x34E
#define METATILE_PokemonMansion_Statue_RedEyes_Basement 0x34F
-// Cinnabar Gym
-#define METATILE_CinnabarGym_Floor 0x281
-#define METATILE_CinnabarGym_Floor_ShadeDiagonal 0x282
-#define METATILE_CinnabarGym_Floor_ShadeFull 0x289
-#define METATILE_CinnabarGym_Floor_WallRightCorner 0x2C6
-#define METATILE_CinnabarGym_Floor_WallLeftCorner 0x2C7
-#define METATILE_CinnabarGym_Floor_WallRightEdge 0x2CE
-#define METATILE_CinnabarGym_Floor_WallLeftEdge 0x2CF
-#define METATILE_CinnabarGym_Wall_RetractedBarrier 0x2D1
+// gTileset_PokemonLeague
+#define METATILE_PokemonLeague_Door_Top_Open 0x28E
+#define METATILE_PokemonLeague_Door_Mid_Open 0x296
+#define METATILE_PokemonLeague_Entry_TopLeft_Closed 0x29D
+#define METATILE_PokemonLeague_Entry_TopMid_Closed 0x29E
+#define METATILE_PokemonLeague_Entry_TopRight_Closed 0x29F
+#define METATILE_PokemonLeague_Entry_BottomLeft_Closed 0x2A5
+#define METATILE_PokemonLeague_Entry_BottomMid_Closed 0x2A6
+#define METATILE_PokemonLeague_Entry_BottomRight_Closed 0x2A7
+#define METATILE_PokemonLeague_Floor_ShadeFull_Lance 0x311
-// gTileset_82D504C. Below metatile probably needs generic name
+// gTileset_MtEmber
#define METATILE_MtEmber_CaveEntrance 0x346
+// gTileset_SeafoamIslands
+#define METATILE_SeafoamIslands_SlidingIce 0x34B
+#define METATILE_SeafoamIslands_UncrackedIce 0x359
+#define METATILE_SeafoamIslands_CrackedIce 0x35A
+#define METATILE_SeafoamIslands_IceHole 0x35B
+
+// gTileset_TrainerTower
+#define METATILE_TrainerTower_Floor_ShadeBottomLeft 0x287
+#define METATILE_TrainerTower_CounterBarrier 0x2B4
+#define METATILE_TrainerTower_LobbyElevatorDoor 0x2C3
+#define METATILE_TrainerTower_RoofElevatorDoor 0x356
+
+// gTileset_SeviiIslands123
+#define METATILE_SeviiIslands123_Door 0x297
+#define METATILE_SeviiIslands123_GameCornerDoor 0x29B
+#define METATILE_SeviiIslands123_PokeCenterDoor 0x2EB
+
+// gTileset_SeviiIslands45
+#define METATILE_SeviiIslands45_Door 0x29A
+#define METATILE_SeviiIslands45_DayCareDoor 0x2B9
+#define METATILE_SeviiIslands45_RocketWarehouseDoor_Locked 0x30B
+#define METATILE_SeviiIslands45_RocketWarehouseDoor_Unlocked 0x2AF
+
+// gTileset_SeviiIslands67
+#define METATILE_SeviiIslands67_Door 0x30C
+#define METATILE_SeviiIslands67_DottedHoleDoor_Closed 0x357
+#define METATILE_SeviiIslands67_DottedHoleDoor_Open 0x358
#endif // GUARD_METATILE_LABELS_H
diff --git a/include/constants/movement_commands.h b/include/constants/movement_commands.h
deleted file mode 100644
index 8556ba951..000000000
--- a/include/constants/movement_commands.h
+++ /dev/null
@@ -1,121 +0,0 @@
-#ifndef GUARD_CONSTANTS_MOVEMENT_COMMANDS_H
-#define GUARD_CONSTANTS_MOVEMENT_COMMANDS_H
-
-enum
-{
- face_down,
- face_up,
- face_left,
- face_right,
- face_down_fast,
- face_up_fast,
- face_left_fast,
- face_right_fast,
- walk_slowest_down,
- walk_slowest_up,
- walk_slowest_left,
- walk_slowest_right,
- walk_slow_down,
- walk_slow_up,
- walk_slow_left,
- walk_slow_right,
- walk_down,
- walk_up,
- walk_left,
- walk_right,
- jump_2_down,
- jump_2_up,
- jump_2_left,
- jump_2_right,
- delay_1,
- delay_2,
- delay_4,
- delay_8,
- delay_16,
- walk_fast_down,
- walk_fast_up,
- walk_fast_left,
- walk_fast_right,
- walk_in_place_slow_down,
- walk_in_place_slow_up,
- walk_in_place_slow_left,
- walk_in_place_slow_right,
- walk_in_place_down,
- walk_in_place_up,
- walk_in_place_left,
- walk_in_place_right,
- walk_in_place_fast_down,
- walk_in_place_fast_up,
- walk_in_place_fast_left,
- walk_in_place_fast_right,
- walk_in_place_fastest_down,
- walk_in_place_fastest_up,
- walk_in_place_fastest_left,
- walk_in_place_fastest_right,
- face_down_slow,
- face_up_slow,
- face_left_slow,
- face_right_slow,
- walk_fastest_down,
- walk_fastest_up,
- walk_fastest_left,
- walk_fastest_right,
- slide_down,
- slide_up,
- slide_left,
- slide_right,
- player_run_down,
- player_run_up,
- player_run_left,
- player_run_right,
- player_run_down_slow,
- player_run_up_slow,
- player_run_left_slow,
- player_run_right_slow,
- step_45,
- jump_down_run,
- jump_up_run,
- jump_left_run,
- jump_right_run,
- face_player,
- face_away_player,
- lock_facing_direction,
- unlock_facing_direction,
- jump_down,
- jump_up,
- jump_left,
- jump_right,
- jump_in_place_down,
- jump_in_place_up,
- jump_in_place_left,
- jump_in_place_right,
- jump_in_place_down_up,
- jump_in_place_up_down,
- jump_in_place_left_right,
- jump_in_place_right_left,
- face_original_direction,
- nurse_joy_bow,
- enable_jump_landing_ground_effect,
- disable_jump_landing_ground_effect,
- disable_anim,
- restore_anim,
- set_invisible,
- set_visible,
- emote_exclamation_mark,
- emote_question_mark,
- emote_x,
- emote_double_exclamation_mark,
- emote_smile,
- step_67,
- rock_smash_break,
- cut_tree,
-
- step_91 = 0x91,
- step_92,
-
- step_96 = 0x96,
-
- step_end = 0xfe,
-};
-
-#endif //GUARD_CONSTANTS_MOVEMENT_COMMANDS_H
diff --git a/include/constants/object_events.h b/include/constants/object_events.h
deleted file mode 100644
index d6f33b33c..000000000
--- a/include/constants/object_events.h
+++ /dev/null
@@ -1,186 +0,0 @@
-#ifndef GUARD_CONSTANTS_OBJECT_EVENTS_H
-#define GUARD_CONSTANTS_OBJECT_EVENTS_H
-
-#define OBJECT_EVENT_GFX_RED_NORMAL 0
-#define OBJECT_EVENT_GFX_RED_BIKE 1
-#define OBJECT_EVENT_GFX_RED_RUN 2
-#define OBJECT_EVENT_GFX_RED_ITEM 3
-#define OBJECT_EVENT_GFX_RED_FISH 4
-#define OBJECT_EVENT_GFX_RED_ITEM_COPY 5
-#define OBJECT_EVENT_GFX_RED_VS_SEEKER 6
-#define OBJECT_EVENT_GFX_GREEN_NORMAL 7
-#define OBJECT_EVENT_GFX_GREEN_BIKE 8
-#define OBJECT_EVENT_GFX_GREEN_RUN 9
-#define OBJECT_EVENT_GFX_GREEN_ITEM 10
-#define OBJECT_EVENT_GFX_GREEN_FISH 11
-#define OBJECT_EVENT_GFX_GREEN_ITEM_COPY 12
-#define OBJECT_EVENT_GFX_GREEN_VS_SEEKER 13
-#define OBJECT_EVENT_GFX_RS_BRENDAN 14
-#define OBJECT_EVENT_GFX_RS_MAY 15
-#define OBJECT_EVENT_GFX_LITTLE_BOY 16
-#define OBJECT_EVENT_GFX_LITTLE_GIRL 17
-#define OBJECT_EVENT_GFX_YOUNGSTER 18
-#define OBJECT_EVENT_GFX_BOY 19
-#define OBJECT_EVENT_GFX_BUG_CATCHER 20
-#define OBJECT_EVENT_GFX_SITTING_BOY 21
-#define OBJECT_EVENT_GFX_LASS 22
-#define OBJECT_EVENT_GFX_WOMAN_1 23
-#define OBJECT_EVENT_GFX_BATTLE_GIRL 24
-#define OBJECT_EVENT_GFX_MAN 25
-#define OBJECT_EVENT_GFX_ROCKER 26
-#define OBJECT_EVENT_GFX_FAT_MAN 27
-#define OBJECT_EVENT_GFX_WOMAN_2 28
-#define OBJECT_EVENT_GFX_BEAUTY 29
-#define OBJECT_EVENT_GFX_BALDING_MAN 30
-#define OBJECT_EVENT_GFX_WOMAN_3 31
-#define OBJECT_EVENT_GFX_OLD_MAN_1 32
-#define OBJECT_EVENT_GFX_OLD_MAN_2 33
-#define OBJECT_EVENT_GFX_OLD_MAN_LYING_DOWN 34
-#define OBJECT_EVENT_GFX_OLD_WOMAN 35
-#define OBJECT_EVENT_GFX_TUBER_M_1 36
-#define OBJECT_EVENT_GFX_TUBER_F 37
-#define OBJECT_EVENT_GFX_TUBER_M_2 38
-#define OBJECT_EVENT_GFX_CAMPER 39
-#define OBJECT_EVENT_GFX_PICNICKER 40
-#define OBJECT_EVENT_GFX_COOLTRAINER_M 41
-#define OBJECT_EVENT_GFX_COOLTRAINER_F 42
-#define OBJECT_EVENT_GFX_SWIMMER_M_WATER 43
-#define OBJECT_EVENT_GFX_SWIMMER_F_WATER 44
-#define OBJECT_EVENT_GFX_SWIMMER_M_LAND 45
-#define OBJECT_EVENT_GFX_SWIMMER_F_LAND 46
-#define OBJECT_EVENT_GFX_WORKER_M 47
-#define OBJECT_EVENT_GFX_WORKER_F 48
-#define OBJECT_EVENT_GFX_ROCKET_M 49
-#define OBJECT_EVENT_GFX_ROCKET_F 50
-#define OBJECT_EVENT_GFX_GBA_KID 51
-#define OBJECT_EVENT_GFX_SUPER_NERD 52
-#define OBJECT_EVENT_GFX_BIKER 53
-#define OBJECT_EVENT_GFX_BLACKBELT 54
-#define OBJECT_EVENT_GFX_SCIENTIST 55
-#define OBJECT_EVENT_GFX_HIKER 56
-#define OBJECT_EVENT_GFX_FISHER 57
-#define OBJECT_EVENT_GFX_CHANNELER 58
-#define OBJECT_EVENT_GFX_CHEF 59
-#define OBJECT_EVENT_GFX_POLICEMAN 60
-#define OBJECT_EVENT_GFX_GENTLEMAN 61
-#define OBJECT_EVENT_GFX_SAILOR 62
-#define OBJECT_EVENT_GFX_CAPTAIN 63
-#define OBJECT_EVENT_GFX_NURSE 64
-#define OBJECT_EVENT_GFX_CABLE_CLUB_RECEPTIONIST 65
-#define OBJECT_EVENT_GFX_UNION_ROOM_RECEPTIONIST 66
-#define OBJECT_EVENT_GFX_UNUSED_MALE_RECEPTIONIST 67
-#define OBJECT_EVENT_GFX_CLERK 68
-#define OBJECT_EVENT_GFX_MG_DELIVERYMAN 69
-#define OBJECT_EVENT_GFX_TRAINER_TOWER_DUDE 70
-#define OBJECT_EVENT_GFX_PROF_OAK 71
-#define OBJECT_EVENT_GFX_BLUE 72
-#define OBJECT_EVENT_GFX_BILL 73
-#define OBJECT_EVENT_GFX_LANCE 74
-#define OBJECT_EVENT_GFX_AGATHA 75
-#define OBJECT_EVENT_GFX_DAISY 76
-#define OBJECT_EVENT_GFX_LORELEI 77
-#define OBJECT_EVENT_GFX_MR_FUJI 78
-#define OBJECT_EVENT_GFX_BRUNO 79
-#define OBJECT_EVENT_GFX_BROCK 80
-#define OBJECT_EVENT_GFX_MISTY 81
-#define OBJECT_EVENT_GFX_LT_SURGE 82
-#define OBJECT_EVENT_GFX_ERIKA 83
-#define OBJECT_EVENT_GFX_KOGA 84
-#define OBJECT_EVENT_GFX_SABRINA 85
-#define OBJECT_EVENT_GFX_BLAINE 86
-#define OBJECT_EVENT_GFX_GIOVANNI 87
-#define OBJECT_EVENT_GFX_MOM 88
-#define OBJECT_EVENT_GFX_CELIO 89
-#define OBJECT_EVENT_GFX_TEACHY_TV_HOST 90
-#define OBJECT_EVENT_GFX_GYM_GUY 91
-#define OBJECT_EVENT_GFX_ITEM_BALL 92
-#define OBJECT_EVENT_GFX_TOWN_MAP 93
-#define OBJECT_EVENT_GFX_POKEDEX 94
-#define OBJECT_EVENT_GFX_CUT_TREE 95
-#define OBJECT_EVENT_GFX_ROCK_SMASH_ROCK 96
-#define OBJECT_EVENT_GFX_STRENGTH_BOULDER 97
-#define OBJECT_EVENT_GFX_FOSSIL 98
-#define OBJECT_EVENT_GFX_RUBY 99
-#define OBJECT_EVENT_GFX_SAPPHIRE 100
-#define OBJECT_EVENT_GFX_OLD_AMBER 101
-#define OBJECT_EVENT_GFX_GYM_SIGN 102
-#define OBJECT_EVENT_GFX_SIGN 103
-#define OBJECT_EVENT_GFX_TRAINER_TIPS 104
-#define OBJECT_EVENT_GFX_CLIPBOARD 105
-#define OBJECT_EVENT_GFX_METEORITE 106
-#define OBJECT_EVENT_GFX_LAPRAS_DOLL 107
-#define OBJECT_EVENT_GFX_SEAGALLOP 108
-#define OBJECT_EVENT_GFX_SNORLAX 109
-#define OBJECT_EVENT_GFX_SPEAROW 110
-#define OBJECT_EVENT_GFX_CUBONE 111
-#define OBJECT_EVENT_GFX_POLIWRATH 112
-#define OBJECT_EVENT_GFX_CLEFAIRY 113
-#define OBJECT_EVENT_GFX_PIDGEOT 114
-#define OBJECT_EVENT_GFX_JIGGLYPUFF 115
-#define OBJECT_EVENT_GFX_PIDGEY 116
-#define OBJECT_EVENT_GFX_CHANSEY 117
-#define OBJECT_EVENT_GFX_OMANYTE 118
-#define OBJECT_EVENT_GFX_KANGASKHAN 119
-#define OBJECT_EVENT_GFX_PIKACHU 120
-#define OBJECT_EVENT_GFX_PSYDUCK 121
-#define OBJECT_EVENT_GFX_NIDORAN_F 122
-#define OBJECT_EVENT_GFX_NIDORAN_M 123
-#define OBJECT_EVENT_GFX_NIDORINO 124
-#define OBJECT_EVENT_GFX_MEOWTH 125
-#define OBJECT_EVENT_GFX_SEEL 126
-#define OBJECT_EVENT_GFX_VOLTORB 127
-#define OBJECT_EVENT_GFX_SLOWPOKE 128
-#define OBJECT_EVENT_GFX_SLOWBRO 129
-#define OBJECT_EVENT_GFX_MACHOP 130
-#define OBJECT_EVENT_GFX_WIGGLYTUFF 131
-#define OBJECT_EVENT_GFX_DODUO 132
-#define OBJECT_EVENT_GFX_FEAROW 133
-#define OBJECT_EVENT_GFX_MACHOKE 134
-#define OBJECT_EVENT_GFX_LAPRAS 135
-#define OBJECT_EVENT_GFX_ZAPDOS 136
-#define OBJECT_EVENT_GFX_MOLTRES 137
-#define OBJECT_EVENT_GFX_ARTICUNO 138
-#define OBJECT_EVENT_GFX_MEWTWO 139
-#define OBJECT_EVENT_GFX_MEW 140
-#define OBJECT_EVENT_GFX_ENTEI 141
-#define OBJECT_EVENT_GFX_SUICUNE 142
-#define OBJECT_EVENT_GFX_RAIKOU 143
-#define OBJECT_EVENT_GFX_LUGIA 144
-#define OBJECT_EVENT_GFX_HO_OH 145
-#define OBJECT_EVENT_GFX_CELEBI 146
-#define OBJECT_EVENT_GFX_KABUTO 147
-#define OBJECT_EVENT_GFX_DEOXYS_D 148
-#define OBJECT_EVENT_GFX_DEOXYS_A 149
-#define OBJECT_EVENT_GFX_DEOXYS_N 150
-#define OBJECT_EVENT_GFX_SS_ANNE 151
-
-#define OBJECT_EVENT_GFX_VAR_0 240
-#define OBJECT_EVENT_GFX_VAR_1 241
-#define OBJECT_EVENT_GFX_VAR_2 242
-#define OBJECT_EVENT_GFX_VAR_3 243
-#define OBJECT_EVENT_GFX_VAR_4 244
-#define OBJECT_EVENT_GFX_VAR_5 245
-#define OBJECT_EVENT_GFX_VAR_6 246
-#define OBJECT_EVENT_GFX_VAR_7 247
-#define OBJECT_EVENT_GFX_VAR_8 248
-#define OBJECT_EVENT_GFX_VAR_9 249
-#define OBJECT_EVENT_GFX_VAR_A 250
-#define OBJECT_EVENT_GFX_VAR_B 251
-#define OBJECT_EVENT_GFX_VAR_C 252
-#define OBJECT_EVENT_GFX_VAR_D 253
-#define OBJECT_EVENT_GFX_VAR_E 254
-#define OBJECT_EVENT_GFX_VAR_F 255
-
-#define SHADOW_SIZE_S 0
-#define SHADOW_SIZE_M 1
-#define SHADOW_SIZE_L 2
-#define SHADOW_SIZE_XL 3
-
-#define F_INANIMATE (1 << 6)
-#define F_DISABLE_REFLECTION_PALETTE_LOAD (1 << 7)
-
-#define TRACKS_NONE 0
-#define TRACKS_FOOT 1
-#define TRACKS_BIKE_TIRE 2
-
-#endif // GUARD_CONSTANTS_OBJECT_EVENTS_H
diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h
index 28ce39cd3..0c958ccc5 100644
--- a/include/constants/party_menu.h
+++ b/include/constants/party_menu.h
@@ -64,7 +64,6 @@
#define PARTY_MENU_TYPE_UNION_ROOM_TRADE 9 // trading board
#define PARTY_MENU_TYPE_SPIN_TRADE 10 // Unused beta for Gen IV's Spin Trade
#define PARTY_MENU_TYPE_MINIGAME 11
-#define PARTY_MENU_TYPE_STORE_PYRAMID_HELD_ITEMS 12
#define PARTY_ACTION_CHOOSE_MON 0
#define PARTY_ACTION_SEND_OUT 1
diff --git a/include/constants/region_map.h b/include/constants/region_map_sections.h
index 78dab242c..4f60212db 100644
--- a/include/constants/region_map.h
+++ b/include/constants/region_map_sections.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_CONSTANTS_REGION_MAP_H
-#define GUARD_CONSTANTS_REGION_MAP_H
+#ifndef GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
+#define GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
#define MAPSEC_LITTLEROOT_TOWN 0x00
#define MAPSEC_OLDALE_TOWN 0x01
@@ -210,4 +210,4 @@
#define METLOC_IN_GAME_TRADE 0xFE
#define METLOC_FATEFUL_ENCOUNTER 0xFF
-#endif //GUARD_CONSTANTS_REGION_MAP_H
+#endif //GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
diff --git a/include/constants/species.h b/include/constants/species.h
index bedb1282d..89da836f7 100644
--- a/include/constants/species.h
+++ b/include/constants/species.h
@@ -705,583 +705,582 @@
#define NATIONAL_DEX_HO_OH 250
#define NATIONAL_DEX_CELEBI 251
-#define NATIONAL_DEX_OLD_UNOWN_B 387
-#define NATIONAL_DEX_OLD_UNOWN_C 388
-#define NATIONAL_DEX_OLD_UNOWN_D 389
-#define NATIONAL_DEX_OLD_UNOWN_E 390
-#define NATIONAL_DEX_OLD_UNOWN_F 391
-#define NATIONAL_DEX_OLD_UNOWN_G 392
-#define NATIONAL_DEX_OLD_UNOWN_H 393
-#define NATIONAL_DEX_OLD_UNOWN_I 394
-#define NATIONAL_DEX_OLD_UNOWN_J 395
-#define NATIONAL_DEX_OLD_UNOWN_K 396
-#define NATIONAL_DEX_OLD_UNOWN_L 397
-#define NATIONAL_DEX_OLD_UNOWN_M 398
-#define NATIONAL_DEX_OLD_UNOWN_N 399
-#define NATIONAL_DEX_OLD_UNOWN_O 400
-#define NATIONAL_DEX_OLD_UNOWN_P 401
-#define NATIONAL_DEX_OLD_UNOWN_Q 402
-#define NATIONAL_DEX_OLD_UNOWN_R 403
-#define NATIONAL_DEX_OLD_UNOWN_S 404
-#define NATIONAL_DEX_OLD_UNOWN_T 405
-#define NATIONAL_DEX_OLD_UNOWN_U 406
-#define NATIONAL_DEX_OLD_UNOWN_V 407
-#define NATIONAL_DEX_OLD_UNOWN_W 408
-#define NATIONAL_DEX_OLD_UNOWN_X 409
-#define NATIONAL_DEX_OLD_UNOWN_Y 410
-#define NATIONAL_DEX_OLD_UNOWN_Z 411
-
-#define NATIONAL_DEX_TREECKO 252
-#define NATIONAL_DEX_GROVYLE 253
-#define NATIONAL_DEX_SCEPTILE 254
-#define NATIONAL_DEX_TORCHIC 255
-#define NATIONAL_DEX_COMBUSKEN 256
-#define NATIONAL_DEX_BLAZIKEN 257
-#define NATIONAL_DEX_MUDKIP 258
-#define NATIONAL_DEX_MARSHTOMP 259
-#define NATIONAL_DEX_SWAMPERT 260
-#define NATIONAL_DEX_POOCHYENA 261
-#define NATIONAL_DEX_MIGHTYENA 262
-#define NATIONAL_DEX_ZIGZAGOON 263
-#define NATIONAL_DEX_LINOONE 264
-#define NATIONAL_DEX_WURMPLE 265
-#define NATIONAL_DEX_SILCOON 266
-#define NATIONAL_DEX_BEAUTIFLY 267
-#define NATIONAL_DEX_CASCOON 268
-#define NATIONAL_DEX_DUSTOX 269
-#define NATIONAL_DEX_LOTAD 270
-#define NATIONAL_DEX_LOMBRE 271
-#define NATIONAL_DEX_LUDICOLO 272
-#define NATIONAL_DEX_SEEDOT 273
-#define NATIONAL_DEX_NUZLEAF 274
-#define NATIONAL_DEX_SHIFTRY 275
-#define NATIONAL_DEX_NINCADA 290
-#define NATIONAL_DEX_NINJASK 291
-#define NATIONAL_DEX_SHEDINJA 292
-#define NATIONAL_DEX_TAILLOW 276
-#define NATIONAL_DEX_SWELLOW 277
-#define NATIONAL_DEX_SHROOMISH 285
-#define NATIONAL_DEX_BRELOOM 286
-#define NATIONAL_DEX_SPINDA 327
-#define NATIONAL_DEX_WINGULL 278
-#define NATIONAL_DEX_PELIPPER 279
-#define NATIONAL_DEX_SURSKIT 283
+#define NATIONAL_DEX_TREECKO 252
+#define NATIONAL_DEX_GROVYLE 253
+#define NATIONAL_DEX_SCEPTILE 254
+#define NATIONAL_DEX_TORCHIC 255
+#define NATIONAL_DEX_COMBUSKEN 256
+#define NATIONAL_DEX_BLAZIKEN 257
+#define NATIONAL_DEX_MUDKIP 258
+#define NATIONAL_DEX_MARSHTOMP 259
+#define NATIONAL_DEX_SWAMPERT 260
+#define NATIONAL_DEX_POOCHYENA 261
+#define NATIONAL_DEX_MIGHTYENA 262
+#define NATIONAL_DEX_ZIGZAGOON 263
+#define NATIONAL_DEX_LINOONE 264
+#define NATIONAL_DEX_WURMPLE 265
+#define NATIONAL_DEX_SILCOON 266
+#define NATIONAL_DEX_BEAUTIFLY 267
+#define NATIONAL_DEX_CASCOON 268
+#define NATIONAL_DEX_DUSTOX 269
+#define NATIONAL_DEX_LOTAD 270
+#define NATIONAL_DEX_LOMBRE 271
+#define NATIONAL_DEX_LUDICOLO 272
+#define NATIONAL_DEX_SEEDOT 273
+#define NATIONAL_DEX_NUZLEAF 274
+#define NATIONAL_DEX_SHIFTRY 275
+#define NATIONAL_DEX_TAILLOW 276
+#define NATIONAL_DEX_SWELLOW 277
+#define NATIONAL_DEX_WINGULL 278
+#define NATIONAL_DEX_PELIPPER 279
+#define NATIONAL_DEX_RALTS 280
+#define NATIONAL_DEX_KIRLIA 281
+#define NATIONAL_DEX_GARDEVOIR 282
+#define NATIONAL_DEX_SURSKIT 283
#define NATIONAL_DEX_MASQUERAIN 284
-#define NATIONAL_DEX_WAILMER 320
-#define NATIONAL_DEX_WAILORD 321
-#define NATIONAL_DEX_SKITTY 300
-#define NATIONAL_DEX_DELCATTY 301
-#define NATIONAL_DEX_KECLEON 352
-#define NATIONAL_DEX_BALTOY 343
-#define NATIONAL_DEX_CLAYDOL 344
-#define NATIONAL_DEX_NOSEPASS 299
-#define NATIONAL_DEX_TORKOAL 324
-#define NATIONAL_DEX_SABLEYE 302
-#define NATIONAL_DEX_BARBOACH 339
-#define NATIONAL_DEX_WHISCASH 340
-#define NATIONAL_DEX_LUVDISC 370
-#define NATIONAL_DEX_CORPHISH 341
-#define NATIONAL_DEX_CRAWDAUNT 342
-#define NATIONAL_DEX_FEEBAS 349
-#define NATIONAL_DEX_MILOTIC 350
-#define NATIONAL_DEX_CARVANHA 318
-#define NATIONAL_DEX_SHARPEDO 319
-#define NATIONAL_DEX_TRAPINCH 328
-#define NATIONAL_DEX_VIBRAVA 329
-#define NATIONAL_DEX_FLYGON 330
-#define NATIONAL_DEX_MAKUHITA 296
-#define NATIONAL_DEX_HARIYAMA 297
-#define NATIONAL_DEX_ELECTRIKE 309
-#define NATIONAL_DEX_MANECTRIC 310
-#define NATIONAL_DEX_NUMEL 322
-#define NATIONAL_DEX_CAMERUPT 323
-#define NATIONAL_DEX_SPHEAL 363
-#define NATIONAL_DEX_SEALEO 364
-#define NATIONAL_DEX_WALREIN 365
-#define NATIONAL_DEX_CACNEA 331
-#define NATIONAL_DEX_CACTURNE 332
-#define NATIONAL_DEX_SNORUNT 361
-#define NATIONAL_DEX_GLALIE 362
-#define NATIONAL_DEX_LUNATONE 337
-#define NATIONAL_DEX_SOLROCK 338
-#define NATIONAL_DEX_AZURILL 298
-#define NATIONAL_DEX_SPOINK 325
-#define NATIONAL_DEX_GRUMPIG 326
-#define NATIONAL_DEX_PLUSLE 311
-#define NATIONAL_DEX_MINUN 312
-#define NATIONAL_DEX_MAWILE 303
-#define NATIONAL_DEX_MEDITITE 307
-#define NATIONAL_DEX_MEDICHAM 308
-#define NATIONAL_DEX_SWABLU 333
-#define NATIONAL_DEX_ALTARIA 334
-#define NATIONAL_DEX_WYNAUT 360
-#define NATIONAL_DEX_DUSKULL 355
-#define NATIONAL_DEX_DUSCLOPS 356
-#define NATIONAL_DEX_ROSELIA 315
-#define NATIONAL_DEX_SLAKOTH 287
-#define NATIONAL_DEX_VIGOROTH 288
-#define NATIONAL_DEX_SLAKING 289
-#define NATIONAL_DEX_GULPIN 316
-#define NATIONAL_DEX_SWALOT 317
-#define NATIONAL_DEX_TROPIUS 357
-#define NATIONAL_DEX_WHISMUR 293
-#define NATIONAL_DEX_LOUDRED 294
-#define NATIONAL_DEX_EXPLOUD 295
-#define NATIONAL_DEX_CLAMPERL 366
-#define NATIONAL_DEX_HUNTAIL 367
-#define NATIONAL_DEX_GOREBYSS 368
-#define NATIONAL_DEX_ABSOL 359
-#define NATIONAL_DEX_SHUPPET 353
-#define NATIONAL_DEX_BANETTE 354
-#define NATIONAL_DEX_SEVIPER 336
-#define NATIONAL_DEX_ZANGOOSE 335
-#define NATIONAL_DEX_RELICANTH 369
-#define NATIONAL_DEX_ARON 304
-#define NATIONAL_DEX_LAIRON 305
-#define NATIONAL_DEX_AGGRON 306
-#define NATIONAL_DEX_CASTFORM 351
-#define NATIONAL_DEX_VOLBEAT 313
-#define NATIONAL_DEX_ILLUMISE 314
-#define NATIONAL_DEX_LILEEP 345
-#define NATIONAL_DEX_CRADILY 346
-#define NATIONAL_DEX_ANORITH 347
-#define NATIONAL_DEX_ARMALDO 348
-#define NATIONAL_DEX_RALTS 280
-#define NATIONAL_DEX_KIRLIA 281
-#define NATIONAL_DEX_GARDEVOIR 282
-#define NATIONAL_DEX_BAGON 371
-#define NATIONAL_DEX_SHELGON 372
-#define NATIONAL_DEX_SALAMENCE 373
-#define NATIONAL_DEX_BELDUM 374
-#define NATIONAL_DEX_METANG 375
-#define NATIONAL_DEX_METAGROSS 376
-#define NATIONAL_DEX_REGIROCK 377
-#define NATIONAL_DEX_REGICE 378
-#define NATIONAL_DEX_REGISTEEL 379
-#define NATIONAL_DEX_KYOGRE 382
-#define NATIONAL_DEX_GROUDON 383
-#define NATIONAL_DEX_RAYQUAZA 384
-#define NATIONAL_DEX_LATIAS 380
-#define NATIONAL_DEX_LATIOS 381
-#define NATIONAL_DEX_JIRACHI 385
-#define NATIONAL_DEX_DEOXYS 386
-#define NATIONAL_DEX_CHIMECHO 358
+#define NATIONAL_DEX_SHROOMISH 285
+#define NATIONAL_DEX_BRELOOM 286
+#define NATIONAL_DEX_SLAKOTH 287
+#define NATIONAL_DEX_VIGOROTH 288
+#define NATIONAL_DEX_SLAKING 289
+#define NATIONAL_DEX_NINCADA 290
+#define NATIONAL_DEX_NINJASK 291
+#define NATIONAL_DEX_SHEDINJA 292
+#define NATIONAL_DEX_WHISMUR 293
+#define NATIONAL_DEX_LOUDRED 294
+#define NATIONAL_DEX_EXPLOUD 295
+#define NATIONAL_DEX_MAKUHITA 296
+#define NATIONAL_DEX_HARIYAMA 297
+#define NATIONAL_DEX_AZURILL 298
+#define NATIONAL_DEX_NOSEPASS 299
+#define NATIONAL_DEX_SKITTY 300
+#define NATIONAL_DEX_DELCATTY 301
+#define NATIONAL_DEX_SABLEYE 302
+#define NATIONAL_DEX_MAWILE 303
+#define NATIONAL_DEX_ARON 304
+#define NATIONAL_DEX_LAIRON 305
+#define NATIONAL_DEX_AGGRON 306
+#define NATIONAL_DEX_MEDITITE 307
+#define NATIONAL_DEX_MEDICHAM 308
+#define NATIONAL_DEX_ELECTRIKE 309
+#define NATIONAL_DEX_MANECTRIC 310
+#define NATIONAL_DEX_PLUSLE 311
+#define NATIONAL_DEX_MINUN 312
+#define NATIONAL_DEX_VOLBEAT 313
+#define NATIONAL_DEX_ILLUMISE 314
+#define NATIONAL_DEX_ROSELIA 315
+#define NATIONAL_DEX_GULPIN 316
+#define NATIONAL_DEX_SWALOT 317
+#define NATIONAL_DEX_CARVANHA 318
+#define NATIONAL_DEX_SHARPEDO 319
+#define NATIONAL_DEX_WAILMER 320
+#define NATIONAL_DEX_WAILORD 321
+#define NATIONAL_DEX_NUMEL 322
+#define NATIONAL_DEX_CAMERUPT 323
+#define NATIONAL_DEX_TORKOAL 324
+#define NATIONAL_DEX_SPOINK 325
+#define NATIONAL_DEX_GRUMPIG 326
+#define NATIONAL_DEX_SPINDA 327
+#define NATIONAL_DEX_TRAPINCH 328
+#define NATIONAL_DEX_VIBRAVA 329
+#define NATIONAL_DEX_FLYGON 330
+#define NATIONAL_DEX_CACNEA 331
+#define NATIONAL_DEX_CACTURNE 332
+#define NATIONAL_DEX_SWABLU 333
+#define NATIONAL_DEX_ALTARIA 334
+#define NATIONAL_DEX_ZANGOOSE 335
+#define NATIONAL_DEX_SEVIPER 336
+#define NATIONAL_DEX_LUNATONE 337
+#define NATIONAL_DEX_SOLROCK 338
+#define NATIONAL_DEX_BARBOACH 339
+#define NATIONAL_DEX_WHISCASH 340
+#define NATIONAL_DEX_CORPHISH 341
+#define NATIONAL_DEX_CRAWDAUNT 342
+#define NATIONAL_DEX_BALTOY 343
+#define NATIONAL_DEX_CLAYDOL 344
+#define NATIONAL_DEX_LILEEP 345
+#define NATIONAL_DEX_CRADILY 346
+#define NATIONAL_DEX_ANORITH 347
+#define NATIONAL_DEX_ARMALDO 348
+#define NATIONAL_DEX_FEEBAS 349
+#define NATIONAL_DEX_MILOTIC 350
+#define NATIONAL_DEX_CASTFORM 351
+#define NATIONAL_DEX_KECLEON 352
+#define NATIONAL_DEX_SHUPPET 353
+#define NATIONAL_DEX_BANETTE 354
+#define NATIONAL_DEX_DUSKULL 355
+#define NATIONAL_DEX_DUSCLOPS 356
+#define NATIONAL_DEX_TROPIUS 357
+#define NATIONAL_DEX_CHIMECHO 358
+#define NATIONAL_DEX_ABSOL 359
+#define NATIONAL_DEX_WYNAUT 360
+#define NATIONAL_DEX_SNORUNT 361
+#define NATIONAL_DEX_GLALIE 362
+#define NATIONAL_DEX_SPHEAL 363
+#define NATIONAL_DEX_SEALEO 364
+#define NATIONAL_DEX_WALREIN 365
+#define NATIONAL_DEX_CLAMPERL 366
+#define NATIONAL_DEX_HUNTAIL 367
+#define NATIONAL_DEX_GOREBYSS 368
+#define NATIONAL_DEX_RELICANTH 369
+#define NATIONAL_DEX_LUVDISC 370
+#define NATIONAL_DEX_BAGON 371
+#define NATIONAL_DEX_SHELGON 372
+#define NATIONAL_DEX_SALAMENCE 373
+#define NATIONAL_DEX_BELDUM 374
+#define NATIONAL_DEX_METANG 375
+#define NATIONAL_DEX_METAGROSS 376
+#define NATIONAL_DEX_REGIROCK 377
+#define NATIONAL_DEX_REGICE 378
+#define NATIONAL_DEX_REGISTEEL 379
+#define NATIONAL_DEX_LATIAS 380
+#define NATIONAL_DEX_LATIOS 381
+#define NATIONAL_DEX_KYOGRE 382
+#define NATIONAL_DEX_GROUDON 383
+#define NATIONAL_DEX_RAYQUAZA 384
+#define NATIONAL_DEX_JIRACHI 385
+#define NATIONAL_DEX_DEOXYS 386
-// Hoenn Dex Index Defines
+#define NATIONAL_DEX_OLD_UNOWN_B 387
+#define NATIONAL_DEX_OLD_UNOWN_C 388
+#define NATIONAL_DEX_OLD_UNOWN_D 389
+#define NATIONAL_DEX_OLD_UNOWN_E 390
+#define NATIONAL_DEX_OLD_UNOWN_F 391
+#define NATIONAL_DEX_OLD_UNOWN_G 392
+#define NATIONAL_DEX_OLD_UNOWN_H 393
+#define NATIONAL_DEX_OLD_UNOWN_I 394
+#define NATIONAL_DEX_OLD_UNOWN_J 395
+#define NATIONAL_DEX_OLD_UNOWN_K 396
+#define NATIONAL_DEX_OLD_UNOWN_L 397
+#define NATIONAL_DEX_OLD_UNOWN_M 398
+#define NATIONAL_DEX_OLD_UNOWN_N 399
+#define NATIONAL_DEX_OLD_UNOWN_O 400
+#define NATIONAL_DEX_OLD_UNOWN_P 401
+#define NATIONAL_DEX_OLD_UNOWN_Q 402
+#define NATIONAL_DEX_OLD_UNOWN_R 403
+#define NATIONAL_DEX_OLD_UNOWN_S 404
+#define NATIONAL_DEX_OLD_UNOWN_T 405
+#define NATIONAL_DEX_OLD_UNOWN_U 406
+#define NATIONAL_DEX_OLD_UNOWN_V 407
+#define NATIONAL_DEX_OLD_UNOWN_W 408
+#define NATIONAL_DEX_OLD_UNOWN_X 409
+#define NATIONAL_DEX_OLD_UNOWN_Y 410
+#define NATIONAL_DEX_OLD_UNOWN_Z 411
-#define HOENN_DEX_NONE 0
-#define HOENN_DEX_BULBASAUR 203
-#define HOENN_DEX_IVYSAUR 204
-#define HOENN_DEX_VENUSAUR 205
-#define HOENN_DEX_CHARMANDER 206
-#define HOENN_DEX_CHARMELEON 207
-#define HOENN_DEX_CHARIZARD 208
-#define HOENN_DEX_SQUIRTLE 209
-#define HOENN_DEX_WARTORTLE 210
-#define HOENN_DEX_BLASTOISE 211
-#define HOENN_DEX_CATERPIE 212
-#define HOENN_DEX_METAPOD 213
-#define HOENN_DEX_BUTTERFREE 214
-#define HOENN_DEX_WEEDLE 215
-#define HOENN_DEX_KAKUNA 216
-#define HOENN_DEX_BEEDRILL 217
-#define HOENN_DEX_PIDGEY 218
-#define HOENN_DEX_PIDGEOTTO 219
-#define HOENN_DEX_PIDGEOT 220
-#define HOENN_DEX_RATTATA 221
-#define HOENN_DEX_RATICATE 222
-#define HOENN_DEX_SPEAROW 223
-#define HOENN_DEX_FEAROW 224
-#define HOENN_DEX_EKANS 225
-#define HOENN_DEX_ARBOK 226
-#define HOENN_DEX_PIKACHU 156
-#define HOENN_DEX_RAICHU 157
-#define HOENN_DEX_SANDSHREW 112
-#define HOENN_DEX_SANDSLASH 113
-#define HOENN_DEX_NIDORAN_F 227
-#define HOENN_DEX_NIDORINA 228
-#define HOENN_DEX_NIDOQUEEN 229
-#define HOENN_DEX_NIDORAN_M 230
-#define HOENN_DEX_NIDORINO 231
-#define HOENN_DEX_NIDOKING 232
-#define HOENN_DEX_CLEFAIRY 233
-#define HOENN_DEX_CLEFABLE 234
-#define HOENN_DEX_VULPIX 153
-#define HOENN_DEX_NINETALES 154
-#define HOENN_DEX_JIGGLYPUFF 138
-#define HOENN_DEX_WIGGLYTUFF 139
-#define HOENN_DEX_ZUBAT 63
-#define HOENN_DEX_GOLBAT 64
-#define HOENN_DEX_ODDISH 88
-#define HOENN_DEX_GLOOM 89
-#define HOENN_DEX_VILEPLUME 90
-#define HOENN_DEX_PARAS 235
-#define HOENN_DEX_PARASECT 236
-#define HOENN_DEX_VENONAT 237
-#define HOENN_DEX_VENOMOTH 238
-#define HOENN_DEX_DIGLETT 239
-#define HOENN_DEX_DUGTRIO 240
-#define HOENN_DEX_MEOWTH 241
-#define HOENN_DEX_PERSIAN 242
-#define HOENN_DEX_PSYDUCK 158
-#define HOENN_DEX_GOLDUCK 159
-#define HOENN_DEX_MANKEY 243
-#define HOENN_DEX_PRIMEAPE 244
-#define HOENN_DEX_GROWLITHE 245
-#define HOENN_DEX_ARCANINE 246
-#define HOENN_DEX_POLIWAG 247
-#define HOENN_DEX_POLIWHIRL 248
-#define HOENN_DEX_POLIWRATH 249
-#define HOENN_DEX_ABRA 39
-#define HOENN_DEX_KADABRA 40
-#define HOENN_DEX_ALAKAZAM 41
-#define HOENN_DEX_MACHOP 73
-#define HOENN_DEX_MACHOKE 74
-#define HOENN_DEX_MACHAMP 75
-#define HOENN_DEX_BELLSPROUT 250
-#define HOENN_DEX_WEEPINBELL 251
-#define HOENN_DEX_VICTREEBEL 252
-#define HOENN_DEX_TENTACOOL 66
-#define HOENN_DEX_TENTACRUEL 67
-#define HOENN_DEX_GEODUDE 57
-#define HOENN_DEX_GRAVELER 58
-#define HOENN_DEX_GOLEM 59
-#define HOENN_DEX_PONYTA 253
-#define HOENN_DEX_RAPIDASH 254
-#define HOENN_DEX_SLOWPOKE 255
-#define HOENN_DEX_SLOWBRO 256
-#define HOENN_DEX_MAGNEMITE 82
-#define HOENN_DEX_MAGNETON 83
-#define HOENN_DEX_FARFETCHD 257
-#define HOENN_DEX_DODUO 92
-#define HOENN_DEX_DODRIO 93
-#define HOENN_DEX_SEEL 258
-#define HOENN_DEX_DEWGONG 259
-#define HOENN_DEX_GRIMER 106
-#define HOENN_DEX_MUK 107
-#define HOENN_DEX_SHELLDER 260
-#define HOENN_DEX_CLOYSTER 261
-#define HOENN_DEX_GASTLY 262
-#define HOENN_DEX_HAUNTER 263
-#define HOENN_DEX_GENGAR 264
-#define HOENN_DEX_ONIX 265
-#define HOENN_DEX_DROWZEE 266
-#define HOENN_DEX_HYPNO 267
-#define HOENN_DEX_KRABBY 268
-#define HOENN_DEX_KINGLER 269
-#define HOENN_DEX_VOLTORB 84
-#define HOENN_DEX_ELECTRODE 85
-#define HOENN_DEX_EXEGGCUTE 270
-#define HOENN_DEX_EXEGGUTOR 271
-#define HOENN_DEX_CUBONE 272
-#define HOENN_DEX_MAROWAK 273
-#define HOENN_DEX_HITMONLEE 274
-#define HOENN_DEX_HITMONCHAN 275
-#define HOENN_DEX_LICKITUNG 276
-#define HOENN_DEX_KOFFING 108
-#define HOENN_DEX_WEEZING 109
-#define HOENN_DEX_RHYHORN 169
-#define HOENN_DEX_RHYDON 170
-#define HOENN_DEX_CHANSEY 277
-#define HOENN_DEX_TANGELA 278
-#define HOENN_DEX_KANGASKHAN 279
-#define HOENN_DEX_HORSEA 184
-#define HOENN_DEX_SEADRA 185
-#define HOENN_DEX_GOLDEEN 50
-#define HOENN_DEX_SEAKING 51
-#define HOENN_DEX_STARYU 143
-#define HOENN_DEX_STARMIE 144
-#define HOENN_DEX_MR_MIME 280
-#define HOENN_DEX_SCYTHER 281
-#define HOENN_DEX_JYNX 282
-#define HOENN_DEX_ELECTABUZZ 283
-#define HOENN_DEX_MAGMAR 284
-#define HOENN_DEX_PINSIR 167
-#define HOENN_DEX_TAUROS 285
-#define HOENN_DEX_MAGIKARP 52
-#define HOENN_DEX_GYARADOS 53
-#define HOENN_DEX_LAPRAS 286
-#define HOENN_DEX_DITTO 287
-#define HOENN_DEX_EEVEE 288
-#define HOENN_DEX_VAPOREON 289
-#define HOENN_DEX_JOLTEON 290
-#define HOENN_DEX_FLAREON 291
-#define HOENN_DEX_PORYGON 292
-#define HOENN_DEX_OMANYTE 293
-#define HOENN_DEX_OMASTAR 294
-#define HOENN_DEX_KABUTO 295
-#define HOENN_DEX_KABUTOPS 296
-#define HOENN_DEX_AERODACTYL 297
-#define HOENN_DEX_SNORLAX 298
-#define HOENN_DEX_ARTICUNO 299
-#define HOENN_DEX_ZAPDOS 300
-#define HOENN_DEX_MOLTRES 301
-#define HOENN_DEX_DRATINI 302
-#define HOENN_DEX_DRAGONAIR 303
-#define HOENN_DEX_DRAGONITE 304
-#define HOENN_DEX_MEWTWO 305
-#define HOENN_DEX_MEW 306
-#define HOENN_DEX_CHIKORITA 307
-#define HOENN_DEX_BAYLEEF 308
-#define HOENN_DEX_MEGANIUM 309
-#define HOENN_DEX_CYNDAQUIL 310
-#define HOENN_DEX_QUILAVA 311
-#define HOENN_DEX_TYPHLOSION 312
-#define HOENN_DEX_TOTODILE 313
-#define HOENN_DEX_CROCONAW 314
-#define HOENN_DEX_FERALIGATR 315
-#define HOENN_DEX_SENTRET 316
-#define HOENN_DEX_FURRET 317
-#define HOENN_DEX_HOOTHOOT 318
-#define HOENN_DEX_NOCTOWL 319
-#define HOENN_DEX_LEDYBA 320
-#define HOENN_DEX_LEDIAN 321
-#define HOENN_DEX_SPINARAK 322
-#define HOENN_DEX_ARIADOS 323
-#define HOENN_DEX_CROBAT 65
-#define HOENN_DEX_CHINCHOU 181
-#define HOENN_DEX_LANTURN 182
-#define HOENN_DEX_PICHU 155
-#define HOENN_DEX_CLEFFA 324
-#define HOENN_DEX_IGGLYBUFF 137
-#define HOENN_DEX_TOGEPI 325
-#define HOENN_DEX_TOGETIC 326
-#define HOENN_DEX_NATU 162
-#define HOENN_DEX_XATU 163
-#define HOENN_DEX_MAREEP 327
-#define HOENN_DEX_FLAAFFY 328
-#define HOENN_DEX_AMPHAROS 329
-#define HOENN_DEX_BELLOSSOM 91
-#define HOENN_DEX_MARILL 55
-#define HOENN_DEX_AZUMARILL 56
-#define HOENN_DEX_SUDOWOODO 330
-#define HOENN_DEX_POLITOED 331
-#define HOENN_DEX_HOPPIP 332
-#define HOENN_DEX_SKIPLOOM 333
-#define HOENN_DEX_JUMPLUFF 334
-#define HOENN_DEX_AIPOM 335
-#define HOENN_DEX_SUNKERN 336
-#define HOENN_DEX_SUNFLORA 337
-#define HOENN_DEX_YANMA 338
-#define HOENN_DEX_WOOPER 339
-#define HOENN_DEX_QUAGSIRE 340
-#define HOENN_DEX_ESPEON 341
-#define HOENN_DEX_UMBREON 342
-#define HOENN_DEX_MURKROW 343
-#define HOENN_DEX_SLOWKING 344
-#define HOENN_DEX_MISDREAVUS 345
-#define HOENN_DEX_UNOWN 346
-#define HOENN_DEX_WOBBUFFET 161
-#define HOENN_DEX_GIRAFARIG 164
-#define HOENN_DEX_PINECO 347
-#define HOENN_DEX_FORRETRESS 348
-#define HOENN_DEX_DUNSPARCE 349
-#define HOENN_DEX_GLIGAR 350
-#define HOENN_DEX_STEELIX 351
-#define HOENN_DEX_SNUBBULL 352
-#define HOENN_DEX_GRANBULL 353
-#define HOENN_DEX_QWILFISH 354
-#define HOENN_DEX_SCIZOR 355
-#define HOENN_DEX_SHUCKLE 356
-#define HOENN_DEX_HERACROSS 168
-#define HOENN_DEX_SNEASEL 357
-#define HOENN_DEX_TEDDIURSA 358
-#define HOENN_DEX_URSARING 359
-#define HOENN_DEX_SLUGMA 103
-#define HOENN_DEX_MAGCARGO 104
-#define HOENN_DEX_SWINUB 360
-#define HOENN_DEX_PILOSWINE 361
-#define HOENN_DEX_CORSOLA 180
-#define HOENN_DEX_REMORAID 362
-#define HOENN_DEX_OCTILLERY 363
-#define HOENN_DEX_DELIBIRD 364
-#define HOENN_DEX_MANTINE 365
-#define HOENN_DEX_SKARMORY 115
-#define HOENN_DEX_HOUNDOUR 366
-#define HOENN_DEX_HOUNDOOM 367
-#define HOENN_DEX_KINGDRA 186
-#define HOENN_DEX_PHANPY 165
-#define HOENN_DEX_DONPHAN 166
-#define HOENN_DEX_PORYGON2 368
-#define HOENN_DEX_STANTLER 369
-#define HOENN_DEX_SMEARGLE 370
-#define HOENN_DEX_TYROGUE 371
-#define HOENN_DEX_HITMONTOP 372
-#define HOENN_DEX_SMOOCHUM 373
-#define HOENN_DEX_ELEKID 374
-#define HOENN_DEX_MAGBY 375
-#define HOENN_DEX_MILTANK 376
-#define HOENN_DEX_BLISSEY 377
-#define HOENN_DEX_RAIKOU 378
-#define HOENN_DEX_ENTEI 379
-#define HOENN_DEX_SUICUNE 380
-#define HOENN_DEX_LARVITAR 381
-#define HOENN_DEX_PUPITAR 382
-#define HOENN_DEX_TYRANITAR 383
-#define HOENN_DEX_LUGIA 384
-#define HOENN_DEX_HO_OH 385
-#define HOENN_DEX_CELEBI 386
+// Hoenn Dex Index Defines
+#define HOENN_DEX_NONE 0
+#define HOENN_DEX_TREECKO 1
+#define HOENN_DEX_GROVYLE 2
+#define HOENN_DEX_SCEPTILE 3
+#define HOENN_DEX_TORCHIC 4
+#define HOENN_DEX_COMBUSKEN 5
+#define HOENN_DEX_BLAZIKEN 6
+#define HOENN_DEX_MUDKIP 7
+#define HOENN_DEX_MARSHTOMP 8
+#define HOENN_DEX_SWAMPERT 9
+#define HOENN_DEX_POOCHYENA 10
+#define HOENN_DEX_MIGHTYENA 11
+#define HOENN_DEX_ZIGZAGOON 12
+#define HOENN_DEX_LINOONE 13
+#define HOENN_DEX_WURMPLE 14
+#define HOENN_DEX_SILCOON 15
+#define HOENN_DEX_BEAUTIFLY 16
+#define HOENN_DEX_CASCOON 17
+#define HOENN_DEX_DUSTOX 18
+#define HOENN_DEX_LOTAD 19
+#define HOENN_DEX_LOMBRE 20
+#define HOENN_DEX_LUDICOLO 21
+#define HOENN_DEX_SEEDOT 22
+#define HOENN_DEX_NUZLEAF 23
+#define HOENN_DEX_SHIFTRY 24
+#define HOENN_DEX_TAILLOW 25
+#define HOENN_DEX_SWELLOW 26
+#define HOENN_DEX_WINGULL 27
+#define HOENN_DEX_PELIPPER 28
+#define HOENN_DEX_RALTS 29
+#define HOENN_DEX_KIRLIA 30
+#define HOENN_DEX_GARDEVOIR 31
+#define HOENN_DEX_SURSKIT 32
+#define HOENN_DEX_MASQUERAIN 33
+#define HOENN_DEX_SHROOMISH 34
+#define HOENN_DEX_BRELOOM 35
+#define HOENN_DEX_SLAKOTH 36
+#define HOENN_DEX_VIGOROTH 37
+#define HOENN_DEX_SLAKING 38
+#define HOENN_DEX_ABRA 39
+#define HOENN_DEX_KADABRA 40
+#define HOENN_DEX_ALAKAZAM 41
+#define HOENN_DEX_NINCADA 42
+#define HOENN_DEX_NINJASK 43
+#define HOENN_DEX_SHEDINJA 44
+#define HOENN_DEX_WHISMUR 45
+#define HOENN_DEX_LOUDRED 46
+#define HOENN_DEX_EXPLOUD 47
+#define HOENN_DEX_MAKUHITA 48
+#define HOENN_DEX_HARIYAMA 49
+#define HOENN_DEX_GOLDEEN 50
+#define HOENN_DEX_SEAKING 51
+#define HOENN_DEX_MAGIKARP 52
+#define HOENN_DEX_GYARADOS 53
+#define HOENN_DEX_AZURILL 54
+#define HOENN_DEX_MARILL 55
+#define HOENN_DEX_AZUMARILL 56
+#define HOENN_DEX_GEODUDE 57
+#define HOENN_DEX_GRAVELER 58
+#define HOENN_DEX_GOLEM 59
+#define HOENN_DEX_NOSEPASS 60
+#define HOENN_DEX_SKITTY 61
+#define HOENN_DEX_DELCATTY 62
+#define HOENN_DEX_ZUBAT 63
+#define HOENN_DEX_GOLBAT 64
+#define HOENN_DEX_CROBAT 65
+#define HOENN_DEX_TENTACOOL 66
+#define HOENN_DEX_TENTACRUEL 67
+#define HOENN_DEX_SABLEYE 68
+#define HOENN_DEX_MAWILE 69
+#define HOENN_DEX_ARON 70
+#define HOENN_DEX_LAIRON 71
+#define HOENN_DEX_AGGRON 72
+#define HOENN_DEX_MACHOP 73
+#define HOENN_DEX_MACHOKE 74
+#define HOENN_DEX_MACHAMP 75
+#define HOENN_DEX_MEDITITE 76
+#define HOENN_DEX_MEDICHAM 77
+#define HOENN_DEX_ELECTRIKE 78
+#define HOENN_DEX_MANECTRIC 79
+#define HOENN_DEX_PLUSLE 80
+#define HOENN_DEX_MINUN 81
+#define HOENN_DEX_MAGNEMITE 82
+#define HOENN_DEX_MAGNETON 83
+#define HOENN_DEX_VOLTORB 84
+#define HOENN_DEX_ELECTRODE 85
+#define HOENN_DEX_VOLBEAT 86
+#define HOENN_DEX_ILLUMISE 87
+#define HOENN_DEX_ODDISH 88
+#define HOENN_DEX_GLOOM 89
+#define HOENN_DEX_VILEPLUME 90
+#define HOENN_DEX_BELLOSSOM 91
+#define HOENN_DEX_DODUO 92
+#define HOENN_DEX_DODRIO 93
+#define HOENN_DEX_ROSELIA 94
+#define HOENN_DEX_GULPIN 95
+#define HOENN_DEX_SWALOT 96
+#define HOENN_DEX_CARVANHA 97
+#define HOENN_DEX_SHARPEDO 98
+#define HOENN_DEX_WAILMER 99
+#define HOENN_DEX_WAILORD 100
+#define HOENN_DEX_NUMEL 101
+#define HOENN_DEX_CAMERUPT 102
+#define HOENN_DEX_SLUGMA 103
+#define HOENN_DEX_MAGCARGO 104
+#define HOENN_DEX_TORKOAL 105
+#define HOENN_DEX_GRIMER 106
+#define HOENN_DEX_MUK 107
+#define HOENN_DEX_KOFFING 108
+#define HOENN_DEX_WEEZING 109
+#define HOENN_DEX_SPOINK 110
+#define HOENN_DEX_GRUMPIG 111
+#define HOENN_DEX_SANDSHREW 112
+#define HOENN_DEX_SANDSLASH 113
+#define HOENN_DEX_SPINDA 114
+#define HOENN_DEX_SKARMORY 115
+#define HOENN_DEX_TRAPINCH 116
+#define HOENN_DEX_VIBRAVA 117
+#define HOENN_DEX_FLYGON 118
+#define HOENN_DEX_CACNEA 119
+#define HOENN_DEX_CACTURNE 120
+#define HOENN_DEX_SWABLU 121
+#define HOENN_DEX_ALTARIA 122
+#define HOENN_DEX_ZANGOOSE 123
+#define HOENN_DEX_SEVIPER 124
+#define HOENN_DEX_LUNATONE 125
+#define HOENN_DEX_SOLROCK 126
+#define HOENN_DEX_BARBOACH 127
+#define HOENN_DEX_WHISCASH 128
+#define HOENN_DEX_CORPHISH 129
+#define HOENN_DEX_CRAWDAUNT 130
+#define HOENN_DEX_BALTOY 131
+#define HOENN_DEX_CLAYDOL 132
+#define HOENN_DEX_LILEEP 133
+#define HOENN_DEX_CRADILY 134
+#define HOENN_DEX_ANORITH 135
+#define HOENN_DEX_ARMALDO 136
+#define HOENN_DEX_IGGLYBUFF 137
+#define HOENN_DEX_JIGGLYPUFF 138
+#define HOENN_DEX_WIGGLYTUFF 139
+#define HOENN_DEX_FEEBAS 140
+#define HOENN_DEX_MILOTIC 141
+#define HOENN_DEX_CASTFORM 142
+#define HOENN_DEX_STARYU 143
+#define HOENN_DEX_STARMIE 144
+#define HOENN_DEX_KECLEON 145
+#define HOENN_DEX_SHUPPET 146
+#define HOENN_DEX_BANETTE 147
+#define HOENN_DEX_DUSKULL 148
+#define HOENN_DEX_DUSCLOPS 149
+#define HOENN_DEX_TROPIUS 150
+#define HOENN_DEX_CHIMECHO 151
+#define HOENN_DEX_ABSOL 152
+#define HOENN_DEX_VULPIX 153
+#define HOENN_DEX_NINETALES 154
+#define HOENN_DEX_PICHU 155
+#define HOENN_DEX_PIKACHU 156
+#define HOENN_DEX_RAICHU 157
+#define HOENN_DEX_PSYDUCK 158
+#define HOENN_DEX_GOLDUCK 159
+#define HOENN_DEX_WYNAUT 160
+#define HOENN_DEX_WOBBUFFET 161
+#define HOENN_DEX_NATU 162
+#define HOENN_DEX_XATU 163
+#define HOENN_DEX_GIRAFARIG 164
+#define HOENN_DEX_PHANPY 165
+#define HOENN_DEX_DONPHAN 166
+#define HOENN_DEX_PINSIR 167
+#define HOENN_DEX_HERACROSS 168
+#define HOENN_DEX_RHYHORN 169
+#define HOENN_DEX_RHYDON 170
+#define HOENN_DEX_SNORUNT 171
+#define HOENN_DEX_GLALIE 172
+#define HOENN_DEX_SPHEAL 173
+#define HOENN_DEX_SEALEO 174
+#define HOENN_DEX_WALREIN 175
+#define HOENN_DEX_CLAMPERL 176
+#define HOENN_DEX_HUNTAIL 177
+#define HOENN_DEX_GOREBYSS 178
+#define HOENN_DEX_RELICANTH 179
+#define HOENN_DEX_CORSOLA 180
+#define HOENN_DEX_CHINCHOU 181
+#define HOENN_DEX_LANTURN 182
+#define HOENN_DEX_LUVDISC 183
+#define HOENN_DEX_HORSEA 184
+#define HOENN_DEX_SEADRA 185
+#define HOENN_DEX_KINGDRA 186
+#define HOENN_DEX_BAGON 187
+#define HOENN_DEX_SHELGON 188
+#define HOENN_DEX_SALAMENCE 189
+#define HOENN_DEX_BELDUM 190
+#define HOENN_DEX_METANG 191
+#define HOENN_DEX_METAGROSS 192
+#define HOENN_DEX_REGIROCK 193
+#define HOENN_DEX_REGICE 194
+#define HOENN_DEX_REGISTEEL 195
+#define HOENN_DEX_LATIAS 196
+#define HOENN_DEX_LATIOS 197
+#define HOENN_DEX_KYOGRE 198
+#define HOENN_DEX_GROUDON 199
+#define HOENN_DEX_RAYQUAZA 200
+#define HOENN_DEX_JIRACHI 201
+#define HOENN_DEX_DEOXYS 202
-#define HOENN_DEX_OLD_UNOWN_B 387
-#define HOENN_DEX_OLD_UNOWN_C 388
-#define HOENN_DEX_OLD_UNOWN_D 389
-#define HOENN_DEX_OLD_UNOWN_E 390
-#define HOENN_DEX_OLD_UNOWN_F 391
-#define HOENN_DEX_OLD_UNOWN_G 392
-#define HOENN_DEX_OLD_UNOWN_H 393
-#define HOENN_DEX_OLD_UNOWN_I 394
-#define HOENN_DEX_OLD_UNOWN_J 395
-#define HOENN_DEX_OLD_UNOWN_K 396
-#define HOENN_DEX_OLD_UNOWN_L 397
-#define HOENN_DEX_OLD_UNOWN_M 398
-#define HOENN_DEX_OLD_UNOWN_N 399
-#define HOENN_DEX_OLD_UNOWN_O 400
-#define HOENN_DEX_OLD_UNOWN_P 401
-#define HOENN_DEX_OLD_UNOWN_Q 402
-#define HOENN_DEX_OLD_UNOWN_R 403
-#define HOENN_DEX_OLD_UNOWN_S 404
-#define HOENN_DEX_OLD_UNOWN_T 405
-#define HOENN_DEX_OLD_UNOWN_U 406
-#define HOENN_DEX_OLD_UNOWN_V 407
-#define HOENN_DEX_OLD_UNOWN_W 408
-#define HOENN_DEX_OLD_UNOWN_X 409
-#define HOENN_DEX_OLD_UNOWN_Y 410
-#define HOENN_DEX_OLD_UNOWN_Z 411
+#define HOENN_DEX_BULBASAUR 203
+#define HOENN_DEX_IVYSAUR 204
+#define HOENN_DEX_VENUSAUR 205
+#define HOENN_DEX_CHARMANDER 206
+#define HOENN_DEX_CHARMELEON 207
+#define HOENN_DEX_CHARIZARD 208
+#define HOENN_DEX_SQUIRTLE 209
+#define HOENN_DEX_WARTORTLE 210
+#define HOENN_DEX_BLASTOISE 211
+#define HOENN_DEX_CATERPIE 212
+#define HOENN_DEX_METAPOD 213
+#define HOENN_DEX_BUTTERFREE 214
+#define HOENN_DEX_WEEDLE 215
+#define HOENN_DEX_KAKUNA 216
+#define HOENN_DEX_BEEDRILL 217
+#define HOENN_DEX_PIDGEY 218
+#define HOENN_DEX_PIDGEOTTO 219
+#define HOENN_DEX_PIDGEOT 220
+#define HOENN_DEX_RATTATA 221
+#define HOENN_DEX_RATICATE 222
+#define HOENN_DEX_SPEAROW 223
+#define HOENN_DEX_FEAROW 224
+#define HOENN_DEX_EKANS 225
+#define HOENN_DEX_ARBOK 226
+#define HOENN_DEX_NIDORAN_F 227
+#define HOENN_DEX_NIDORINA 228
+#define HOENN_DEX_NIDOQUEEN 229
+#define HOENN_DEX_NIDORAN_M 230
+#define HOENN_DEX_NIDORINO 231
+#define HOENN_DEX_NIDOKING 232
+#define HOENN_DEX_CLEFAIRY 233
+#define HOENN_DEX_CLEFABLE 234
+#define HOENN_DEX_PARAS 235
+#define HOENN_DEX_PARASECT 236
+#define HOENN_DEX_VENONAT 237
+#define HOENN_DEX_VENOMOTH 238
+#define HOENN_DEX_DIGLETT 239
+#define HOENN_DEX_DUGTRIO 240
+#define HOENN_DEX_MEOWTH 241
+#define HOENN_DEX_PERSIAN 242
+#define HOENN_DEX_MANKEY 243
+#define HOENN_DEX_PRIMEAPE 244
+#define HOENN_DEX_GROWLITHE 245
+#define HOENN_DEX_ARCANINE 246
+#define HOENN_DEX_POLIWAG 247
+#define HOENN_DEX_POLIWHIRL 248
+#define HOENN_DEX_POLIWRATH 249
+#define HOENN_DEX_BELLSPROUT 250
+#define HOENN_DEX_WEEPINBELL 251
+#define HOENN_DEX_VICTREEBEL 252
+#define HOENN_DEX_PONYTA 253
+#define HOENN_DEX_RAPIDASH 254
+#define HOENN_DEX_SLOWPOKE 255
+#define HOENN_DEX_SLOWBRO 256
+#define HOENN_DEX_FARFETCHD 257
+#define HOENN_DEX_SEEL 258
+#define HOENN_DEX_DEWGONG 259
+#define HOENN_DEX_SHELLDER 260
+#define HOENN_DEX_CLOYSTER 261
+#define HOENN_DEX_GASTLY 262
+#define HOENN_DEX_HAUNTER 263
+#define HOENN_DEX_GENGAR 264
+#define HOENN_DEX_ONIX 265
+#define HOENN_DEX_DROWZEE 266
+#define HOENN_DEX_HYPNO 267
+#define HOENN_DEX_KRABBY 268
+#define HOENN_DEX_KINGLER 269
+#define HOENN_DEX_EXEGGCUTE 270
+#define HOENN_DEX_EXEGGUTOR 271
+#define HOENN_DEX_CUBONE 272
+#define HOENN_DEX_MAROWAK 273
+#define HOENN_DEX_HITMONLEE 274
+#define HOENN_DEX_HITMONCHAN 275
+#define HOENN_DEX_LICKITUNG 276
+#define HOENN_DEX_CHANSEY 277
+#define HOENN_DEX_TANGELA 278
+#define HOENN_DEX_KANGASKHAN 279
+#define HOENN_DEX_MR_MIME 280
+#define HOENN_DEX_SCYTHER 281
+#define HOENN_DEX_JYNX 282
+#define HOENN_DEX_ELECTABUZZ 283
+#define HOENN_DEX_MAGMAR 284
+#define HOENN_DEX_TAUROS 285
+#define HOENN_DEX_LAPRAS 286
+#define HOENN_DEX_DITTO 287
+#define HOENN_DEX_EEVEE 288
+#define HOENN_DEX_VAPOREON 289
+#define HOENN_DEX_JOLTEON 290
+#define HOENN_DEX_FLAREON 291
+#define HOENN_DEX_PORYGON 292
+#define HOENN_DEX_OMANYTE 293
+#define HOENN_DEX_OMASTAR 294
+#define HOENN_DEX_KABUTO 295
+#define HOENN_DEX_KABUTOPS 296
+#define HOENN_DEX_AERODACTYL 297
+#define HOENN_DEX_SNORLAX 298
+#define HOENN_DEX_ARTICUNO 299
+#define HOENN_DEX_ZAPDOS 300
+#define HOENN_DEX_MOLTRES 301
+#define HOENN_DEX_DRATINI 302
+#define HOENN_DEX_DRAGONAIR 303
+#define HOENN_DEX_DRAGONITE 304
+#define HOENN_DEX_MEWTWO 305
+#define HOENN_DEX_MEW 306
+#define HOENN_DEX_CHIKORITA 307
+#define HOENN_DEX_BAYLEEF 308
+#define HOENN_DEX_MEGANIUM 309
+#define HOENN_DEX_CYNDAQUIL 310
+#define HOENN_DEX_QUILAVA 311
+#define HOENN_DEX_TYPHLOSION 312
+#define HOENN_DEX_TOTODILE 313
+#define HOENN_DEX_CROCONAW 314
+#define HOENN_DEX_FERALIGATR 315
+#define HOENN_DEX_SENTRET 316
+#define HOENN_DEX_FURRET 317
+#define HOENN_DEX_HOOTHOOT 318
+#define HOENN_DEX_NOCTOWL 319
+#define HOENN_DEX_LEDYBA 320
+#define HOENN_DEX_LEDIAN 321
+#define HOENN_DEX_SPINARAK 322
+#define HOENN_DEX_ARIADOS 323
+#define HOENN_DEX_CLEFFA 324
+#define HOENN_DEX_TOGEPI 325
+#define HOENN_DEX_TOGETIC 326
+#define HOENN_DEX_MAREEP 327
+#define HOENN_DEX_FLAAFFY 328
+#define HOENN_DEX_AMPHAROS 329
+#define HOENN_DEX_SUDOWOODO 330
+#define HOENN_DEX_POLITOED 331
+#define HOENN_DEX_HOPPIP 332
+#define HOENN_DEX_SKIPLOOM 333
+#define HOENN_DEX_JUMPLUFF 334
+#define HOENN_DEX_AIPOM 335
+#define HOENN_DEX_SUNKERN 336
+#define HOENN_DEX_SUNFLORA 337
+#define HOENN_DEX_YANMA 338
+#define HOENN_DEX_WOOPER 339
+#define HOENN_DEX_QUAGSIRE 340
+#define HOENN_DEX_ESPEON 341
+#define HOENN_DEX_UMBREON 342
+#define HOENN_DEX_MURKROW 343
+#define HOENN_DEX_SLOWKING 344
+#define HOENN_DEX_MISDREAVUS 345
+#define HOENN_DEX_UNOWN 346
+#define HOENN_DEX_PINECO 347
+#define HOENN_DEX_FORRETRESS 348
+#define HOENN_DEX_DUNSPARCE 349
+#define HOENN_DEX_GLIGAR 350
+#define HOENN_DEX_STEELIX 351
+#define HOENN_DEX_SNUBBULL 352
+#define HOENN_DEX_GRANBULL 353
+#define HOENN_DEX_QWILFISH 354
+#define HOENN_DEX_SCIZOR 355
+#define HOENN_DEX_SHUCKLE 356
+#define HOENN_DEX_SNEASEL 357
+#define HOENN_DEX_TEDDIURSA 358
+#define HOENN_DEX_URSARING 359
+#define HOENN_DEX_SWINUB 360
+#define HOENN_DEX_PILOSWINE 361
+#define HOENN_DEX_REMORAID 362
+#define HOENN_DEX_OCTILLERY 363
+#define HOENN_DEX_DELIBIRD 364
+#define HOENN_DEX_MANTINE 365
+#define HOENN_DEX_HOUNDOUR 366
+#define HOENN_DEX_HOUNDOOM 367
+#define HOENN_DEX_PORYGON2 368
+#define HOENN_DEX_STANTLER 369
+#define HOENN_DEX_SMEARGLE 370
+#define HOENN_DEX_TYROGUE 371
+#define HOENN_DEX_HITMONTOP 372
+#define HOENN_DEX_SMOOCHUM 373
+#define HOENN_DEX_ELEKID 374
+#define HOENN_DEX_MAGBY 375
+#define HOENN_DEX_MILTANK 376
+#define HOENN_DEX_BLISSEY 377
+#define HOENN_DEX_RAIKOU 378
+#define HOENN_DEX_ENTEI 379
+#define HOENN_DEX_SUICUNE 380
+#define HOENN_DEX_LARVITAR 381
+#define HOENN_DEX_PUPITAR 382
+#define HOENN_DEX_TYRANITAR 383
+#define HOENN_DEX_LUGIA 384
+#define HOENN_DEX_HO_OH 385
+#define HOENN_DEX_CELEBI 386
-#define HOENN_DEX_TREECKO 1
-#define HOENN_DEX_GROVYLE 2
-#define HOENN_DEX_SCEPTILE 3
-#define HOENN_DEX_TORCHIC 4
-#define HOENN_DEX_COMBUSKEN 5
-#define HOENN_DEX_BLAZIKEN 6
-#define HOENN_DEX_MUDKIP 7
-#define HOENN_DEX_MARSHTOMP 8
-#define HOENN_DEX_SWAMPERT 9
-#define HOENN_DEX_POOCHYENA 10
-#define HOENN_DEX_MIGHTYENA 11
-#define HOENN_DEX_ZIGZAGOON 12
-#define HOENN_DEX_LINOONE 13
-#define HOENN_DEX_WURMPLE 14
-#define HOENN_DEX_SILCOON 15
-#define HOENN_DEX_BEAUTIFLY 16
-#define HOENN_DEX_CASCOON 17
-#define HOENN_DEX_DUSTOX 18
-#define HOENN_DEX_LOTAD 19
-#define HOENN_DEX_LOMBRE 20
-#define HOENN_DEX_LUDICOLO 21
-#define HOENN_DEX_SEEDOT 22
-#define HOENN_DEX_NUZLEAF 23
-#define HOENN_DEX_SHIFTRY 24
-#define HOENN_DEX_NINCADA 42
-#define HOENN_DEX_NINJASK 43
-#define HOENN_DEX_SHEDINJA 44
-#define HOENN_DEX_TAILLOW 25
-#define HOENN_DEX_SWELLOW 26
-#define HOENN_DEX_SHROOMISH 34
-#define HOENN_DEX_BRELOOM 35
-#define HOENN_DEX_SPINDA 114
-#define HOENN_DEX_WINGULL 27
-#define HOENN_DEX_PELIPPER 28
-#define HOENN_DEX_SURSKIT 32
-#define HOENN_DEX_MASQUERAIN 33
-#define HOENN_DEX_WAILMER 99
-#define HOENN_DEX_WAILORD 100
-#define HOENN_DEX_SKITTY 61
-#define HOENN_DEX_DELCATTY 62
-#define HOENN_DEX_KECLEON 145
-#define HOENN_DEX_BALTOY 131
-#define HOENN_DEX_CLAYDOL 132
-#define HOENN_DEX_NOSEPASS 60
-#define HOENN_DEX_TORKOAL 105
-#define HOENN_DEX_SABLEYE 68
-#define HOENN_DEX_BARBOACH 127
-#define HOENN_DEX_WHISCASH 128
-#define HOENN_DEX_LUVDISC 183
-#define HOENN_DEX_CORPHISH 129
-#define HOENN_DEX_CRAWDAUNT 130
-#define HOENN_DEX_FEEBAS 140
-#define HOENN_DEX_MILOTIC 141
-#define HOENN_DEX_CARVANHA 97
-#define HOENN_DEX_SHARPEDO 98
-#define HOENN_DEX_TRAPINCH 116
-#define HOENN_DEX_VIBRAVA 117
-#define HOENN_DEX_FLYGON 118
-#define HOENN_DEX_MAKUHITA 48
-#define HOENN_DEX_HARIYAMA 49
-#define HOENN_DEX_ELECTRIKE 78
-#define HOENN_DEX_MANECTRIC 79
-#define HOENN_DEX_NUMEL 101
-#define HOENN_DEX_CAMERUPT 102
-#define HOENN_DEX_SPHEAL 173
-#define HOENN_DEX_SEALEO 174
-#define HOENN_DEX_WALREIN 175
-#define HOENN_DEX_CACNEA 119
-#define HOENN_DEX_CACTURNE 120
-#define HOENN_DEX_SNORUNT 171
-#define HOENN_DEX_GLALIE 172
-#define HOENN_DEX_LUNATONE 125
-#define HOENN_DEX_SOLROCK 126
-#define HOENN_DEX_AZURILL 54
-#define HOENN_DEX_SPOINK 110
-#define HOENN_DEX_GRUMPIG 111
-#define HOENN_DEX_PLUSLE 80
-#define HOENN_DEX_MINUN 81
-#define HOENN_DEX_MAWILE 69
-#define HOENN_DEX_MEDITITE 76
-#define HOENN_DEX_MEDICHAM 77
-#define HOENN_DEX_SWABLU 121
-#define HOENN_DEX_ALTARIA 122
-#define HOENN_DEX_WYNAUT 160
-#define HOENN_DEX_DUSKULL 148
-#define HOENN_DEX_DUSCLOPS 149
-#define HOENN_DEX_ROSELIA 94
-#define HOENN_DEX_SLAKOTH 36
-#define HOENN_DEX_VIGOROTH 37
-#define HOENN_DEX_SLAKING 38
-#define HOENN_DEX_GULPIN 95
-#define HOENN_DEX_SWALOT 96
-#define HOENN_DEX_TROPIUS 150
-#define HOENN_DEX_WHISMUR 45
-#define HOENN_DEX_LOUDRED 46
-#define HOENN_DEX_EXPLOUD 47
-#define HOENN_DEX_CLAMPERL 176
-#define HOENN_DEX_HUNTAIL 177
-#define HOENN_DEX_GOREBYSS 178
-#define HOENN_DEX_ABSOL 152
-#define HOENN_DEX_SHUPPET 146
-#define HOENN_DEX_BANETTE 147
-#define HOENN_DEX_SEVIPER 124
-#define HOENN_DEX_ZANGOOSE 123
-#define HOENN_DEX_RELICANTH 179
-#define HOENN_DEX_ARON 70
-#define HOENN_DEX_LAIRON 71
-#define HOENN_DEX_AGGRON 72
-#define HOENN_DEX_CASTFORM 142
-#define HOENN_DEX_VOLBEAT 86
-#define HOENN_DEX_ILLUMISE 87
-#define HOENN_DEX_LILEEP 133
-#define HOENN_DEX_CRADILY 134
-#define HOENN_DEX_ANORITH 135
-#define HOENN_DEX_ARMALDO 136
-#define HOENN_DEX_RALTS 29
-#define HOENN_DEX_KIRLIA 30
-#define HOENN_DEX_GARDEVOIR 31
-#define HOENN_DEX_BAGON 187
-#define HOENN_DEX_SHELGON 188
-#define HOENN_DEX_SALAMENCE 189
-#define HOENN_DEX_BELDUM 190
-#define HOENN_DEX_METANG 191
-#define HOENN_DEX_METAGROSS 192
-#define HOENN_DEX_REGIROCK 193
-#define HOENN_DEX_REGICE 194
-#define HOENN_DEX_REGISTEEL 195
-#define HOENN_DEX_KYOGRE 198
-#define HOENN_DEX_GROUDON 199
-#define HOENN_DEX_RAYQUAZA 200
-#define HOENN_DEX_LATIAS 196
-#define HOENN_DEX_LATIOS 197
-#define HOENN_DEX_JIRACHI 201
-#define HOENN_DEX_DEOXYS 202
-#define HOENN_DEX_CHIMECHO 151
+#define HOENN_DEX_OLD_UNOWN_B 387
+#define HOENN_DEX_OLD_UNOWN_C 388
+#define HOENN_DEX_OLD_UNOWN_D 389
+#define HOENN_DEX_OLD_UNOWN_E 390
+#define HOENN_DEX_OLD_UNOWN_F 391
+#define HOENN_DEX_OLD_UNOWN_G 392
+#define HOENN_DEX_OLD_UNOWN_H 393
+#define HOENN_DEX_OLD_UNOWN_I 394
+#define HOENN_DEX_OLD_UNOWN_J 395
+#define HOENN_DEX_OLD_UNOWN_K 396
+#define HOENN_DEX_OLD_UNOWN_L 397
+#define HOENN_DEX_OLD_UNOWN_M 398
+#define HOENN_DEX_OLD_UNOWN_N 399
+#define HOENN_DEX_OLD_UNOWN_O 400
+#define HOENN_DEX_OLD_UNOWN_P 401
+#define HOENN_DEX_OLD_UNOWN_Q 402
+#define HOENN_DEX_OLD_UNOWN_R 403
+#define HOENN_DEX_OLD_UNOWN_S 404
+#define HOENN_DEX_OLD_UNOWN_T 405
+#define HOENN_DEX_OLD_UNOWN_U 406
+#define HOENN_DEX_OLD_UNOWN_V 407
+#define HOENN_DEX_OLD_UNOWN_W 408
+#define HOENN_DEX_OLD_UNOWN_X 409
+#define HOENN_DEX_OLD_UNOWN_Y 410
+#define HOENN_DEX_OLD_UNOWN_Z 411
#endif // GUARD_CONSTANTS_SPECIES_H
diff --git a/include/constants/trainer_card.h b/include/constants/trainer_card.h
new file mode 100644
index 000000000..67901eb27
--- /dev/null
+++ b/include/constants/trainer_card.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_CONSTANTS_TRAINER_CARD_H
+#define GUARD_CONSTANTS_TRAINER_CARD_H
+
+#define TRAINER_CARD_PROFILE_LENGTH 4
+#define TRAINER_CARD_STICKER_TYPES 3
+
+#define CARD_TYPE_FRLG 0
+#define CARD_TYPE_RSE 1
+
+#define MON_ICON_TINT_NORMAL 0
+#define MON_ICON_TINT_BLACK 1
+#define MON_ICON_TINT_PINK 2
+#define MON_ICON_TINT_SEPIA 3
+
+#define NUM_LINK_TRAINER_CARD_CLASSES 8
+
+#endif // GUARD_CONSTANTS_TRAINER_CARD_H
diff --git a/include/constants/trainer_tower.h b/include/constants/trainer_tower.h
new file mode 100644
index 000000000..6372a30e8
--- /dev/null
+++ b/include/constants/trainer_tower.h
@@ -0,0 +1,46 @@
+#ifndef GUARD_CONSTANTS_TRAINER_TOWER_H
+#define GUARD_CONSTANTS_TRAINER_TOWER_H
+
+#define CHALLENGE_TYPE_SINGLE 0
+#define CHALLENGE_TYPE_DOUBLE 1
+#define CHALLENGE_TYPE_KNOCKOUT 2
+// Mixed challenges use one of the above 3 for each floor
+
+#define CHALLENGE_STATUS_LOST 0
+#define CHALLENGE_STATUS_UNK 1 // Never set, possibly e-Card related
+#define CHALLENGE_STATUS_NORMAL 2 // Not started or ongoing
+
+#define MAX_TRAINER_TOWER_FLOORS 8
+
+#define MAX_TRAINERS_PER_FLOOR 3
+
+#define TRAINER_TOWER_FUNC_INIT_FLOOR 0
+#define TRAINER_TOWER_FUNC_GET_SPEECH 1
+#define TRAINER_TOWER_FUNC_DO_BATTLE 2
+#define TRAINER_TOWER_FUNC_GET_CHALLENGE_TYPE 3
+#define TRAINER_TOWER_FUNC_CLEARED_FLOOR 4
+#define TRAINER_TOWER_FUNC_GET_FLOOR_CLEARED 5
+#define TRAINER_TOWER_FUNC_START_CHALLENGE 6
+#define TRAINER_TOWER_FUNC_GET_OWNER_STATE 7
+#define TRAINER_TOWER_FUNC_GIVE_PRIZE 8
+#define TRAINER_TOWER_FUNC_CHECK_FINAL_TIME 9
+#define TRAINER_TOWER_FUNC_RESUME_TIMER 10
+#define TRAINER_TOWER_FUNC_SET_LOST 11
+#define TRAINER_TOWER_FUNC_GET_CHALLENGE_STATUS 12
+#define TRAINER_TOWER_FUNC_GET_TIME 13
+#define TRAINER_TOWER_FUNC_SHOW_RESULTS 14
+#define TRAINER_TOWER_FUNC_CLOSE_RESULTS 15
+#define TRAINER_TOWER_FUNC_CHECK_DOUBLES 16
+#define TRAINER_TOWER_FUNC_GET_NUM_FLOORS 17
+#define TRAINER_TOWER_FUNC_SHOULD_WARP_TO_COUNTER 18
+#define TRAINER_TOWER_FUNC_ENCOUNTER_MUSIC 19
+#define TRAINER_TOWER_FUNC_GET_BEAT_CHALLENGE 20
+
+#define TRAINER_TOWER_TEXT_INTRO 2
+#define TRAINER_TOWER_TEXT_PLAYER_LOST 3
+#define TRAINER_TOWER_TEXT_PLAYER_WON 4
+#define TRAINER_TOWER_TEXT_AFTER 5
+
+#define TRAINER_TOWER_MAX_TIME 215999 // 60 * 60 * 60 - 1
+
+#endif //GUARD_CONSTANTS_TRAINER_TOWER_H
diff --git a/include/constants/union_room.h b/include/constants/union_room.h
index 021424773..b23860645 100644
--- a/include/constants/union_room.h
+++ b/include/constants/union_room.h
@@ -1,6 +1,48 @@
#ifndef GUARD_CONSTANTS_UNION_ROOM_H
#define GUARD_CONSTANTS_UNION_ROOM_H
+#define UNION_ROOM_SPAWN_NONE 0
+#define UNION_ROOM_SPAWN_IN 1
+#define UNION_ROOM_SPAWN_OUT 2
+
+#define ACTIVITY_NONE 0
+#define ACTIVITY_BATTLE 1
+#define ACTIVITY_DBLBATTLE 2
+#define ACTIVITY_MLTBATTLE 3
+#define ACTIVITY_TRADE 4
+#define ACTIVITY_CHAT 5
+#define ACTIVITY_WCARD 6
+#define ACTIVITY_WNEWS 7
+#define ACTIVITY_CARD 8
+#define ACTIVITY_PJUMP 9
+#define ACTIVITY_BCRUSH 10
+#define ACTIVITY_BPICK 11
+#define ACTIVITY_SEARCH 12
+#define ACTIVITY_SPINTRADE 13
+#define ACTIVITY_ITEMTRADE 14
+
+// Player response
+#define ACTIVITY_ACCEPT 17
+#define ACTIVITY_DECLINE 18
+
+#define ACTIVITY_NPCTALK 19
+#define ACTIVITY_PLYRTALK 20
+
+// Duplicate IDs?
+#define ACTIVITY_WCARD2 21
+#define ACTIVITY_WNEWS2 22
+
+#define IN_UNION_ROOM 0x40
+
+// Used in UR_AddTextPrinterParameterized
+#define UR_COLOR_DKE_WHT_LTE 0
+#define UR_COLOR_RED_WHT_LTR 1
+#define UR_COLOR_GRN_WHT_LTG 2
+#define UR_COLOR_WHT_WHT_LTE 3
+#define UR_COLOR_WHT_DKE_LTE 4
+#define UR_COLOR_GRN_DN6_LTB 5
+#define UR_COLOR_DN5_DN6_LTB 6
+
#define LINK_GROUP_SINGLE_BATTLE 0
#define LINK_GROUP_DOUBLE_BATTLE 1
#define LINK_GROUP_MULTI_BATTLE 2
@@ -12,4 +54,7 @@
#define LINK_GROUP_WONDER_NEWS 8
#define NUM_LINK_GROUP_TYPES 9
+#define LINK_GROUP_UNION_ROOM_RESUME 9
+#define LINK_GROUP_UNION_ROOM_INIT 10
+
#endif //GUARD_CONSTANTS_UNION_ROOM_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 043f5bc39..640bf41fd 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -90,7 +90,7 @@
#define VAR_0x402F 0x402F
#define VAR_ICE_STEP_COUNT 0x4030
-#define VAR_STARTER_MON 0x4031
+#define VAR_STARTER_MON 0x4031 // 0: Bulbasaur, 1: Squirtle, 2: Charmander
#define VAR_0x4032 0x4032
#define VAR_ENIGMA_BERRY_AVAILABLE 0x4033
@@ -323,11 +323,11 @@
#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_TEXT_COLOR 0x8014
+#define VAR_MON_BOX_ID 0x8010
+#define VAR_MON_BOX_POS 0x8011
+#define VAR_TEXT_COLOR 0x8012
+#define VAR_PREV_TEXT_COLOR 0x8013
+#define VAR_0x8014 0x8014 // Unknown/unused
#define SPECIAL_VARS_END 0x8014
diff --git a/include/constants/weather.h b/include/constants/weather.h
index a45d2e523..77be45c51 100644
--- a/include/constants/weather.h
+++ b/include/constants/weather.h
@@ -12,7 +12,7 @@
#define WEATHER_SANDSTORM 8 // unused
#define WEATHER_FOG_DIAGONAL 9 // unused
#define WEATHER_UNDERWATER 10 // unused
-#define WEATHER_CLOUDY 11
+#define WEATHER_SHADE 11
#define WEATHER_DROUGHT 12 // unused and broken in overworld
#define WEATHER_DOWNPOUR 13 // unused
#define WEATHER_UNDERWATER_BUBBLES 14 // unused