summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/region_map.s365
-rw-r--r--data/region_map.s70
-rw-r--r--data/text/map_section_names.inc327
-rw-r--r--include/constants/region_map.h5
-rw-r--r--ld_script.txt2
-rw-r--r--src/data/text/map_section_names.h109
-rw-r--r--src/region_map.c160
-rw-r--r--sym_ewram.txt29
8 files changed, 341 insertions, 726 deletions
diff --git a/asm/region_map.s b/asm/region_map.s
index 662c65fa7..5c01074a9 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -5,371 +5,6 @@
.text
- thumb_func_start sub_80BFE18
-sub_80BFE18: @ 80BFE18
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- mov r9, r2
- cmp r1, 0
- beq _080BFE92
- movs r0, 0x1F
- mov r10, r0
- mov r8, r1
-_080BFE38:
- ldrh r1, [r6]
- movs r0, 0x1F
- ands r0, r1
- lsls r1, 16
- lsrs r5, r1, 21
- mov r2, r10
- ands r5, r2
- lsrs r4, r1, 26
- ands r4, r2
- lsls r0, 8
- movs r1, 0x64
- bl __divsi3
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- asrs r7, r0, 8
- lsls r0, r5, 8
- movs r1, 0x64
- bl __divsi3
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- asrs r5, r0, 8
- lsls r0, r4, 8
- movs r1, 0x64
- bl __divsi3
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- asrs r4, r0, 8
- lsls r0, r4, 10
- lsls r1, r5, 5
- orrs r0, r1
- orrs r0, r7
- strh r0, [r6]
- adds r6, 0x2
- movs r2, 0x1
- negs r2, r2
- add r8, r2
- mov r0, r8
- cmp r0, 0
- bne _080BFE38
-_080BFE92:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BFE18
-
- thumb_func_start sub_80BFEA0
-sub_80BFEA0: @ 80BFEA0
- push {r4,lr}
- sub sp, 0x20
- ldr r4, _080BFED8 @ =gUnknown_83EF2DC + 0x40
- adds r0, r4, 0
- mov r1, sp
- movs r2, 0x10
- bl CpuSet
- mov r0, sp
- movs r1, 0x10
- movs r2, 0x5F
- bl sub_80BFE18
- mov r0, sp
- movs r1, 0x20
- movs r2, 0x20
- bl LoadPalette
- adds r4, 0x1E
- adds r0, r4, 0
- movs r1, 0x2F
- movs r2, 0x2
- bl LoadPalette
- add sp, 0x20
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFED8: .4byte gUnknown_83EF2DC + 0x40
- thumb_func_end sub_80BFEA0
-
- thumb_func_start sub_80BFEDC
-sub_80BFEDC: @ 80BFEDC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080BFEFC @ =gUnknown_20399D4
- ldr r0, _080BFF00 @ =0x000047c0
- bl AllocZeroed
- adds r2, r0, 0
- str r2, [r4]
- cmp r2, 0
- bne _080BFF08
- ldr r0, _080BFF04 @ =CB2_ReturnToField
- bl SetMainCallback2
- b _080BFF38
- .align 2, 0
-_080BFEFC: .4byte gUnknown_20399D4
-_080BFF00: .4byte 0x000047c0
-_080BFF04: .4byte CB2_ReturnToField
-_080BFF08:
- ldr r1, _080BFF40 @ =gUnknown_2031DE0
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _080BFF44 @ =0x00004796
- adds r0, r2, r1
- movs r1, 0
- strb r5, [r0]
- ldr r0, [r4]
- ldr r2, _080BFF48 @ =0x000047a0
- adds r0, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r2, 0x4
- adds r0, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r2, 0x4
- adds r0, r2
- strb r1, [r0]
- bl sub_80BFFD0
- ldr r0, _080BFF4C @ =sub_80C0100
- bl SetMainCallback2
-_080BFF38:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFF40: .4byte gUnknown_2031DE0
-_080BFF44: .4byte 0x00004796
-_080BFF48: .4byte 0x000047a0
-_080BFF4C: .4byte sub_80C0100
- thumb_func_end sub_80BFEDC
-
- thumb_func_start sub_80BFF50
-sub_80BFF50: @ 80BFF50
- push {r4-r6,lr}
- adds r6, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080BFF70 @ =gUnknown_20399D4
- ldr r0, _080BFF74 @ =0x000047c0
- bl AllocZeroed
- adds r2, r0, 0
- str r2, [r4]
- cmp r2, 0
- bne _080BFF7C
- ldr r0, _080BFF78 @ =CB2_ReturnToField
- bl SetMainCallback2
- b _080BFFB4
- .align 2, 0
-_080BFF70: .4byte gUnknown_20399D4
-_080BFF74: .4byte 0x000047c0
-_080BFF78: .4byte CB2_ReturnToField
-_080BFF7C:
- ldr r1, _080BFFBC @ =gUnknown_2031DE0
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _080BFFC0 @ =0x00004796
- adds r0, r2, r1
- movs r1, 0
- strb r5, [r0]
- ldr r0, [r4]
- ldr r2, _080BFFC4 @ =0x000047a0
- adds r0, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r2, 0x4
- adds r0, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r2, 0x4
- adds r0, r2
- strb r1, [r0]
- ldr r0, [r4]
- ldr r1, _080BFFC8 @ =0x000047bc
- adds r0, r1
- str r6, [r0]
- bl sub_80BFFD0
- ldr r0, _080BFFCC @ =sub_80C0100
- bl SetMainCallback2
-_080BFFB4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFFBC: .4byte gUnknown_2031DE0
-_080BFFC0: .4byte 0x00004796
-_080BFFC4: .4byte 0x000047a0
-_080BFFC8: .4byte 0x000047bc
-_080BFFCC: .4byte sub_80C0100
- thumb_func_end sub_80BFF50
-
- thumb_func_start sub_80BFFD0
-sub_80BFFD0: @ 80BFFD0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r1, _080C0000 @ =gUnknown_20399D4
- ldr r2, [r1]
- ldr r3, _080C0004 @ =0x00004796
- adds r0, r2, r3
- ldrb r0, [r0]
- mov r8, r1
- cmp r0, 0
- blt _080BFFF2
- cmp r0, 0x1
- ble _080BFFF2
- cmp r0, 0x2
- beq _080C0010
-_080BFFF2:
- mov r4, r8
- ldr r0, [r4]
- ldr r1, _080C0008 @ =0x000047b8
- adds r0, r1
- ldr r1, _080C000C @ =sub_80C04E4
- str r1, [r0]
- b _080C0018
- .align 2, 0
-_080C0000: .4byte gUnknown_20399D4
-_080C0004: .4byte 0x00004796
-_080C0008: .4byte 0x000047b8
-_080C000C: .4byte sub_80C04E4
-_080C0010:
- ldr r3, _080C009C @ =0x000047b8
- adds r1, r2, r3
- ldr r0, _080C00A0 @ =sub_80C4F08
- str r0, [r1]
-_080C0018:
- movs r3, 0
- ldr r6, _080C00A4 @ =gUnknown_20399D4
- ldr r5, _080C00A8 @ =0x00004797
- ldr r4, _080C00AC @ =gUnknown_83F1B00
- ldr r2, _080C00B0 @ =0x00004796
-_080C0022:
- ldr r0, [r6]
- adds r1, r0, r5
- adds r1, r3
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3, r0
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080C0022
- ldr r0, _080C00B4 @ =0x00000845
- bl FlagGet
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080C0058
- ldr r0, _080C00A4 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r4, _080C00A8 @ =0x00004797
- adds r0, r4
- strb r1, [r0]
-_080C0058:
- movs r7, 0
- movs r1, 0
- ldr r2, _080C00B8 @ =gMapHeader
- ldrb r0, [r2, 0x14]
- ldr r3, _080C00A4 @ =gUnknown_20399D4
- mov r8, r3
- cmp r0, 0x8E
- bls _080C00D8
- ldr r4, _080C00BC @ =gUnknown_83F1AA4
- mov r12, r4
- mov r10, r12
- mov r9, r2
-_080C0070:
- movs r3, 0
- lsls r0, r1, 4
- subs r0, r1
- lsls r2, r0, 1
- mov r4, r10
- adds r0, r2, r4
- ldrb r0, [r0]
- adds r5, r1, 0x1
- cmp r0, 0xC5
- beq _080C00D0
- ldr r6, _080C00BC @ =gUnknown_83F1AA4
- mov r0, r9
- ldrb r1, [r0, 0x14]
- lsls r4, r5, 24
-_080C008C:
- adds r0, r3, r2
- adds r0, r6
- ldrb r0, [r0]
- cmp r1, r0
- bne _080C00C0
- lsrs r7, r4, 24
- b _080C00D0
- .align 2, 0
-_080C009C: .4byte 0x000047b8
-_080C00A0: .4byte sub_80C4F08
-_080C00A4: .4byte gUnknown_20399D4
-_080C00A8: .4byte 0x00004797
-_080C00AC: .4byte gUnknown_83F1B00
-_080C00B0: .4byte 0x00004796
-_080C00B4: .4byte 0x00000845
-_080C00B8: .4byte gMapHeader
-_080C00BC: .4byte gUnknown_83F1AA4
-_080C00C0:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r3, r2
- add r0, r12
- ldrb r0, [r0]
- cmp r0, 0xC5
- bne _080C008C
-_080C00D0:
- lsls r0, r5, 24
- lsrs r1, r0, 24
- cmp r7, 0
- beq _080C0070
-_080C00D8:
- mov r1, r8
- ldr r0, [r1]
- ldr r2, _080C00F8 @ =0x0000479b
- adds r0, r2
- strb r7, [r0]
- ldr r0, [r1]
- ldr r3, _080C00FC @ =0x0000479c
- adds r0, r3
- strb r7, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C00F8: .4byte 0x0000479b
-_080C00FC: .4byte 0x0000479c
- thumb_func_end sub_80BFFD0
-
thumb_func_start sub_80C0100
sub_80C0100: @ 80C0100
push {r4,lr}
diff --git a/data/region_map.s b/data/region_map.s
index 5d28f9503..e2ba5e5ac 100644
--- a/data/region_map.s
+++ b/data/region_map.s
@@ -7,8 +7,6 @@
.section .rodata
.align 2
- .include "data/text/map_section_names.inc"
-
gUnknown_83EF23C:: @ 83EF23C gbapal
.incbin "graphics/region_map/unk_83EF23C.gbapal"
@@ -239,16 +237,74 @@ gUnknown_83F1A9C:: @ 83F1A9C
.4byte gUnknown_83F1A94
.4byte gUnknown_83F1A98
-gUnknown_83F1AA4:: @ 83F1AA4
- .byte 0x8f, 0x90, 0x91, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xaf, 0xb0, 0xb9, 0xc3, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+sSeviiMapsecs:: @ 83F1AA4
+ .byte MAPSEC_ONE_ISLAND
+ .byte MAPSEC_TWO_ISLAND
+ .byte MAPSEC_THREE_ISLAND
+ .byte MAPSEC_KINDLE_ROAD
+ .byte MAPSEC_TREASURE_BEACH
+ .byte MAPSEC_CAPE_BRINK
+ .byte MAPSEC_BOND_BRIDGE
+ .byte MAPSEC_THREE_ISLE_PORT
+ .byte MAPSEC_MT_EMBER
+ .byte MAPSEC_BERRY_FOREST
+ .byte MAPSEC_THREE_ISLE_PATH
+ .byte MAPSEC_EMBER_SPA
+ .byte MAPSEC_NONE
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x92, 0x93, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xae, 0xb1, 0xb2, 0xb5, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte MAPSEC_FOUR_ISLAND
+ .byte MAPSEC_FIVE_ISLAND
+ .byte MAPSEC_SEVII_ISLE_6
+ .byte MAPSEC_SEVII_ISLE_7
+ .byte MAPSEC_SEVII_ISLE_8
+ .byte MAPSEC_SEVII_ISLE_9
+ .byte MAPSEC_RESORT_GORGEOUS
+ .byte MAPSEC_WATER_LABYRINTH
+ .byte MAPSEC_FIVE_ISLE_MEADOW
+ .byte MAPSEC_MEMORIAL_PILLAR
+ .byte MAPSEC_NAVEL_ROCK
+ .byte MAPSEC_ICEFALL_CAVE
+ .byte MAPSEC_ROCKET_WAREHOUSE
+ .byte MAPSEC_LOST_CAVE
+ .byte MAPSEC_NONE
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x94, 0x95, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xb3, 0xb4, 0xb6, 0xb7, 0xb8, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc5, 0x00, 0x00
+ .byte MAPSEC_SEVEN_ISLAND
+ .byte MAPSEC_SIX_ISLAND
+ .byte MAPSEC_OUTCAST_ISLAND
+ .byte MAPSEC_GREEN_PATH
+ .byte MAPSEC_WATER_PATH
+ .byte MAPSEC_RUIN_VALLEY
+ .byte MAPSEC_TRAINER_TOWER
+ .byte MAPSEC_CANYON_ENTRANCE
+ .byte MAPSEC_SEVAULT_CANYON
+ .byte MAPSEC_TANOBY_RUINS
+ .byte MAPSEC_SEVII_ISLE_22
+ .byte MAPSEC_SEVII_ISLE_23
+ .byte MAPSEC_SEVII_ISLE_24
+ .byte MAPSEC_TRAINER_TOWER_2
+ .byte MAPSEC_DOTTED_HOLE
+ .byte MAPSEC_PATTERN_BUSH
+ .byte MAPSEC_ALTERING_CAVE
+ .byte MAPSEC_TANOBY_CHAMBERS
+ .byte MAPSEC_TANOBY_KEY
+ .byte MAPSEC_BIRTH_ISLAND
+ .byte MAPSEC_MONEAN_CHAMBER
+ .byte MAPSEC_LIPTOO_CHAMBER
+ .byte MAPSEC_WEEPTH_CHAMBER
+ .byte MAPSEC_DILFORD_CHAMBER
+ .byte MAPSEC_SCUFIB_CHAMBER
+ .byte MAPSEC_RIXY_CHAMBER
+ .byte MAPSEC_VIAPOIS_CHAMBER
+ .byte MAPSEC_NONE
+ .byte 0x00, 0x00
.align 2
gUnknown_83F1B00:: @ 83F1B00
- .byte 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
+ .byte 1, 1, 1, 0
+ .byte 0, 0, 0, 0
+ .byte 0, 0, 0, 1
gUnknown_83F1B0C:: @ 83F1B0C
.2byte 0x0018, 0x0010, 0x0090, 0x0020
diff --git a/data/text/map_section_names.inc b/data/text/map_section_names.inc
deleted file mode 100644
index 070375510..000000000
--- a/data/text/map_section_names.inc
+++ /dev/null
@@ -1,327 +0,0 @@
-gMapSecName_PalletTown::
- .string "PALLET TOWN$"
-
-gMapSecName_ViridianCity::
- .string "VIRIDIAN CITY$"
-
-gMapSecName_PewterCity::
- .string "PEWTER CITY$"
-
-gMapSecName_CeruleanCity::
- .string "CERULEAN CITY$"
-
-gMapSecName_LavenderTown::
- .string "LAVENDER TOWN$"
-
-gMapSecName_VermilionCity::
- .string "VERMILION CITY$"
-
-gMapSecName_CeladonCity::
- .string "CELADON CITY$"
-
-gMapSecName_FuchsiaCity::
- .string "FUCHSIA CITY$"
-
-gMapSecName_CinnabarIsland::
- .string "CINNABAR ISLAND$"
-
-gMapSecName_IndigoPlateau::
- .string "INDIGO PLATEAU$"
-
-gMapSecName_SaffronCity::
- .string "SAFFRON CITY$"
-
-gMapSecName_Route4::
- .string "ROUTE 4$"
-
-gMapSecName_Route10::
- .string "ROUTE 10$"
-
-gMapSecName_Route1::
- .string "ROUTE 1$"
-
-gMapSecName_Route2::
- .string "ROUTE 2$"
-
-gMapSecName_Route3::
- .string "ROUTE 3$"
-
-gMapSecName_Route4_2::
- .string "ROUTE 4$"
-
-gMapSecName_Route5::
- .string "ROUTE 5$"
-
-gMapSecName_Route6::
- .string "ROUTE 6$"
-
-gMapSecName_Route7::
- .string "ROUTE 7$"
-
-gMapSecName_Route8::
- .string "ROUTE 8$"
-
-gMapSecName_Route9::
- .string "ROUTE 9$"
-
-gMapSecName_Route10_2::
- .string "ROUTE 10$"
-
-gMapSecName_Route11::
- .string "ROUTE 11$"
-
-gMapSecName_Route12::
- .string "ROUTE 12$"
-
-gMapSecName_Route13::
- .string "ROUTE 13$"
-
-gMapSecName_Route14::
- .string "ROUTE 14$"
-
-gMapSecName_Route15::
- .string "ROUTE 15$"
-
-gMapSecName_Route16::
- .string "ROUTE 16$"
-
-gMapSecName_Route17::
- .string "ROUTE 17$"
-
-gMapSecName_Route18::
- .string "ROUTE 18$"
-
-gMapSecName_Route19::
- .string "ROUTE 19$"
-
-gMapSecName_Route20::
- .string "ROUTE 20$"
-
-gMapSecName_Route21::
- .string "ROUTE 21$"
-
-gMapSecName_Route22::
- .string "ROUTE 22$"
-
-gMapSecName_Route23::
- .string "ROUTE 23$"
-
-gMapSecName_Route24::
- .string "ROUTE 24$"
-
-gMapSecName_Route25::
- .string "ROUTE 25$"
-
-gMapSecName_ViridianForest::
- .string "VIRIDIAN FOREST$"
-
-gMapSecName_MtMoon::
- .string "MT. MOON$"
-
-gMapSecName_SSAnne::
- .string "S.S. ANNE$"
-
-gMapSecName_UndergroundPath::
- .string "UNDERGROUND PATH$"
-
-gMapSecName_UndergroundPath_2::
- .string "UNDERGROUND PATH$"
-
-gMapSecName_DiglettsCave::
- .string "DIGLETT'S CAVE$"
-
-gMapSecName_VictoryRoad::
- .string "VICTORY ROAD$"
-
-gMapSecName_RocketHideout::
- .string "ROCKET HIDEOUT$"
-
-gMapSecName_SilphCo::
- .string "SILPH CO.$"
-
-gMapSecName_PokemonMansion::
- .string "POKéMON MANSION$"
-
-gMapSecName_SafariZone::
- .string "SAFARI ZONE$"
-
-gMapSecName_PokemonLeague::
- .string "POKéMON LEAGUE$"
-
-gMapSecName_RockTunnel::
- .string "ROCK TUNNEL$"
-
-gMapSecName_SeafoamIslands::
- .string "SEAFOAM ISLANDS$"
-
-gMapSecName_PokemonTower::
- .string "POKéMON TOWER$"
-
-gMapSecName_CeruleanCave::
- .string "CERULEAN CAVE$"
-
-gMapSecName_PowerPlant::
- .string "POWER PLANT$"
-
-gMapSecName_OneIsland::
- .string "ONE ISLAND$"
-
-gMapSecName_TwoIsland::
- .string "TWO ISLAND$"
-
-gMapSecName_ThreeIsland::
- .string "THREE ISLAND$"
-
-gMapSecName_FourIsland::
- .string "FOUR ISLAND$"
-
-gMapSecName_FiveIsland::
- .string "FIVE ISLAND$"
-
-gMapSecName_SevenIsland::
- .string "SEVEN ISLAND$"
-
-gMapSecName_SixIsland::
- .string "SIX ISLAND$"
-
-gMapSecName_KindleRoad::
- .string "KINDLE ROAD$"
-
-gMapSecName_TreasureBeach::
- .string "TREASURE BEACH$"
-
-gMapSecName_CapeBrink::
- .string "CAPE BRINK$"
-
-gMapSecName_BondBridge::
- .string "BOND BRIDGE$"
-
-gMapSecName_ThreeIslePort::
- .string "THREE ISLE PORT$"
-
-gMapSecName_SeviiIsle6::
- .string "SEVII ISLE 6$"
-
-gMapSecName_SeviiIsle7::
- .string "SEVII ISLE 7$"
-
-gMapSecName_SeviiIsle8::
- .string "SEVII ISLE 8$"
-
-gMapSecName_SeviiIsle9::
- .string "SEVII ISLE 9$"
-
-gMapSecName_ResortGorgeous::
- .string "RESORT GORGEOUS$"
-
-gMapSecName_WaterLabyrinth::
- .string "WATER LABYRINTH$"
-
-gMapSecName_FiveIsleMeadow::
- .string "FIVE ISLE MEADOW$"
-
-gMapSecName_MemorialPillar::
- .string "MEMORIAL PILLAR$"
-
-gMapSecName_OutcastIsland::
- .string "OUTCAST ISLAND$"
-
-gMapSecName_GreenPath::
- .string "GREEN PATH$"
-
-gMapSecName_WaterPath::
- .string "WATER PATH$"
-
-gMapSecName_RuinValley::
- .string "RUIN VALLEY$"
-
-gMapSecName_TrainerTower::
- .string "TRAINER TOWER$"
-
-gMapSecName_CanyonEntrance::
- .string "CANYON ENTRANCE$"
-
-gMapSecName_SevaultCanyon::
- .string "SEVAULT CANYON$"
-
-gMapSecName_TanobyRuins::
- .string "TANOBY RUINS$"
-
-gMapSecName_SeviiIsle22::
- .string "SEVII ISLE 22$"
-
-gMapSecName_SeviiIsle23::
- .string "SEVII ISLE 23$"
-
-gMapSecName_SeviiIsle24::
- .string "SEVII ISLE 24$"
-
-gMapSecName_NavelRock::
- .string "NAVEL ROCK$"
-
-gMapSecName_MtEmber::
- .string "MT. EMBER$"
-
-gMapSecName_BerryForest::
- .string "BERRY FOREST$"
-
-gMapSecName_IcefallCave::
- .string "ICEFALL CAVE$"
-
-gMapSecName_RocketWarehouse::
- .string "ROCKET WAREHOUSE$"
-
-gMapSecName_TrainerTower_2::
- .string "TRAINER TOWER$"
-
-gMapSecName_DottedHole::
- .string "DOTTED HOLE$"
-
-gMapSecName_LostCave::
- .string "LOST CAVE$"
-
-gMapSecName_PatternBush::
- .string "PATTERN BUSH$"
-
-gMapSecName_AlteringCave::
- .string "ALTERING CAVE$"
-
-gMapSecName_TanobyChambers::
- .string "TANOBY CHAMBERS$"
-
-gMapSecName_ThreeIslePath::
- .string "THREE ISLE PATH$"
-
-gMapSecName_TanobyKey::
- .string "TANOBY KEY$"
-
-gMapSecName_BirthIsland::
- .string "BIRTH ISLAND$"
-
-gMapSecName_MoneanChamber::
- .string "MONEAN CHAMBER$"
-
-gMapSecName_LiptooChamber::
- .string "LIPTOO CHAMBER$"
-
-gMapSecName_WeepthChamber::
- .string "WEEPTH CHAMBER$"
-
-gMapSecName_DilfordChamber::
- .string "DILFORD CHAMBER$"
-
-gMapSecName_ScufibChamber::
- .string "SCUFIB CHAMBER$"
-
-gMapSecName_RixyChamber::
- .string "RIXY CHAMBER$"
-
-gMapSecName_ViapoisChamber::
- .string "VIAPOIS CHAMBER$"
-
-gMapSecName_EmberSpa::
- .string "EMBER SPA$"
-
-gMapSecName_CeladonDept::
- .string "CELADON DEPT.$"
-
diff --git a/include/constants/region_map.h b/include/constants/region_map.h
index 0957a72ee..e096f08a2 100644
--- a/include/constants/region_map.h
+++ b/include/constants/region_map.h
@@ -89,6 +89,8 @@
#define MAPSEC_SKY_PILLAR 0x55
#define MAPSEC_SECRET_BASE 0x56
#define MAPSEC_DYNAMIC 0x57
+
+// Kanto landmarks
#define MAPSEC_PALLET_TOWN 0x58
#define MAPSEC_VIRIDIAN_CITY 0x59
#define MAPSEC_PEWTER_CITY 0x5A
@@ -144,6 +146,9 @@
#define MAPSEC_POKEMON_TOWER 0x8C
#define MAPSEC_CERULEAN_CAVE 0x8D
#define MAPSEC_POWER_PLANT 0x8E
+
+#define MAPSECS_SEVII_123 0x8F
+
#define MAPSEC_ONE_ISLAND 0x8F
#define MAPSEC_TWO_ISLAND 0x90
#define MAPSEC_THREE_ISLAND 0x91
diff --git a/ld_script.txt b/ld_script.txt
index 9b80af47a..bc926bf3c 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -181,6 +181,7 @@ SECTIONS {
src/menu_helpers.o(.text);
asm/script_pokemon_util_80BF8FC.o(.text);
src/heal_location.o(.text);
+ src/region_map.o(.text);
asm/region_map.o(.text);
src/battle_ai_script_commands.o(.text);
src/fldeff_rocksmash.o(.text);
@@ -477,6 +478,7 @@ SECTIONS {
src/mon_markings.o(.rodata);
src/mail.o(.rodata);
src/heal_location.o(.rodata);
+ src/region_map.o(.rodata);
data/region_map.o(.rodata);
src/battle_ai_script_commands.o(.rodata);
data/fldeff_flash.o(.rodata);
diff --git a/src/data/text/map_section_names.h b/src/data/text/map_section_names.h
new file mode 100644
index 000000000..5a18fa7c9
--- /dev/null
+++ b/src/data/text/map_section_names.h
@@ -0,0 +1,109 @@
+const u8 gMapSecName_PalletTown[] = _("PALLET TOWN");
+const u8 gMapSecName_ViridianCity[] = _("VIRIDIAN CITY");
+const u8 gMapSecName_PewterCity[] = _("PEWTER CITY");
+const u8 gMapSecName_CeruleanCity[] = _("CERULEAN CITY");
+const u8 gMapSecName_LavenderTown[] = _("LAVENDER TOWN");
+const u8 gMapSecName_VermilionCity[] = _("VERMILION CITY");
+const u8 gMapSecName_CeladonCity[] = _("CELADON CITY");
+const u8 gMapSecName_FuchsiaCity[] = _("FUCHSIA CITY");
+const u8 gMapSecName_CinnabarIsland[] = _("CINNABAR ISLAND");
+const u8 gMapSecName_IndigoPlateau[] = _("INDIGO PLATEAU");
+const u8 gMapSecName_SaffronCity[] = _("SAFFRON CITY");
+const u8 gMapSecName_Route4[] = _("ROUTE 4");
+const u8 gMapSecName_Route10[] = _("ROUTE 10");
+const u8 gMapSecName_Route1[] = _("ROUTE 1");
+const u8 gMapSecName_Route2[] = _("ROUTE 2");
+const u8 gMapSecName_Route3[] = _("ROUTE 3");
+const u8 gMapSecName_Route4_2[] = _("ROUTE 4");
+const u8 gMapSecName_Route5[] = _("ROUTE 5");
+const u8 gMapSecName_Route6[] = _("ROUTE 6");
+const u8 gMapSecName_Route7[] = _("ROUTE 7");
+const u8 gMapSecName_Route8[] = _("ROUTE 8");
+const u8 gMapSecName_Route9[] = _("ROUTE 9");
+const u8 gMapSecName_Route10_2[] = _("ROUTE 10");
+const u8 gMapSecName_Route11[] = _("ROUTE 11");
+const u8 gMapSecName_Route12[] = _("ROUTE 12");
+const u8 gMapSecName_Route13[] = _("ROUTE 13");
+const u8 gMapSecName_Route14[] = _("ROUTE 14");
+const u8 gMapSecName_Route15[] = _("ROUTE 15");
+const u8 gMapSecName_Route16[] = _("ROUTE 16");
+const u8 gMapSecName_Route17[] = _("ROUTE 17");
+const u8 gMapSecName_Route18[] = _("ROUTE 18");
+const u8 gMapSecName_Route19[] = _("ROUTE 19");
+const u8 gMapSecName_Route20[] = _("ROUTE 20");
+const u8 gMapSecName_Route21[] = _("ROUTE 21");
+const u8 gMapSecName_Route22[] = _("ROUTE 22");
+const u8 gMapSecName_Route23[] = _("ROUTE 23");
+const u8 gMapSecName_Route24[] = _("ROUTE 24");
+const u8 gMapSecName_Route25[] = _("ROUTE 25");
+const u8 gMapSecName_ViridianForest[] = _("VIRIDIAN FOREST");
+const u8 gMapSecName_MtMoon[] = _("MT. MOON");
+const u8 gMapSecName_SSAnne[] = _("S.S. ANNE");
+const u8 gMapSecName_UndergroundPath[] = _("UNDERGROUND PATH");
+const u8 gMapSecName_UndergroundPath_2[] = _("UNDERGROUND PATH");
+const u8 gMapSecName_DiglettsCave[] = _("DIGLETT'S CAVE");
+const u8 gMapSecName_VictoryRoad[] = _("VICTORY ROAD");
+const u8 gMapSecName_RocketHideout[] = _("ROCKET HIDEOUT");
+const u8 gMapSecName_SilphCo[] = _("SILPH CO.");
+const u8 gMapSecName_PokemonMansion[] = _("POKéMON MANSION");
+const u8 gMapSecName_SafariZone[] = _("SAFARI ZONE");
+const u8 gMapSecName_PokemonLeague[] = _("POKéMON LEAGUE");
+const u8 gMapSecName_RockTunnel[] = _("ROCK TUNNEL");
+const u8 gMapSecName_SeafoamIslands[] = _("SEAFOAM ISLANDS");
+const u8 gMapSecName_PokemonTower[] = _("POKéMON TOWER");
+const u8 gMapSecName_CeruleanCave[] = _("CERULEAN CAVE");
+const u8 gMapSecName_PowerPlant[] = _("POWER PLANT");
+const u8 gMapSecName_OneIsland[] = _("ONE ISLAND");
+const u8 gMapSecName_TwoIsland[] = _("TWO ISLAND");
+const u8 gMapSecName_ThreeIsland[] = _("THREE ISLAND");
+const u8 gMapSecName_FourIsland[] = _("FOUR ISLAND");
+const u8 gMapSecName_FiveIsland[] = _("FIVE ISLAND");
+const u8 gMapSecName_SevenIsland[] = _("SEVEN ISLAND");
+const u8 gMapSecName_SixIsland[] = _("SIX ISLAND");
+const u8 gMapSecName_KindleRoad[] = _("KINDLE ROAD");
+const u8 gMapSecName_TreasureBeach[] = _("TREASURE BEACH");
+const u8 gMapSecName_CapeBrink[] = _("CAPE BRINK");
+const u8 gMapSecName_BondBridge[] = _("BOND BRIDGE");
+const u8 gMapSecName_ThreeIslePort[] = _("THREE ISLE PORT");
+const u8 gMapSecName_SeviiIsle6[] = _("SEVII ISLE 6");
+const u8 gMapSecName_SeviiIsle7[] = _("SEVII ISLE 7");
+const u8 gMapSecName_SeviiIsle8[] = _("SEVII ISLE 8");
+const u8 gMapSecName_SeviiIsle9[] = _("SEVII ISLE 9");
+const u8 gMapSecName_ResortGorgeous[] = _("RESORT GORGEOUS");
+const u8 gMapSecName_WaterLabyrinth[] = _("WATER LABYRINTH");
+const u8 gMapSecName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW");
+const u8 gMapSecName_MemorialPillar[] = _("MEMORIAL PILLAR");
+const u8 gMapSecName_OutcastIsland[] = _("OUTCAST ISLAND");
+const u8 gMapSecName_GreenPath[] = _("GREEN PATH");
+const u8 gMapSecName_WaterPath[] = _("WATER PATH");
+const u8 gMapSecName_RuinValley[] = _("RUIN VALLEY");
+const u8 gMapSecName_TrainerTower[] = _("TRAINER TOWER");
+const u8 gMapSecName_CanyonEntrance[] = _("CANYON ENTRANCE");
+const u8 gMapSecName_SevaultCanyon[] = _("SEVAULT CANYON");
+const u8 gMapSecName_TanobyRuins[] = _("TANOBY RUINS");
+const u8 gMapSecName_SeviiIsle22[] = _("SEVII ISLE 22");
+const u8 gMapSecName_SeviiIsle23[] = _("SEVII ISLE 23");
+const u8 gMapSecName_SeviiIsle24[] = _("SEVII ISLE 24");
+const u8 gMapSecName_NavelRock[] = _("NAVEL ROCK");
+const u8 gMapSecName_MtEmber[] = _("MT. EMBER");
+const u8 gMapSecName_BerryForest[] = _("BERRY FOREST");
+const u8 gMapSecName_IcefallCave[] = _("ICEFALL CAVE");
+const u8 gMapSecName_RocketWarehouse[] = _("ROCKET WAREHOUSE");
+const u8 gMapSecName_TrainerTower_2[] = _("TRAINER TOWER");
+const u8 gMapSecName_DottedHole[] = _("DOTTED HOLE");
+const u8 gMapSecName_LostCave[] = _("LOST CAVE");
+const u8 gMapSecName_PatternBush[] = _("PATTERN BUSH");
+const u8 gMapSecName_AlteringCave[] = _("ALTERING CAVE");
+const u8 gMapSecName_TanobyChambers[] = _("TANOBY CHAMBERS");
+const u8 gMapSecName_ThreeIslePath[] = _("THREE ISLE PATH");
+const u8 gMapSecName_TanobyKey[] = _("TANOBY KEY");
+const u8 gMapSecName_BirthIsland[] = _("BIRTH ISLAND");
+const u8 gMapSecName_MoneanChamber[] = _("MONEAN CHAMBER");
+const u8 gMapSecName_LiptooChamber[] = _("LIPTOO CHAMBER");
+const u8 gMapSecName_WeepthChamber[] = _("WEEPTH CHAMBER");
+const u8 gMapSecName_DilfordChamber[] = _("DILFORD CHAMBER");
+const u8 gMapSecName_ScufibChamber[] = _("SCUFIB CHAMBER");
+const u8 gMapSecName_RixyChamber[] = _("RIXY CHAMBER");
+const u8 gMapSecName_ViapoisChamber[] = _("VIAPOIS CHAMBER");
+const u8 gMapSecName_EmberSpa[] = _("EMBER SPA");
+const u8 gMapSecName_CeladonDept[] = _("CELADON DEPT.");
diff --git a/src/region_map.c b/src/region_map.c
new file mode 100644
index 000000000..97bcd476b
--- /dev/null
+++ b/src/region_map.c
@@ -0,0 +1,160 @@
+#include "global.h"
+#include "palette.h"
+#include "task.h"
+#include "malloc.h"
+#include "overworld.h"
+#include "event_data.h"
+#include "region_map.h"
+#include "constants/flags.h"
+#include "constants/region_map.h"
+
+struct UnkStruct_20399D4
+{
+ u8 filler_0000[0x4796];
+ u8 field_4796;
+ u8 field_4797[4];
+ u8 field_479B;
+ u8 field_479C;
+ u8 filler_479D[3];
+ u8 field_47A0;
+ u8 filler_47A1[3];
+ u8 field_47A4;
+ u8 filler_47A5[3];
+ u8 field_47A8;
+ u8 filler_47A9[15];
+ TaskFunc field_47B8;
+ MainCallback field_47BC;
+};
+
+EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL;
+EWRAM_DATA void * gUnknown_20399D8 = NULL;
+EWRAM_DATA void * gUnknown_20399DC = NULL;
+EWRAM_DATA void * gUnknown_20399E0 = NULL;
+EWRAM_DATA void * gUnknown_20399E4 = NULL;
+EWRAM_DATA void * gUnknown_20399E8 = NULL;
+EWRAM_DATA void * gUnknown_20399EC = NULL;
+EWRAM_DATA void * gUnknown_20399F0[3] = {};
+EWRAM_DATA void * gUnknown_20399FC = NULL;
+
+static void sub_80BFFD0(void);
+void sub_80C0100(void);
+void sub_80C04E4(u8 taskId);
+void sub_80C4F08(u8 taskId);
+
+#include "data/text/map_section_names.h"
+
+extern const u16 gUnknown_83EF2DC[];
+extern const u8 sSeviiMapsecs[3][30];
+extern const u8 gUnknown_83F1B00[3][4];
+
+static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint)
+{
+ int i;
+ int r, g, b;
+
+ for (i = 0; i < size; i++)
+ {
+ r = (*pal) & 0x1F;
+ g = ((*pal) >> 5) & 0x1F;
+ b = ((*pal) >> 10) & 0x1F;
+
+ r = (((r << 8) / 100) * tint) >> 8;
+ g = (((g << 8) / 100) * tint) >> 8;
+ b = (((b << 8) / 100) * tint) >> 8;
+
+ *pal = RGB2(r, g, b);
+ pal++;
+ }
+}
+
+void sub_80BFEA0(void)
+{
+ u16 pal[16];
+ CpuCopy16(&gUnknown_83EF2DC[0x20], pal, sizeof(pal));
+ RegionMap_DarkenPalette(pal, NELEMS(pal), 95);
+ LoadPalette(pal, 0x20, 0x20);
+ LoadPalette(&gUnknown_83EF2DC[0x2F], 0x2F, sizeof(u16));
+}
+
+void sub_80BFEDC(u8 kind)
+{
+ gUnknown_20399D4 = AllocZeroed(sizeof(struct UnkStruct_20399D4));
+ if (gUnknown_20399D4 == NULL)
+ {
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ else
+ {
+ gUnknown_2031DE0 = TRUE;
+ gUnknown_20399D4->field_4796 = kind;
+ gUnknown_20399D4->field_47A0 = 0;
+ gUnknown_20399D4->field_47A4 = 0;
+ gUnknown_20399D4->field_47A8 = 0;
+ sub_80BFFD0();
+ SetMainCallback2(sub_80C0100);
+ }
+}
+
+void sub_80BFF50(u8 kind, MainCallback cb)
+{
+ gUnknown_20399D4 = AllocZeroed(sizeof(struct UnkStruct_20399D4));
+ if (gUnknown_20399D4 == NULL)
+ {
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ else
+ {
+ gUnknown_2031DE0 = TRUE;
+ gUnknown_20399D4->field_4796 = kind;
+ gUnknown_20399D4->field_47A0 = 0;
+ gUnknown_20399D4->field_47A4 = 0;
+ gUnknown_20399D4->field_47A8 = 0;
+ gUnknown_20399D4->field_47BC = cb;
+ sub_80BFFD0();
+ SetMainCallback2(sub_80C0100);
+ }
+}
+
+static void sub_80BFFD0(void)
+{
+ u8 i;
+ u8 j;
+ u8 r7;
+
+ switch (gUnknown_20399D4->field_4796)
+ {
+ default:
+ case 0:
+ case 1:
+ gUnknown_20399D4->field_47B8 = sub_80C04E4;
+ break;
+ case 2:
+ gUnknown_20399D4->field_47B8 = sub_80C4F08;
+ break;
+ }
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_20399D4->field_4797[i] = gUnknown_83F1B00[gUnknown_20399D4->field_4796][i];
+ }
+ if (!FlagGet(FLAG_SYS_SEVII_MAP_123))
+ gUnknown_20399D4->field_4797[0] = FALSE;
+ r7 = 0;
+ j = 0;
+ if (gMapHeader.regionMapSectionId >= MAPSECS_SEVII_123)
+ {
+ while (r7 == 0)
+ {
+ for (i = 0; sSeviiMapsecs[j][i] != MAPSEC_NONE; i++)
+ {
+ if (gMapHeader.regionMapSectionId == sSeviiMapsecs[j][i])
+ {
+ r7 = j + 1;
+ break;
+ }
+ }
+ j++;
+ }
+ }
+ gUnknown_20399D4->field_479B = r7;
+ gUnknown_20399D4->field_479C = r7;
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 963159658..9e5e91782 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -267,35 +267,10 @@ gUnknown_203998C: @ 203998C
.include "src/mail.o"
.align 2
.include "src/menu_helpers.o"
-
.align 2
-gUnknown_20399D4: @ 20399D4
- .space 0x4
-
-gUnknown_20399D8: @ 20399D8
- .space 0x4
-
-gUnknown_20399DC: @ 20399DC
- .space 0x4
-
-gUnknown_20399E0: @ 20399E0
- .space 0x4
-
-gUnknown_20399E4: @ 20399E4
- .space 0x4
-
-gUnknown_20399E8: @ 20399E8
- .space 0x4
-
-gUnknown_20399EC: @ 20399EC
- .space 0x4
-
-gUnknown_20399F0: @ 20399F0
- .space 0xC
-
-gUnknown_20399FC: @ 20399FC
- .space 0x4
+ .include "src/region_map.o"
+ .align 2
gAIScriptPtr: @ 2039A00
.space 0x4