summaryrefslogtreecommitdiff
path: root/include/constants
diff options
context:
space:
mode:
Diffstat (limited to 'include/constants')
-rw-r--r--include/constants/battle_constants.h73
-rw-r--r--include/constants/event_objects.h252
-rw-r--r--include/constants/field_effects.h69
-rw-r--r--include/constants/flags.h4
-rw-r--r--include/constants/map_objects.h252
-rw-r--r--include/constants/metatile_behaviors.h245
-rw-r--r--include/constants/region_map_sections.h97
-rw-r--r--include/constants/songs.h238
-rw-r--r--include/constants/species.h6
-rw-r--r--include/constants/vars.h4
10 files changed, 843 insertions, 397 deletions
diff --git a/include/constants/battle_constants.h b/include/constants/battle_constants.h
index 49768f33e..65f44d8aa 100644
--- a/include/constants/battle_constants.h
+++ b/include/constants/battle_constants.h
@@ -1,12 +1,47 @@
#ifndef GUARD_CONSTANTS_BATTLE_CONSTANTS_H
#define GUARD_CONSTANTS_BATTLE_CONSTANTS_H
-// Bank sides
-#define SIDE_PLAYER 0x0
-#define SIDE_OPPONENT 0x1
-
-#define BIT_SIDE 0x1
-#define BIT_MON 0x2
+/*
+ * A battler may be in one of four positions on the field. The first bit determines
+ * what side the battler is on, either the player's side or the opponent's side.
+ * The second bit determines what flank the battler is on, either the left or right.
+ * Note that the opponent's flanks are drawn corresponding to their perspective, so
+ * their right mon appears on the left, and their left mon appears on the right.
+ * The battler ID is usually the same as the position, except in the case of link battles.
+ *
+ * + ------------------------- +
+ * | Opponent's side |
+ * | Right Left |
+ * | 3 1 |
+ * | |
+ * | Player's side |
+ * | Left Right |
+ * | 0 2 |
+ * ----------------------------+
+ * | |
+ * | |
+ * +---------------------------+
+ */
+
+#define MAX_BATTLERS_COUNT 4
+
+#define B_POSITION_PLAYER_LEFT 0
+#define B_POSITION_OPPONENT_LEFT 1
+#define B_POSITION_PLAYER_RIGHT 2
+#define B_POSITION_OPPONENT_RIGHT 3
+
+// These macros can be used with either battler ID or positions to get the partner or the opposite mon
+#define BATTLE_OPPOSITE(id) ((id) ^ 1)
+#define BATTLE_PARTNER(id) ((id) ^ 2)
+
+#define B_SIDE_PLAYER 0
+#define B_SIDE_OPPONENT 1
+
+#define B_FLANK_LEFT 0
+#define B_FLANK_RIGHT 1
+
+#define BIT_SIDE 1
+#define BIT_FLANK 2
#define STATUS_SLEEP 0x7
#define STATUS_POISON 0x8
@@ -88,19 +123,16 @@
#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C))
#define HITMARKER_UNK(bank) ((0x10000000 << bank))
-#define MOVESTATUS_MISSED (1 << 0)
-#define MOVESTATUS_SUPEREFFECTIVE (1 << 1)
-#define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2)
-#define MOVESTATUS_NOTAFFECTED (1 << 3)
-#define MOVESTATUS_ONEHITKO (1 << 4)
-#define MOVESTATUS_FAILED (1 << 5)
-#define MOVESTATUS_ENDURED (1 << 6)
-#define MOVESTATUS_HUNGON (1 << 7)
-
-#define IDENTITY_PLAYER_MON1 0
-#define IDENTITY_OPPONENT_MON1 1
-#define IDENTITY_PLAYER_MON2 2
-#define IDENTITY_OPPONENT_MON2 3
+// Flags describing move's result
+#define MOVE_RESULT_MISSED (1 << 0)
+#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1)
+#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2)
+#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3)
+#define MOVE_RESULT_ONE_HIT_KO (1 << 4)
+#define MOVE_RESULT_FAILED (1 << 5)
+#define MOVE_RESULT_FOE_ENDURED (1 << 6)
+#define MOVE_RESULT_FOE_HUNG_ON (1 << 7)
+#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
#define BATTLE_TYPE_DOUBLE 0x0001
#define BATTLE_TYPE_LINK 0x0002
@@ -206,11 +238,8 @@
#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0)))
-#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED))
-
#define MAX_TRAINER_ITEMS 4
#define MAX_MON_MOVES 4
-#define MAX_BANKS_BATTLE 4
#define WEATHER_RAIN_TEMPORARY (1 << 0)
#define WEATHER_RAIN_DOWNPOUR (1 << 1)
diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h
new file mode 100644
index 000000000..7c236671d
--- /dev/null
+++ b/include/constants/event_objects.h
@@ -0,0 +1,252 @@
+#ifndef GUARD_CONSTANTS_EVENT_OBJECTS_H
+#define GUARD_CONSTANTS_EVENT_OBJECTS_H
+
+#define EVENT_OBJ_GFX_BRENDAN_NORMAL 0
+#define EVENT_OBJ_GFX_BRENDAN_MACH_BIKE 1
+#define EVENT_OBJ_GFX_BRENDAN_SURFING 2
+#define EVENT_OBJ_GFX_BRENDAN_FIELD_MOVE 3
+#define EVENT_OBJ_GFX_QUINTY_PLUMP 4
+#define EVENT_OBJ_GFX_LITTLE_BOY_1 5
+#define EVENT_OBJ_GFX_LITTLE_GIRL_1 6
+#define EVENT_OBJ_GFX_BOY_1 7
+#define EVENT_OBJ_GFX_GIRL_1 8
+#define EVENT_OBJ_GFX_BOY_2 9
+#define EVENT_OBJ_GFX_GIRL_2 10
+#define EVENT_OBJ_GFX_LITTLE_BOY_2 11
+#define EVENT_OBJ_GFX_LITTLE_GIRL_2 12
+#define EVENT_OBJ_GFX_BOY_3 13
+#define EVENT_OBJ_GFX_GIRL_3 14
+#define EVENT_OBJ_GFX_BOY_4 15
+#define EVENT_OBJ_GFX_WOMAN_1 16
+#define EVENT_OBJ_GFX_FAT_MAN 17
+#define EVENT_OBJ_GFX_WOMAN_2 18
+#define EVENT_OBJ_GFX_MAN_1 19
+#define EVENT_OBJ_GFX_WOMAN_3 20
+#define EVENT_OBJ_GFX_OLD_MAN_1 21
+#define EVENT_OBJ_GFX_OLD_WOMAN_1 22
+#define EVENT_OBJ_GFX_MAN_2 23
+#define EVENT_OBJ_GFX_WOMAN_4 24
+#define EVENT_OBJ_GFX_MAN_3 25
+#define EVENT_OBJ_GFX_WOMAN_5 26
+#define EVENT_OBJ_GFX_COOK 27
+#define EVENT_OBJ_GFX_WOMAN_6 28
+#define EVENT_OBJ_GFX_OLD_MAN_2 29
+#define EVENT_OBJ_GFX_OLD_WOMAN_2 30
+#define EVENT_OBJ_GFX_CAMPER 31
+#define EVENT_OBJ_GFX_PICNICKER 32
+#define EVENT_OBJ_GFX_MAN_4 33
+#define EVENT_OBJ_GFX_WOMAN_7 34
+#define EVENT_OBJ_GFX_YOUNGSTER 35
+#define EVENT_OBJ_GFX_BUG_CATCHER 36
+#define EVENT_OBJ_GFX_PSYCHIC_M 37
+#define EVENT_OBJ_GFX_SCHOOL_KID_M 38
+#define EVENT_OBJ_GFX_MANIAC 39
+#define EVENT_OBJ_GFX_HEX_MANIAC 40
+#define EVENT_OBJ_GFX_WOMAN_8 41
+#define EVENT_OBJ_GFX_SWIMMER_M 42
+#define EVENT_OBJ_GFX_SWIMMER_F 43
+#define EVENT_OBJ_GFX_BLACK_BELT 44
+#define EVENT_OBJ_GFX_BEAUTY 45
+#define EVENT_OBJ_GFX_SCIENTIST_1 46
+#define EVENT_OBJ_GFX_LASS 47
+#define EVENT_OBJ_GFX_GENTLEMAN 48
+#define EVENT_OBJ_GFX_SAILOR 49
+#define EVENT_OBJ_GFX_FISHERMAN 50
+#define EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M 51
+#define EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F 52
+#define EVENT_OBJ_GFX_TUBER_F 53
+#define EVENT_OBJ_GFX_TUBER_M 54
+#define EVENT_OBJ_GFX_HIKER 55
+#define EVENT_OBJ_GFX_CYCLING_TRIATHLETE_M 56
+#define EVENT_OBJ_GFX_CYCLING_TRIATHLETE_F 57
+#define EVENT_OBJ_GFX_NURSE 58
+#define EVENT_OBJ_GFX_ITEM_BALL 59
+#define EVENT_OBJ_GFX_BERRY_TREE 60
+#define EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES 61
+#define EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES 62
+#define EVENT_OBJ_GFX_BRENDAN_ACRO_BIKE 63
+#define EVENT_OBJ_GFX_PROF_BIRCH 64
+#define EVENT_OBJ_GFX_MAN_5 65
+#define EVENT_OBJ_GFX_MAN_6 66
+#define EVENT_OBJ_GFX_REPORTER_M 67
+#define EVENT_OBJ_GFX_REPORTER_F 68
+#define EVENT_OBJ_GFX_BARD 69
+#define EVENT_OBJ_GFX_HIPSTER 70
+#define EVENT_OBJ_GFX_TRADER 71
+#define EVENT_OBJ_GFX_STORYTELLER 72
+#define EVENT_OBJ_GFX_GIDDY 73
+#define EVENT_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1 74
+#define EVENT_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2 75
+#define EVENT_OBJ_GFX_UNUSED_NATU_DOLL 76
+#define EVENT_OBJ_GFX_UNUSED_MAGNEMITE_DOLL 77
+#define EVENT_OBJ_GFX_UNUSED_SQUIRTLE_DOLL 78
+#define EVENT_OBJ_GFX_UNUSED_WOOPER_DOLL 79
+#define EVENT_OBJ_GFX_UNUSED_PIKACHU_DOLL 80
+#define EVENT_OBJ_GFX_UNUSED_PORYGON2_DOLL 81
+#define EVENT_OBJ_GFX_CUTTABLE_TREE 82
+#define EVENT_OBJ_GFX_MART_EMPLOYEE 83
+#define EVENT_OBJ_GFX_ROOFTOP_SALE_WOMAN 84
+#define EVENT_OBJ_GFX_TEALA 85
+#define EVENT_OBJ_GFX_BREAKABLE_ROCK 86
+#define EVENT_OBJ_GFX_PUSHABLE_BOULDER 87
+#define EVENT_OBJ_GFX_MR_BRINEYS_BOAT 88
+#define EVENT_OBJ_GFX_MAY_NORMAL 89
+#define EVENT_OBJ_GFX_MAY_MACH_BIKE 90
+#define EVENT_OBJ_GFX_MAY_ACRO_BIKE 91
+#define EVENT_OBJ_GFX_MAY_SURFING 92
+#define EVENT_OBJ_GFX_MAY_FIELD_MOVE 93
+#define EVENT_OBJ_GFX_TRUCK 94
+#define EVENT_OBJ_GFX_MACHOKE_CARRYING_BOX 95
+#define EVENT_OBJ_GFX_MACHOKE_FACING_AWAY 96
+#define EVENT_OBJ_GFX_BIRCHS_BAG 97
+#define EVENT_OBJ_GFX_POOCHYENA 98
+#define EVENT_OBJ_GFX_ARTIST 99
+#define EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL 100
+#define EVENT_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE 101
+#define EVENT_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE 102
+#define EVENT_OBJ_GFX_RIVAL_BRENDAN_SURFING 103
+#define EVENT_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE 104
+#define EVENT_OBJ_GFX_RIVAL_MAY_NORMAL 105
+#define EVENT_OBJ_GFX_RIVAL_MAY_MACH_BIKE 106
+#define EVENT_OBJ_GFX_RIVAL_MAY_ACRO_BIKE 107
+#define EVENT_OBJ_GFX_RIVAL_MAY_SURFING 108
+#define EVENT_OBJ_GFX_RIVAL_MAY_FIELD_MOVE 109
+#define EVENT_OBJ_GFX_CAMERAMAN 110
+#define EVENT_OBJ_GFX_BRENDAN_UNDERWATER 111
+#define EVENT_OBJ_GFX_MAY_UNDERWATER 112
+#define EVENT_OBJ_GFX_MOVING_BOX 113
+#define EVENT_OBJ_GFX_CABLE_CAR 114
+#define EVENT_OBJ_GFX_SCIENTIST_2 115
+#define EVENT_OBJ_GFX_MAN_7 116
+#define EVENT_OBJ_GFX_AQUA_MEMBER_M 117
+#define EVENT_OBJ_GFX_AQUA_MEMBER_F 118
+#define EVENT_OBJ_GFX_MAGMA_MEMBER_M 119
+#define EVENT_OBJ_GFX_MAGMA_MEMBER_F 120
+#define EVENT_OBJ_GFX_SIDNEY 121
+#define EVENT_OBJ_GFX_PHOEBE 122
+#define EVENT_OBJ_GFX_GLACIA 123
+#define EVENT_OBJ_GFX_DRAKE 124
+#define EVENT_OBJ_GFX_ROXANNE 125
+#define EVENT_OBJ_GFX_BRAWLY 126
+#define EVENT_OBJ_GFX_WATTSON 127
+#define EVENT_OBJ_GFX_FLANNERY 128
+#define EVENT_OBJ_GFX_NORMAN 129
+#define EVENT_OBJ_GFX_WINONA 130
+#define EVENT_OBJ_GFX_LIZA 131
+#define EVENT_OBJ_GFX_TATE 132
+#define EVENT_OBJ_GFX_WALLACE 133
+#define EVENT_OBJ_GFX_STEVEN 134
+#define EVENT_OBJ_GFX_WALLY 135
+#define EVENT_OBJ_GFX_LITTLE_BOY_3 136
+#define EVENT_OBJ_GFX_BRENDAN_FISHING 137
+#define EVENT_OBJ_GFX_MAY_FISHING 138
+#define EVENT_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN 139
+#define EVENT_OBJ_GFX_SS_TIDAL 140
+#define EVENT_OBJ_GFX_SUBMARINE_SHADOW 141
+#define EVENT_OBJ_GFX_PICHU_DOLL 142
+#define EVENT_OBJ_GFX_PIKACHU_DOLL 143
+#define EVENT_OBJ_GFX_MARILL_DOLL 144
+#define EVENT_OBJ_GFX_TOGEPI_DOLL 145
+#define EVENT_OBJ_GFX_CYNDAQUIL_DOLL 146
+#define EVENT_OBJ_GFX_CHIKORITA_DOLL 147
+#define EVENT_OBJ_GFX_TOTODILE_DOLL 148
+#define EVENT_OBJ_GFX_JIGGLYPUFF_DOLL 149
+#define EVENT_OBJ_GFX_MEOWTH_DOLL 150
+#define EVENT_OBJ_GFX_CLEFAIRY_DOLL 151
+#define EVENT_OBJ_GFX_DITTO_DOLL 152
+#define EVENT_OBJ_GFX_SMOOCHUM_DOLL 153
+#define EVENT_OBJ_GFX_TREECKO_DOLL 154
+#define EVENT_OBJ_GFX_TORCHIC_DOLL 155
+#define EVENT_OBJ_GFX_MUDKIP_DOLL 156
+#define EVENT_OBJ_GFX_DUSKULL_DOLL 157
+#define EVENT_OBJ_GFX_WYNAUT_DOLL 158
+#define EVENT_OBJ_GFX_BALTOY_DOLL 159
+#define EVENT_OBJ_GFX_KECLEON_DOLL 160
+#define EVENT_OBJ_GFX_AZURILL_DOLL 161
+#define EVENT_OBJ_GFX_SKITTY_DOLL 162
+#define EVENT_OBJ_GFX_SWABLU_DOLL 163
+#define EVENT_OBJ_GFX_GULPIN_DOLL 164
+#define EVENT_OBJ_GFX_LOTAD_DOLL 165
+#define EVENT_OBJ_GFX_SEEDOT_DOLL 166
+#define EVENT_OBJ_GFX_PIKA_CUSHION 167
+#define EVENT_OBJ_GFX_ROUND_CUSHION 168
+#define EVENT_OBJ_GFX_KISS_CUSHION 169
+#define EVENT_OBJ_GFX_ZIGZAG_CUSHION 170
+#define EVENT_OBJ_GFX_SPIN_CUSHION 171
+#define EVENT_OBJ_GFX_DIAMOND_CUSHION 172
+#define EVENT_OBJ_GFX_BALL_CUSHION 173
+#define EVENT_OBJ_GFX_GRASS_CUSHION 174
+#define EVENT_OBJ_GFX_FIRE_CUSHION 175
+#define EVENT_OBJ_GFX_WATER_CUSHION 176
+#define EVENT_OBJ_GFX_BIG_SNORLAX_DOLL 177
+#define EVENT_OBJ_GFX_BIG_RHYDON_DOLL 178
+#define EVENT_OBJ_GFX_BIG_LAPRAS_DOLL 179
+#define EVENT_OBJ_GFX_BIG_VENUSAUR_DOLL 180
+#define EVENT_OBJ_GFX_BIG_CHARIZARD_DOLL 181
+#define EVENT_OBJ_GFX_BIG_BLASTOISE_DOLL 182
+#define EVENT_OBJ_GFX_BIG_WAILMER_DOLL 183
+#define EVENT_OBJ_GFX_BIG_REGIROCK_DOLL 184
+#define EVENT_OBJ_GFX_BIG_REGICE_DOLL 185
+#define EVENT_OBJ_GFX_BIG_REGISTEEL_DOLL 186
+#define EVENT_OBJ_GFX_LATIAS 187
+#define EVENT_OBJ_GFX_LATIOS 188
+#define EVENT_OBJ_GFX_BOY_5 189
+#define EVENT_OBJ_GFX_CONTEST_JUDGE 190
+#define EVENT_OBJ_GFX_BRENDAN_WATERING 191
+#define EVENT_OBJ_GFX_MAY_WATERING 192
+#define EVENT_OBJ_GFX_BRENDAN_DECORATING 193
+#define EVENT_OBJ_GFX_MAY_DECORATING 194
+#define EVENT_OBJ_GFX_ARCHIE 195
+#define EVENT_OBJ_GFX_MAXIE 196
+#define EVENT_OBJ_GFX_KYOGRE_1 197
+#define EVENT_OBJ_GFX_GROUDON_1 198
+#define EVENT_OBJ_GFX_FOSSIL 199
+#define EVENT_OBJ_GFX_REGIROCK 200
+#define EVENT_OBJ_GFX_REGICE 201
+#define EVENT_OBJ_GFX_REGISTEEL 202
+#define EVENT_OBJ_GFX_SKITTY 203
+#define EVENT_OBJ_GFX_KECLEON_1 204
+#define EVENT_OBJ_GFX_KYOGRE_2 205
+#define EVENT_OBJ_GFX_GROUDON_2 206
+#define EVENT_OBJ_GFX_RAYQUAZA 207
+#define EVENT_OBJ_GFX_ZIGZAGOON 208
+#define EVENT_OBJ_GFX_PIKACHU 209
+#define EVENT_OBJ_GFX_AZUMARILL 210
+#define EVENT_OBJ_GFX_WINGULL 211
+#define EVENT_OBJ_GFX_KECLEON_2 212
+#define EVENT_OBJ_GFX_TUBER_M_SWIMMING 213
+#define EVENT_OBJ_GFX_AZURILL 214
+#define EVENT_OBJ_GFX_MOM 215
+#define EVENT_OBJ_GFX_LINK_BRENDAN 216
+#define EVENT_OBJ_GFX_LINK_MAY 217
+
+// These are dynamic object gfx ids.
+// They correspond with the values of the VAR_OBJ_GFX_ID_X vars.
+// More info about them in include/constants/vars.h
+#define EVENT_OBJ_GFX_VAR_0 240
+#define EVENT_OBJ_GFX_VAR_1 241
+#define EVENT_OBJ_GFX_VAR_2 242
+#define EVENT_OBJ_GFX_VAR_3 243
+#define EVENT_OBJ_GFX_VAR_4 244
+#define EVENT_OBJ_GFX_VAR_5 245
+#define EVENT_OBJ_GFX_VAR_6 246
+#define EVENT_OBJ_GFX_VAR_7 247
+#define EVENT_OBJ_GFX_VAR_8 248
+#define EVENT_OBJ_GFX_VAR_9 249
+#define EVENT_OBJ_GFX_VAR_A 250
+#define EVENT_OBJ_GFX_VAR_B 251
+#define EVENT_OBJ_GFX_VAR_C 252
+#define EVENT_OBJ_GFX_VAR_D 253
+#define EVENT_OBJ_GFX_VAR_E 254
+#define EVENT_OBJ_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 TRACKS_NONE 0
+#define TRACKS_FOOT 1
+#define TRACKS_BIKE_TIRE 2
+
+#endif // GUARD_CONSTANTS_EVENT_OBJECTS_H
diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h
new file mode 100644
index 000000000..86fd6718f
--- /dev/null
+++ b/include/constants/field_effects.h
@@ -0,0 +1,69 @@
+#ifndef GUARD_FIELD_EFFECT_CONSTANTS_H
+#define GUARD_FIELD_EFFECT_CONSTANTS_H
+
+#define FLDEFF_EXCLAMATION_MARK_ICON 0
+#define FLDEFF_USE_CUT_ON_GRASS 1
+#define FLDEFF_USE_CUT_ON_TREE 2
+#define FLDEFF_SHADOW 3
+#define FLDEFF_TALL_GRASS 4
+#define FLDEFF_RIPPLE 5
+#define FLDEFF_FIELD_MOVE_SHOW_MON 6
+#define FLDEFF_ASH 7
+#define FLDEFF_SURF_BLOB 8
+#define FLDEFF_USE_SURF 9
+#define FLDEFF_DUST 10
+#define FLDEFF_USE_SECRET_POWER_CAVE 11
+#define FLDEFF_JUMP_TALL_GRASS 12
+#define FLDEFF_SAND_FOOTPRINTS 13
+#define FLDEFF_JUMP_BIG_SPLASH 14
+#define FLDEFF_SPLASH 15
+#define FLDEFF_JUMP_SMALL_SPLASH 16
+#define FLDEFF_LONG_GRASS 17
+#define FLDEFF_JUMP_LONG_GRASS 18
+#define FLDEFF_UNKNOWN_19 19
+#define FLDEFF_UNKNOWN_20 20
+#define FLDEFF_UNKNOWN_21 21
+#define FLDEFF_UNKNOWN_22 22
+#define FLDEFF_BERRY_TREE_GROWTH_SPARKLE 23
+#define FLDEFF_DEEP_SAND_FOOTPRINTS 24
+#define FLDEFF_POKECENTER_HEAL 25
+#define FLDEFF_USE_SECRET_POWER_TREE 26
+#define FLDEFF_USE_SECRET_POWER_SHRUB 27
+#define FLDEFF_TREE_DISGUISE 28
+#define FLDEFF_MOUNTAIN_DISGUISE 29
+#define FLDEFF_NPCFLY_OUT 30
+#define FLDEFF_USE_FLY 31
+#define FLDEFF_FLY_IN 32
+#define FLDEFF_QUESTION_MARK_ICON 33
+#define FLDEFF_FEET_IN_FLOWING_WATER 34
+#define FLDEFF_BIKE_TIRE_TRACKS 35
+#define FLDEFF_SAND_DISGUISE 36
+#define FLDEFF_USE_ROCK_SMASH 37
+#define FLDEFF_USE_DIG 38
+#define FLDEFF_SAND_PILE 39
+#define FLDEFF_USE_STRENGTH 40
+#define FLDEFF_SHORT_GRASS 41
+#define FLDEFF_HOT_SPRINGS_WATER 42
+#define FLDEFF_USE_WATERFALL 43
+#define FLDEFF_USE_DIVE 44
+#define FLDEFF_POKEBALL 45
+#define FLDEFF_HEART_ICON 46
+#define FLDEFF_NOP_47 47
+#define FLDEFF_NOP_48 48
+#define FLDEFF_POP_OUT_OF_ASH 49
+#define FLDEFF_LAVARIDGE_GYM_WARP 50
+#define FLDEFF_SWEET_SCENT 51
+#define FLDEFF_SAND_PILLAR 52
+#define FLDEFF_BUBBLES 53
+#define FLDEFF_SPARKLE 54
+#define FLDEFF_SECRET_POWER_CAVE 55
+#define FLDEFF_SECRET_POWER_TREE 56
+#define FLDEFF_SECRET_POWER_SHRUB 57
+#define FLDEFF_CUT_GRASS 58
+#define FLDEFF_FIELD_MOVE_SHOW_MON_INIT 59
+#define FLDEFF_USE_FLY_ANCIENT_TOMB 60
+#define FLDEFF_SECRET_BASE_PC_TURN_ON 61
+#define FLDEFF_HALL_OF_FAME_RECORD 62
+#define FLDEFF_USE_TELEPORT 63
+
+#endif
diff --git a/include/constants/flags.h b/include/constants/flags.h
index a8067f6ca..a867fd77e 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -158,7 +158,7 @@
#define FLAG_RECEIVED_GREEN_SCARF 0xCB
#define FLAG_RECEIVED_YELLOW_SCARF 0xCC
-#define FLAG_ECOUNTERED_LATIAS_OR_LATIOS 0xCE
+#define FLAG_ENCOUNTERED_LATIAS_OR_LATIOS 0xCE
#define FLAG_RECEIVED_BASEMENT_KEY 0xD0
#define FLAG_RECEIVED_TM24 0xD1
@@ -357,7 +357,7 @@
#define FLAG_HIDDEN_ITEM_61 0x2B9
-// map object hide/show flags
+// event object hide/show flags
#define FLAG_HIDE_BIRCH_STARTERS_BAG 0x2BC
#define FLAG_HIDE_BIRCH_BATTLE_POOCHYENA 0x2D0
diff --git a/include/constants/map_objects.h b/include/constants/map_objects.h
deleted file mode 100644
index 7e5aef744..000000000
--- a/include/constants/map_objects.h
+++ /dev/null
@@ -1,252 +0,0 @@
-#ifndef GUARD_CONSTANTS_MAP_OBJECTS_H
-#define GUARD_CONSTANTS_MAP_OBJECTS_H
-
-#define MAP_OBJ_GFX_BRENDAN_NORMAL 0
-#define MAP_OBJ_GFX_BRENDAN_MACH_BIKE 1
-#define MAP_OBJ_GFX_BRENDAN_SURFING 2
-#define MAP_OBJ_GFX_BRENDAN_FIELD_MOVE 3
-#define MAP_OBJ_GFX_QUINTY_PLUMP 4
-#define MAP_OBJ_GFX_LITTLE_BOY_1 5
-#define MAP_OBJ_GFX_LITTLE_GIRL_1 6
-#define MAP_OBJ_GFX_BOY_1 7
-#define MAP_OBJ_GFX_GIRL_1 8
-#define MAP_OBJ_GFX_BOY_2 9
-#define MAP_OBJ_GFX_GIRL_2 10
-#define MAP_OBJ_GFX_LITTLE_BOY_2 11
-#define MAP_OBJ_GFX_LITTLE_GIRL_2 12
-#define MAP_OBJ_GFX_BOY_3 13
-#define MAP_OBJ_GFX_GIRL_3 14
-#define MAP_OBJ_GFX_BOY_4 15
-#define MAP_OBJ_GFX_WOMAN_1 16
-#define MAP_OBJ_GFX_FAT_MAN 17
-#define MAP_OBJ_GFX_WOMAN_2 18
-#define MAP_OBJ_GFX_MAN_1 19
-#define MAP_OBJ_GFX_WOMAN_3 20
-#define MAP_OBJ_GFX_OLD_MAN_1 21
-#define MAP_OBJ_GFX_OLD_WOMAN_1 22
-#define MAP_OBJ_GFX_MAN_2 23
-#define MAP_OBJ_GFX_WOMAN_4 24
-#define MAP_OBJ_GFX_MAN_3 25
-#define MAP_OBJ_GFX_WOMAN_5 26
-#define MAP_OBJ_GFX_COOK 27
-#define MAP_OBJ_GFX_WOMAN_6 28
-#define MAP_OBJ_GFX_OLD_MAN_2 29
-#define MAP_OBJ_GFX_OLD_WOMAN_2 30
-#define MAP_OBJ_GFX_CAMPER 31
-#define MAP_OBJ_GFX_PICNICKER 32
-#define MAP_OBJ_GFX_MAN_4 33
-#define MAP_OBJ_GFX_WOMAN_7 34
-#define MAP_OBJ_GFX_YOUNGSTER 35
-#define MAP_OBJ_GFX_BUG_CATCHER 36
-#define MAP_OBJ_GFX_PSYCHIC_M 37
-#define MAP_OBJ_GFX_SCHOOL_KID_M 38
-#define MAP_OBJ_GFX_MANIAC 39
-#define MAP_OBJ_GFX_HEX_MANIAC 40
-#define MAP_OBJ_GFX_WOMAN_8 41
-#define MAP_OBJ_GFX_SWIMMER_M 42
-#define MAP_OBJ_GFX_SWIMMER_F 43
-#define MAP_OBJ_GFX_BLACK_BELT 44
-#define MAP_OBJ_GFX_BEAUTY 45
-#define MAP_OBJ_GFX_SCIENTIST_1 46
-#define MAP_OBJ_GFX_LASS 47
-#define MAP_OBJ_GFX_GENTLEMAN 48
-#define MAP_OBJ_GFX_SAILOR 49
-#define MAP_OBJ_GFX_FISHERMAN 50
-#define MAP_OBJ_GFX_RUNNING_TRIATHLETE_M 51
-#define MAP_OBJ_GFX_RUNNING_TRIATHLETE_F 52
-#define MAP_OBJ_GFX_TUBER_F 53
-#define MAP_OBJ_GFX_TUBER_M 54
-#define MAP_OBJ_GFX_HIKER 55
-#define MAP_OBJ_GFX_CYCLING_TRIATHLETE_M 56
-#define MAP_OBJ_GFX_CYCLING_TRIATHLETE_F 57
-#define MAP_OBJ_GFX_NURSE 58
-#define MAP_OBJ_GFX_ITEM_BALL 59
-#define MAP_OBJ_GFX_BERRY_TREE 60
-#define MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES 61
-#define MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES 62
-#define MAP_OBJ_GFX_BRENDAN_ACRO_BIKE 63
-#define MAP_OBJ_GFX_PROF_BIRCH 64
-#define MAP_OBJ_GFX_MAN_5 65
-#define MAP_OBJ_GFX_MAN_6 66
-#define MAP_OBJ_GFX_REPORTER_M 67
-#define MAP_OBJ_GFX_REPORTER_F 68
-#define MAP_OBJ_GFX_BARD 69
-#define MAP_OBJ_GFX_HIPSTER 70
-#define MAP_OBJ_GFX_TRADER 71
-#define MAP_OBJ_GFX_STORYTELLER 72
-#define MAP_OBJ_GFX_GIDDY 73
-#define MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1 74
-#define MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2 75
-#define MAP_OBJ_GFX_UNUSED_NATU_DOLL 76
-#define MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL 77
-#define MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL 78
-#define MAP_OBJ_GFX_UNUSED_WOOPER_DOLL 79
-#define MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL 80
-#define MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL 81
-#define MAP_OBJ_GFX_CUTTABLE_TREE 82
-#define MAP_OBJ_GFX_MART_EMPLOYEE 83
-#define MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN 84
-#define MAP_OBJ_GFX_TEALA 85
-#define MAP_OBJ_GFX_BREAKABLE_ROCK 86
-#define MAP_OBJ_GFX_PUSHABLE_BOULDER 87
-#define MAP_OBJ_GFX_MR_BRINEYS_BOAT 88
-#define MAP_OBJ_GFX_MAY_NORMAL 89
-#define MAP_OBJ_GFX_MAY_MACH_BIKE 90
-#define MAP_OBJ_GFX_MAY_ACRO_BIKE 91
-#define MAP_OBJ_GFX_MAY_SURFING 92
-#define MAP_OBJ_GFX_MAY_FIELD_MOVE 93
-#define MAP_OBJ_GFX_TRUCK 94
-#define MAP_OBJ_GFX_MACHOKE_CARRYING_BOX 95
-#define MAP_OBJ_GFX_MACHOKE_FACING_AWAY 96
-#define MAP_OBJ_GFX_BIRCHS_BAG 97
-#define MAP_OBJ_GFX_POOCHYENA 98
-#define MAP_OBJ_GFX_ARTIST 99
-#define MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL 100
-#define MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE 101
-#define MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE 102
-#define MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING 103
-#define MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE 104
-#define MAP_OBJ_GFX_RIVAL_MAY_NORMAL 105
-#define MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE 106
-#define MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE 107
-#define MAP_OBJ_GFX_RIVAL_MAY_SURFING 108
-#define MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE 109
-#define MAP_OBJ_GFX_CAMERAMAN 110
-#define MAP_OBJ_GFX_BRENDAN_UNDERWATER 111
-#define MAP_OBJ_GFX_MAY_UNDERWATER 112
-#define MAP_OBJ_GFX_MOVING_BOX 113
-#define MAP_OBJ_GFX_CABLE_CAR 114
-#define MAP_OBJ_GFX_SCIENTIST_2 115
-#define MAP_OBJ_GFX_MAN_7 116
-#define MAP_OBJ_GFX_AQUA_MEMBER_M 117
-#define MAP_OBJ_GFX_AQUA_MEMBER_F 118
-#define MAP_OBJ_GFX_MAGMA_MEMBER_M 119
-#define MAP_OBJ_GFX_MAGMA_MEMBER_F 120
-#define MAP_OBJ_GFX_SIDNEY 121
-#define MAP_OBJ_GFX_PHOEBE 122
-#define MAP_OBJ_GFX_GLACIA 123
-#define MAP_OBJ_GFX_DRAKE 124
-#define MAP_OBJ_GFX_ROXANNE 125
-#define MAP_OBJ_GFX_BRAWLY 126
-#define MAP_OBJ_GFX_WATTSON 127
-#define MAP_OBJ_GFX_FLANNERY 128
-#define MAP_OBJ_GFX_NORMAN 129
-#define MAP_OBJ_GFX_WINONA 130
-#define MAP_OBJ_GFX_LIZA 131
-#define MAP_OBJ_GFX_TATE 132
-#define MAP_OBJ_GFX_WALLACE 133
-#define MAP_OBJ_GFX_STEVEN 134
-#define MAP_OBJ_GFX_WALLY 135
-#define MAP_OBJ_GFX_LITTLE_BOY_3 136
-#define MAP_OBJ_GFX_BRENDAN_FISHING 137
-#define MAP_OBJ_GFX_MAY_FISHING 138
-#define MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN 139
-#define MAP_OBJ_GFX_SS_TIDAL 140
-#define MAP_OBJ_GFX_SUBMARINE_SHADOW 141
-#define MAP_OBJ_GFX_PICHU_DOLL 142
-#define MAP_OBJ_GFX_PIKACHU_DOLL 143
-#define MAP_OBJ_GFX_MARILL_DOLL 144
-#define MAP_OBJ_GFX_TOGEPI_DOLL 145
-#define MAP_OBJ_GFX_CYNDAQUIL_DOLL 146
-#define MAP_OBJ_GFX_CHIKORITA_DOLL 147
-#define MAP_OBJ_GFX_TOTODILE_DOLL 148
-#define MAP_OBJ_GFX_JIGGLYPUFF_DOLL 149
-#define MAP_OBJ_GFX_MEOWTH_DOLL 150
-#define MAP_OBJ_GFX_CLEFAIRY_DOLL 151
-#define MAP_OBJ_GFX_DITTO_DOLL 152
-#define MAP_OBJ_GFX_SMOOCHUM_DOLL 153
-#define MAP_OBJ_GFX_TREECKO_DOLL 154
-#define MAP_OBJ_GFX_TORCHIC_DOLL 155
-#define MAP_OBJ_GFX_MUDKIP_DOLL 156
-#define MAP_OBJ_GFX_DUSKULL_DOLL 157
-#define MAP_OBJ_GFX_WYNAUT_DOLL 158
-#define MAP_OBJ_GFX_BALTOY_DOLL 159
-#define MAP_OBJ_GFX_KECLEON_DOLL 160
-#define MAP_OBJ_GFX_AZURILL_DOLL 161
-#define MAP_OBJ_GFX_SKITTY_DOLL 162
-#define MAP_OBJ_GFX_SWABLU_DOLL 163
-#define MAP_OBJ_GFX_GULPIN_DOLL 164
-#define MAP_OBJ_GFX_LOTAD_DOLL 165
-#define MAP_OBJ_GFX_SEEDOT_DOLL 166
-#define MAP_OBJ_GFX_PIKA_CUSHION 167
-#define MAP_OBJ_GFX_ROUND_CUSHION 168
-#define MAP_OBJ_GFX_KISS_CUSHION 169
-#define MAP_OBJ_GFX_ZIGZAG_CUSHION 170
-#define MAP_OBJ_GFX_SPIN_CUSHION 171
-#define MAP_OBJ_GFX_DIAMOND_CUSHION 172
-#define MAP_OBJ_GFX_BALL_CUSHION 173
-#define MAP_OBJ_GFX_GRASS_CUSHION 174
-#define MAP_OBJ_GFX_FIRE_CUSHION 175
-#define MAP_OBJ_GFX_WATER_CUSHION 176
-#define MAP_OBJ_GFX_BIG_SNORLAX_DOLL 177
-#define MAP_OBJ_GFX_BIG_RHYDON_DOLL 178
-#define MAP_OBJ_GFX_BIG_LAPRAS_DOLL 179
-#define MAP_OBJ_GFX_BIG_VENUSAUR_DOLL 180
-#define MAP_OBJ_GFX_BIG_CHARIZARD_DOLL 181
-#define MAP_OBJ_GFX_BIG_BLASTOISE_DOLL 182
-#define MAP_OBJ_GFX_BIG_WAILMER_DOLL 183
-#define MAP_OBJ_GFX_BIG_REGIROCK_DOLL 184
-#define MAP_OBJ_GFX_BIG_REGICE_DOLL 185
-#define MAP_OBJ_GFX_BIG_REGISTEEL_DOLL 186
-#define MAP_OBJ_GFX_LATIAS 187
-#define MAP_OBJ_GFX_LATIOS 188
-#define MAP_OBJ_GFX_BOY_5 189
-#define MAP_OBJ_GFX_CONTEST_JUDGE 190
-#define MAP_OBJ_GFX_BRENDAN_WATERING 191
-#define MAP_OBJ_GFX_MAY_WATERING 192
-#define MAP_OBJ_GFX_BRENDAN_DECORATING 193
-#define MAP_OBJ_GFX_MAY_DECORATING 194
-#define MAP_OBJ_GFX_ARCHIE 195
-#define MAP_OBJ_GFX_MAXIE 196
-#define MAP_OBJ_GFX_KYOGRE_1 197
-#define MAP_OBJ_GFX_GROUDON_1 198
-#define MAP_OBJ_GFX_FOSSIL 199
-#define MAP_OBJ_GFX_REGIROCK 200
-#define MAP_OBJ_GFX_REGICE 201
-#define MAP_OBJ_GFX_REGISTEEL 202
-#define MAP_OBJ_GFX_SKITTY 203
-#define MAP_OBJ_GFX_KECLEON_1 204
-#define MAP_OBJ_GFX_KYOGRE_2 205
-#define MAP_OBJ_GFX_GROUDON_2 206
-#define MAP_OBJ_GFX_RAYQUAZA 207
-#define MAP_OBJ_GFX_ZIGZAGOON 208
-#define MAP_OBJ_GFX_PIKACHU 209
-#define MAP_OBJ_GFX_AZUMARILL 210
-#define MAP_OBJ_GFX_WINGULL 211
-#define MAP_OBJ_GFX_KECLEON_2 212
-#define MAP_OBJ_GFX_TUBER_M_SWIMMING 213
-#define MAP_OBJ_GFX_AZURILL 214
-#define MAP_OBJ_GFX_MOM 215
-#define MAP_OBJ_GFX_LINK_BRENDAN 216
-#define MAP_OBJ_GFX_LINK_MAY 217
-
-// These are dynamic object gfx ids.
-// They correspond with the values of the VAR_OBJ_GFX_ID_X vars.
-// More info about them in include/constants/vars.h
-#define MAP_OBJ_GFX_VAR_0 240
-#define MAP_OBJ_GFX_VAR_1 241
-#define MAP_OBJ_GFX_VAR_2 242
-#define MAP_OBJ_GFX_VAR_3 243
-#define MAP_OBJ_GFX_VAR_4 244
-#define MAP_OBJ_GFX_VAR_5 245
-#define MAP_OBJ_GFX_VAR_6 246
-#define MAP_OBJ_GFX_VAR_7 247
-#define MAP_OBJ_GFX_VAR_8 248
-#define MAP_OBJ_GFX_VAR_9 249
-#define MAP_OBJ_GFX_VAR_A 250
-#define MAP_OBJ_GFX_VAR_B 251
-#define MAP_OBJ_GFX_VAR_C 252
-#define MAP_OBJ_GFX_VAR_D 253
-#define MAP_OBJ_GFX_VAR_E 254
-#define MAP_OBJ_GFX_VAR_F 255
-
-#define SHADOW_SIZE_S 0
-#define SHADOW_SIZE_M 1
-#define SHADOW_SIZE_L 2
-#define SHADOW_SIZE_XL 3
-
-#define TRACKS_NONE 0
-#define TRACKS_FOOT 1
-#define TRACKS_BIKE_TIRE 2
-
-#endif // GUARD_CONSTANTS_MAP_OBJECTS_H
diff --git a/include/constants/metatile_behaviors.h b/include/constants/metatile_behaviors.h
new file mode 100644
index 000000000..a2f21d031
--- /dev/null
+++ b/include/constants/metatile_behaviors.h
@@ -0,0 +1,245 @@
+#ifndef GUARD_METATILE_BEHAVIORS
+#define GUARD_METATILE_BEHAVIORS
+
+#define MB_NORMAL 0x00
+#define MB_SECRET_BASE_WALL 0x01
+#define MB_TALL_GRASS 0x02
+#define MB_LONG_GRASS 0x03
+#define MB_UNUSED_04 0x04
+#define MB_UNUSED_05 0x05
+#define MB_UNUSED_DEEP_SAND 0x06
+#define MB_SHORT_GRASS 0x07
+#define MB_UNUSED_CAVE 0x08
+#define MB_LONG_GRASS_SOUTH_EDGE 0x09
+#define MB_NO_RUNNING 0x0A
+#define MB_INDOOR_ENCOUNTER 0x0B
+#define MB_MOUNTAIN_TOP 0x0C
+#define MB_SECRET_BASE_GLITTER_MATTTLE_PYRAMID_WARP 0x0D
+#define MB_MOSSDEEP_GYM_WARP 0x0E
+#define MB_MT_PYRE_HOLE 0x0F
+#define MB_POND_WATER 0x10
+#define MB_SEMI_DEEP_WATER 0x11
+#define MB_UNUSED_DEEP_WATER 0x12
+#define MB_WATERFALL 0x13
+#define MB_SOOTOPOLIS_DEEP_WATER 0x14
+#define MB_OCEAN_WATER 0x15
+#define MB_PUDDLE 0x16
+#define MB_SHALLOW_WATER 0x17
+#define MB_UNUSED_SOOTOPOLIS_DEEP_WATER 0x18
+#define MB_NO_SURFACING 0x19
+#define MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2 0x1A
+#define MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B
+#define MB_SHOAL_CAVE_ENTRANCE 0x1C
+#define MB_UNUSED_1D 0x1D
+#define MB_UNUSED_1E 0x1E
+#define MB_UNUSED_1F 0x1F
+#define MB_ICE 0x20
+#define MB_SAND 0x21
+#define MB_SEAWEED 0x22
+#define MB_UNUSED_23 0x23
+#define MB_ASHGRASS 0x24
+#define MB_FOOTPRINTS 0x25
+#define MB_THIN_ICE 0x26
+#define MB_CRACKED_ICE 0x27
+#define MB_HOT_SPRINGS 0x28
+#define MB_LAVARIDGE_GYM_B1F_WARP 0x29
+#define MB_SEAWEED_NO_SURFACING 0x2A
+#define MB_REFLECTION_UNDER_BRIDGE 0x2B
+#define MB_UNUSED_2C 0x2C
+#define MB_UNUSED_2D 0x2D
+#define MB_UNUSED_2E 0x2E
+#define MB_UNUSED_2F 0x2F
+#define MB_IMPASSABLE_EAST 0x30
+#define MB_IMPASSABLE_WEST 0x31
+#define MB_IMPASSABLE_NORTH 0x32
+#define MB_IMPASSABLE_SOUTH 0x33
+#define MB_IMPASSABLE_NORTHEAST 0x34
+#define MB_IMPASSABLE_NORTHWEST 0x35
+#define MB_IMPASSABLE_SOUTHEAST 0x36
+#define MB_IMPASSABLE_SOUTHWEST 0x37
+#define MB_JUMP_EAST 0x38
+#define MB_JUMP_WEST 0x39
+#define MB_JUMP_NORTH 0x3A
+#define MB_JUMP_SOUTH 0x3B
+#define MB_JUMP_NORTHEAST 0x3C
+#define MB_JUMP_NORTHWEST 0x3D
+#define MB_JUMP_SOUTHEAST 0x3E
+#define MB_JUMP_SOUTHWEST 0x3F
+#define MB_WALK_EAST 0x40
+#define MB_WALK_WEST 0x41
+#define MB_WALK_NORTH 0x42
+#define MB_WALK_SOUTH 0x43
+#define MB_SLIDE_EAST 0x44
+#define MB_SLIDE_WEST 0x45
+#define MB_SLIDE_NORTH 0x46
+#define MB_SLIDE_SOUTH 0x47
+#define MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48
+#define MB_UNUSED_49 0x49
+#define MB_UNUSED_4A 0x4A
+#define MB_UNUSED_4B 0x4B
+#define MB_UNUSED_4C 0x4C
+#define MB_UNUSED_4D 0x4D
+#define MB_UNUSED_4E 0x4E
+#define MB_UNUSED_4F 0x4F
+#define MB_UNUSED_EASTWARD_CURRENT 0x50
+#define MB_WESTWARD_CURRENT 0x51
+#define MB_NORTHWARD_CURRENT 0x52
+#define MB_SOUTHWARD_CURRENT 0x53
+#define MB_UNUSED_54 0x54
+#define MB_UNUSED_55 0x55
+#define MB_UNUSED_56 0x56
+#define MB_UNUSED_57 0x57
+#define MB_UNUSED_58 0x58
+#define MB_UNUSED_59 0x59
+#define MB_UNUSED_5A 0x5A
+#define MB_UNUSED_5B 0x5B
+#define MB_UNUSED_5C 0x5C
+#define MB_UNUSED_5D 0x5D
+#define MB_UNUSED_5E 0x5E
+#define MB_UNUSED_5F 0x5F
+#define MB_NON_ANIMATED_DOOR 0x60
+#define MB_LADDER 0x61
+#define MB_UNUSED_EAST_ARROW_WARP 0x62
+#define MB_WEST_ARROW_WARP 0x63
+#define MB_NORTH_ARROW_WARP 0x64
+#define MB_SOUTH_ARROW_WARP 0x65
+#define MB_CRACKED_FLOOR_HOLE 0x66
+#define MB_AQUA_HIDEOUT_WARP 0x67
+#define MB_LAVARIDGE_GYM_1F_WARP 0x68
+#define MB_ANIMATED_DOOR 0x69
+#define MB_UP_ESCALATOR 0x6A
+#define MB_DOWN_ESCALATOR 0x6B
+#define MB_WATER_DOOR 0x6C
+#define MB_WATER_SOUTH_ARROW_WARP 0x6D
+#define MB_UNUSED_DEEP_SOUTH_WARP 0x6E
+#define MB_UNUSED_6F 0x6F
+#define MB_WARP_OR_BRIDGE 0x70
+#define MB_UNUSED_71 0x71
+#define MB_ROUTE120_NORTH_BRIDGE_1 0x72
+#define MB_ROUTE120_NORTH_BRIDGE_2 0x73
+#define MB_PACIFIDLOG_VERTICAL_LOG_1 0x74
+#define MB_PACIFIDLOG_VERTICAL_LOG_2 0x75
+#define MB_PACIFIDLOG_HORIZONTAL_LOG_1 0x76
+#define MB_PACIFIDLOG_HORIZONTAL_LOG_2 0x77
+#define MB_FORTREE_BRIDGE 0x78
+#define MB_UNUSED_79 0x79
+#define MB_ROUTE120_SOUTH_BRIDGE_1 0x7A
+#define MB_ROUTE120_SOUTH_BRIDGE_2 0x7B
+#define MB_ROUTE120_NORTH_BRIDGE_3 0x7C
+#define MB_ROUTE120_NORTH_BRIDGE_4 0x7D
+#define MB_UNUSED_7E 0x7E
+#define MB_ROUTE110_BRIDGE 0x7F
+#define MB_COUNTER 0x80
+#define MB_UNUSED_81 0x81
+#define MB_UNUSED_82 0x82
+#define MB_PC 0x83
+#define MB_LINK_BATTLE_RECORDS 0x84
+#define MB_REGION_MAP 0x85
+#define MB_TELEVISION 0x86
+#define MB_POKEBLOCK_FEEDER 0x87
+#define MB_UNUSED_88 0x88
+#define MB_SLOT_MACHINE 0x89
+#define MB_ROULETTE 0x8A
+#define MB_CLOSED_SOOTOPOLIS_DOOR 0x8B
+#define MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C
+#define MB_PETALBURG_GYM_DOOR 0x8D
+#define MB_RUNNING_SHOES_MANUAL 0x8E
+#define MB_QUESTIONNAIRE 0x8F
+#define MB_SECRET_BASE_SPOT_RED_CAVE 0x90
+#define MB_SECRET_BASE_SPOT_RED_CAVE_OPEN 0x91
+#define MB_SECRET_BASE_SPOT_BROWN_CAVE 0x92
+#define MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN 0x93
+#define MB_SECRET_BASE_SPOT_YELLOW_CAVE 0x94
+#define MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN 0x95
+#define MB_SECRET_BASE_SPOT_TREE_1 0x96
+#define MB_SECRET_BASE_SPOT_TREE_1_OPEN 0x97
+#define MB_SECRET_BASE_SPOT_SHRUB 0x98
+#define MB_SECRET_BASE_SPOT_SHRUB_OPEN 0x99
+#define MB_SECRET_BASE_SPOT_BLUE_CAVE 0x9A
+#define MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN 0x9B
+#define MB_SECRET_BASE_SPOT_TREE_2 0x9C
+#define MB_SECRET_BASE_SPOT_TREE_2_OPEN 0x9D
+#define MB_UNUSED_9E 0x9E
+#define MB_UNUSED_9F 0x9F
+#define MB_BERRY_TREE_SOIL 0xA0
+#define MB_UNUSED_A1 0xA1
+#define MB_UNUSED_A2 0xA2
+#define MB_UNUSED_A3 0xA3
+#define MB_UNUSED_A4 0xA4
+#define MB_UNUSED_A5 0xA5
+#define MB_UNUSED_A6 0xA6
+#define MB_UNUSED_A7 0xA7
+#define MB_UNUSED_A8 0xA8
+#define MB_UNUSED_A9 0xA9
+#define MB_UNUSED_AA 0xAA
+#define MB_UNUSED_AB 0xAB
+#define MB_UNUSED_AC 0xAC
+#define MB_UNUSED_AD 0xAD
+#define MB_UNUSED_AE 0xAE
+#define MB_UNUSED_AF 0xAF
+#define MB_SECRET_BASE_PC 0xB0
+#define MB_RECORD_MIXING_SECRET_BASE_PC 0xB1
+#define MB_SECRET_BASE_UNUSED 0xB2
+#define MB_BLOCK_DECORATION 0xB3
+#define MB_SECRET_BASE_DECORATION 0xB4
+#define MB_SECRET_BASE_LARGE_MAT_EDGE 0xB5
+#define MB_UNUSED_B6 0xB6
+#define MB_SECRET_BASE_NORTH_WALL 0xB7
+#define MB_SECRET_BASE_BALLOON 0xB8
+#define MB_SECRET_BASE_IMPASSABLE 0xB9
+#define MB_SECRET_BASE_GLITTER_MAT 0xBA
+#define MB_SECRET_BASE_JUMP_MAT 0xBB
+#define MB_SECRET_BASE_SPIN_MAT 0xBC
+#define MB_SECRET_BASE_MUSIC_NOTE_MAT 0xBD
+#define MB_SECRET_BASE_BREAKABLE_DOOR 0xBE
+#define MB_SECRET_BASE_SAND_ORNAMENT 0xBF
+#define MB_IMPASSABLE_SOUTH_AND_NORTH 0xC0
+#define MB_IMPASSABLE_WEST_AND_EAST 0xC1
+#define MB_SECRET_BASE_HOLE 0xC2
+#define MB_LARGE_MAT_CENTER 0xC3
+#define MB_SECRET_BASE_SHIELD_OR_TOY_TV 0xC4
+#define MB_PLAYER_ROOM_PC_ON 0xC5
+#define MB_UNUSED_C6 0xC6
+#define MB_UNUSED_C7 0xC7
+#define MB_UNUSED_C8 0xC8
+#define MB_UNUSED_C9 0xC9
+#define MB_UNUSED_CA 0xCA
+#define MB_UNUSED_CB 0xCB
+#define MB_UNUSED_CC 0xCC
+#define MB_UNUSED_CD 0xCD
+#define MB_UNUSED_CE 0xCE
+#define MB_UNUSED_CF 0xCF
+#define MB_MUDDY_SLOPE 0xD0
+#define MB_BUMPY_SLOPE 0xD1
+#define MB_CRACKED_FLOOR 0xD2
+#define MB_ISOLATED_VERTICAL_RAIL 0xD3
+#define MB_ISOLATED_HORIZONTAL_RAIL 0xD4
+#define MB_VERTICAL_RAIL 0xD5
+#define MB_HORIZONTAL_RAIL 0xD6
+#define MB_UNUSED_D7 0xD7
+#define MB_UNUSED_D8 0xD8
+#define MB_UNUSED_D9 0xD9
+#define MB_UNUSED_DA 0xDA
+#define MB_UNUSED_DB 0xDB
+#define MB_UNUSED_DC 0xDC
+#define MB_UNUSED_DD 0xDD
+#define MB_UNUSED_DE 0xDE
+#define MB_UNUSED_DF 0xDF
+#define MB_PICTURE_BOOK_SHELF 0xE0
+#define MB_BOOKSHELF 0xE1
+#define MB_POKEMON_CENTER_BOOKSHELF 0xE2
+#define MB_VASE 0xE3
+#define MB_TRASH_CAN 0xE4
+#define MB_SHOP_SHELF 0xE5
+#define MB_BLUEPRINT 0xE6
+#define MB_UNUSED_E7 0xE7
+#define MB_UNUSED_E8 0xE8
+#define MB_UNUSED_E9 0xE9
+#define MB_UNUSED_EA 0xEA
+#define MB_UNUSED_EB 0xEB
+#define MB_UNUSED_EC 0xEC
+#define MB_UNUSED_ED 0xED
+#define MB_UNUSED_EE 0xEE
+#define MB_UNUSED_EF 0xEF
+
+#endif // GUARD_METATILE_BEHAVIORS
diff --git a/include/constants/region_map_sections.h b/include/constants/region_map_sections.h
new file mode 100644
index 000000000..38ca06e1b
--- /dev/null
+++ b/include/constants/region_map_sections.h
@@ -0,0 +1,97 @@
+#ifndef GUARD_REGIONMAPSEC_H
+#define GUARD_REGIONMAPSEC_H
+
+enum
+{
+ MAPSEC_LITTLEROOT_TOWN, // 0x00
+ MAPSEC_OLDALE_TOWN, // 0x01
+ MAPSEC_DEWFORD_TOWN, // 0x02
+ MAPSEC_LAVARIDGE_TOWN, // 0x03
+ MAPSEC_FALLARBOR_TOWN, // 0x04
+ MAPSEC_VERDANTURF_TOWN, // 0x05
+ MAPSEC_PACIFIDLOG_TOWN, // 0x06
+ MAPSEC_PETALBURG_CITY, // 0x07
+ MAPSEC_SLATEPORT_CITY, // 0x08
+ MAPSEC_MAUVILLE_CITY, // 0x09
+ MAPSEC_RUSTBORO_CITY, // 0x0A
+ MAPSEC_FORTREE_CITY, // 0x0B
+ MAPSEC_LILYCOVE_CITY, // 0x0C
+ MAPSEC_MOSSDEEP_CITY, // 0x0D
+ MAPSEC_SOOTOPOLIS_CITY, // 0x0E
+ MAPSEC_EVER_GRANDE_CITY, // 0x0F
+ MAPSEC_ROUTE_101, // 0x10
+ MAPSEC_ROUTE_102, // 0x11
+ MAPSEC_ROUTE_103, // 0x12
+ MAPSEC_ROUTE_104, // 0x13
+ MAPSEC_ROUTE_105, // 0x14
+ MAPSEC_ROUTE_106, // 0x15
+ MAPSEC_ROUTE_107, // 0x16
+ MAPSEC_ROUTE_108, // 0x17
+ MAPSEC_ROUTE_109, // 0x18
+ MAPSEC_ROUTE_110, // 0x19
+ MAPSEC_ROUTE_111, // 0x1A
+ MAPSEC_ROUTE_112, // 0x1B
+ MAPSEC_ROUTE_113, // 0x1C
+ MAPSEC_ROUTE_114, // 0x1D
+ MAPSEC_ROUTE_115, // 0x1E
+ MAPSEC_ROUTE_116, // 0x1F
+ MAPSEC_ROUTE_117, // 0x20
+ MAPSEC_ROUTE_118, // 0x21
+ MAPSEC_ROUTE_119, // 0x22
+ MAPSEC_ROUTE_120, // 0x23
+ MAPSEC_ROUTE_121, // 0x24
+ MAPSEC_ROUTE_122, // 0x25
+ MAPSEC_ROUTE_123, // 0x26
+ MAPSEC_ROUTE_124, // 0x27
+ MAPSEC_ROUTE_125, // 0x28
+ MAPSEC_ROUTE_126, // 0x29
+ MAPSEC_ROUTE_127, // 0x2A
+ MAPSEC_ROUTE_128, // 0x2B
+ MAPSEC_ROUTE_129, // 0x2C
+ MAPSEC_ROUTE_130, // 0x2D
+ MAPSEC_ROUTE_131, // 0x2E
+ MAPSEC_ROUTE_132, // 0x2F
+ MAPSEC_ROUTE_133, // 0x30
+ MAPSEC_ROUTE_134, // 0x31
+ MAPSEC_UNDERWATER_124, // 0x32
+ MAPSEC_UNDERWATER_125, // 0x33
+ MAPSEC_UNDERWATER_126, // 0x34
+ MAPSEC_UNDERWATER_127, // 0x35
+ MAPSEC_UNDERWATER_SOOTOPOLIS, // 0x36
+ MAPSEC_GRANITE_CAVE, // 0x37
+ MAPSEC_MT_CHIMNEY, // 0x38
+ MAPSEC_SAFARI_ZONE, // 0x39
+ MAPSEC_BATTLE_TOWER, // 0x3A
+ MAPSEC_PETALBURG_WOODS, // 0x3B
+ MAPSEC_RUSTURF_TUNNEL, // 0x3C
+ MAPSEC_ABANDONED_SHIP, // 0x3D
+ MAPSEC_NEW_MAUVILLE, // 0x3E
+ MAPSEC_METEOR_FALLS, // 0x3F
+ MAPSEC_METEOR_FALLS_2, // 0x40
+ MAPSEC_MT_PYRE, // 0x41
+ MAPSEC_EVIL_TEAM_HIDEOUT, // 0x42
+ MAPSEC_SHOAL_CAVE, // 0x43
+ MAPSEC_SEAFLOOR_CAVERN, // 0x44
+ MAPSEC_UNDERWATER_128, // 0x45
+ MAPSEC_VICTORY_ROAD, // 0x46
+ MAPSEC_MIRAGE_ISLAND, // 0x47
+ MAPSEC_CAVE_OF_ORIGIN, // 0x48
+ MAPSEC_SOUTHERN_ISLAND, // 0x49
+ MAPSEC_FIERY_PATH, // 0x4A
+ MAPSEC_FIERY_PATH_2, // 0x4B
+ MAPSEC_JAGGED_PASS, // 0x4C
+ MAPSEC_JAGGED_PASS_2, // 0x4D
+ MAPSEC_SEALED_CHAMBER, // 0x4E
+ MAPSEC_UNDERWATER_SEALED_CHAMBER, // 0x4F
+ MAPSEC_SCORCHED_SLAB, // 0x50
+ MAPSEC_ISLAND_CAVE, // 0x51
+ MAPSEC_DESERT_RUINS, // 0x52
+ MAPSEC_ANCIENT_TOMB, // 0x53
+ MAPSEC_INSIDE_OF_TRUCK, // 0x54
+ MAPSEC_SKY_PILLAR, // 0x55
+ MAPSEC_SECRET_BASE, // 0x56
+ MAPSEC_DYNAMIC, // 0x57
+ MAPSEC_NOTHING // 0x58
+};
+
+#endif // GUARD_REGIONMAPSEC_H
diff --git a/include/constants/songs.h b/include/constants/songs.h
index 920873a7c..45e3d335a 100644
--- a/include/constants/songs.h
+++ b/include/constants/songs.h
@@ -249,125 +249,125 @@
#define SE_W287B 245 // Stat Decreased
#define SE_W114 246 // Haze
#define SE_W063B 247 // Hyper Beam 2
-#define BGM_STOP 349
-#define BGM_TETSUJI 350 // Littleroot Town Test 'TETSUJI'
-#define BGM_FIELD13 351 // GSC - Route 38
-#define BGM_KACHI22 352 // Wild Pokémon Defeated
-#define BGM_KACHI2 353 // Wild Pokémon Defeated with Intro
-#define BGM_KACHI3 354 // Gym Leader Defeated
-#define BGM_KACHI5 355 // Victory! Elite Four
-#define BGM_PCC 356 // Crystal - Pokémon Communication Center
-#define BGM_NIBI 357 // GSC - Viridian/Saffron/Pewter/etc
-#define BGM_SUIKUN 358 // Crystal - Battle! Legendary Beasts
-#define BGM_DOORO1 359 // Route 101
-#define BGM_DOORO_X1 360 // Route 110
-#define BGM_DOORO_X3 361 // Route 120
-#define BGM_MACHI_S2 362 // Petalburg City
-#define BGM_MACHI_S4 363 // Oldale Town
-#define BGM_GIM 364 // Gym
-#define BGM_NAMINORI 365 // Surfing
-#define BGM_DAN01 366 // Caves and Darkness
-#define BGM_FANFA1 367 // Level Up!
-#define BGM_ME_ASA 368 // Pokémon Healed
-#define BGM_ME_BACHI 369 // Obtained a Badge!
-#define BGM_FANFA4 370 // Obtained an Item!
-#define BGM_FANFA5 371 // Your Pokémon Just Evolved!
-#define BGM_ME_WAZA 372 // Obtained a TM/HM!
-#define BGM_BIJYUTU 373 // Lilycove Musseum
-#define BGM_DOORO_X4 374 // Route 122/Intro
-#define BGM_FUNE_KAN 375 // Slateport Museum
-#define BGM_ME_SHINKA 376 // Evolution Intro
-#define BGM_SHINKA 377 // Evolution
-#define BGM_ME_WASURE 378 // Move Deleted
-#define BGM_SYOUJOEYE 379 // Encounter! Tuber
-#define BGM_BOYEYE 380 // Encounter! Boy
-#define BGM_DAN02 381 // Abandoned Ship
-#define BGM_MACHI_S3 382 // Fortree City
-#define BGM_ODAMAKI 383 // Professor Birch's Lab
-#define BGM_B_TOWER 384 // Battle Tower (RS)
-#define BGM_SWIMEYE 385 // Encounter! Swimmer
-#define BGM_DAN03 386 // Meteor Falls
-#define BGM_ME_KINOMI 387 // Obtained a Berry!
-#define BGM_ME_TAMA 388 // Awakening the Super-Ancient Pokémon
-#define BGM_ME_B_BIG 389 // Slots Jackpot!
-#define BGM_ME_B_SMALL 390 // Slots Victory!
-#define BGM_ME_ZANNEN 391 // Too bad!
-#define BGM_BD_TIME 392 // Roulette!
-#define BGM_TEST1 393 // Contest Test 1
-#define BGM_TEST2 394 // Contest Test 2
-#define BGM_TEST3 395 // Contest Test 3
-#define BGM_TEST4 396 // Contest Test 4
-#define BGM_TEST 397 // Encounter! Gentleman (Test?)
-#define BGM_GOMACHI0 398 // Verdanturf Town
-#define BGM_GOTOWN 399 // Rustboro City
-#define BGM_POKECEN 400 // Pokémon Center
-#define BGM_NEXTROAD 401 // Route 104
-#define BGM_GRANROAD 402 // Route 119
-#define BGM_CYCLING 403 // Cycling
-#define BGM_FRIENDLY 404 // Pokémart
-#define BGM_MISHIRO 405 // Littleroot Town
-#define BGM_TOZAN 406 // Sky Pillar
-#define BGM_GIRLEYE 407 // Encounter! Girl
-#define BGM_MINAMO 408 // Lilycove City
-#define BGM_ASHROAD 409 // Route 111
-#define BGM_EVENT0 410 // Help me!
-#define BGM_DEEPDEEP 411 // Underwater
-#define BGM_KACHI1 412 // Victory! Trainer
-#define BGM_TITLE3 413 // Title Screen
-#define BGM_DEMO1 414 // Opening Movie
-#define BGM_GIRL_SUP 415 // Encounter! May
-#define BGM_HAGESHII 416 // Encounter! Biker
-#define BGM_KAKKOII 417 // Encounter! Electric Trainer
-#define BGM_KAZANBAI 418 // Route 113
-#define BGM_AQA_0 419 // Encounter! Team Aqua
-#define BGM_TSURETEK 420 // Follow Me!
-#define BGM_BOY_SUP 421 // Encounter! Brendan
-#define BGM_RAINBOW 422 // Ever Grande City
-#define BGM_AYASII 423 // Encounter! Psychic
-#define BGM_KACHI4 424 // Victory! Aqua/Magma Grunt
-#define BGM_ROPEWAY 425 // Cable Car
-#define BGM_CASINO 426 // Game Corner
-#define BGM_HIGHTOWN 427 // Dewford Town
-#define BGM_SAFARI 428 // Safari Zone
-#define BGM_C_ROAD 429 // Victory Toad
-#define BGM_AJITO 430 // Aqua/Magma Hideout
-#define BGM_M_BOAT 431 // Sailing
-#define BGM_M_DUNGON 432 // Mt. Pyre (Inside)
-#define BGM_FINECITY 433 // Slateport City
-#define BGM_MACHUPI 434 // Mt. Pyre (Outside)
-#define BGM_P_SCHOOL 435 // Pokémon Trainer's School
-#define BGM_DENDOU 436 // Hall of Fame
-#define BGM_TONEKUSA 437 // Lavaridge Town
-#define BGM_MABOROSI 438 // Sealed Chamber
-#define BGM_CON_FAN 439 // You are the Champion!
-#define BGM_CONTEST0 440 // Pokémon Contest
-#define BGM_MGM0 441 // Encounter! Team Magma
-#define BGM_T_BATTLE 442 // Opening Battle
-#define BGM_OOAME 443 // The Flood
-#define BGM_HIDERI 444 // The Drought
-#define BGM_RUNECITY 445 // Sootopolis City
-#define BGM_CON_K 446 // Berry Blending Results
-#define BGM_EIKOU_R 447 // Hall of Fame
-#define BGM_KARAKURI 448 // Trick House
-#define BGM_HUTAGO 449 // Encounter! Kid
-#define BGM_SITENNOU 450 // Encounter! Elite Four
-#define BGM_YAMA_EYE 451 // Encounter! Hiker
-#define BGM_CONLOBBY 452 // Contest Lobby
-#define BGM_INTER_V 453 // Encounter! Gabby and Ty
-#define BGM_DAIGO 454 // Encounter! Wallace
-#define BGM_THANKFOR 455 // Credits
-#define BGM_END 456 // The End
-#define BGM_BATTLE27 457 // Battle! Wild Pokémon
-#define BGM_BATTLE31 458 // Battle! Team Aqua/Magma
-#define BGM_BATTLE20 459 // Battle! Trainer
-#define BGM_BATTLE32 460 // Battle! Gym Leader
-#define BGM_BATTLE33 461 // Battle! Champion
-#define BGM_BATTLE36 462 // Battle! Regi Trio
-#define BGM_BATTLE34 463 // Battle! Legendary Pokémon
-#define BGM_BATTLE35 464 // Battle! Rival
-#define BGM_BATTLE38 465 // Battle! Elite Four
-#define BGM_BATTLE30 466 // Battle! Archie/Maxie
+#define MUS_STOP 349
+#define MUS_TETSUJI 350 // Littleroot Town Test 'TETSUJI'
+#define MUS_FIELD13 351 // GSC - Route 38
+#define MUS_KACHI22 352 // Wild Pokémon Defeated
+#define MUS_KACHI2 353 // Wild Pokémon Defeated with Intro
+#define MUS_KACHI3 354 // Gym Leader Defeated
+#define MUS_KACHI5 355 // Victory! Elite Four
+#define MUS_PCC 356 // Crystal - Pokémon Communication Center
+#define MUS_NIBI 357 // GSC - Viridian/Saffron/Pewter/etc
+#define MUS_SUIKUN 358 // Crystal - Battle! Legendary Beasts
+#define MUS_DOORO1 359 // Route 101
+#define MUS_DOORO_X1 360 // Route 110
+#define MUS_DOORO_X3 361 // Route 120
+#define MUS_MACHI_S2 362 // Petalburg City
+#define MUS_MACHI_S4 363 // Oldale Town
+#define MUS_GIM 364 // Gym
+#define MUS_NAMINORI 365 // Surfing
+#define MUS_DAN01 366 // Caves and Darkness
+#define MUS_FANFA1 367 // Level Up!
+#define MUS_ME_ASA 368 // Pokémon Healed
+#define MUS_ME_BACHI 369 // Obtained a Badge!
+#define MUS_FANFA4 370 // Obtained an Item!
+#define MUS_FANFA5 371 // Your Pokémon Just Evolved!
+#define MUS_ME_WAZA 372 // Obtained a TM/HM!
+#define MUS_BIJYUTU 373 // Lilycove Musseum
+#define MUS_DOORO_X4 374 // Route 122/Intro
+#define MUS_FUNE_KAN 375 // Slateport Museum
+#define MUS_ME_SHINKA 376 // Evolution Intro
+#define MUS_SHINKA 377 // Evolution
+#define MUS_ME_WASURE 378 // Move Deleted
+#define MUS_SYOUJOEYE 379 // Encounter! Tuber
+#define MUS_BOYEYE 380 // Encounter! Boy
+#define MUS_DAN02 381 // Abandoned Ship
+#define MUS_MACHI_S3 382 // Fortree City
+#define MUS_ODAMAKI 383 // Professor Birch's Lab
+#define MUS_B_TOWER 384 // Battle Tower (RS)
+#define MUS_SWIMEYE 385 // Encounter! Swimmer
+#define MUS_DAN03 386 // Meteor Falls
+#define MUS_ME_KINOMI 387 // Obtained a Berry!
+#define MUS_ME_TAMA 388 // Awakening the Super-Ancient Pokémon
+#define MUS_ME_B_BIG 389 // Slots Jackpot!
+#define MUS_ME_B_SMALL 390 // Slots Victory!
+#define MUS_ME_ZANNEN 391 // Too bad!
+#define MUS_BD_TIME 392 // Roulette!
+#define MUS_TEST1 393 // Contest Test 1
+#define MUS_TEST2 394 // Contest Test 2
+#define MUS_TEST3 395 // Contest Test 3
+#define MUS_TEST4 396 // Contest Test 4
+#define MUS_TEST 397 // Encounter! Gentleman (Test?)
+#define MUS_GOMACHI0 398 // Verdanturf Town
+#define MUS_GOTOWN 399 // Rustboro City
+#define MUS_POKECEN 400 // Pokémon Center
+#define MUS_NEXTROAD 401 // Route 104
+#define MUS_GRANROAD 402 // Route 119
+#define MUS_CYCLING 403 // Cycling
+#define MUS_FRIENDLY 404 // Pokémart
+#define MUS_MISHIRO 405 // Littleroot Town
+#define MUS_TOZAN 406 // Sky Pillar
+#define MUS_GIRLEYE 407 // Encounter! Girl
+#define MUS_MINAMO 408 // Lilycove City
+#define MUS_ASHROAD 409 // Route 111
+#define MUS_EVENT0 410 // Help me!
+#define MUS_DEEPDEEP 411 // Underwater
+#define MUS_KACHI1 412 // Victory! Trainer
+#define MUS_TITLE3 413 // Title Screen
+#define MUS_DEMO1 414 // Opening Movie
+#define MUS_GIRL_SUP 415 // Encounter! May
+#define MUS_HAGESHII 416 // Encounter! Biker
+#define MUS_KAKKOII 417 // Encounter! Electric Trainer
+#define MUS_KAZANBAI 418 // Route 113
+#define MUS_AQA_0 419 // Encounter! Team Aqua
+#define MUS_TSURETEK 420 // Follow Me!
+#define MUS_BOY_SUP 421 // Encounter! Brendan
+#define MUS_RAINBOW 422 // Ever Grande City
+#define MUS_AYASII 423 // Encounter! Psychic
+#define MUS_KACHI4 424 // Victory! Aqua/Magma Grunt
+#define MUS_ROPEWAY 425 // Cable Car
+#define MUS_CASINO 426 // Game Corner
+#define MUS_HIGHTOWN 427 // Dewford Town
+#define MUS_SAFARI 428 // Safari Zone
+#define MUS_C_ROAD 429 // Victory Toad
+#define MUS_AJITO 430 // Aqua/Magma Hideout
+#define MUS_M_BOAT 431 // Sailing
+#define MUS_M_DUNGON 432 // Mt. Pyre (Inside)
+#define MUS_FINECITY 433 // Slateport City
+#define MUS_MACHUPI 434 // Mt. Pyre (Outside)
+#define MUS_P_SCHOOL 435 // Pokémon Trainer's School
+#define MUS_DENDOU 436 // Hall of Fame
+#define MUS_TONEKUSA 437 // Lavaridge Town
+#define MUS_MABOROSI 438 // Sealed Chamber
+#define MUS_CON_FAN 439 // You are the Champion!
+#define MUS_CONTEST0 440 // Pokémon Contest
+#define MUS_MGM0 441 // Encounter! Team Magma
+#define MUS_T_BATTLE 442 // Opening Battle
+#define MUS_OOAME 443 // The Flood
+#define MUS_HIDERI 444 // The Drought
+#define MUS_RUNECITY 445 // Sootopolis City
+#define MUS_CON_K 446 // Berry Blending Results
+#define MUS_EIKOU_R 447 // Hall of Fame
+#define MUS_KARAKURI 448 // Trick House
+#define MUS_HUTAGO 449 // Encounter! Kid
+#define MUS_SITENNOU 450 // Encounter! Elite Four
+#define MUS_YAMA_EYE 451 // Encounter! Hiker
+#define MUS_CONLOBBY 452 // Contest Lobby
+#define MUS_INTER_V 453 // Encounter! Gabby and Ty
+#define MUS_DAIGO 454 // Encounter! Wallace
+#define MUS_THANKFOR 455 // Credits
+#define MUS_END 456 // The End
+#define MUS_BATTLE27 457 // Battle! Wild Pokémon
+#define MUS_BATTLE31 458 // Battle! Team Aqua/Magma
+#define MUS_BATTLE20 459 // Battle! Trainer
+#define MUS_BATTLE32 460 // Battle! Gym Leader
+#define MUS_BATTLE33 461 // Battle! Champion
+#define MUS_BATTLE36 462 // Battle! Regi Trio
+#define MUS_BATTLE34 463 // Battle! Legendary Pokémon
+#define MUS_BATTLE35 464 // Battle! Rival
+#define MUS_BATTLE38 465 // Battle! Elite Four
+#define MUS_BATTLE30 466 // Battle! Archie/Maxie
-#define BGM_ROUTE_118 0x7FFF // What is this for?
+#define MUS_ROUTE_118 0x7FFF // What is this for?
#endif // GUARD_CONSTANTS_SONGS_H
diff --git a/include/constants/species.h b/include/constants/species.h
index f698ada14..dc9856081 100644
--- a/include/constants/species.h
+++ b/include/constants/species.h
@@ -447,4 +447,10 @@
#define NUM_SPECIES SPECIES_EGG
+#ifdef SAPPHIRE
+#define ROAMER_SPECIES SPECIES_LATIAS
+#else
+#define ROAMER_SPECIES SPECIES_LATIOS
+#endif
+
#endif // GUARD_CONSTANTS_SPECIES_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 682d45003..856aba069 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -25,9 +25,9 @@
#define VAR_TEMP_F 0x400F
// object gfx id vars
-// These 0x10 vars are used to dynamically control a map object's sprite.
+// These 0x10 vars are used to dynamically control a event object's sprite.
// For example, the rival's sprite id is dynamically set based on the player's gender.
-// See VarGetFieldObjectGraphicsId().
+// See VarGetEventObjectGraphicsId().
#define VAR_OBJ_GFX_ID_0 0x4010
#define VAR_OBJ_GFX_ID_1 0x4011
#define VAR_OBJ_GFX_ID_2 0x4012