summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDiegoisawesome <diego@domoreaweso.me>2019-02-05 14:35:42 -0600
committerDiegoisawesome <diego@domoreaweso.me>2019-02-05 14:35:42 -0600
commitbc4cc9f78a705636228c39311bb6e3c393f090d3 (patch)
treed2b59408df53676ffb65e217cc1a62cbcba05f97 /include
parent37e86d75788f4ed364db19aabce11e6e054a1084 (diff)
parentb0ee1009759ed1c46da81b1fb8410e2b75e42bb2 (diff)
Merge branch 'master' of github.com:pret/pokeemerald
Diffstat (limited to 'include')
-rw-r--r--include/battle.h81
-rw-r--r--include/battle_anim.h4
-rw-r--r--include/battle_util.h6
-rwxr-xr-xinclude/constants/layouts.h446
-rwxr-xr-xinclude/constants/map_groups.h592
-rw-r--r--include/constants/maps.h589
-rw-r--r--include/contest.h118
-rw-r--r--include/contest_painting.h3
-rw-r--r--include/gba/m4a_internal.h65
-rw-r--r--include/global.tv.h4
-rw-r--r--include/graphics.h4
-rw-r--r--include/list_menu.h2
-rw-r--r--include/party_menu.h2
-rwxr-xr-xinclude/pokedex_cry_screen.h2
-rw-r--r--include/text.h5
-rw-r--r--include/trade.h3
-rw-r--r--include/tv.h5
-rw-r--r--include/util.h2
18 files changed, 1216 insertions, 717 deletions
diff --git a/include/battle.h b/include/battle.h
index 73caed16f..94596c75e 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -28,10 +28,11 @@
#define B_ACTION_SAFARI_GO_NEAR 7
#define B_ACTION_SAFARI_RUN 8
#define B_ACTION_WALLY_THROW 9
-// The exact purposes of these are unclear
-#define B_ACTION_EXEC_SCRIPT 10 // when executing an action
+#define B_ACTION_EXEC_SCRIPT 10
+#define B_ACTION_TRY_FINISH 11
+#define B_ACTION_FINISHED 12
+
#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action
-#define B_ACTION_FINISHED 12 // when executing an action
#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action
#define B_ACTION_NONE 0xFF
@@ -128,36 +129,36 @@ struct UnknownFlags
struct DisableStruct
{
- u32 transformedMonPersonality;
- u16 disabledMove;
- u16 encoredMove;
- u8 protectUses;
- u8 stockpileCounter;
- u8 substituteHP;
- u8 disableTimer:4;
- u8 disableTimerStartValue:4;
- u8 encoredMovePos;
- u8 filler_D; // Unused field.
- u8 encoreTimer:4;
- u8 encoreTimerStartValue:4;
- u8 perishSongTimer:4;
- u8 perishSongTimerStartValue:4;
- u8 furyCutterCounter;
- u8 rolloutTimer:4;
- u8 rolloutTimerStartValue:4;
- u8 chargeTimer:4;
- u8 chargeTimerStartValue:4;
- u8 tauntTimer:4;
- u8 tauntTimer2:4;
- u8 battlerPreventingEscape;
- u8 battlerWithSureHit;
- u8 isFirstTurn;
- u8 unk17;
- u8 truantCounter:1;
- u8 truantUnknownBit:1;
- u8 unk18_a_2:2;
- u8 unk18_b:4;
- u8 rechargeTimer;
+ u32 transformedMonPersonality;
+ u16 disabledMove;
+ u16 encoredMove;
+ u8 protectUses;
+ u8 stockpileCounter;
+ u8 substituteHP;
+ u8 disableTimer:4;
+ u8 disableTimerStartValue:4;
+ u8 encoredMovePos;
+ u8 filler_D; // Unused field.
+ u8 encoreTimer:4;
+ u8 encoreTimerStartValue:4;
+ u8 perishSongTimer:4;
+ u8 perishSongTimerStartValue:4;
+ u8 furyCutterCounter;
+ u8 rolloutTimer:4;
+ u8 rolloutTimerStartValue:4;
+ u8 chargeTimer:4;
+ u8 chargeTimerStartValue:4;
+ u8 tauntTimer:4;
+ u8 tauntTimer2:4;
+ u8 battlerPreventingEscape;
+ u8 battlerWithSureHit;
+ u8 isFirstTurn;
+ u8 filler_17; // Unused field.
+ u8 truantCounter:1;
+ u8 truantSwitchInHack:1;
+ u8 filler_18_2:2; // Unused field.
+ u8 mimickedMoves:4;
+ u8 rechargeTimer;
};
struct ProtectStruct
@@ -168,7 +169,7 @@ struct ProtectStruct
u32 helpingHand:1;
u32 bounceMove:1;
u32 stealMove:1;
- u32 flag0Unknown:1;
+ u32 flag0Unknown:1; // Only set to 0 once.
u32 prlzImmobility:1;
u32 confusionSelfDmg:1;
u32 targetNotAffected:1;
@@ -178,10 +179,10 @@ struct ProtectStruct
u32 loveImmobility:1;
u32 usedDisabledMove:1;
u32 usedTauntedMove:1;
- u32 flag2Unknown:1;
+ u32 flag2Unknown:1; // Only set to 0 once. Checked in 'WasUnableToUseMove' function.
u32 flinchImmobility:1;
u32 notFirstStrike:1;
- u32 flag_x10:1;
+ u32 palaceUnableToUseMove:1;
u32 physicalDmg;
u32 specialDmg;
u8 physicalBattlerId;
@@ -300,8 +301,8 @@ struct BattleResults
u8 playerFaintCounter; // 0x0
u8 opponentFaintCounter; // 0x1
u8 playerSwitchesCounter; // 0x2
- u8 unk3; // 0x3
- u8 unk4; // 0x4
+ u8 numHealingItemsUsed; // 0x3
+ u8 numRevivesUsed; // 0x4
u8 playerMonWasDamaged:1; // 0x5
u8 usedMasterBall:1; // 0x5
u8 caughtMonBall:4; // 0x5
@@ -441,8 +442,8 @@ struct BattleStruct
u8 safariPkblThrowCounter;
u8 safariEscapeFactor;
u8 safariCatchFactor;
- u8 field_7D; // unknown spriteId
- u8 field_7E; // unknown spriteId
+ u8 linkBattleVsSpriteId_V; // The letter "V"
+ u8 linkBattleVsSpriteId_S; // The letter "S"
u8 formToChangeInto;
u8 chosenMovePositions[MAX_BATTLERS_COUNT];
u8 stateIdAfterSelScript[MAX_BATTLERS_COUNT];
diff --git a/include/battle_anim.h b/include/battle_anim.h
index fc0f603eb..8e8a17675 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -75,6 +75,10 @@ int GetAnimBgAttribute(u8 bgId, u8 attributeId);
// battle_anim_80A5C6C.s
void sub_80A6450(struct Sprite *sprite);
+void sub_80A8AEC(struct Sprite *sprite);
+void sub_80A8A6C(struct Sprite *sprite);
+void sub_80A8E30(struct Sprite *sprite);
+void sub_80A8B64(struct Sprite *sprite);
void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y);
void DestroySpriteAndMatrix(struct Sprite *sprite);
void AnimTranslateLinearSimple(struct Sprite *sprite);
diff --git a/include/battle_util.h b/include/battle_util.h
index b3fff196e..71bb22a00 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -42,9 +42,9 @@
#define WEATHER_HAS_EFFECT2 ((!ABILITY_ON_FIELD2(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD2(ABILITY_AIR_LOCK)))
u8 GetBattlerForBattleScript(u8 caseId);
-void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move);
-void PressurePPLoseOnUsingPerishSong(u8 bankAtk);
-void PressurePPLoseOnUsingImprision(u8 bankAtk);
+void PressurePPLose(u8 target, u8 attacker, u16 move);
+void PressurePPLoseOnUsingPerishSong(u8 attacker);
+void PressurePPLoseOnUsingImprision(u8 attacker);
void MarkAllBattlersForControllerExec(void); // unused
void MarkBattlerForControllerExec(u8 battlerId);
void sub_803F850(u8 arg0);
diff --git a/include/constants/layouts.h b/include/constants/layouts.h
new file mode 100755
index 000000000..d12db9b33
--- /dev/null
+++ b/include/constants/layouts.h
@@ -0,0 +1,446 @@
+#ifndef GUARD_CONSTANTS_LAYOUTS_H
+#define GUARD_CONSTANTS_LAYOUTS_H
+
+#define LAYOUT_PETALBURG_CITY 1
+#define LAYOUT_SLATEPORT_CITY 2
+#define LAYOUT_MAUVILLE_CITY 3
+#define LAYOUT_RUSTBORO_CITY 4
+#define LAYOUT_FORTREE_CITY 5
+#define LAYOUT_LILYCOVE_CITY 6
+#define LAYOUT_MOSSDEEP_CITY 7
+#define LAYOUT_SOOTOPOLIS_CITY 8
+#define LAYOUT_EVER_GRANDE_CITY 9
+#define LAYOUT_LITTLEROOT_TOWN 10
+#define LAYOUT_OLDALE_TOWN 11
+#define LAYOUT_DEWFORD_TOWN 12
+#define LAYOUT_LAVARIDGE_TOWN 13
+#define LAYOUT_FALLARBOR_TOWN 14
+#define LAYOUT_VERDANTURF_TOWN 15
+#define LAYOUT_PACIFIDLOG_TOWN 16
+#define LAYOUT_ROUTE101 17
+#define LAYOUT_ROUTE102 18
+#define LAYOUT_ROUTE103 19
+#define LAYOUT_ROUTE104 20
+#define LAYOUT_ROUTE105 21
+#define LAYOUT_ROUTE106 22
+#define LAYOUT_ROUTE107 23
+#define LAYOUT_ROUTE108 24
+#define LAYOUT_ROUTE109 25
+#define LAYOUT_ROUTE110 26
+#define LAYOUT_ROUTE111 27
+#define LAYOUT_ROUTE112 28
+#define LAYOUT_ROUTE113 29
+#define LAYOUT_ROUTE114 30
+#define LAYOUT_ROUTE115 31
+#define LAYOUT_ROUTE116 32
+#define LAYOUT_ROUTE117 33
+#define LAYOUT_ROUTE118 34
+#define LAYOUT_ROUTE119 35
+#define LAYOUT_ROUTE120 36
+#define LAYOUT_ROUTE121 37
+#define LAYOUT_ROUTE122 38
+#define LAYOUT_ROUTE123 39
+#define LAYOUT_ROUTE124 40
+#define LAYOUT_ROUTE125 41
+#define LAYOUT_ROUTE126 42
+#define LAYOUT_ROUTE127 43
+#define LAYOUT_ROUTE128 44
+#define LAYOUT_ROUTE129 45
+#define LAYOUT_UNKNOWN_MAP_08417FC4 46
+#define LAYOUT_ROUTE131 47
+#define LAYOUT_ROUTE132 48
+#define LAYOUT_ROUTE133 49
+#define LAYOUT_ROUTE134 50
+#define LAYOUT_UNDERWATER2 51
+#define LAYOUT_UNDERWATER3 52
+#define LAYOUT_UNDERWATER4 53
+#define LAYOUT_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F 54
+#define LAYOUT_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 55
+#define LAYOUT_LITTLEROOT_TOWN_MAYS_HOUSE_1F 56
+#define LAYOUT_LITTLEROOT_TOWN_MAYS_HOUSE_2F 57
+#define LAYOUT_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB 58
+#define LAYOUT_HOUSE1 59
+#define LAYOUT_HOUSE2 60
+#define LAYOUT_POKEMON_CENTER_1F 61
+#define LAYOUT_POKEMON_CENTER_2F 62
+#define LAYOUT_MART 63
+#define LAYOUT_HOUSE3 64
+#define LAYOUT_DEWFORD_TOWN_GYM 65
+#define LAYOUT_DEWFORD_TOWN_HALL 66
+#define LAYOUT_HOUSE4 67
+#define LAYOUT_LAVARIDGE_TOWN_HERB_SHOP 68
+#define LAYOUT_LAVARIDGE_TOWN_GYM_1F 69
+#define LAYOUT_LAVARIDGE_TOWN_GYM_B1F 70
+#define LAYOUT_LAVARIDGE_TOWN_POKEMON_CENTER_1F 71
+#define LAYOUT_FALLARBOR_TOWN_LEFTOVER_RSCONTEST_LOBBY 72
+#define LAYOUT_FALLARBOR_TOWN_LEFTOVER_RSCONTEST_HALL 73
+#define LAYOUT_LILYCOVE_CITY_HOUSE2 74
+#define LAYOUT_UNKNOWN_MAP_08428450 75
+#define LAYOUT_VERDANTURF_TOWN_WANDAS_HOUSE 76
+#define LAYOUT_PACIFIDLOG_TOWN_HOUSE1 77
+#define LAYOUT_PACIFIDLOG_TOWN_HOUSE2 78
+#define LAYOUT_PETALBURG_CITY_GYM 79
+#define LAYOUT_HOUSE_WITH_BED 80
+#define LAYOUT_SLATEPORT_CITY_STERNS_SHIPYARD_1F 81
+#define LAYOUT_SLATEPORT_CITY_STERNS_SHIPYARD_2F 82
+#define LAYOUT_UNKNOWN_MAP_084294C4 83
+#define LAYOUT_UNKNOWN_MAP_084294E8 84
+#define LAYOUT_SLATEPORT_CITY_POKEMON_FAN_CLUB 85
+#define LAYOUT_SLATEPORT_CITY_OCEANIC_MUSEUM_1F 86
+#define LAYOUT_SLATEPORT_CITY_OCEANIC_MUSEUM_2F 87
+#define LAYOUT_HARBOR 88
+#define LAYOUT_MAUVILLE_CITY_GYM 89
+#define LAYOUT_MAUVILLE_CITY_BIKE_SHOP 90
+#define LAYOUT_MAUVILLE_CITY_GAME_CORNER 91
+#define LAYOUT_RUSTBORO_CITY_DEVON_CORP_1F 92
+#define LAYOUT_RUSTBORO_CITY_DEVON_CORP_2F 93
+#define LAYOUT_RUSTBORO_CITY_GYM 94
+#define LAYOUT_RUSTBORO_CITY_POKEMON_SCHOOL 95
+#define LAYOUT_RUSTBORO_CITY_HOUSE 96
+#define LAYOUT_RUSTBORO_CITY_HOUSE1 97
+#define LAYOUT_RUSTBORO_CITY_CUTTERS_HOUSE 98
+#define LAYOUT_FORTREE_CITY_HOUSE1 99
+#define LAYOUT_FORTREE_CITY_GYM 100
+#define LAYOUT_FORTREE_CITY_HOUSE2 101
+#define LAYOUT_ROUTE104_MR_BRINEYS_HOUSE 102
+#define LAYOUT_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F 103
+#define LAYOUT_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F 104
+#define LAYOUT_LILYCOVE_CITY_CONTEST_LOBBY 105
+#define LAYOUT_LILYCOVE_CITY_CONTEST_HALL 106
+#define LAYOUT_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB 107
+#define LAYOUT_MOSSDEEP_CITY_GYM 108
+#define LAYOUT_SOOTOPOLIS_CITY_GYM_1F 109
+#define LAYOUT_SOOTOPOLIS_CITY_GYM_B1F 110
+#define LAYOUT_EVER_GRANDE_CITY_SIDNEYS_ROOM 111
+#define LAYOUT_EVER_GRANDE_CITY_PHOEBES_ROOM 112
+#define LAYOUT_EVER_GRANDE_CITY_GLACIAS_ROOM 113
+#define LAYOUT_EVER_GRANDE_CITY_DRAKES_ROOM 114
+#define LAYOUT_EVER_GRANDE_CITY_CHAMPIONS_ROOM 115
+#define LAYOUT_EVER_GRANDE_CITY_SHORT_HALL 116
+#define LAYOUT_ROUTE104_PRETTY_PETAL_FLOWER_SHOP 117
+#define LAYOUT_CABLE_CAR_STATION 118
+#define LAYOUT_ROUTE114_FOSSIL_MANIACS_HOUSE 119
+#define LAYOUT_ROUTE114_FOSSIL_MANIACS_TUNNEL 120
+#define LAYOUT_ROUTE114_LANETTES_HOUSE 121
+#define LAYOUT_ROUTE116_TUNNELERS_REST_HOUSE 122
+#define LAYOUT_ROUTE117_POKEMON_DAY_CARE 123
+#define LAYOUT_ROUTE121_SAFARI_ZONE_ENTRANCE 124
+#define LAYOUT_METEOR_FALLS_1F_1R 125
+#define LAYOUT_METEOR_FALLS_1F_2R 126
+#define LAYOUT_METEOR_FALLS_B1F_1R 127
+#define LAYOUT_METEOR_FALLS_B1F_2R 128
+#define LAYOUT_RUSTURF_TUNNEL 129
+#define LAYOUT_UNDERWATER_SOOTOPOLIS_CITY 130
+#define LAYOUT_DESERT_RUINS 131
+#define LAYOUT_GRANITE_CAVE_1F 132
+#define LAYOUT_GRANITE_CAVE_B1F 133
+#define LAYOUT_GRANITE_CAVE_B2F 134
+#define LAYOUT_PETALBURG_WOODS 135
+#define LAYOUT_MT_CHIMNEY 136
+#define LAYOUT_MT_PYRE_1F 137
+#define LAYOUT_MT_PYRE_2F 138
+#define LAYOUT_MT_PYRE_3F 139
+#define LAYOUT_MT_PYRE_4F 140
+#define LAYOUT_MT_PYRE_5F 141
+#define LAYOUT_MT_PYRE_6F 142
+#define LAYOUT_AQUA_HIDEOUT_1F 143
+#define LAYOUT_AQUA_HIDEOUT_B1F 144
+#define LAYOUT_AQUA_HIDEOUT_B2F 145
+#define LAYOUT_UNDERWATER_SEAFLOOR_CAVERN 146
+#define LAYOUT_SEAFLOOR_CAVERN_ENTRANCE 147
+#define LAYOUT_SEAFLOOR_CAVERN_ROOM1 148
+#define LAYOUT_SEAFLOOR_CAVERN_ROOM2 149
+#define LAYOUT_SEAFLOOR_CAVERN_ROOM3 150
+#define LAYOUT_SEAFLOOR_CAVERN_ROOM4 151
+#define LAYOUT_SEAFLOOR_CAVERN_ROOM5 152
+#define LAYOUT_SEAFLOOR_CAVERN_ROOM6 153
+#define LAYOUT_SEAFLOOR_CAVERN_ROOM7 154
+#define LAYOUT_SEAFLOOR_CAVERN_ROOM8 155
+#define LAYOUT_SEAFLOOR_CAVERN_ROOM9 156
+#define LAYOUT_CAVE_OF_ORIGIN_ENTRANCE 157
+#define LAYOUT_CAVE_OF_ORIGIN_1F 158
+#define LAYOUT_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1 159
+#define LAYOUT_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2 160
+#define LAYOUT_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3 161
+#define LAYOUT_CAVE_OF_ORIGIN_B1F 162
+#define LAYOUT_VICTORY_ROAD_1F 163
+#define LAYOUT_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM 164
+#define LAYOUT_SHOAL_CAVE_LOW_TIDE_INNER_ROOM 165
+#define LAYOUT_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM 166
+#define LAYOUT_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM 167
+#define LAYOUT_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM 168
+#define LAYOUT_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM 169
+#define LAYOUT_UNKNOWN_MAP_0843E6C0 170
+#define LAYOUT_UNKNOWN_MAP_0843E6E4 171
+#define LAYOUT_UNKNOWN_MAP_0843E708 172
+#define LAYOUT_UNKNOWN_MAP_0843E72C 173
+#define LAYOUT_UNKNOWN_MAP_0843E750 174
+#define LAYOUT_UNKNOWN_MAP_0843E774 175
+#define LAYOUT_UNKNOWN_MAP_0843E798 176
+#define LAYOUT_UNKNOWN_MAP_0843E7BC 177
+#define LAYOUT_UNKNOWN_MAP_0843E7E0 178
+#define LAYOUT_UNKNOWN_MAP_0843E804 179
+#define LAYOUT_UNKNOWN_MAP_0843E828 180
+#define LAYOUT_UNKNOWN_MAP_0843E84C 181
+#define LAYOUT_UNKNOWN_MAP_0843E870 182
+#define LAYOUT_UNKNOWN_MAP_0843E894 183
+#define LAYOUT_NEW_MAUVILLE_ENTRANCE 184
+#define LAYOUT_NEW_MAUVILLE_INSIDE 185
+#define LAYOUT_ABANDONED_SHIP_DECK 186
+#define LAYOUT_ABANDONED_SHIP_CORRIDORS_1F 187
+#define LAYOUT_ABANDONED_SHIP_ROOMS_1F 188
+#define LAYOUT_ABANDONED_SHIP_CORRIDORS_B1F 189
+#define LAYOUT_ABANDONED_SHIP_ROOMS_B1F 190
+#define LAYOUT_ABANDONED_SHIP_ROOMS2_B1F 191
+#define LAYOUT_ABANDONED_SHIP_UNDERWATER1 192
+#define LAYOUT_ABANDONED_SHIP_ROOM_B1F 193
+#define LAYOUT_ABANDONED_SHIP_ROOMS2_1F 194
+#define LAYOUT_ABANDONED_SHIP_CAPTAINS_OFFICE 195
+#define LAYOUT_ABANDONED_SHIP_UNDERWATER2 196
+#define LAYOUT_SECRET_BASE_RED_CAVE1 197
+#define LAYOUT_SECRET_BASE_BROWN_CAVE1 198
+#define LAYOUT_SECRET_BASE_BLUE_CAVE1 199
+#define LAYOUT_SECRET_BASE_YELLOW_CAVE1 200
+#define LAYOUT_SECRET_BASE_TREE1 201
+#define LAYOUT_SECRET_BASE_SHRUB1 202
+#define LAYOUT_SECRET_BASE_RED_CAVE2 203
+#define LAYOUT_SECRET_BASE_BROWN_CAVE2 204
+#define LAYOUT_SECRET_BASE_BLUE_CAVE2 205
+#define LAYOUT_SECRET_BASE_YELLOW_CAVE2 206
+#define LAYOUT_SECRET_BASE_TREE2 207
+#define LAYOUT_SECRET_BASE_SHRUB2 208
+#define LAYOUT_SECRET_BASE_RED_CAVE3 209
+#define LAYOUT_SECRET_BASE_BROWN_CAVE3 210
+#define LAYOUT_SECRET_BASE_BLUE_CAVE3 211
+#define LAYOUT_SECRET_BASE_YELLOW_CAVE3 212
+#define LAYOUT_SECRET_BASE_TREE3 213
+#define LAYOUT_SECRET_BASE_SHRUB3 214
+#define LAYOUT_SECRET_BASE_RED_CAVE4 215
+#define LAYOUT_SECRET_BASE_BROWN_CAVE4 216
+#define LAYOUT_SECRET_BASE_BLUE_CAVE4 217
+#define LAYOUT_SECRET_BASE_YELLOW_CAVE4 218
+#define LAYOUT_SECRET_BASE_TREE4 219
+#define LAYOUT_SECRET_BASE_SHRUB4 220
+#define LAYOUT_SINGLE_BATTLE_COLOSSEUM 221
+#define LAYOUT_TRADE_CENTER 222
+#define LAYOUT_RECORD_CORNER 223
+#define LAYOUT_DOUBLE_BATTLE_COLOSSEUM 224
+#define LAYOUT_LINK_CONTEST_ROOM1 225
+#define LAYOUT_UNKNOWN_MAP_25_29 226
+#define LAYOUT_UNKNOWN_MAP_25_30 227
+#define LAYOUT_UNKNOWN_MAP_25_31 228
+#define LAYOUT_UNKNOWN_MAP_25_32 229
+#define LAYOUT_UNKNOWN_MAP_25_33 230
+#define LAYOUT_UNKNOWN_MAP_25_34 231
+#define LAYOUT_LINK_CONTEST_ROOM2 232
+#define LAYOUT_LINK_CONTEST_ROOM3 233
+#define LAYOUT_LINK_CONTEST_ROOM4 234
+#define LAYOUT_LINK_CONTEST_ROOM5 235
+#define LAYOUT_LINK_CONTEST_ROOM6 236
+#define LAYOUT_INSIDE_OF_TRUCK 237
+#define LAYOUT_SAFARI_ZONE_NORTHWEST 238
+#define LAYOUT_SAFARI_ZONE_NORTH 239
+#define LAYOUT_SAFARI_ZONE_SOUTHWEST 240
+#define LAYOUT_SAFARI_ZONE_SOUTH 241
+#define LAYOUT_UNKNOWN_MAP_08447028 242
+#define LAYOUT_ROUTE109_SEASHORE_HOUSE 243
+#define LAYOUT_ROUTE110_TRICK_HOUSE_ENTRANCE 244
+#define LAYOUT_ROUTE110_TRICK_HOUSE_END 245
+#define LAYOUT_ROUTE110_TRICK_HOUSE_CORRIDOR 246
+#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE1 247
+#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE2 248
+#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE3 249
+#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE4 250
+#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE5 251
+#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE6 252
+#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE7 253
+#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE8 254
+#define LAYOUT_FORTREE_CITY_DECORATION_SHOP 255
+#define LAYOUT_ROUTE110_SEASIDE_CYCLING_ROAD_ENTRANCE 256
+#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_1F 257
+#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_2F 258
+#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_3F 259
+#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_4F 260
+#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_5F 261
+#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP 262
+#define LAYOUT_ROUTE130 263
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY 264
+#define LAYOUT_BATTLE_FRONTIER_OUTSIDE_WEST 265
+#define LAYOUT_BATTLE_ELEVATOR 266
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR 267
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM 268
+#define LAYOUT_RUSTBORO_CITY_DEVON_CORP_3F 269
+#define LAYOUT_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F 270
+#define LAYOUT_ROUTE119_WEATHER_INSTITUTE_1F 271
+#define LAYOUT_ROUTE119_WEATHER_INSTITUTE_2F 272
+#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 273
+#define LAYOUT_UNDERWATER1 274
+#define LAYOUT_MOSSDEEP_CITY_SPACE_CENTER_1F 275
+#define LAYOUT_MOSSDEEP_CITY_SPACE_CENTER_2F 276
+#define LAYOUT_SS_TIDAL_CORRIDOR 277
+#define LAYOUT_SS_TIDAL_LOWER_DECK 278
+#define LAYOUT_SS_TIDAL_ROOMS 279
+#define LAYOUT_ISLAND_CAVE 280
+#define LAYOUT_ANCIENT_TOMB 281
+#define LAYOUT_UNDERWATER_ROUTE134 282
+#define LAYOUT_UNDERWATER_SEALED_CHAMBER 283
+#define LAYOUT_SEALED_CHAMBER_OUTER_ROOM 284
+#define LAYOUT_VICTORY_ROAD_B1F 285
+#define LAYOUT_VICTORY_ROAD_B2F 286
+#define LAYOUT_ROUTE104_PROTOTYPE 287
+#define LAYOUT_GRANITE_CAVE_STEVENS_ROOM 288
+#define LAYOUT_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS 289
+#define LAYOUT_SOUTHERN_ISLAND_EXTERIOR 290
+#define LAYOUT_SOUTHERN_ISLAND_INTERIOR 291
+#define LAYOUT_JAGGED_PASS 292
+#define LAYOUT_FIERY_PATH 293
+#define LAYOUT_RUSTBORO_CITY_FLAT2_1F 294
+#define LAYOUT_RUSTBORO_CITY_FLAT2_2F 295
+#define LAYOUT_RUSTBORO_CITY_FLAT2_3F 296
+#define LAYOUT_SOOTOPOLIS_CITY_LOTAD_AND_SEEDOT_HOUSE 297
+#define LAYOUT_EVER_GRANDE_CITY_HALL_OF_FAME 298
+#define LAYOUT_LILYCOVE_CITY_COVE_LILY_MOTEL_1F 299
+#define LAYOUT_LILYCOVE_CITY_COVE_LILY_MOTEL_2F 300
+#define LAYOUT_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE 301
+#define LAYOUT_MT_PYRE_EXTERIOR 302
+#define LAYOUT_MT_PYRE_SUMMIT 303
+#define LAYOUT_SEALED_CHAMBER_INNER_ROOM 304
+#define LAYOUT_MOSSDEEP_CITY_GAME_CORNER_1F 305
+#define LAYOUT_MOSSDEEP_CITY_GAME_CORNER_B1F 306
+#define LAYOUT_SOOTOPOLIS_CITY_HOUSE1 307
+#define LAYOUT_SOOTOPOLIS_CITY_HOUSE2 308
+#define LAYOUT_SOOTOPOLIS_CITY_HOUSE3 309
+#define LAYOUT_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS 310
+#define LAYOUT_SCORCHED_SLAB 311
+#define LAYOUT_UNKNOWN_MAP_0845A394 312
+#define LAYOUT_RUSTBORO_CITY_FLAT1_1F 313
+#define LAYOUT_RUSTBORO_CITY_FLAT1_2F 314
+#define LAYOUT_EVER_GRANDE_CITY_HALL4 315
+#define LAYOUT_AQUA_HIDEOUT_UNUSED_RUBY_MAP1 316
+#define LAYOUT_AQUA_HIDEOUT_UNUSED_RUBY_MAP2 317
+#define LAYOUT_AQUA_HIDEOUT_UNUSED_RUBY_MAP3 318
+#define LAYOUT_UNKNOWN_MAP_0845D470 319
+#define LAYOUT_SKY_PILLAR_ENTRANCE 320
+#define LAYOUT_SKY_PILLAR_OUTSIDE 321
+#define LAYOUT_SKY_PILLAR_1F 322
+#define LAYOUT_SKY_PILLAR_2F 323
+#define LAYOUT_SKY_PILLAR_3F 324
+#define LAYOUT_SKY_PILLAR_4F 325
+#define LAYOUT_UNKNOWN_MAP_0845ECB4 326
+#define LAYOUT_MOSSDEEP_CITY_STEVENS_HOUSE 327
+#define LAYOUT_SHOAL_CAVE_LOW_TIDE_ICE_ROOM 328
+#define LAYOUT_SAFARI_ZONE_REST_HOUSE 329
+#define LAYOUT_SKY_PILLAR_5F 330
+#define LAYOUT_SKY_PILLAR_TOP 331
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_LOBBY 332
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR 333
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM 334
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM 335
+#define LAYOUT_MAGMA_HIDEOUT_1F 336
+#define LAYOUT_MAGMA_HIDEOUT_2F_1R 337
+#define LAYOUT_MAGMA_HIDEOUT_2F_2R 338
+#define LAYOUT_MAGMA_HIDEOUT_3F_1R 339
+#define LAYOUT_MAGMA_HIDEOUT_3F_2R 340
+#define LAYOUT_MAGMA_HIDEOUT_4F 341
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY 342
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR 343
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM 344
+#define LAYOUT_BATTLE_FRONTIER_OUTSIDE_EAST 345
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY 346
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM 347
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM 348
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY 349
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR 350
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM 351
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM1 352
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM2 353
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY 354
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR 355
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM 356
+#define LAYOUT_UNKNOWN_MAP_08469200 357
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3 358
+#define LAYOUT_UNKNOWN_MAP_084693AC 359
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY 360
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE 361
+#define LAYOUT_BATTLE_PYRAMID_SQUARE01 362
+#define LAYOUT_BATTLE_PYRAMID_SQUARE02 363
+#define LAYOUT_BATTLE_PYRAMID_SQUARE03 364
+#define LAYOUT_BATTLE_PYRAMID_SQUARE04 365
+#define LAYOUT_BATTLE_PYRAMID_SQUARE05 366
+#define LAYOUT_BATTLE_PYRAMID_SQUARE06 367
+#define LAYOUT_BATTLE_PYRAMID_SQUARE07 368
+#define LAYOUT_BATTLE_PYRAMID_SQUARE08 369
+#define LAYOUT_BATTLE_PYRAMID_SQUARE09 370
+#define LAYOUT_BATTLE_PYRAMID_SQUARE10 371
+#define LAYOUT_BATTLE_PYRAMID_SQUARE11 372
+#define LAYOUT_BATTLE_PYRAMID_SQUARE12 373
+#define LAYOUT_BATTLE_PYRAMID_SQUARE13 374
+#define LAYOUT_BATTLE_PYRAMID_SQUARE14 375
+#define LAYOUT_BATTLE_PYRAMID_SQUARE15 376
+#define LAYOUT_BATTLE_PYRAMID_SQUARE16 377
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP 378
+#define LAYOUT_MAGMA_HIDEOUT_3F_3R 379
+#define LAYOUT_MAGMA_HIDEOUT_2F_3R 380
+#define LAYOUT_MIRAGE_TOWER_1F 381
+#define LAYOUT_MIRAGE_TOWER_2F 382
+#define LAYOUT_MIRAGE_TOWER_3F 383
+#define LAYOUT_BATTLE_TENT_LOBBY 384
+#define LAYOUT_BATTLE_TENT_CORRIDOR 385
+#define LAYOUT_BATTLE_TENT_BATTLE_ROOM 386
+#define LAYOUT_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM 387
+#define LAYOUT_MIRAGE_TOWER_4F 388
+#define LAYOUT_DESERT_UNDERPASS 389
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM 390
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 391
+#define LAYOUT_ROUTE111_NO_MIRAGE_TOWER 392
+#define LAYOUT_UNION_ROOM 393
+#define LAYOUT_SAFARI_ZONE_NORTHEAST 394
+#define LAYOUT_SAFARI_ZONE_SOUTHEAST 395
+#define LAYOUT_BATTLE_FRONTIER_RANKING_HALL 396
+#define LAYOUT_BATTLE_FRONTIER_LOUNGE1 397
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_POINT_EXCHANGE_SERVICE_CORNER 398
+#define LAYOUT_BATTLE_FRONTIER_RECEPTION_GATE 399
+#define LAYOUT_ARTISAN_CAVE_B1F 400
+#define LAYOUT_ARTISAN_CAVE_1F 401
+#define LAYOUT_FARAWAY_ISLAND_ENTRANCE 402
+#define LAYOUT_FARAWAY_ISLAND_INTERIOR 403
+#define LAYOUT_BIRTH_ISLAND_EXTERIOR 404
+#define LAYOUT_ISLAND_HARBOR 405
+#define LAYOUT_UNDERWATER_MARINE_CAVE 406
+#define LAYOUT_MARINE_CAVE_ENTRANCE 407
+#define LAYOUT_TERRA_CAVE_ENTRANCE 408
+#define LAYOUT_TERRA_CAVE_END 409
+#define LAYOUT_UNDERWATER6 410
+#define LAYOUT_UNDERWATER7 411
+#define LAYOUT_UNDERWATER5 412
+#define LAYOUT_MARINE_CAVE_END 413
+#define LAYOUT_TRAINER_HILL_ENTRANCE 414
+#define LAYOUT_TRAINER_HILL_1F 415
+#define LAYOUT_TRAINER_HILL_2F 416
+#define LAYOUT_TRAINER_HILL_3F 417
+#define LAYOUT_TRAINER_HILL_4F 418
+#define LAYOUT_TRAINER_HILL_ROOF 419
+#define LAYOUT_ALTERING_CAVE 420
+#define LAYOUT_NAVEL_ROCK_EXTERIOR 421
+#define LAYOUT_NAVEL_ROCK_ENTRANCE 422
+#define LAYOUT_NAVEL_ROCK_TOP 423
+#define LAYOUT_NAVEL_ROCK_BOTTOM 424
+#define LAYOUT_NAVEL_ROCK_LADDER_ROOM1 425
+#define LAYOUT_NAVEL_ROCK_LADDER_ROOM2 426
+#define LAYOUT_NAVEL_ROCK_B1F 427
+#define LAYOUT_NAVEL_ROCK_FORK 428
+#define LAYOUT_BATTLE_FRONTIER_LOUNGE2 429
+#define LAYOUT_BATTLE_FRONTIER_SCOTTS_HOUSE 430
+#define LAYOUT_METEOR_FALLS_STEVENS_CAVE 431
+#define LAYOUT_UNKNOWN_MAP_08480DAC 432
+#define LAYOUT_UNKNOWN_MAP_08480F54 433
+#define LAYOUT_UNKNOWN_MAP_084810FC 434
+#define LAYOUT_UNKNOWN_MAP_084812A4 435
+#define LAYOUT_UNKNOWN_MAP_0848144C 436
+#define LAYOUT_UNKNOWN_MAP_084815F4 437
+#define LAYOUT_UNKNOWN_MAP_08481B24 438
+#define LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F 439
+#define LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_B1F 440
+#define LAYOUT_UNKNOWN_MAP_08481DBC 441
+
+#endif // GUARD_CONSTANTS_LAYOUTS_H
diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h
new file mode 100755
index 000000000..dc2ac2f32
--- /dev/null
+++ b/include/constants/map_groups.h
@@ -0,0 +1,592 @@
+#ifndef GUARD_CONSTANTS_MAP_GROUPS_H
+#define GUARD_CONSTANTS_MAP_GROUPS_H
+
+// Map Group 0
+#define MAP_PETALBURG_CITY (0 | (0 << 8))
+#define MAP_SLATEPORT_CITY (1 | (0 << 8))
+#define MAP_MAUVILLE_CITY (2 | (0 << 8))
+#define MAP_RUSTBORO_CITY (3 | (0 << 8))
+#define MAP_FORTREE_CITY (4 | (0 << 8))
+#define MAP_LILYCOVE_CITY (5 | (0 << 8))
+#define MAP_MOSSDEEP_CITY (6 | (0 << 8))
+#define MAP_SOOTOPOLIS_CITY (7 | (0 << 8))
+#define MAP_EVER_GRANDE_CITY (8 | (0 << 8))
+#define MAP_LITTLEROOT_TOWN (9 | (0 << 8))
+#define MAP_OLDALE_TOWN (10 | (0 << 8))
+#define MAP_DEWFORD_TOWN (11 | (0 << 8))
+#define MAP_LAVARIDGE_TOWN (12 | (0 << 8))
+#define MAP_FALLARBOR_TOWN (13 | (0 << 8))
+#define MAP_VERDANTURF_TOWN (14 | (0 << 8))
+#define MAP_PACIFIDLOG_TOWN (15 | (0 << 8))
+#define MAP_ROUTE101 (16 | (0 << 8))
+#define MAP_ROUTE102 (17 | (0 << 8))
+#define MAP_ROUTE103 (18 | (0 << 8))
+#define MAP_ROUTE104 (19 | (0 << 8))
+#define MAP_ROUTE105 (20 | (0 << 8))
+#define MAP_ROUTE106 (21 | (0 << 8))
+#define MAP_ROUTE107 (22 | (0 << 8))
+#define MAP_ROUTE108 (23 | (0 << 8))
+#define MAP_ROUTE109 (24 | (0 << 8))
+#define MAP_ROUTE110 (25 | (0 << 8))
+#define MAP_ROUTE111 (26 | (0 << 8))
+#define MAP_ROUTE112 (27 | (0 << 8))
+#define MAP_ROUTE113 (28 | (0 << 8))
+#define MAP_ROUTE114 (29 | (0 << 8))
+#define MAP_ROUTE115 (30 | (0 << 8))
+#define MAP_ROUTE116 (31 | (0 << 8))
+#define MAP_ROUTE117 (32 | (0 << 8))
+#define MAP_ROUTE118 (33 | (0 << 8))
+#define MAP_ROUTE119 (34 | (0 << 8))
+#define MAP_ROUTE120 (35 | (0 << 8))
+#define MAP_ROUTE121 (36 | (0 << 8))
+#define MAP_ROUTE122 (37 | (0 << 8))
+#define MAP_ROUTE123 (38 | (0 << 8))
+#define MAP_ROUTE124 (39 | (0 << 8))
+#define MAP_ROUTE125 (40 | (0 << 8))
+#define MAP_ROUTE126 (41 | (0 << 8))
+#define MAP_ROUTE127 (42 | (0 << 8))
+#define MAP_ROUTE128 (43 | (0 << 8))
+#define MAP_ROUTE129 (44 | (0 << 8))
+#define MAP_ROUTE130 (45 | (0 << 8))
+#define MAP_ROUTE131 (46 | (0 << 8))
+#define MAP_ROUTE132 (47 | (0 << 8))
+#define MAP_ROUTE133 (48 | (0 << 8))
+#define MAP_ROUTE134 (49 | (0 << 8))
+#define MAP_UNDERWATER1 (50 | (0 << 8))
+#define MAP_UNDERWATER2 (51 | (0 << 8))
+#define MAP_UNDERWATER3 (52 | (0 << 8))
+#define MAP_UNDERWATER4 (53 | (0 << 8))
+#define MAP_UNDERWATER5 (54 | (0 << 8))
+#define MAP_UNDERWATER6 (55 | (0 << 8))
+#define MAP_UNDERWATER7 (56 | (0 << 8))
+
+// Map Group 1
+#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8))
+#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F (1 | (1 << 8))
+#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F (2 | (1 << 8))
+#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F (3 | (1 << 8))
+#define MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB (4 | (1 << 8))
+
+// Map Group 2
+#define MAP_OLDALE_TOWN_HOUSE1 (0 | (2 << 8))
+#define MAP_OLDALE_TOWN_HOUSE2 (1 | (2 << 8))
+#define MAP_OLDALE_TOWN_POKEMON_CENTER_1F (2 | (2 << 8))
+#define MAP_OLDALE_TOWN_POKEMON_CENTER_2F (3 | (2 << 8))
+#define MAP_OLDALE_TOWN_MART (4 | (2 << 8))
+
+// Map Group 3
+#define MAP_DEWFORD_TOWN_HOUSE1 (0 | (3 << 8))
+#define MAP_DEWFORD_TOWN_POKEMON_CENTER_1F (1 | (3 << 8))
+#define MAP_DEWFORD_TOWN_POKEMON_CENTER_2F (2 | (3 << 8))
+#define MAP_DEWFORD_TOWN_GYM (3 | (3 << 8))
+#define MAP_DEWFORD_TOWN_HALL (4 | (3 << 8))
+#define MAP_DEWFORD_TOWN_HOUSE2 (5 | (3 << 8))
+
+// Map Group 4
+#define MAP_LAVARIDGE_TOWN_HERB_SHOP (0 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_GYM_1F (1 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_GYM_B1F (2 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_HOUSE (3 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_MART (4 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F (5 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_2F (6 | (4 << 8))
+
+// Map Group 5
+#define MAP_FALLARBOR_TOWN_MART (0 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_BATTLE_TENT_LOBBY (1 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_BATTLE_TENT_CORRIDOR (2 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F (5 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_HOUSE1 (6 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_HOUSE2 (7 | (5 << 8))
+
+// Map Group 6
+#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_BATTLE_TENT_CORRIDOR (1 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM (2 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_MART (3 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F (4 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_2F (5 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_WANDAS_HOUSE (6 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE (7 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_HOUSE (8 | (6 << 8))
+
+// Map Group 7
+#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F (0 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F (1 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_HOUSE1 (2 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_HOUSE2 (3 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_HOUSE3 (4 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_HOUSE4 (5 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_HOUSE5 (6 | (7 << 8))
+
+// Map Group 8
+#define MAP_PETALBURG_CITY_WALLYS_HOUSE (0 | (8 << 8))
+#define MAP_PETALBURG_CITY_GYM (1 | (8 << 8))
+#define MAP_PETALBURG_CITY_HOUSE1 (2 | (8 << 8))
+#define MAP_PETALBURG_CITY_HOUSE2 (3 | (8 << 8))
+#define MAP_PETALBURG_CITY_POKEMON_CENTER_1F (4 | (8 << 8))
+#define MAP_PETALBURG_CITY_POKEMON_CENTER_2F (5 | (8 << 8))
+#define MAP_PETALBURG_CITY_MART (6 | (8 << 8))
+
+// Map Group 9
+#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_1F (0 | (9 << 8))
+#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_2F (1 | (9 << 8))
+#define MAP_SLATEPORT_CITY_BATTLE_TENT_LOBBY (2 | (9 << 8))
+#define MAP_SLATEPORT_CITY_BATTLE_TENT_CORRIDOR (3 | (9 << 8))
+#define MAP_SLATEPORT_CITY_BATTLE_TENT_BATTLE_ROOM (4 | (9 << 8))
+#define MAP_SLATEPORT_CITY_HOUSE1 (5 | (9 << 8))
+#define MAP_SLATEPORT_CITY_POKEMON_FAN_CLUB (6 | (9 << 8))
+#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F (7 | (9 << 8))
+#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F (8 | (9 << 8))
+#define MAP_SLATEPORT_CITY_HARBOR (9 | (9 << 8))
+#define MAP_SLATEPORT_CITY_HOUSE2 (10 | (9 << 8))
+#define MAP_SLATEPORT_CITY_POKEMON_CENTER_1F (11 | (9 << 8))
+#define MAP_SLATEPORT_CITY_POKEMON_CENTER_2F (12 | (9 << 8))
+#define MAP_SLATEPORT_CITY_MART (13 | (9 << 8))
+
+// Map Group 10
+#define MAP_MAUVILLE_CITY_GYM (0 | (10 << 8))
+#define MAP_MAUVILLE_CITY_BIKE_SHOP (1 | (10 << 8))
+#define MAP_MAUVILLE_CITY_HOUSE1 (2 | (10 << 8))
+#define MAP_MAUVILLE_CITY_GAME_CORNER (3 | (10 << 8))
+#define MAP_MAUVILLE_CITY_HOUSE2 (4 | (10 << 8))
+#define MAP_MAUVILLE_CITY_POKEMON_CENTER_1F (5 | (10 << 8))
+#define MAP_MAUVILLE_CITY_POKEMON_CENTER_2F (6 | (10 << 8))
+#define MAP_MAUVILLE_CITY_MART (7 | (10 << 8))
+
+// Map Group 11
+#define MAP_RUSTBORO_CITY_DEVON_CORP_1F (0 | (11 << 8))
+#define MAP_RUSTBORO_CITY_DEVON_CORP_2F (1 | (11 << 8))
+#define MAP_RUSTBORO_CITY_DEVON_CORP_3F (2 | (11 << 8))
+#define MAP_RUSTBORO_CITY_GYM (3 | (11 << 8))
+#define MAP_RUSTBORO_CITY_POKEMON_SCHOOL (4 | (11 << 8))
+#define MAP_RUSTBORO_CITY_POKEMON_CENTER_1F (5 | (11 << 8))
+#define MAP_RUSTBORO_CITY_POKEMON_CENTER_2F (6 | (11 << 8))
+#define MAP_RUSTBORO_CITY_MART (7 | (11 << 8))
+#define MAP_RUSTBORO_CITY_FLAT1_1F (8 | (11 << 8))
+#define MAP_RUSTBORO_CITY_FLAT1_2F (9 | (11 << 8))
+#define MAP_RUSTBORO_CITY_HOUSE1 (10 | (11 << 8))
+#define MAP_RUSTBORO_CITY_CUTTERS_HOUSE (11 | (11 << 8))
+#define MAP_RUSTBORO_CITY_HOUSE2 (12 | (11 << 8))
+#define MAP_RUSTBORO_CITY_FLAT2_1F (13 | (11 << 8))
+#define MAP_RUSTBORO_CITY_FLAT2_2F (14 | (11 << 8))
+#define MAP_RUSTBORO_CITY_FLAT2_3F (15 | (11 << 8))
+#define MAP_RUSTBORO_CITY_HOUSE3 (16 | (11 << 8))
+
+// Map Group 12
+#define MAP_FORTREE_CITY_HOUSE1 (0 | (12 << 8))
+#define MAP_FORTREE_CITY_GYM (1 | (12 << 8))
+#define MAP_FORTREE_CITY_POKEMON_CENTER_1F (2 | (12 << 8))
+#define MAP_FORTREE_CITY_POKEMON_CENTER_2F (3 | (12 << 8))
+#define MAP_FORTREE_CITY_MART (4 | (12 << 8))
+#define MAP_FORTREE_CITY_HOUSE2 (5 | (12 << 8))
+#define MAP_FORTREE_CITY_HOUSE3 (6 | (12 << 8))
+#define MAP_FORTREE_CITY_HOUSE4 (7 | (12 << 8))
+#define MAP_FORTREE_CITY_HOUSE5 (8 | (12 << 8))
+#define MAP_FORTREE_CITY_DECORATION_SHOP (9 | (12 << 8))
+
+// Map Group 13
+#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F (0 | (13 << 8))
+#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F (1 | (13 << 8))
+#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F (2 | (13 << 8))
+#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F (3 | (13 << 8))
+#define MAP_LILYCOVE_CITY_CONTEST_LOBBY (4 | (13 << 8))
+#define MAP_LILYCOVE_CITY_CONTEST_HALL (5 | (13 << 8))
+#define MAP_LILYCOVE_CITY_POKEMON_CENTER_1F (6 | (13 << 8))
+#define MAP_LILYCOVE_CITY_POKEMON_CENTER_2F (7 | (13 << 8))
+#define MAP_LILYCOVE_CITY_UNUSED_MART (8 | (13 << 8))
+#define MAP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB (9 | (13 << 8))
+#define MAP_LILYCOVE_CITY_HARBOR (10 | (13 << 8))
+#define MAP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE (11 | (13 << 8))
+#define MAP_LILYCOVE_CITY_HOUSE1 (12 | (13 << 8))
+#define MAP_LILYCOVE_CITY_HOUSE2 (13 | (13 << 8))
+#define MAP_LILYCOVE_CITY_HOUSE3 (14 | (13 << 8))
+#define MAP_LILYCOVE_CITY_HOUSE4 (15 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F (16 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_2F (17 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_3F (18 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_4F (19 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_5F (20 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP (21 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR (22 | (13 << 8))
+
+// Map Group 14
+#define MAP_MOSSDEEP_CITY_GYM (0 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_HOUSE1 (1 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_HOUSE2 (2 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F (3 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_2F (4 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_MART (5 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_HOUSE3 (6 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_STEVENS_HOUSE (7 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_HOUSE4 (8 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_SPACE_CENTER_1F (9 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_SPACE_CENTER_2F (10 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_GAME_CORNER_1F (11 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_GAME_CORNER_B1F (12 | (14 << 8))
+
+// Map Group 15
+#define MAP_SOOTOPOLIS_CITY_GYM_1F (0 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_GYM_B1F (1 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F (2 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F (3 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_MART (4 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE1 (5 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE2 (6 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE3 (7 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE4 (8 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE5 (9 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE6 (10 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE7 (11 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_LOTAD_AND_SEEDOT_HOUSE (12 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F (13 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_B1F (14 | (15 << 8))
+
+// Map Group 16
+#define MAP_EVER_GRANDE_CITY_SIDNEYS_ROOM (0 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_PHOEBES_ROOM (1 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_GLACIAS_ROOM (2 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_DRAKES_ROOM (3 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_CHAMPIONS_ROOM (4 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_HALL1 (5 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_HALL2 (6 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_HALL3 (7 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_HALL4 (8 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_HALL5 (9 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F (10 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_HALL_OF_FAME (11 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F (12 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_2F (13 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F (14 | (16 << 8))
+
+// Map Group 17
+#define MAP_ROUTE104_MR_BRINEYS_HOUSE (0 | (17 << 8))
+#define MAP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP (1 | (17 << 8))
+
+// Map Group 18
+#define MAP_ROUTE111_WINSTRATE_FAMILYS_HOUSE (0 | (18 << 8))
+#define MAP_ROUTE111_OLD_LADYS_REST_STOP (1 | (18 << 8))
+
+// Map Group 19
+#define MAP_ROUTE112_CABLE_CAR_STATION (0 | (19 << 8))
+#define MAP_MT_CHIMNEY_CABLE_CAR_STATION (1 | (19 << 8))
+
+// Map Group 20
+#define MAP_ROUTE114_FOSSIL_MANIACS_HOUSE (0 | (20 << 8))
+#define MAP_ROUTE114_FOSSIL_MANIACS_TUNNEL (1 | (20 << 8))
+#define MAP_ROUTE114_LANETTES_HOUSE (2 | (20 << 8))
+
+// Map Group 21
+#define MAP_ROUTE116_TUNNELERS_REST_HOUSE (0 | (21 << 8))
+
+// Map Group 22
+#define MAP_ROUTE117_POKEMON_DAY_CARE (0 | (22 << 8))
+
+// Map Group 23
+#define MAP_ROUTE121_SAFARI_ZONE_ENTRANCE (0 | (23 << 8))
+
+// Map Group 24
+#define MAP_METEOR_FALLS_1F_1R (0 | (24 << 8))
+#define MAP_METEOR_FALLS_1F_2R (1 | (24 << 8))
+#define MAP_METEOR_FALLS_B1F_1R (2 | (24 << 8))
+#define MAP_METEOR_FALLS_B1F_2R (3 | (24 << 8))
+#define MAP_RUSTURF_TUNNEL (4 | (24 << 8))
+#define MAP_UNDERWATER_SOOTOPOLIS_CITY (5 | (24 << 8))
+#define MAP_DESERT_RUINS (6 | (24 << 8))
+#define MAP_GRANITE_CAVE_1F (7 | (24 << 8))
+#define MAP_GRANITE_CAVE_B1F (8 | (24 << 8))
+#define MAP_GRANITE_CAVE_B2F (9 | (24 << 8))
+#define MAP_GRANITE_CAVE_STEVENS_ROOM (10 | (24 << 8))
+#define MAP_PETALBURG_WOODS (11 | (24 << 8))
+#define MAP_MT_CHIMNEY (12 | (24 << 8))
+#define MAP_JAGGED_PASS (13 | (24 << 8))
+#define MAP_FIERY_PATH (14 | (24 << 8))
+#define MAP_MT_PYRE_1F (15 | (24 << 8))
+#define MAP_MT_PYRE_2F (16 | (24 << 8))
+#define MAP_MT_PYRE_3F (17 | (24 << 8))
+#define MAP_MT_PYRE_4F (18 | (24 << 8))
+#define MAP_MT_PYRE_5F (19 | (24 << 8))
+#define MAP_MT_PYRE_6F (20 | (24 << 8))
+#define MAP_MT_PYRE_EXTERIOR (21 | (24 << 8))
+#define MAP_MT_PYRE_SUMMIT (22 | (24 << 8))
+#define MAP_AQUA_HIDEOUT_1F (23 | (24 << 8))
+#define MAP_AQUA_HIDEOUT_B1F (24 | (24 << 8))
+#define MAP_AQUA_HIDEOUT_B2F (25 | (24 << 8))
+#define MAP_UNDERWATER_SEAFLOOR_CAVERN (26 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ENTRANCE (27 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM1 (28 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM2 (29 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM3 (30 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM4 (31 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM5 (32 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM6 (33 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM7 (34 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM8 (35 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM9 (36 | (24 << 8))
+#define MAP_CAVE_OF_ORIGIN_ENTRANCE (37 | (24 << 8))
+#define MAP_CAVE_OF_ORIGIN_1F (38 | (24 << 8))
+#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1 (39 | (24 << 8))
+#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2 (40 | (24 << 8))
+#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3 (41 | (24 << 8))
+#define MAP_CAVE_OF_ORIGIN_B1F (42 | (24 << 8))
+#define MAP_VICTORY_ROAD_1F (43 | (24 << 8))
+#define MAP_VICTORY_ROAD_B1F (44 | (24 << 8))
+#define MAP_VICTORY_ROAD_B2F (45 | (24 << 8))
+#define MAP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM (46 | (24 << 8))
+#define MAP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM (47 | (24 << 8))
+#define MAP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM (48 | (24 << 8))
+#define MAP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM (49 | (24 << 8))
+#define MAP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM (50 | (24 << 8))
+#define MAP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM (51 | (24 << 8))
+#define MAP_NEW_MAUVILLE_ENTRANCE (52 | (24 << 8))
+#define MAP_NEW_MAUVILLE_INSIDE (53 | (24 << 8))
+#define MAP_ABANDONED_SHIP_DECK (54 | (24 << 8))
+#define MAP_ABANDONED_SHIP_CORRIDORS_1F (55 | (24 << 8))
+#define MAP_ABANDONED_SHIP_ROOMS_1F (56 | (24 << 8))
+#define MAP_ABANDONED_SHIP_CORRIDORS_B1F (57 | (24 << 8))
+#define MAP_ABANDONED_SHIP_ROOMS_B1F (58 | (24 << 8))
+#define MAP_ABANDONED_SHIP_ROOMS2_B1F (59 | (24 << 8))
+#define MAP_ABANDONED_SHIP_UNDERWATER1 (60 | (24 << 8))
+#define MAP_ABANDONED_SHIP_ROOM_B1F (61 | (24 << 8))
+#define MAP_ABANDONED_SHIP_ROOMS2_1F (62 | (24 << 8))
+#define MAP_ABANDONED_SHIP_CAPTAINS_OFFICE (63 | (24 << 8))
+#define MAP_ABANDONED_SHIP_UNDERWATER2 (64 | (24 << 8))
+#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS (65 | (24 << 8))
+#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS (66 | (24 << 8))
+#define MAP_ISLAND_CAVE (67 | (24 << 8))
+#define MAP_ANCIENT_TOMB (68 | (24 << 8))
+#define MAP_UNDERWATER_ROUTE134 (69 | (24 << 8))
+#define MAP_UNDERWATER_SEALED_CHAMBER (70 | (24 << 8))
+#define MAP_SEALED_CHAMBER_OUTER_ROOM (71 | (24 << 8))
+#define MAP_SEALED_CHAMBER_INNER_ROOM (72 | (24 << 8))
+#define MAP_SCORCHED_SLAB (73 | (24 << 8))
+#define MAP_AQUA_HIDEOUT_UNUSED_RUBY_MAP1 (74 | (24 << 8))
+#define MAP_AQUA_HIDEOUT_UNUSED_RUBY_MAP2 (75 | (24 << 8))
+#define MAP_AQUA_HIDEOUT_UNUSED_RUBY_MAP3 (76 | (24 << 8))
+#define MAP_SKY_PILLAR_ENTRANCE (77 | (24 << 8))
+#define MAP_SKY_PILLAR_OUTSIDE (78 | (24 << 8))
+#define MAP_SKY_PILLAR_1F (79 | (24 << 8))
+#define MAP_SKY_PILLAR_2F (80 | (24 << 8))
+#define MAP_SKY_PILLAR_3F (81 | (24 << 8))
+#define MAP_SKY_PILLAR_4F (82 | (24 << 8))
+#define MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM (83 | (24 << 8))
+#define MAP_SKY_PILLAR_5F (84 | (24 << 8))
+#define MAP_SKY_PILLAR_TOP (85 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_1F (86 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_2F_1R (87 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_2F_2R (88 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_3F_1R (89 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_3F_2R (90 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_4F (91 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_3F_3R (92 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_2F_3R (93 | (24 << 8))
+#define MAP_MIRAGE_TOWER_1F (94 | (24 << 8))
+#define MAP_MIRAGE_TOWER_2F (95 | (24 << 8))
+#define MAP_MIRAGE_TOWER_3F (96 | (24 << 8))
+#define MAP_MIRAGE_TOWER_4F (97 | (24 << 8))
+#define MAP_DESERT_UNDERPASS (98 | (24 << 8))
+#define MAP_ARTISAN_CAVE_B1F (99 | (24 << 8))
+#define MAP_ARTISAN_CAVE_1F (100 | (24 << 8))
+#define MAP_UNDERWATER_MARINE_CAVE (101 | (24 << 8))
+#define MAP_MARINE_CAVE_ENTRANCE (102 | (24 << 8))
+#define MAP_MARINE_CAVE_END (103 | (24 << 8))
+#define MAP_TERRA_CAVE_ENTRANCE (104 | (24 << 8))
+#define MAP_TERRA_CAVE_END (105 | (24 << 8))
+#define MAP_ALTERING_CAVE (106 | (24 << 8))
+#define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8))
+
+// Map Group 25
+#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE1 (3 | (25 << 8))
+#define MAP_SECRET_BASE_TREE1 (4 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB1 (5 | (25 << 8))
+#define MAP_SECRET_BASE_RED_CAVE2 (6 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE2 (7 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE2 (8 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE2 (9 | (25 << 8))
+#define MAP_SECRET_BASE_TREE2 (10 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB2 (11 | (25 << 8))
+#define MAP_SECRET_BASE_RED_CAVE3 (12 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE3 (13 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE3 (14 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE3 (15 | (25 << 8))
+#define MAP_SECRET_BASE_TREE3 (16 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB3 (17 | (25 << 8))
+#define MAP_SECRET_BASE_RED_CAVE4 (18 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE4 (19 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE4 (20 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8))
+#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8))
+#define MAP_SINGLE_BATTLE_COLOSSEUM (24 | (25 << 8))
+#define MAP_TRADE_CENTER (25 | (25 << 8))
+#define MAP_RECORD_CORNER (26 | (25 << 8))
+#define MAP_DOUBLE_BATTLE_COLOSSEUM (27 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM1 (28 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_29 (29 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_30 (30 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_31 (31 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_32 (32 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_33 (33 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_34 (34 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM2 (35 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM3 (36 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM4 (37 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM5 (38 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM6 (39 | (25 << 8))
+#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8))
+#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8))
+#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8))
+#define MAP_SS_TIDAL_ROOMS (43 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE01 (44 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE02 (45 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE03 (46 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE04 (47 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE05 (48 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE06 (49 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE07 (50 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE08 (51 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE09 (52 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE10 (53 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE11 (54 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE12 (55 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE13 (56 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE14 (57 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE15 (58 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE16 (59 | (25 << 8))
+#define MAP_UNION_ROOM (60 | (25 << 8))
+
+// Map Group 26
+#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8))
+#define MAP_SAFARI_ZONE_NORTH (1 | (26 << 8))
+#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8))
+#define MAP_SAFARI_ZONE_SOUTH (3 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_OUTSIDE_WEST (4 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY (5 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR (6 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR (7 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM (8 | (26 << 8))
+#define MAP_SOUTHERN_ISLAND_EXTERIOR (9 | (26 << 8))
+#define MAP_SOUTHERN_ISLAND_INTERIOR (10 | (26 << 8))
+#define MAP_SAFARI_ZONE_REST_HOUSE (11 | (26 << 8))
+#define MAP_SAFARI_ZONE_NORTHEAST (12 | (26 << 8))
+#define MAP_SAFARI_ZONE_SOUTHEAST (13 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_OUTSIDE_EAST (14 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM (15 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 (16 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2 (17 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY (18 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR (19 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM (20 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM (21 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY (22 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR (23 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM (24 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY (25 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE (26 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP (27 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY (28 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR (29 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM (30 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY (31 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM (32 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM (33 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM1 (37 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM2 (38 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3 (39 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE1 (41 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_POINT_EXCHANGE_SERVICE_CORNER (42 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE2 (43 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE3 (44 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE4 (45 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_SCOTTS_HOUSE (46 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE5 (47 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE6 (48 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE7 (49 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_RECEPTION_GATE (50 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE8 (51 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE9 (52 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F (53 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F (54 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_MART (55 | (26 << 8))
+#define MAP_FARAWAY_ISLAND_ENTRANCE (56 | (26 << 8))
+#define MAP_FARAWAY_ISLAND_INTERIOR (57 | (26 << 8))
+#define MAP_BIRTH_ISLAND_EXTERIOR (58 | (26 << 8))
+#define MAP_BIRTH_ISLAND_HARBOR (59 | (26 << 8))
+#define MAP_TRAINER_HILL_ENTRANCE (60 | (26 << 8))
+#define MAP_TRAINER_HILL_1F (61 | (26 << 8))
+#define MAP_TRAINER_HILL_2F (62 | (26 << 8))
+#define MAP_TRAINER_HILL_3F (63 | (26 << 8))
+#define MAP_TRAINER_HILL_4F (64 | (26 << 8))
+#define MAP_TRAINER_HILL_ROOF (65 | (26 << 8))
+#define MAP_NAVEL_ROCK_EXTERIOR (66 | (26 << 8))
+#define MAP_NAVEL_ROCK_HARBOR (67 | (26 << 8))
+#define MAP_NAVEL_ROCK_ENTRANCE (68 | (26 << 8))
+#define MAP_NAVEL_ROCK_B1F (69 | (26 << 8))
+#define MAP_NAVEL_ROCK_FORK (70 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP1 (71 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP2 (72 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP3 (73 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP4 (74 | (26 << 8))
+#define MAP_NAVEL_ROCK_TOP (75 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN01 (76 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN02 (77 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN03 (78 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN04 (79 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN05 (80 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN06 (81 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN07 (82 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN08 (83 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN09 (84 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN10 (85 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN11 (86 | (26 << 8))
+#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8))
+#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8))
+
+// Map Group 27
+#define MAP_ROUTE104_PROTOTYPE (0 | (27 << 8))
+#define MAP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP (1 | (27 << 8))
+
+// Map Group 28
+#define MAP_ROUTE109_SEASHORE_HOUSE (0 | (28 << 8))
+
+// Map Group 29
+#define MAP_ROUTE110_TRICK_HOUSE_ENTRANCE (0 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_END (1 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_CORRIDOR (2 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE1 (3 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE2 (4 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE3 (5 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE4 (6 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE5 (7 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE6 (8 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE7 (9 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE8 (10 | (29 << 8))
+#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE (11 | (29 << 8))
+#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE (12 | (29 << 8))
+
+// Map Group 30
+#define MAP_ROUTE113_GLASS_WORKSHOP (0 | (30 << 8))
+
+// Map Group 31
+#define MAP_ROUTE123_BERRY_MASTERS_HOUSE (0 | (31 << 8))
+
+// Map Group 32
+#define MAP_ROUTE119_WEATHER_INSTITUTE_1F (0 | (32 << 8))
+#define MAP_ROUTE119_WEATHER_INSTITUTE_2F (1 | (32 << 8))
+#define MAP_ROUTE119_HOUSE (2 | (32 << 8))
+
+// Map Group 33
+#define MAP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE (0 | (33 << 8))
+
+#define MAP_GROUPS_COUNT 34
+
+#endif // GUARD_CONSTANTS_MAP_GROUPS_H
diff --git a/include/constants/maps.h b/include/constants/maps.h
index c65f373af..e1e2da992 100644
--- a/include/constants/maps.h
+++ b/include/constants/maps.h
@@ -1,598 +1,11 @@
#ifndef GUARD_CONSTANTS_MAPS_H
#define GUARD_CONSTANTS_MAPS_H
-// Map Group 0
-#define MAP_PETALBURG_CITY (0 | (0 << 8))
-#define MAP_SLATEPORT_CITY (1 | (0 << 8))
-#define MAP_MAUVILLE_CITY (2 | (0 << 8))
-#define MAP_RUSTBORO_CITY (3 | (0 << 8))
-#define MAP_FORTREE_CITY (4 | (0 << 8))
-#define MAP_LILYCOVE_CITY (5 | (0 << 8))
-#define MAP_MOSSDEEP_CITY (6 | (0 << 8))
-#define MAP_SOOTOPOLIS_CITY (7 | (0 << 8))
-#define MAP_EVER_GRANDE_CITY (8 | (0 << 8))
-#define MAP_LITTLEROOT_TOWN (9 | (0 << 8))
-#define MAP_OLDALE_TOWN (10 | (0 << 8))
-#define MAP_DEWFORD_TOWN (11 | (0 << 8))
-#define MAP_LAVARIDGE_TOWN (12 | (0 << 8))
-#define MAP_FALLARBOR_TOWN (13 | (0 << 8))
-#define MAP_VERDANTURF_TOWN (14 | (0 << 8))
-#define MAP_PACIFIDLOG_TOWN (15 | (0 << 8))
-#define MAP_ROUTE101 (16 | (0 << 8))
-#define MAP_ROUTE102 (17 | (0 << 8))
-#define MAP_ROUTE103 (18 | (0 << 8))
-#define MAP_ROUTE104 (19 | (0 << 8))
-#define MAP_ROUTE105 (20 | (0 << 8))
-#define MAP_ROUTE106 (21 | (0 << 8))
-#define MAP_ROUTE107 (22 | (0 << 8))
-#define MAP_ROUTE108 (23 | (0 << 8))
-#define MAP_ROUTE109 (24 | (0 << 8))
-#define MAP_ROUTE110 (25 | (0 << 8))
-#define MAP_ROUTE111 (26 | (0 << 8))
-#define MAP_ROUTE112 (27 | (0 << 8))
-#define MAP_ROUTE113 (28 | (0 << 8))
-#define MAP_ROUTE114 (29 | (0 << 8))
-#define MAP_ROUTE115 (30 | (0 << 8))
-#define MAP_ROUTE116 (31 | (0 << 8))
-#define MAP_ROUTE117 (32 | (0 << 8))
-#define MAP_ROUTE118 (33 | (0 << 8))
-#define MAP_ROUTE119 (34 | (0 << 8))
-#define MAP_ROUTE120 (35 | (0 << 8))
-#define MAP_ROUTE121 (36 | (0 << 8))
-#define MAP_ROUTE122 (37 | (0 << 8))
-#define MAP_ROUTE123 (38 | (0 << 8))
-#define MAP_ROUTE124 (39 | (0 << 8))
-#define MAP_ROUTE125 (40 | (0 << 8))
-#define MAP_ROUTE126 (41 | (0 << 8))
-#define MAP_ROUTE127 (42 | (0 << 8))
-#define MAP_ROUTE128 (43 | (0 << 8))
-#define MAP_ROUTE129 (44 | (0 << 8))
-#define MAP_ROUTE130 (45 | (0 << 8))
-#define MAP_ROUTE131 (46 | (0 << 8))
-#define MAP_ROUTE132 (47 | (0 << 8))
-#define MAP_ROUTE133 (48 | (0 << 8))
-#define MAP_ROUTE134 (49 | (0 << 8))
-#define MAP_UNDERWATER1 (50 | (0 << 8))
-#define MAP_UNDERWATER2 (51 | (0 << 8))
-#define MAP_UNDERWATER3 (52 | (0 << 8))
-#define MAP_UNDERWATER4 (53 | (0 << 8))
-#define MAP_UNDERWATER5 (54 | (0 << 8))
-#define MAP_UNDERWATER6 (55 | (0 << 8))
-#define MAP_UNDERWATER7 (56 | (0 << 8))
-
-// Map Group 1
-#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8))
-#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F (1 | (1 << 8))
-#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F (2 | (1 << 8))
-#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F (3 | (1 << 8))
-#define MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB (4 | (1 << 8))
-
-// Map Group 2
-#define MAP_OLDALE_TOWN_HOUSE1 (0 | (2 << 8))
-#define MAP_OLDALE_TOWN_HOUSE2 (1 | (2 << 8))
-#define MAP_OLDALE_TOWN_POKEMON_CENTER_1F (2 | (2 << 8))
-#define MAP_OLDALE_TOWN_POKEMON_CENTER_2F (3 | (2 << 8))
-#define MAP_OLDALE_TOWN_MART (4 | (2 << 8))
-
-// Map Group 3
-#define MAP_DEWFORD_TOWN_HOUSE1 (0 | (3 << 8))
-#define MAP_DEWFORD_TOWN_POKEMON_CENTER_1F (1 | (3 << 8))
-#define MAP_DEWFORD_TOWN_POKEMON_CENTER_2F (2 | (3 << 8))
-#define MAP_DEWFORD_TOWN_GYM (3 | (3 << 8))
-#define MAP_DEWFORD_TOWN_HALL (4 | (3 << 8))
-#define MAP_DEWFORD_TOWN_HOUSE2 (5 | (3 << 8))
-
-// Map Group 4
-#define MAP_LAVARIDGE_TOWN_HERB_SHOP (0 | (4 << 8))
-#define MAP_LAVARIDGE_TOWN_GYM_1F (1 | (4 << 8))
-#define MAP_LAVARIDGE_TOWN_GYM_B1F (2 | (4 << 8))
-#define MAP_LAVARIDGE_TOWN_HOUSE (3 | (4 << 8))
-#define MAP_LAVARIDGE_TOWN_MART (4 | (4 << 8))
-#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F (5 | (4 << 8))
-#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_2F (6 | (4 << 8))
-
-// Map Group 5
-#define MAP_FALLARBOR_TOWN_MART (0 | (5 << 8))
-#define MAP_FALLARBOR_TOWN_BATTLE_TENT_LOBBY (1 | (5 << 8))
-#define MAP_FALLARBOR_TOWN_BATTLE_TENT_CORRIDOR (2 | (5 << 8))
-#define MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8))
-#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (5 << 8))
-#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F (5 | (5 << 8))
-#define MAP_FALLARBOR_TOWN_HOUSE1 (6 | (5 << 8))
-#define MAP_FALLARBOR_TOWN_HOUSE2 (7 | (5 << 8))
-
-// Map Group 6
-#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8))
-#define MAP_VERDANTURF_TOWN_BATTLE_TENT_CORRIDOR (1 | (6 << 8))
-#define MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM (2 | (6 << 8))
-#define MAP_VERDANTURF_TOWN_MART (3 | (6 << 8))
-#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F (4 | (6 << 8))
-#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_2F (5 | (6 << 8))
-#define MAP_VERDANTURF_TOWN_WANDAS_HOUSE (6 | (6 << 8))
-#define MAP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE (7 | (6 << 8))
-#define MAP_VERDANTURF_TOWN_HOUSE (8 | (6 << 8))
-
-// Map Group 7
-#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F (0 | (7 << 8))
-#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F (1 | (7 << 8))
-#define MAP_PACIFIDLOG_TOWN_HOUSE1 (2 | (7 << 8))
-#define MAP_PACIFIDLOG_TOWN_HOUSE2 (3 | (7 << 8))
-#define MAP_PACIFIDLOG_TOWN_HOUSE3 (4 | (7 << 8))
-#define MAP_PACIFIDLOG_TOWN_HOUSE4 (5 | (7 << 8))
-#define MAP_PACIFIDLOG_TOWN_HOUSE5 (6 | (7 << 8))
-
-// Map Group 8
-#define MAP_PETALBURG_CITY_WALLYS_HOUSE (0 | (8 << 8))
-#define MAP_PETALBURG_CITY_GYM (1 | (8 << 8))
-#define MAP_PETALBURG_CITY_HOUSE1 (2 | (8 << 8))
-#define MAP_PETALBURG_CITY_HOUSE2 (3 | (8 << 8))
-#define MAP_PETALBURG_CITY_POKEMON_CENTER_1F (4 | (8 << 8))
-#define MAP_PETALBURG_CITY_POKEMON_CENTER_2F (5 | (8 << 8))
-#define MAP_PETALBURG_CITY_MART (6 | (8 << 8))
-
-// Map Group 9
-#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_1F (0 | (9 << 8))
-#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_2F (1 | (9 << 8))
-#define MAP_SLATEPORT_CITY_BATTLE_TENT_LOBBY (2 | (9 << 8))
-#define MAP_SLATEPORT_CITY_BATTLE_TENT_CORRIDOR (3 | (9 << 8))
-#define MAP_SLATEPORT_CITY_BATTLE_TENT_BATTLE_ROOM (4 | (9 << 8))
-#define MAP_SLATEPORT_CITY_HOUSE1 (5 | (9 << 8))
-#define MAP_SLATEPORT_CITY_POKEMON_FAN_CLUB (6 | (9 << 8))
-#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F (7 | (9 << 8))
-#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F (8 | (9 << 8))
-#define MAP_SLATEPORT_CITY_HARBOR (9 | (9 << 8))
-#define MAP_SLATEPORT_CITY_HOUSE2 (10 | (9 << 8))
-#define MAP_SLATEPORT_CITY_POKEMON_CENTER_1F (11 | (9 << 8))
-#define MAP_SLATEPORT_CITY_POKEMON_CENTER_2F (12 | (9 << 8))
-#define MAP_SLATEPORT_CITY_MART (13 | (9 << 8))
-
-// Map Group 10
-#define MAP_MAUVILLE_CITY_GYM (0 | (10 << 8))
-#define MAP_MAUVILLE_CITY_BIKE_SHOP (1 | (10 << 8))
-#define MAP_MAUVILLE_CITY_HOUSE1 (2 | (10 << 8))
-#define MAP_MAUVILLE_CITY_GAME_CORNER (3 | (10 << 8))
-#define MAP_MAUVILLE_CITY_HOUSE2 (4 | (10 << 8))
-#define MAP_MAUVILLE_CITY_POKEMON_CENTER_1F (5 | (10 << 8))
-#define MAP_MAUVILLE_CITY_POKEMON_CENTER_2F (6 | (10 << 8))
-#define MAP_MAUVILLE_CITY_MART (7 | (10 << 8))
-
-// Map Group 11
-#define MAP_RUSTBORO_CITY_DEVON_CORP_1F (0 | (11 << 8))
-#define MAP_RUSTBORO_CITY_DEVON_CORP_2F (1 | (11 << 8))
-#define MAP_RUSTBORO_CITY_DEVON_CORP_3F (2 | (11 << 8))
-#define MAP_RUSTBORO_CITY_GYM (3 | (11 << 8))
-#define MAP_RUSTBORO_CITY_POKEMON_SCHOOL (4 | (11 << 8))
-#define MAP_RUSTBORO_CITY_POKEMON_CENTER_1F (5 | (11 << 8))
-#define MAP_RUSTBORO_CITY_POKEMON_CENTER_2F (6 | (11 << 8))
-#define MAP_RUSTBORO_CITY_MART (7 | (11 << 8))
-#define MAP_RUSTBORO_CITY_FLAT1_1F (8 | (11 << 8))
-#define MAP_RUSTBORO_CITY_FLAT1_2F (9 | (11 << 8))
-#define MAP_RUSTBORO_CITY_HOUSE1 (10 | (11 << 8))
-#define MAP_RUSTBORO_CITY_CUTTERS_HOUSE (11 | (11 << 8))
-#define MAP_RUSTBORO_CITY_HOUSE2 (12 | (11 << 8))
-#define MAP_RUSTBORO_CITY_FLAT2_1F (13 | (11 << 8))
-#define MAP_RUSTBORO_CITY_FLAT2_2F (14 | (11 << 8))
-#define MAP_RUSTBORO_CITY_FLAT2_3F (15 | (11 << 8))
-#define MAP_RUSTBORO_CITY_HOUSE3 (16 | (11 << 8))
-
-// Map Group 12
-#define MAP_FORTREE_CITY_HOUSE1 (0 | (12 << 8))
-#define MAP_FORTREE_CITY_GYM (1 | (12 << 8))
-#define MAP_FORTREE_CITY_POKEMON_CENTER_1F (2 | (12 << 8))
-#define MAP_FORTREE_CITY_POKEMON_CENTER_2F (3 | (12 << 8))
-#define MAP_FORTREE_CITY_MART (4 | (12 << 8))
-#define MAP_FORTREE_CITY_HOUSE2 (5 | (12 << 8))
-#define MAP_FORTREE_CITY_HOUSE3 (6 | (12 << 8))
-#define MAP_FORTREE_CITY_HOUSE4 (7 | (12 << 8))
-#define MAP_FORTREE_CITY_HOUSE5 (8 | (12 << 8))
-#define MAP_FORTREE_CITY_DECORATION_SHOP (9 | (12 << 8))
-
-// Map Group 13
-#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F (0 | (13 << 8))
-#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F (1 | (13 << 8))
-#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F (2 | (13 << 8))
-#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F (3 | (13 << 8))
-#define MAP_LILYCOVE_CITY_CONTEST_LOBBY (4 | (13 << 8))
-#define MAP_LILYCOVE_CITY_CONTEST_HALL (5 | (13 << 8))
-#define MAP_LILYCOVE_CITY_POKEMON_CENTER_1F (6 | (13 << 8))
-#define MAP_LILYCOVE_CITY_POKEMON_CENTER_2F (7 | (13 << 8))
-#define MAP_LILYCOVE_CITY_UNUSED_MART (8 | (13 << 8))
-#define MAP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB (9 | (13 << 8))
-#define MAP_LILYCOVE_CITY_HARBOR (10 | (13 << 8))
-#define MAP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE (11 | (13 << 8))
-#define MAP_LILYCOVE_CITY_HOUSE1 (12 | (13 << 8))
-#define MAP_LILYCOVE_CITY_HOUSE2 (13 | (13 << 8))
-#define MAP_LILYCOVE_CITY_HOUSE3 (14 | (13 << 8))
-#define MAP_LILYCOVE_CITY_HOUSE4 (15 | (13 << 8))
-#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F (16 | (13 << 8))
-#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_2F (17 | (13 << 8))
-#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_3F (18 | (13 << 8))
-#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_4F (19 | (13 << 8))
-#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_5F (20 | (13 << 8))
-#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP (21 | (13 << 8))
-#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR (22 | (13 << 8))
-
-// Map Group 14
-#define MAP_MOSSDEEP_CITY_GYM (0 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_HOUSE1 (1 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_HOUSE2 (2 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F (3 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_2F (4 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_MART (5 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_HOUSE3 (6 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_STEVENS_HOUSE (7 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_HOUSE4 (8 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_SPACE_CENTER_1F (9 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_SPACE_CENTER_2F (10 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_GAME_CORNER_1F (11 | (14 << 8))
-#define MAP_MOSSDEEP_CITY_GAME_CORNER_B1F (12 | (14 << 8))
-
-// Map Group 15
-#define MAP_SOOTOPOLIS_CITY_GYM_1F (0 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_GYM_B1F (1 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F (2 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F (3 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_MART (4 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_HOUSE1 (5 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_HOUSE2 (6 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_HOUSE3 (7 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_HOUSE4 (8 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_HOUSE5 (9 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_HOUSE6 (10 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_HOUSE7 (11 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_LOTAD_AND_SEEDOT_HOUSE (12 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F (13 | (15 << 8))
-#define MAP_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_B1F (14 | (15 << 8))
-
-// Map Group 16
-#define MAP_EVER_GRANDE_CITY_SIDNEYS_ROOM (0 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_PHOEBES_ROOM (1 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_GLACIAS_ROOM (2 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_DRAKES_ROOM (3 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_CHAMPIONS_ROOM (4 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_HALL1 (5 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_HALL2 (6 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_HALL3 (7 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_HALL4 (8 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_HALL5 (9 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F (10 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_HALL_OF_FAME (11 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F (12 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_2F (13 | (16 << 8))
-#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F (14 | (16 << 8))
-
-// Map Group 17
-#define MAP_ROUTE104_MR_BRINEYS_HOUSE (0 | (17 << 8))
-#define MAP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP (1 | (17 << 8))
-
-// Map Group 18
-#define MAP_ROUTE111_WINSTRATE_FAMILYS_HOUSE (0 | (18 << 8))
-#define MAP_ROUTE111_OLD_LADYS_REST_STOP (1 | (18 << 8))
-
-// Map Group 19
-#define MAP_ROUTE112_CABLE_CAR_STATION (0 | (19 << 8))
-#define MAP_MT_CHIMNEY_CABLE_CAR_STATION (1 | (19 << 8))
-
-// Map Group 20
-#define MAP_ROUTE114_FOSSIL_MANIACS_HOUSE (0 | (20 << 8))
-#define MAP_ROUTE114_FOSSIL_MANIACS_TUNNEL (1 | (20 << 8))
-#define MAP_ROUTE114_LANETTES_HOUSE (2 | (20 << 8))
-
-// Map Group 21
-#define MAP_ROUTE116_TUNNELERS_REST_HOUSE (0 | (21 << 8))
-
-// Map Group 22
-#define MAP_ROUTE117_POKEMON_DAY_CARE (0 | (22 << 8))
-
-// Map Group 23
-#define MAP_ROUTE121_SAFARI_ZONE_ENTRANCE (0 | (23 << 8))
-
-// Map Group 24
-#define MAP_METEOR_FALLS_1F_1R (0 | (24 << 8))
-#define MAP_METEOR_FALLS_1F_2R (1 | (24 << 8))
-#define MAP_METEOR_FALLS_B1F_1R (2 | (24 << 8))
-#define MAP_METEOR_FALLS_B1F_2R (3 | (24 << 8))
-#define MAP_RUSTURF_TUNNEL (4 | (24 << 8))
-#define MAP_UNDERWATER_SOOTOPOLIS_CITY (5 | (24 << 8))
-#define MAP_DESERT_RUINS (6 | (24 << 8))
-#define MAP_GRANITE_CAVE_1F (7 | (24 << 8))
-#define MAP_GRANITE_CAVE_B1F (8 | (24 << 8))
-#define MAP_GRANITE_CAVE_B2F (9 | (24 << 8))
-#define MAP_GRANITE_CAVE_STEVENS_ROOM (10 | (24 << 8))
-#define MAP_PETALBURG_WOODS (11 | (24 << 8))
-#define MAP_MT_CHIMNEY (12 | (24 << 8))
-#define MAP_JAGGED_PASS (13 | (24 << 8))
-#define MAP_FIERY_PATH (14 | (24 << 8))
-#define MAP_MT_PYRE_1F (15 | (24 << 8))
-#define MAP_MT_PYRE_2F (16 | (24 << 8))
-#define MAP_MT_PYRE_3F (17 | (24 << 8))
-#define MAP_MT_PYRE_4F (18 | (24 << 8))
-#define MAP_MT_PYRE_5F (19 | (24 << 8))
-#define MAP_MT_PYRE_6F (20 | (24 << 8))
-#define MAP_MT_PYRE_EXTERIOR (21 | (24 << 8))
-#define MAP_MT_PYRE_SUMMIT (22 | (24 << 8))
-#define MAP_AQUA_HIDEOUT_1F (23 | (24 << 8))
-#define MAP_AQUA_HIDEOUT_B1F (24 | (24 << 8))
-#define MAP_AQUA_HIDEOUT_B2F (25 | (24 << 8))
-#define MAP_UNDERWATER_SEAFLOOR_CAVERN (26 | (24 << 8))
-#define MAP_SEAFLOOR_CAVERN_ENTRANCE (27 | (24 << 8))
-#define MAP_SEAFLOOR_CAVERN_ROOM1 (28 | (24 << 8))
-#define MAP_SEAFLOOR_CAVERN_ROOM2 (29 | (24 << 8))
-#define MAP_SEAFLOOR_CAVERN_ROOM3 (30 | (24 << 8))
-#define MAP_SEAFLOOR_CAVERN_ROOM4 (31 | (24 << 8))
-#define MAP_SEAFLOOR_CAVERN_ROOM5 (32 | (24 << 8))
-#define MAP_SEAFLOOR_CAVERN_ROOM6 (33 | (24 << 8))
-#define MAP_SEAFLOOR_CAVERN_ROOM7 (34 | (24 << 8))
-#define MAP_SEAFLOOR_CAVERN_ROOM8 (35 | (24 << 8))
-#define MAP_SEAFLOOR_CAVERN_ROOM9 (36 | (24 << 8))
-#define MAP_CAVE_OF_ORIGIN_ENTRANCE (37 | (24 << 8))
-#define MAP_CAVE_OF_ORIGIN_1F (38 | (24 << 8))
-#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1 (39 | (24 << 8)) //
-#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2 (40 | (24 << 8)) // Ruby/Sapphire leftovers
-#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3 (41 | (24 << 8)) //
-#define MAP_CAVE_OF_ORIGIN_B1F (42 | (24 << 8))
-#define MAP_VICTORY_ROAD_1F (43 | (24 << 8))
-#define MAP_VICTORY_ROAD_B1F (44 | (24 << 8))
-#define MAP_VICTORY_ROAD_B2F (45 | (24 << 8))
-#define MAP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM (46 | (24 << 8))
-#define MAP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM (47 | (24 << 8))
-#define MAP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM (48 | (24 << 8))
-#define MAP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM (49 | (24 << 8))
-#define MAP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM (50 | (24 << 8))
-#define MAP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM (51 | (24 << 8))
-#define MAP_NEW_MAUVILLE_ENTRANCE (52 | (24 << 8))
-#define MAP_NEW_MAUVILLE_INSIDE (53 | (24 << 8))
-#define MAP_ABANDONED_SHIP_DECK (54 | (24 << 8))
-#define MAP_ABANDONED_SHIP_CORRIDORS_1F (55 | (24 << 8))
-#define MAP_ABANDONED_SHIP_ROOMS_1F (56 | (24 << 8))
-#define MAP_ABANDONED_SHIP_CORRIDORS_B1F (57 | (24 << 8))
-#define MAP_ABANDONED_SHIP_ROOMS_B1F (58 | (24 << 8))
-#define MAP_ABANDONED_SHIP_ROOMS2_B1F (59 | (24 << 8))
-#define MAP_ABANDONED_SHIP_UNDERWATER1 (60 | (24 << 8))
-#define MAP_ABANDONED_SHIP_ROOM_B1F (61 | (24 << 8))
-#define MAP_ABANDONED_SHIP_ROOMS2_1F (62 | (24 << 8))
-#define MAP_ABANDONED_SHIP_CAPTAINS_OFFICE (63 | (24 << 8))
-#define MAP_ABANDONED_SHIP_UNDERWATER2 (64 | (24 << 8))
-#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS (65 | (24 << 8))
-#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS (66 | (24 << 8))
-#define MAP_ISLAND_CAVE (67 | (24 << 8))
-#define MAP_ANCIENT_TOMB (68 | (24 << 8))
-#define MAP_UNDERWATER_ROUTE134 (69 | (24 << 8))
-#define MAP_UNDERWATER_SEALED_CHAMBER (70 | (24 << 8))
-#define MAP_SEALED_CHAMBER_OUTER_ROOM (71 | (24 << 8))
-#define MAP_SEALED_CHAMBER_INNER_ROOM (72 | (24 << 8))
-#define MAP_SCORCHED_SLAB (73 | (24 << 8))
-#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_1F (74 | (24 << 8)) //
-#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_B1F (75 | (24 << 8)) // Ruby/Sapphire leftovers
-#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_B2F (76 | (24 << 8)) //
-#define MAP_SKY_PILLAR_ENTRANCE (77 | (24 << 8))
-#define MAP_SKY_PILLAR_OUTSIDE (78 | (24 << 8))
-#define MAP_SKY_PILLAR_1F (79 | (24 << 8))
-#define MAP_SKY_PILLAR_2F (80 | (24 << 8))
-#define MAP_SKY_PILLAR_3F (81 | (24 << 8))
-#define MAP_SKY_PILLAR_4F (82 | (24 << 8))
-#define MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM (83 | (24 << 8))
-#define MAP_SKY_PILLAR_5F (84 | (24 << 8))
-#define MAP_SKY_PILLAR_TOP (85 | (24 << 8))
-#define MAP_MAGMA_HIDEOUT_1F (86 | (24 << 8))
-#define MAP_MAGMA_HIDEOUT_2F_1R (87 | (24 << 8))
-#define MAP_MAGMA_HIDEOUT_2F_2R (88 | (24 << 8))
-#define MAP_MAGMA_HIDEOUT_3F_1R (89 | (24 << 8))
-#define MAP_MAGMA_HIDEOUT_3F_2R (90 | (24 << 8))
-#define MAP_MAGMA_HIDEOUT_4F (91 | (24 << 8))
-#define MAP_MAGMA_HIDEOUT_3F_3R (92 | (24 << 8))
-#define MAP_MAGMA_HIDEOUT_2F_3R (93 | (24 << 8))
-#define MAP_MIRAGE_TOWER_1F (94 | (24 << 8))
-#define MAP_MIRAGE_TOWER_2F (95 | (24 << 8))
-#define MAP_MIRAGE_TOWER_3F (96 | (24 << 8))
-#define MAP_MIRAGE_TOWER_4F (97 | (24 << 8))
-#define MAP_DESERT_UNDERPASS (98 | (24 << 8))
-#define MAP_ARTISAN_CAVE_B1F (99 | (24 << 8))
-#define MAP_ARTISAN_CAVE_1F (100 | (24 << 8))
-#define MAP_UNDERWATER_MARINE_CAVE (101 | (24 << 8))
-#define MAP_MARINE_CAVE_ENTRANCE (102 | (24 << 8))
-#define MAP_MARINE_CAVE_END (103 | (24 << 8))
-#define MAP_TERRA_CAVE_ENTRANCE (104 | (24 << 8))
-#define MAP_TERRA_CAVE_END (105 | (24 << 8))
-#define MAP_ALTERING_CAVE (106 | (24 << 8))
-#define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8))
-
-// Map Group 25
-#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8))
-#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8))
-#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8))
-#define MAP_SECRET_BASE_YELLOW_CAVE1 (3 | (25 << 8))
-#define MAP_SECRET_BASE_TREE1 (4 | (25 << 8))
-#define MAP_SECRET_BASE_SHRUB1 (5 | (25 << 8))
-#define MAP_SECRET_BASE_RED_CAVE2 (6 | (25 << 8))
-#define MAP_SECRET_BASE_BROWN_CAVE2 (7 | (25 << 8))
-#define MAP_SECRET_BASE_BLUE_CAVE2 (8 | (25 << 8))
-#define MAP_SECRET_BASE_YELLOW_CAVE2 (9 | (25 << 8))
-#define MAP_SECRET_BASE_TREE2 (10 | (25 << 8))
-#define MAP_SECRET_BASE_SHRUB2 (11 | (25 << 8))
-#define MAP_SECRET_BASE_RED_CAVE3 (12 | (25 << 8))
-#define MAP_SECRET_BASE_BROWN_CAVE3 (13 | (25 << 8))
-#define MAP_SECRET_BASE_BLUE_CAVE3 (14 | (25 << 8))
-#define MAP_SECRET_BASE_YELLOW_CAVE3 (15 | (25 << 8))
-#define MAP_SECRET_BASE_TREE3 (16 | (25 << 8))
-#define MAP_SECRET_BASE_SHRUB3 (17 | (25 << 8))
-#define MAP_SECRET_BASE_RED_CAVE4 (18 | (25 << 8))
-#define MAP_SECRET_BASE_BROWN_CAVE4 (19 | (25 << 8))
-#define MAP_SECRET_BASE_BLUE_CAVE4 (20 | (25 << 8))
-#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8))
-#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8))
-#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8))
-#define MAP_SINGLE_BATTLE_COLOSSEUM (24 | (25 << 8))
-#define MAP_TRADE_CENTER (25 | (25 << 8))
-#define MAP_RECORD_CORNER (26 | (25 << 8))
-#define MAP_DOUBLE_BATTLE_COLOSSEUM (27 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM1 (28 | (25 << 8))
-#define MAP_UNKNOWN_MAP_25_29 (29 | (25 << 8))
-#define MAP_UNKNOWN_MAP_25_30 (30 | (25 << 8))
-#define MAP_UNKNOWN_MAP_25_31 (31 | (25 << 8))
-#define MAP_UNKNOWN_MAP_25_32 (32 | (25 << 8))
-#define MAP_UNKNOWN_MAP_25_33 (33 | (25 << 8))
-#define MAP_UNKNOWN_MAP_25_34 (34 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM2 (35 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM3 (36 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM4 (37 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM5 (38 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM6 (39 | (25 << 8))
-#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8))
-#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8))
-#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8))
-#define MAP_SS_TIDAL_ROOMS (43 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE01 (44 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE02 (45 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE03 (46 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE04 (47 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE05 (48 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE06 (49 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE07 (50 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE08 (51 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE09 (52 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE10 (53 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE11 (54 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE12 (55 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE13 (56 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE14 (57 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE15 (58 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE16 (59 | (25 << 8))
-#define MAP_UNION_ROOM (60 | (25 << 8))
-
-// Map Group 26
-#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8))
-#define MAP_SAFARI_ZONE_NORTH (1 | (26 << 8))
-#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8))
-#define MAP_SAFARI_ZONE_SOUTH (3 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_OUTSIDE_WEST (4 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY (5 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR (6 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR (7 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM (8 | (26 << 8))
-#define MAP_SOUTHERN_ISLAND_EXTERIOR (9 | (26 << 8))
-#define MAP_SOUTHERN_ISLAND_INTERIOR (10 | (26 << 8))
-#define MAP_SAFARI_ZONE_REST_HOUSE (11 | (26 << 8))
-#define MAP_SAFARI_ZONE_NORTHEAST (12 | (26 << 8))
-#define MAP_SAFARI_ZONE_SOUTHEAST (13 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_OUTSIDE_EAST (14 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM (15 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 (16 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2 (17 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY (18 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR (19 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM (20 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM (21 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY (22 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR (23 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM (24 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY (25 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE (26 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP (27 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY (28 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR (29 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM (30 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY (31 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM (32 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM (33 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM1 (37 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM2 (38 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3 (39 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE1 (41 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_POINT_EXCHANGE_SERVICE_CORNER (42 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE2 (43 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE3 (44 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE4 (45 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_SCOTTS_HOUSE (46 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE5 (47 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE6 (48 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE7 (49 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_RECEPTION_GATE (50 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE8 (51 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE9 (52 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F (53 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F (54 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_MART (55 | (26 << 8))
-#define MAP_FARAWAY_ISLAND_ENTRANCE (56 | (26 << 8))
-#define MAP_FARAWAY_ISLAND_INTERIOR (57 | (26 << 8))
-#define MAP_BIRTH_ISLAND_EXTERIOR (58 | (26 << 8))
-#define MAP_BIRTH_ISLAND_HARBOR (59 | (26 << 8))
-#define MAP_TRAINER_HILL_ENTRANCE (60 | (26 << 8))
-#define MAP_TRAINER_HILL_1F (61 | (26 << 8))
-#define MAP_TRAINER_HILL_2F (62 | (26 << 8))
-#define MAP_TRAINER_HILL_3F (63 | (26 << 8))
-#define MAP_TRAINER_HILL_4F (64 | (26 << 8))
-#define MAP_TRAINER_HILL_ROOF (65 | (26 << 8))
-#define MAP_NAVEL_ROCK_EXTERIOR (66 | (26 << 8))
-#define MAP_NAVEL_ROCK_HARBOR (67 | (26 << 8))
-#define MAP_NAVEL_ROCK_ENTRANCE (68 | (26 << 8))
-#define MAP_NAVEL_ROCK_B1F (69 | (26 << 8))
-#define MAP_NAVEL_ROCK_FORK (70 | (26 << 8))
-#define MAP_NAVEL_ROCK_UP1 (71 | (26 << 8))
-#define MAP_NAVEL_ROCK_UP2 (72 | (26 << 8))
-#define MAP_NAVEL_ROCK_UP3 (73 | (26 << 8))
-#define MAP_NAVEL_ROCK_UP4 (74 | (26 << 8))
-#define MAP_NAVEL_ROCK_TOP (75 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN01 (76 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN02 (77 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN03 (78 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN04 (79 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN05 (80 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN06 (81 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN07 (82 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN08 (83 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN09 (84 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN10 (85 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN11 (86 | (26 << 8))
-#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8))
-#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8))
-
-// Map Group 27
-#define MAP_ROUTE104_PROTOTYPE (0 | (27 << 8))
-#define MAP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP (1 | (27 << 8))
-
-// Map Group 28
-#define MAP_ROUTE109_SEASHORE_HOUSE (0 | (28 << 8))
-
-// Map Group 29
-#define MAP_ROUTE110_TRICK_HOUSE_ENTRANCE (0 | (29 << 8))
-#define MAP_ROUTE110_TRICK_HOUSE_END (1 | (29 << 8))
-#define MAP_ROUTE110_TRICK_HOUSE_CORRIDOR (2 | (29 << 8))
-#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE1 (3 | (29 << 8))
-#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE2 (4 | (29 << 8))
-#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE3 (5 | (29 << 8))
-#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE4 (6 | (29 << 8))
-#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE5 (7 | (29 << 8))
-#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE6 (8 | (29 << 8))
-#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE7 (9 | (29 << 8))
-#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE8 (10 | (29 << 8))
-#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE (11 | (29 << 8))
-#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE (12 | (29 << 8))
-
-// Map Group 30
-#define MAP_ROUTE113_GLASS_WORKSHOP (0 | (30 << 8))
-
-// Map Group 31
-#define MAP_ROUTE123_BERRY_MASTERS_HOUSE (0 | (31 << 8))
-
-// Map Group 32
-#define MAP_ROUTE119_WEATHER_INSTITUTE_1F (0 | (32 << 8))
-#define MAP_ROUTE119_WEATHER_INSTITUTE_2F (1 | (32 << 8))
-#define MAP_ROUTE119_HOUSE (2 | (32 << 8))
-
-// Map Group 33
-#define MAP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE (0 | (33 << 8))
-
-#define MAP_GROUPS_COUNT 34
+#include "map_groups.h"
#define MAP_NONE (0x7F | (0x7F << 8))
#define MAP_UNDEFINED (0xFF | (0xFF << 8))
-
#define MAP_GROUP(map) (MAP_##map >> 8)
#define MAP_NUM(map) (MAP_##map & 0xFF)
diff --git a/include/contest.h b/include/contest.h
index 73ebb79fa..e4391a327 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -221,22 +221,6 @@ struct ContestPokemon
/*0x3C*/ u32 otId; // otId
}; // wow
-extern struct ContestPokemon gContestMons[4];
-extern u8 gContestMonPartyIndex;
-extern u16 gSpecialVar_ContestCategory;
-extern u16 gSpecialVar_ContestRank;
-extern u8 gUnknown_02039F2B;
-extern u8 gNumLinkContestPlayers;
-extern u8 gHighestRibbonRank;
-extern u8 gContestFinalStandings[4];
-extern u8 gContestPlayerMonIndex;
-extern s16 gUnknown_02039F08[4];
-extern s16 gUnknown_02039F10[4];
-extern s16 gUnknown_02039F18[4];
-extern s16 gContestMonConditions[4];
-extern u8 gIsLinkContest;
-extern struct ContestWinner gUnknown_02039F3C;
-
struct Shared18000
{
/*0x18000*/ u8 unk18000;
@@ -260,10 +244,10 @@ struct ContestStruct_field_18
struct Contest
{
- /*0x19204*/ u8 playerMoveChoice;
- /*0x19205*/ u8 turnNumber;
- /*0x19206*/ u8 unk19206[4]; // seems to only be used by an unref function
- /*0x1920A*/ u16 unk1920A_0:1; // Task active flags?
+ /*0x0*/ u8 playerMoveChoice;
+ /*0x1*/ u8 turnNumber;
+ /*0x2*/ u8 unk19206[4]; // seems to only be used by an unref function
+ /*0x6*/ u16 unk1920A_0:1; // Task active flags?
u16 unk1920A_1:1;
u16 unk1920A_2:1;
u16 unk1920A_3:1;
@@ -271,18 +255,18 @@ struct Contest
u16 unk1920A_5:1;
u16 unk1920A_6:1;
u16 unk1920A_7:1;
- /*0x1920B*/ u16 unk1920B_0:1;
+ /*0x7*/ u16 unk1920B_0:1;
u16 unk1920B_1:1;
u16 unk1920B_2:1;
- /*0x1920C*/ u8 mainTaskId;
- /*0x1920D*/ u8 unk1920D[4];
- /*0x19211*/ u8 unk19211;
- /*0x19212*/ u8 unk19212;
- /*0x19213*/ u8 filler19213;
- /*0x19214*/ u8 unk19214;
- /*0x19215*/ u8 unk19215;
- /*0x19216*/ u8 unk19216; // sprite ID
- /*0x19217*/ s8 applauseLevel;
+ /*0x8*/ u8 mainTaskId;
+ /*0x9*/ u8 unk1920D[4];
+ /*0xD*/ u8 unk19211;
+ /*0xE*/ u8 unk19212;
+ /*0xF*/ u8 filler19213;
+ /*0x10*/ u8 unk19214;
+ /*0x11*/ u8 unk19215;
+ /*0x12*/ u8 unk19216; // sprite ID
+ /*0x13*/ s8 applauseLevel;
/*0x19218*/ u8 unk19218[4];
/*0x1921C*/ u32 unk1921C; // saved RNG value?
u16 unk19220[5][4]; // move history?
@@ -385,9 +369,22 @@ struct UnknownContestStruct4
u8 unk2_2:1;
};
+struct UnknownContestStruct6
+{
+ s32 unk0;
+ s32 unk4;
+ s32 unk8;
+ s32 unkC;
+};
+
struct ContestResourcesField1C
{
- u8 filler_00[0x40];
+ u16 unk0[5];
+ s16 unkA;
+ u8 unkC;
+ u8 unkD;
+ u8 unkE_1:1;
+ u8 unkE_2:1;
};
struct ContestResourcesField20
@@ -412,38 +409,64 @@ struct ContestResources
void * field_3c;
};
-extern struct ContestResources *gContestResources;
-
#define sContest (*gContestResources->field_0)
#define sContestantStatus (gContestResources->field_4)
#define shared192D0 (*gContestResources->field_8)
#define eContestAI (gContestResources->field_C)
#define shared19328 (*gContestResources->field_10)
#define shared19338 (*gContestResources->field_14)
-
#define shared15800 (gHeap + 0x18000)
+#define shared16800 (gHeap + 0x19000)
#define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000))
-extern u32 gContestRngValue;
+extern struct ContestPokemon gContestMons[4];
+extern s16 gContestMonConditions[4];
+extern s16 gUnknown_02039F08[4];
+extern s16 gUnknown_02039F10[4];
+extern s16 gUnknown_02039F18[4];
+extern u8 gContestFinalStandings[4];
+extern u8 gContestMonPartyIndex;
+extern u8 gContestPlayerMonIndex;
extern u8 gUnknown_02039F26[4];
+extern u8 gIsLinkContest;
+extern u8 gUnknown_02039F2B;
+extern u16 gSpecialVar_ContestCategory;
+extern u16 gSpecialVar_ContestRank;
+extern u8 gNumLinkContestPlayers;
+extern u8 gHighestRibbonRank;
+extern struct ContestResources *gContestResources;
+extern u8 sContestBgCopyFlags;
+extern struct ContestWinner gUnknown_02039F3C;
+extern u8 gUnknown_02039F5C;
+extern u8 gUnknown_02039F5D;
-bool8 IsSpeciesNotUnown(u16 species);
+extern u32 gContestRngValue;
+
+// contest.c
+void ResetLinkContestBoolean(void);
void LoadContestBgAfterMoveAnim(void);
+void sub_80D7B24(void);
+void sub_80DA8C8(u8 partyIndex);
+void sub_80DAB8C(u8 contestType, u8 rank);
+void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame);
+u8 sub_80DAE0C(struct Pokemon *pkmn);
+void sub_80DB09C(u8 contestCategory);
+bool8 IsSpeciesNotUnown(u16 species);
+bool8 Contest_IsMonsTurnDisabled(u8 a);
+void sub_80DBED4(void);
+void sub_80DCE58(u8 a);
void SetContestantEffectStringID(u8 a, u8 b);
void SetContestantEffectStringID2(u8 a, u8 b);
+void SetStartledString(u8 contestant, u8 jam);
void MakeContestantNervous(u8 p);
-bool8 Contest_IsMonsTurnDisabled(u8 a);
+s8 Contest_GetMoveExcitement(u16 move);
bool8 sub_80DE1E8(u8 a);
-void SetStartledString(u8 a, u8 b);
-s8 Contest_GetMoveExcitement(u16);
-u8 sub_80DAE0C(struct Pokemon *);
-void sub_80DEDA8(u8);
-void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame);
-void sub_80DB09C(u8 contestCategory);
-void sub_80DCE58(u8);
-void sub_80DFA08(struct ContestPokemon *mon, int language);
-void sub_80DBED4(void);
-u8 sub_80DEFA8(u8, u8);
+void Contest_PrintTextToBg0WindowAt(u32 windowId, u8 *currChar, s32 x, s32 y, s32 fontId);
+void ResetContestLinkResults(void);
+bool8 sub_80DEDA8(u8 a);
+u8 sub_80DEFA8(u8 a, u8 b);
+void ClearContestWinnerPicsInContestHall(void);
+void sub_80DFA08(struct ContestPokemon *mon, s32 language);
// contest link
void sub_81D9DE4(u8 taskId);
@@ -456,5 +479,4 @@ bool8 sub_80FC55C(void);
bool8 sub_80FC530(u8);
u8 sub_80F86E0(u8 *);
-
#endif //GUARD_CONTEST_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
index ca03a72b5..c633c50cc 100644
--- a/include/contest_painting.h
+++ b/include/contest_painting.h
@@ -13,7 +13,4 @@ enum
void sub_812FDA8(int);
void CB2_ContestPainting(void);
-extern u8 gUnknown_02039F5C;
-extern u8 gUnknown_02039F5D;
-
#endif
diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h
index 339a0774e..e2836c6f6 100644
--- a/include/gba/m4a_internal.h
+++ b/include/gba/m4a_internal.h
@@ -69,38 +69,38 @@ struct ToneData
struct CgbChannel
{
- u8 sf;
- u8 ty;
- u8 rightVolume;
- u8 leftVolume;
- u8 at;
- u8 de;
- u8 su;
- u8 re;
- u8 ky;
- u8 ev;
- u8 eg;
- u8 ec;
- u8 echoVolume;
- u8 echoLength;
- u8 d1;
- u8 d2;
- u8 gt;
- u8 mk;
- u8 ve;
- u8 pr;
- u8 rp;
- u8 d3[3];
- u8 d5;
- u8 sg;
- u8 n4;
- u8 pan;
- u8 panMask;
- u8 mo;
- u8 le;
- u8 sw;
- u32 fr;
- u32 wp;
+ u8 sf; // 0x0
+ u8 ty; // 0x1
+ u8 rightVolume; // 0x2
+ u8 leftVolume; // 0x3
+ u8 at; // 0x4
+ u8 de; // 0x5
+ u8 su; // 0x6
+ u8 re; // 0x7
+ u8 ky; // 0x8
+ u8 ev; // 0x9
+ u8 eg; // 0xA
+ u8 ec; // 0xB
+ u8 echoVolume; // 0xC
+ u8 echoLength; // 0xD
+ u8 d1; // 0xE
+ u8 d2; // 0xF
+ u8 gt; // 0x10
+ u8 mk; // 0x11
+ u8 ve; // 0x12
+ u8 pr; // 0x13
+ u8 rp; // 0x14
+ u8 d3[3]; // 0x15, 0x16, 0x17
+ u8 d5; // 0x18
+ u8 sg; // 0x19
+ u8 n4; // 0x1A
+ u8 pan; // 0x1B
+ u8 panMask; // 0x1C
+ u8 mo; // 0x1D
+ u8 le; // 0x1E
+ u8 sw; // 0x1F
+ u32 fr; // 0x20
+ u32 *wp;
u32 cp;
u32 tp;
u32 pp;
@@ -397,6 +397,7 @@ void m4aSoundMode(u32 mode);
void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track, u8 a3);
void CgbSound(void);
void CgbOscOff(u8);
+void CgbModVol(struct CgbChannel *chan);
u32 MidiKeyToCgbFreq(u8, u8, u8);
void DummyFunc(void);
void MPlayJumpTableCopy(void **mplayJumpTable);
diff --git a/include/global.tv.h b/include/global.tv.h
index 61f014984..aa151a75c 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -521,13 +521,13 @@ struct GabbyAndTyData
/*2bad*/ u8 battleNum;
/*2bae*/ u8 battleTookMoreThanOneTurn:1;
/*2bae*/ u8 playerLostAMon:1;
- /*2bae*/ u8 playerUsedAnItem:1;
+ /*2bae*/ u8 playerUsedHealingItem:1;
/*2bae*/ u8 playerThrewABall:1;
/*2bae*/ u8 onAir:1;
/*2bae*/ u8 valA_5:3;
/*2baf*/ u8 battleTookMoreThanOneTurn2:1;
/*2baf*/ u8 playerLostAMon2:1;
- /*2baf*/ u8 playerUsedAnItem2:1;
+ /*2baf*/ u8 playerUsedHealingItem2:1;
/*2baf*/ u8 playerThrewABall2:1;
/*2baf*/ u8 valB_4:4;
};
diff --git a/include/graphics.h b/include/graphics.h
index cfe73c6c3..f7eaa394d 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4745,9 +4745,13 @@ extern const u32 gBattleStatMask8_Pal[];
extern const u32 gUnknown_08D9A88C[];
extern const u32 gContestMiscGfx[];
extern const u32 gContestAudienceGfx[];
+extern const u8 gContestApplauseMeterGfx[];
+extern const u8 gContestNextTurnNumbersGfx[];
+extern const u8 gContestNextTurnRandomGfx[];
extern const u32 gUnknown_08C16FA8[];
extern const u32 gUnknown_08C16E90[];
extern const u32 gUnknown_08C17170[];
+extern const u32 gUnknown_08C17980[];
extern const u32 gUnknown_08D95E00[];
extern const u32 gUnknown_08D960D0[];
diff --git a/include/list_menu.h b/include/list_menu.h
index 84c38306b..ef23688d8 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -101,7 +101,7 @@ extern struct ListMenuTemplate gMultiuseListMenuTemplate;
s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *arg1, u16 scrollOffset, u16 selectedRow);
-s32 ListMenuHandleInputGetItemId(u8 listTaskId);
+s32 ListMenu_ProcessInput(u8 listTaskId);
void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
void RedrawListMenu(u8 listTaskId);
void ChangeListMenuPals(u8 listTaskId, u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
diff --git a/include/party_menu.h b/include/party_menu.h
index ae7c414a8..702b4fde1 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -48,6 +48,8 @@ extern MainCallback gPostMenuFieldCallback;
extern u8 gSelectedOrderFromParty[4];
extern u8 gUnknown_0203CF00[3];
+extern void (*gUnknown_03006328)(u8, TaskFunc);
+
extern const u16 gTutorMoves[];
void sub_81B0FCC(u8 slot, u8 b);
diff --git a/include/pokedex_cry_screen.h b/include/pokedex_cry_screen.h
index 392e80a6d..93f1b02a5 100755
--- a/include/pokedex_cry_screen.h
+++ b/include/pokedex_cry_screen.h
@@ -10,6 +10,8 @@ struct CryRelatedStruct
u8 yPos;
};
+extern u8 gDexCryScreenState;
+
bool8 sub_8145354(struct CryRelatedStruct*, u8);
void sub_814545C(u8);
void sub_8145534(u16);
diff --git a/include/text.h b/include/text.h
index d9c7a9a2e..96c5a4507 100644
--- a/include/text.h
+++ b/include/text.h
@@ -13,10 +13,15 @@
#define CHAR_7 0xA8
#define CHAR_8 0xA9
#define CHAR_9 0xAA
+#define CHAR_EXCL_MARK 0xAB
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
#define CHAR_HYPHEN 0xAE
#define CHAR_ELLIPSIS 0xB0
+#define CHAR_DBL_QUOT_LEFT 0xB1
+#define CHAR_DBL_QUOT_RIGHT 0xB2
+#define CHAR_SGL_QUOT_LEFT 0xB3
+#define CHAR_SGL_QUOT_RIGHT 0xB4
#define CHAR_MALE 0xB5
#define CHAR_FEMALE 0xB6
#define CHAR_CURRENCY 0xB7
diff --git a/include/trade.h b/include/trade.h
index 95a10cacf..0c95e1e81 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -6,8 +6,11 @@
// Exported type declarations
// Exported RAM declarations
+extern struct MailStruct gUnknown_020321C0[PARTY_SIZE];
+extern u8 gUnknown_02032298[2];
// Exported ROM declarations
+extern const struct WindowTemplate gUnknown_0833900C;
s32 sub_807A728(void);
void sub_80773AC(void);
diff --git a/include/tv.h b/include/tv.h
index ea0226815..760d87522 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -56,5 +56,10 @@ void SaveRecordedItemPurchasesForTVShow(void);
bool8 sub_80EE818(void);
void sub_80EE8C8(u16 winStreak, u8 facilityAndMode);
void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace);
+void ContestLiveUpdates_BeforeInterview_1(u8 a0);
+void ContestLiveUpdates_BeforeInterview_2(u8 a0);
+void ContestLiveUpdates_BeforeInterview_3(u8 a0);
+void ContestLiveUpdates_BeforeInterview_4(u16 a0);
+void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1);
#endif //GUARD_TV_H
diff --git a/include/util.h b/include/util.h
index 9d13453c2..56c89359a 100644
--- a/include/util.h
+++ b/include/util.h
@@ -15,5 +15,7 @@ u16 CalcCRC16WithTable(u8 *data, u32 length);
u32 CalcByteArraySum(const u8* data, u32 length);
void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor);
void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha);
+void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output);
+
#endif // GUARD_UTIL_H