summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/field_region_map.s325
-rw-r--r--asm/heal_location.s83
-rwxr-xr-xasm/party_menu.s2
-rw-r--r--asm/pokedex_area_screen.s8
-rwxr-xr-xasm/pokenav.s8
-rw-r--r--asm/region_map.s4288
-rw-r--r--asm/rom4.s6
-rw-r--r--data/field_region_map.s14
-rw-r--r--data/heal_location.s11
-rw-r--r--data/menu_helpers.s2
-rw-r--r--data/region_map.s101
-rw-r--r--data/region_map_entries.inc809
-rw-r--r--graphics/pokenav/brendan_icon.pal19
-rw-r--r--graphics/pokenav/brendan_icon.pngbin0 -> 239 bytes
-rw-r--r--graphics/pokenav/cursor.gbapalbin0 -> 32 bytes
-rw-r--r--graphics/pokenav/cursor.pal19
-rw-r--r--graphics/pokenav/cursor_large.pngbin0 -> 194 bytes
-rw-r--r--graphics/pokenav/cursor_small.pngbin0 -> 168 bytes
-rw-r--r--graphics/pokenav/fly_target_icons.pal19
-rw-r--r--graphics/pokenav/fly_target_icons.pngbin0 -> 291 bytes
-rw-r--r--graphics/pokenav/map_frame.binbin0 -> 1280 bytes
-rw-r--r--graphics/pokenav/map_frame.gbapalbin0 -> 32 bytes
-rw-r--r--graphics/pokenav/map_frame.pngbin0 -> 160 bytes
-rw-r--r--graphics/pokenav/may_icon.pal19
-rw-r--r--graphics/pokenav/may_icon.pngbin0 -> 245 bytes
-rw-r--r--graphics/pokenav/region_map.pal35
-rw-r--r--graphics/pokenav/region_map.pngbin0 -> 3959 bytes
-rw-r--r--graphics/pokenav/region_map_map.binbin0 -> 4096 bytes
-rw-r--r--graphics_file_rules.mk5
-rw-r--r--include/data/region_map/region_map_entries.h421
-rw-r--r--include/field_effect.h5
-rw-r--r--include/flags.h3
-rw-r--r--include/heal_location.h25
-rw-r--r--include/menu.h2
-rw-r--r--include/overworld.h5
-rw-r--r--include/party_menu.h1
-rw-r--r--include/region_map.h515
-rw-r--r--include/rom6.h1
-rw-r--r--include/secret_base.h1
-rw-r--r--include/strings.h7
-rw-r--r--include/vars.h3
-rw-r--r--ld_script.txt12
-rw-r--r--src/decoration.c4
-rw-r--r--src/field_region_map.c195
-rw-r--r--src/heal_location.c83
-rw-r--r--src/region_map.c1965
-rw-r--r--src/tv.c6
-rw-r--r--sym_bss.txt3
-rw-r--r--sym_ewram.txt10
49 files changed, 3157 insertions, 5883 deletions
diff --git a/asm/field_region_map.s b/asm/field_region_map.s
deleted file mode 100644
index 512dfb151..000000000
--- a/asm/field_region_map.s
+++ /dev/null
@@ -1,325 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_817018C
-sub_817018C: @ 817018C
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0
- bl SetVBlankCallback
- ldr r4, =gUnknown_0203BCD0
- movs r0, 0x89
- lsls r0, 4
- bl Alloc
- str r0, [r4]
- ldr r1, =0x0000088c
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- str r5, [r0]
- ldr r0, =sub_81701C4
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817018C
-
- thumb_func_start sub_81701C4
-sub_81701C4: @ 81701C4
- push {lr}
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085E5068
- movs r0, 0x1
- movs r2, 0x2
- bl InitBgsFromTemplates
- ldr r0, =gUnknown_085E5070
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r0, 0
- movs r1, 0x27
- movs r2, 0xD0
- bl sub_809882C
- bl clear_scheduled_bg_copies_to_vram
- ldr r0, =sub_8170274
- bl SetMainCallback2
- ldr r0, =sub_8170260
- bl SetVBlankCallback
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81701C4
-
- thumb_func_start sub_8170260
-sub_8170260: @ 8170260
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8170260
-
- thumb_func_start sub_8170274
-sub_8170274: @ 8170274
- push {lr}
- bl sub_8170290
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl do_scheduled_bg_tilemap_copies_to_vram
- pop {r0}
- bx r0
- thumb_func_end sub_8170274
-
- thumb_func_start sub_8170290
-sub_8170290: @ 8170290
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r1, =gUnknown_0203BCD0
- ldr r0, [r1]
- ldr r2, =0x0000088c
- adds r0, r2
- ldrh r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x6
- bls _081702A6
- b _08170416
-_081702A6:
- lsls r0, 2
- ldr r1, =_081702BC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081702BC:
- .4byte _081702D8
- .4byte _08170300
- .4byte _08170358
- .4byte _08170380
- .4byte _08170394
- .4byte _081703C0
- .4byte _081703E8
-_081702D8:
- ldr r0, [r4]
- adds r0, 0x8
- movs r1, 0
- bl sub_8122CDC
- movs r0, 0
- movs r1, 0
- bl sub_8124288
- movs r0, 0x1
- movs r1, 0x1
- bl sub_81240D4
- ldr r1, [r4]
- ldr r0, =0x0000088c
- adds r1, r0
- b _081703D8
- .pool
-_08170300:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x27
- movs r3, 0xD
- bl SetWindowBorderStyle
- ldr r5, =gText_Hoenn
- movs r0, 0x1
- adds r1, r5, 0
- movs r2, 0x38
- bl GetStringCenterAlignXOffset
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x1
- str r0, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x1
- adds r2, r5, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0
- movs r1, 0
- movs r2, 0x27
- movs r3, 0xD
- bl SetWindowBorderStyle
- bl sub_8170428
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- b _081703CC
- .pool
-_08170358:
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- ldr r0, =gUnknown_0203BCD0
- ldr r1, [r0]
- ldr r0, =0x0000088c
- adds r1, r0
- b _081703D8
- .pool
-_08170380:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08170416
- ldr r1, [r4]
- b _081703D4
- .pool
-_08170394:
- bl sub_81230AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _081703A6
- bl sub_8170428
- b _08170416
-_081703A6:
- cmp r0, 0x3
- blt _08170416
- cmp r0, 0x5
- bgt _08170416
- ldr r0, =gUnknown_0203BCD0
- ldr r1, [r0]
- ldr r0, =0x0000088c
- adds r1, r0
- b _081703D8
- .pool
-_081703C0:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
-_081703CC:
- bl BeginNormalPaletteFade
- ldr r0, =gUnknown_0203BCD0
- ldr r1, [r0]
-_081703D4:
- ldr r2, =0x0000088c
- adds r1, r2
-_081703D8:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08170416
- .pool
-_081703E8:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08170416
- bl sub_812305C
- ldr r4, =gUnknown_0203BCD0
- ldr r0, [r4]
- ldr r0, [r0]
- bl SetMainCallback2
- ldr r0, [r4]
- cmp r0, 0
- beq _08170412
- bl Free
- str r5, [r4]
-_08170412:
- bl FreeAllWindowBuffers
-_08170416:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170290
-
- thumb_func_start sub_8170428
-sub_8170428: @ 8170428
- push {r4,lr}
- sub sp, 0xC
- ldr r4, =gUnknown_0203BCD0
- ldr r0, [r4]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _08170460
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r2, [r4]
- adds r2, 0xC
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- b _08170470
- .pool
-_08170460:
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_08170470:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8170428
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/heal_location.s b/asm/heal_location.s
deleted file mode 100644
index f7947d34e..000000000
--- a/asm/heal_location.s
+++ /dev/null
@@ -1,83 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8122C5C
-sub_8122C5C: @ 8122C5C
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r1, 16
- movs r3, 0
- ldr r2, =gUnknown_0859F53C
-_08122C6A:
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, r4
- bne _08122C84
- movs r0, 0x1
- ldrsb r0, [r2, r0]
- cmp r0, r1
- bne _08122C84
- adds r0, r3, 0x1
- b _08122C8E
- .pool
-_08122C84:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x15
- bls _08122C6A
- movs r0, 0
-_08122C8E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8122C5C
-
- thumb_func_start sub_8122C94
-sub_8122C94: @ 8122C94
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- bl sub_8122C5C
- cmp r0, 0
- beq _08122CB4
- lsls r0, 3
- ldr r1, =gUnknown_0859F534
- adds r0, r1
- b _08122CB6
- .pool
-_08122CB4:
- movs r0, 0
-_08122CB6:
- pop {r1}
- bx r1
- thumb_func_end sub_8122C94
-
- thumb_func_start sub_8122CBC
-@ warpdata *sub_8122CBC(int a1)
-sub_8122CBC: @ 8122CBC
- push {lr}
- cmp r0, 0
- beq _08122CD4
- cmp r0, 0x16
- bhi _08122CD4
- lsls r0, 3
- ldr r1, =gUnknown_0859F534
- adds r0, r1
- b _08122CD6
- .pool
-_08122CD4:
- movs r0, 0
-_08122CD6:
- pop {r1}
- bx r1
- thumb_func_end sub_8122CBC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 3d2af7e7d..6b0f92d12 100755
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -9892,7 +9892,7 @@ _081B55E8:
.pool
_081B5614:
ldr r1, =gUnknown_0203CEC8
- ldr r0, =sub_8124690
+ ldr r0, =MCB2_FlyMap
b _081B5628
.pool
_081B5624:
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s
index b599b365c..9bf70a379 100644
--- a/asm/pokedex_area_screen.s
+++ b/asm/pokedex_area_screen.s
@@ -362,7 +362,7 @@ sub_813CD04: @ 813CD04
adds r1, r3, 0
bl get_mapheader_by_bank_and_number
ldrb r0, [r0, 0x14]
- bl sub_8123F9C
+ bl CorrectSpecialMapSecId
ldr r2, [r4]
movs r1, 0x88
lsls r1, 1
@@ -653,7 +653,7 @@ _0813CF5A:
adds r0, r4, 0
adds r1, r6, 0
str r3, [sp]
- bl sub_8123E9C
+ bl GetRegionMapSectionIdAt
ldr r3, [sp]
ldr r2, [r3]
mov r7, r9
@@ -1338,11 +1338,11 @@ _0813D4F8:
bl sub_8122D88
movs r0, 0x1
movs r1, 0x1
- bl sub_8124288
+ bl CreateRegionMapPlayerIcon
movs r1, 0x8
negs r1, r1
movs r0, 0
- bl sub_8123824
+ bl PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs
b _0813D584
.pool
_0813D520:
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 0c7a80742..3ef99338e 100755
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -10864,7 +10864,7 @@ sub_81CC670: @ 81CC670
movs r0, 0x4
bl sub_81C763C
adds r4, r0, 0
- bl sub_812305C
+ bl FreeRegionMapIconResources
bl sub_81CC9EC
ldrb r0, [r4, 0x8]
bl RemoveWindow
@@ -10886,7 +10886,7 @@ sub_81CC6A4: @ 81CC6A4
bl TransferPlttBuffer
bl LoadOam
bl ProcessSpriteCopyRequests
- bl sub_81237B4
+ bl UpdateRegionMapVideoRegs
pop {r0}
bx r0
thumb_func_end sub_81CC6A4
@@ -10991,10 +10991,10 @@ _081CC784:
bne _081CC7AC
movs r0, 0x4
movs r1, 0x9
- bl sub_8124288
+ bl CreateRegionMapPlayerIcon
movs r0, 0x5
movs r1, 0xA
- bl sub_81240D4
+ bl CreateRegionMapCursor
bl sub_812454C
b _081CC77C
_081CC7AC:
diff --git a/asm/region_map.s b/asm/region_map.s
deleted file mode 100644
index 032bdf7a5..000000000
--- a/asm/region_map.s
+++ /dev/null
@@ -1,4288 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8122CDC
-sub_8122CDC: @ 8122CDC
- push {lr}
- lsls r2, r1, 24
- lsrs r2, 24
- movs r1, 0
- bl sub_8122CF8
-_08122CE8:
- bl sub_8122DB0
- lsls r0, 24
- cmp r0, 0
- bne _08122CE8
- pop {r0}
- bx r0
- thumb_func_end sub_8122CDC
-
- thumb_func_start sub_8122CF8
-sub_8122CF8: @ 8122CF8
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r3, =gUnknown_0203A144
- str r0, [r3]
- movs r1, 0x79
- adds r1, r0
- mov r12, r1
- movs r1, 0
- mov r5, r12
- strb r1, [r5]
- adds r0, 0x78
- strb r2, [r0]
- ldr r1, [r3]
- cmp r2, 0x1
- bne _08122D28
- ldr r0, =sub_8123254
- b _08122D2A
- .pool
-_08122D28:
- ldr r0, =sub_81230C4
-_08122D2A:
- str r0, [r1, 0x18]
- cmp r4, 0
- beq _08122D64
- ldr r1, [r3]
- ldr r0, [r4]
- lsls r0, 30
- lsrs r0, 30
- adds r1, 0x80
- strb r0, [r1]
- ldr r1, [r3]
- ldr r0, [r4]
- lsls r0, 28
- lsrs r0, 30
- adds r1, 0x81
- strb r0, [r1]
- ldr r1, [r3]
- ldr r0, [r4]
- lsls r0, 23
- lsrs r0, 27
- adds r1, 0x82
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x83
- movs r1, 0x1
- strb r1, [r0]
- b _08122D80
- .pool
-_08122D64:
- ldr r0, [r3]
- adds r0, 0x80
- movs r1, 0x2
- strb r1, [r0]
- ldr r0, [r3]
- adds r0, 0x81
- strb r1, [r0]
- ldr r0, [r3]
- adds r0, 0x82
- movs r1, 0x1C
- strb r1, [r0]
- ldr r0, [r3]
- adds r0, 0x83
- strb r4, [r0]
-_08122D80:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8122CF8
-
- thumb_func_start sub_8122D88
-sub_8122D88: @ 8122D88
- push {r4,lr}
- ldr r4, =gUnknown_0203A144
- str r0, [r4]
- bl sub_81238AC
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x54
- ldrh r1, [r0]
- adds r0, 0x20
- strh r1, [r0]
- subs r0, 0x1E
- ldrh r1, [r0]
- adds r0, 0x20
- strh r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8122D88
-
- thumb_func_start sub_8122DB0
-sub_8122DB0: @ 8122DB0
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0x7
- bls _08122DC2
- b _0812300C
-_08122DC2:
- lsls r0, 2
- ldr r1, =_08122DD4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08122DD4:
- .4byte _08122DF4
- .4byte _08122E2C
- .4byte _08122E78
- .4byte _08122E94
- .4byte _08122EB0
- .4byte _08122ECC
- .4byte _08122F10
- .4byte _08122F8C
-_08122DF4:
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x83
- ldrb r0, [r0]
- cmp r0, 0
- beq _08122E18
- adds r0, r1, 0
- adds r0, 0x80
- ldrb r0, [r0]
- ldr r1, =gUnknown_0859F77C
- movs r2, 0
- str r2, [sp]
- b _08122E52
- .pool
-_08122E18:
- ldr r0, =gUnknown_0859F77C
- ldr r1, =0x06008000
- bl LZ77UnCompVram
- b _08123014
- .pool
-_08122E2C:
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- adds r0, 0x83
- ldrb r0, [r0]
- cmp r0, 0
- beq _08122E64
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _08122E44
- b _08123014
-_08122E44:
- ldr r0, [r4]
- adds r0, 0x80
- ldrb r0, [r0]
- ldr r1, =gUnknown_085A04E0
- movs r2, 0x1
- str r2, [sp]
- movs r2, 0
-_08122E52:
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- b _08123014
- .pool
-_08122E64:
- ldr r0, =gUnknown_085A04E0
- ldr r1, =0x0600e000
- bl LZ77UnCompVram
- b _08123014
- .pool
-_08122E78:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _08122E84
- b _08123014
-_08122E84:
- ldr r0, =gUnknown_0859F73C
- movs r1, 0x70
- movs r2, 0x60
- bl LoadPalette
- b _08123014
- .pool
-_08122E94:
- ldr r0, =gUnknown_0859F60C
- ldr r1, =gUnknown_0203A144
- ldr r1, [r1]
- movs r2, 0xC2
- lsls r2, 1
- adds r1, r2
- bl LZ77UnCompWram
- b _08123014
- .pool
-_08122EB0:
- ldr r0, =gUnknown_0859F650
- ldr r1, =gUnknown_0203A144
- ldr r1, [r1]
- movs r5, 0xA1
- lsls r5, 2
- adds r1, r5
- bl LZ77UnCompWram
- b _08123014
- .pool
-_08122ECC:
- bl sub_81238AC
- ldr r4, =gUnknown_0203A144
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x54
- ldrh r1, [r0]
- adds r0, 0x20
- strh r1, [r0]
- subs r0, 0x1E
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0x76
- strh r0, [r1]
- ldrh r0, [r2]
- bl sub_8123EB4
- ldr r1, [r4]
- strh r0, [r1]
- ldrh r0, [r1]
- bl get_flagnr_blue_points
- ldr r1, [r4]
- strb r0, [r1, 0x2]
- ldr r1, [r4]
- adds r0, r1, 0x4
- ldrh r1, [r1]
- movs r2, 0x10
- bl GetMapName
- b _08123014
- .pool
-_08122F10:
- ldr r0, =gUnknown_0203A144
- ldr r4, [r0]
- adds r0, r4, 0
- adds r0, 0x78
- ldrb r1, [r0]
- cmp r1, 0
- bne _08122F3C
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_81236C4
- b _08123014
- .pool
-_08122F3C:
- adds r1, r4, 0
- adds r1, 0x54
- ldrh r0, [r1]
- lsls r0, 3
- subs r0, 0x34
- adds r2, r4, 0
- adds r2, 0x5C
- movs r3, 0
- strh r0, [r2]
- movs r0, 0x56
- adds r0, r4
- mov r12, r0
- ldrh r0, [r0]
- lsls r0, 3
- subs r0, 0x44
- adds r5, r4, 0
- adds r5, 0x5E
- strh r0, [r5]
- ldrh r1, [r1]
- adds r0, r4, 0
- adds r0, 0x64
- strh r1, [r0]
- mov r0, r12
- ldrh r1, [r0]
- adds r0, r4, 0
- adds r0, 0x66
- strh r1, [r0]
- movs r1, 0
- ldrsh r0, [r2, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- movs r2, 0x80
- str r2, [sp]
- str r2, [sp, 0x4]
- str r3, [sp, 0x8]
- movs r2, 0x38
- movs r3, 0x48
- bl sub_81236C4
- b _08123014
-_08122F8C:
- bl sub_8123FB0
- bl sub_81237B4
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- movs r1, 0
- str r1, [r0, 0x1C]
- str r1, [r0, 0x20]
- adds r0, 0x7A
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x7E
- strb r1, [r0]
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x83
- ldrb r0, [r0]
- cmp r0, 0
- beq _08123002
- adds r0, r1, 0
- adds r0, 0x80
- ldrb r0, [r0]
- movs r1, 0x3
- movs r2, 0x2
- bl SetBgAttribute
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x80
- ldrb r0, [r0]
- adds r1, 0x81
- ldrb r2, [r1]
- movs r1, 0x1
- bl SetBgAttribute
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x80
- ldrb r0, [r0]
- adds r1, 0x82
- ldrb r2, [r1]
- movs r1, 0x2
- bl SetBgAttribute
- ldr r0, [r4]
- adds r0, 0x80
- ldrb r0, [r0]
- movs r1, 0x6
- movs r2, 0x1
- bl SetBgAttribute
- ldr r0, [r4]
- adds r0, 0x80
- ldrb r0, [r0]
- movs r1, 0x4
- movs r2, 0x1
- bl SetBgAttribute
-_08123002:
- ldr r1, [r4]
- adds r1, 0x79
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0812300C:
- movs r0, 0
- b _08123022
- .pool
-_08123014:
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- adds r1, 0x79
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0x1
-_08123022:
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8122DB0
-
- thumb_func_start sub_8123030
-sub_8123030: @ 8123030
- push {lr}
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0xE0
- lsls r0, 2
- lsls r1, 24
- lsrs r1, 24
- bl BlendPalettes
- ldr r0, =gPlttBufferFaded + 0xE0
- ldr r1, =gPlttBufferUnfaded + 0xE0
- movs r2, 0x30
- bl CpuSet
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8123030
-
- thumb_func_start sub_812305C
-sub_812305C: @ 812305C
- push {r4,lr}
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldr r0, [r0, 0x1C]
- cmp r0, 0
- beq _08123080
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x58
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x5A
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_08123080:
- ldr r0, [r4]
- ldr r0, [r0, 0x20]
- cmp r0, 0
- beq _081230A0
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x70
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x72
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_081230A0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812305C
-
- thumb_func_start sub_81230AC
-sub_81230AC: @ 81230AC
- push {lr}
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81230AC
-
- thumb_func_start sub_81230C4
-sub_81230C4: @ 81230C4
- push {r4,lr}
- movs r4, 0
- ldr r2, =gUnknown_0203A144
- ldr r0, [r2]
- adds r0, 0x7B
- strb r4, [r0]
- ldr r0, [r2]
- adds r0, 0x7C
- strb r4, [r0]
- ldr r3, =gMain
- ldrh r1, [r3, 0x2C]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081230F6
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- cmp r0, 0x2
- bls _081230F6
- adds r1, 0x7C
- movs r0, 0xFF
- strb r0, [r1]
- movs r4, 0x1
-_081230F6:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08123114
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- cmp r0, 0xF
- bhi _08123114
- adds r1, 0x7C
- movs r0, 0x1
- strb r0, [r1]
- movs r4, 0x1
-_08123114:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08123132
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- cmp r0, 0x1
- bls _08123132
- adds r1, 0x7B
- movs r0, 0xFF
- strb r0, [r1]
- movs r4, 0x1
-_08123132:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08123150
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- cmp r0, 0x1B
- bhi _08123150
- adds r1, 0x7B
- movs r0, 0x1
- strb r0, [r1]
- movs r4, 0x1
-_08123150:
- ldrh r3, [r3, 0x2E]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _08123168
- movs r4, 0x4
- b _08123172
- .pool
-_08123168:
- movs r0, 0x2
- ands r0, r3
- cmp r0, 0
- beq _08123172
- movs r4, 0x5
-_08123172:
- cmp r4, 0x1
- bne _08123184
- ldr r0, [r2]
- adds r0, 0x7A
- movs r1, 0x4
- strb r1, [r0]
- ldr r1, [r2]
- ldr r0, =_swiopen
- str r0, [r1, 0x18]
-_08123184:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81230C4
-
- thumb_func_start _swiopen
-_swiopen: @ 8123190
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203A144
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7A
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _081231AC
- movs r0, 0x2
- b _08123248
- .pool
-_081231AC:
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _081231C2
- adds r1, 0x54
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_081231C2:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _081231DA
- adds r1, 0x54
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_081231DA:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _081231F2
- adds r1, 0x56
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_081231F2:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _0812320A
- adds r1, 0x56
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_0812320A:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- adds r1, 0x56
- ldrh r1, [r1]
- bl sub_812386C
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl get_flagnr_blue_points
- ldr r1, [r5]
- strb r0, [r1, 0x2]
- ldr r1, [r5]
- ldrh r0, [r1]
- cmp r4, r0
- beq _0812323C
- strh r4, [r1]
- adds r0, r1, 0x4
- ldrh r1, [r1]
- movs r2, 0x10
- bl GetMapName
-_0812323C:
- bl sub_8123FB0
- ldr r1, [r5]
- ldr r0, =sub_81230C4
- str r0, [r1, 0x18]
- movs r0, 0x3
-_08123248:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end _swiopen
-
- thumb_func_start sub_8123254
-sub_8123254: @ 8123254
- push {r4-r6,lr}
- movs r4, 0
- ldr r3, =gUnknown_0203A144
- ldr r0, [r3]
- mov r12, r0
- adds r0, 0x6A
- strh r4, [r0]
- mov r5, r12
- adds r5, 0x68
- strh r4, [r5]
- ldr r2, =gMain
- ldrh r1, [r2, 0x2C]
- movs r0, 0x40
- ands r0, r1
- adds r6, r3, 0
- adds r3, r2, 0
- cmp r0, 0
- beq _0812328E
- mov r0, r12
- adds r0, 0x5E
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0x34
- negs r0, r0
- cmp r1, r0
- ble _0812328E
- ldr r0, =0x0000ffff
- strh r0, [r5]
- movs r4, 0x1
-_0812328E:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081232AE
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x5E
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r0, 0x3B
- bgt _081232AE
- adds r1, 0x68
- movs r0, 0x1
- strh r0, [r1]
- movs r4, 0x1
-_081232AE:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081232D4
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0x5C
- movs r5, 0
- ldrsh r1, [r0, r5]
- movs r0, 0x2C
- negs r0, r0
- cmp r1, r0
- ble _081232D4
- adds r1, r2, 0
- adds r1, 0x6A
- ldr r0, =0x0000ffff
- strh r0, [r1]
- movs r4, 0x1
-_081232D4:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081232F4
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x5C
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0xAB
- bgt _081232F4
- adds r1, 0x6A
- movs r0, 0x1
- strh r0, [r1]
- movs r4, 0x1
-_081232F4:
- ldrh r2, [r3, 0x2E]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _08123300
- movs r4, 0x4
-_08123300:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0812330A
- movs r4, 0x5
-_0812330A:
- cmp r4, 0x1
- bne _0812331A
- ldr r0, [r6]
- ldr r1, =sub_8123334
- str r1, [r0, 0x18]
- adds r0, 0x6C
- movs r1, 0
- strh r1, [r0]
-_0812331A:
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8123254
-
- thumb_func_start sub_8123334
-sub_8123334: @ 8123334
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203A144
- ldr r2, [r5]
- adds r3, r2, 0
- adds r3, 0x5E
- adds r0, r2, 0
- adds r0, 0x68
- ldrh r0, [r0]
- ldrh r1, [r3]
- adds r0, r1
- strh r0, [r3]
- adds r1, r2, 0
- adds r1, 0x5C
- adds r0, r2, 0
- adds r0, 0x6A
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- movs r2, 0
- ldrsh r1, [r3, r2]
- bl sub_812378C
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x6C
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bne _08123410
- adds r0, r2, 0
- adds r0, 0x5C
- movs r3, 0
- ldrsh r1, [r0, r3]
- adds r0, r1, 0
- adds r0, 0x2C
- cmp r0, 0
- bge _0812338C
- adds r0, 0x7
-_0812338C:
- asrs r0, 3
- adds r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r2, 0
- adds r0, 0x5E
- movs r4, 0
- ldrsh r1, [r0, r4]
- adds r0, r1, 0
- adds r0, 0x34
- cmp r0, 0
- bge _081233A6
- adds r0, 0x7
-_081233A6:
- asrs r0, 3
- adds r0, 0x2
- lsls r0, 16
- lsrs r1, r0, 16
- adds r4, r2, 0
- adds r4, 0x64
- adds r0, r2, 0
- adds r0, 0x66
- ldrh r2, [r4]
- cmp r3, r2
- bne _081233C2
- ldrh r2, [r0]
- cmp r1, r2
- beq _081233F2
-_081233C2:
- strh r3, [r4]
- strh r1, [r0]
- adds r0, r3, 0
- bl sub_812386C
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl get_flagnr_blue_points
- ldr r1, [r5]
- strb r0, [r1, 0x2]
- ldr r1, [r5]
- ldrh r3, [r1]
- cmp r4, r3
- beq _081233EE
- strh r4, [r1]
- adds r0, r1, 0x4
- ldrh r1, [r1]
- movs r2, 0x10
- bl GetMapName
-_081233EE:
- bl sub_8123FB0
-_081233F2:
- ldr r0, =gUnknown_0203A144
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x6C
- movs r0, 0
- strh r0, [r1]
- ldr r0, =sub_8123254
- str r0, [r2, 0x18]
- movs r0, 0x3
- b _08123412
- .pool
-_08123410:
- movs r0, 0x2
-_08123412:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8123334
-
- thumb_func_start sub_8123418
-sub_8123418: @ 8123418
- push {r4-r6,lr}
- ldr r1, =gUnknown_0203A144
- ldr r2, [r1]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r3, [r0]
- adds r5, r1, 0
- cmp r3, 0
- bne _0812349C
- subs r0, 0x1A
- strh r3, [r0]
- subs r0, 0x2
- strh r3, [r0]
- str r3, [r2, 0x40]
- str r3, [r2, 0x3C]
- adds r4, r2, 0
- adds r4, 0x54
- ldrh r0, [r4]
- lsls r0, 3
- subs r0, 0x34
- adds r1, r2, 0
- adds r1, 0x60
- strh r0, [r1]
- movs r0, 0x56
- adds r0, r2
- mov r12, r0
- ldrh r0, [r0]
- lsls r0, 3
- subs r0, 0x44
- adds r3, r2, 0
- adds r3, 0x62
- strh r0, [r3]
- movs r6, 0
- ldrsh r0, [r1, r6]
- lsls r0, 8
- cmp r0, 0
- bge _08123464
- adds r0, 0xF
-_08123464:
- asrs r0, 4
- str r0, [r2, 0x44]
- movs r1, 0
- ldrsh r0, [r3, r1]
- lsls r0, 8
- cmp r0, 0
- bge _08123474
- adds r0, 0xF
-_08123474:
- asrs r0, 4
- str r0, [r2, 0x48]
- ldrh r1, [r4]
- adds r0, r2, 0
- adds r0, 0x64
- strh r1, [r0]
- mov r3, r12
- ldrh r0, [r3]
- adds r1, r2, 0
- adds r1, 0x66
- strh r0, [r1]
- movs r0, 0x80
- lsls r0, 9
- str r0, [r2, 0x4C]
- ldr r0, =0xfffff800
- b _081234FA
- .pool
-_0812349C:
- adds r0, r2, 0
- adds r0, 0x5C
- movs r6, 0
- ldrsh r0, [r0, r6]
- lsls r0, 8
- str r0, [r2, 0x3C]
- adds r0, r2, 0
- adds r0, 0x5E
- movs r1, 0
- ldrsh r0, [r0, r1]
- lsls r0, 8
- str r0, [r2, 0x40]
- adds r0, r2, 0
- adds r0, 0x60
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r0, [r2, 0x3C]
- cmp r0, 0
- bge _081234C8
- adds r0, 0xF
-_081234C8:
- asrs r0, 4
- negs r0, r0
- str r0, [r2, 0x44]
- ldr r0, [r2, 0x40]
- cmp r0, 0
- bge _081234D6
- adds r0, 0xF
-_081234D6:
- asrs r0, 4
- negs r0, r0
- str r0, [r2, 0x48]
- adds r0, r2, 0
- adds r0, 0x64
- ldrh r1, [r0]
- subs r0, 0x10
- strh r1, [r0]
- adds r0, 0x12
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0x56
- strh r0, [r1]
- movs r0, 0x80
- lsls r0, 8
- str r0, [r2, 0x4C]
- movs r0, 0x80
- lsls r0, 4
-_081234FA:
- str r0, [r2, 0x50]
- ldr r0, [r5]
- adds r0, 0x6E
- movs r1, 0
- strh r1, [r0]
- bl sub_8124238
- bl sub_81243B0
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8123418
-
- thumb_func_start sub_8123514
-sub_8123514: @ 8123514
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r0, =gUnknown_0203A144
- ldr r3, [r0]
- adds r2, r3, 0
- adds r2, 0x6E
- ldrh r1, [r2]
- adds r5, r0, 0
- cmp r1, 0xF
- bls _08123530
- movs r0, 0
- b _081236B8
- .pool
-_08123530:
- adds r0, r1, 0x1
- movs r1, 0
- strh r0, [r2]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x10
- bne _081235A4
- str r1, [r3, 0x44]
- str r1, [r3, 0x48]
- adds r0, r3, 0
- adds r0, 0x60
- ldrh r1, [r0]
- subs r0, 0x4
- strh r1, [r0]
- adds r0, 0x6
- ldrh r0, [r0]
- adds r1, r3, 0
- adds r1, 0x5E
- strh r0, [r1]
- adds r1, 0x1A
- ldrb r0, [r1]
- movs r2, 0x80
- lsls r2, 9
- cmp r0, 0
- bne _08123566
- movs r2, 0x80
- lsls r2, 8
-_08123566:
- str r2, [r3, 0x4C]
- movs r2, 0
- ldrb r0, [r1]
- cmp r0, 0
- bne _08123572
- movs r2, 0x1
-_08123572:
- strb r2, [r1]
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x78
- ldrb r0, [r0]
- ldr r2, =sub_8123254
- cmp r0, 0
- bne _08123584
- ldr r2, =sub_81230C4
-_08123584:
- str r2, [r1, 0x18]
- adds r0, r1, 0
- adds r0, 0x58
- ldrh r0, [r0]
- adds r1, 0x5A
- ldrh r1, [r1]
- bl sub_81240D4
- bl sub_81243DC
- movs r4, 0
- b _08123686
- .pool
-_081235A4:
- ldr r2, [r3, 0x3C]
- ldr r0, [r3, 0x44]
- adds r2, r0
- str r2, [r3, 0x3C]
- ldr r0, [r3, 0x40]
- ldr r1, [r3, 0x48]
- adds r0, r1
- str r0, [r3, 0x40]
- asrs r2, 8
- adds r4, r3, 0
- adds r4, 0x5C
- strh r2, [r4]
- ldr r0, [r3, 0x40]
- asrs r0, 8
- adds r1, r3, 0
- adds r1, 0x5E
- strh r0, [r1]
- ldr r0, [r3, 0x4C]
- ldr r1, [r3, 0x50]
- adds r0, r1
- str r0, [r3, 0x4C]
- ldr r2, [r3, 0x44]
- cmp r2, 0
- bge _081235E4
- adds r0, r3, 0
- adds r0, 0x60
- movs r6, 0
- ldrsh r1, [r4, r6]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- blt _081235F8
-_081235E4:
- cmp r2, 0
- ble _08123608
- adds r0, r3, 0
- adds r0, 0x60
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- ble _08123608
-_081235F8:
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x60
- ldrh r2, [r0]
- subs r0, 0x4
- movs r1, 0
- strh r2, [r0]
- str r1, [r3, 0x44]
-_08123608:
- ldr r2, [r5]
- ldr r4, [r2, 0x48]
- cmp r4, 0
- bge _08123624
- adds r0, r2, 0
- adds r0, 0x5E
- adds r3, r2, 0
- adds r3, 0x62
- movs r6, 0
- ldrsh r1, [r0, r6]
- movs r6, 0
- ldrsh r0, [r3, r6]
- cmp r1, r0
- blt _0812363C
-_08123624:
- cmp r4, 0
- ble _0812364E
- adds r1, r2, 0
- adds r1, 0x5E
- adds r0, r2, 0
- adds r0, 0x62
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- ble _0812364E
-_0812363C:
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x62
- ldrh r1, [r0]
- adds r3, r2, 0
- adds r3, 0x5E
- movs r0, 0
- strh r1, [r3]
- str r0, [r2, 0x48]
-_0812364E:
- ldr r0, =gUnknown_0203A144
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r3, [r0]
- cmp r3, 0
- bne _08123674
- ldr r1, [r2, 0x4C]
- ldr r0, =0x00007fff
- cmp r1, r0
- bgt _08123684
- adds r0, 0x1
- str r0, [r2, 0x4C]
- str r3, [r2, 0x50]
- b _08123684
- .pool
-_08123674:
- ldr r0, [r2, 0x4C]
- movs r1, 0x80
- lsls r1, 9
- cmp r0, r1
- ble _08123684
- str r1, [r2, 0x4C]
- movs r0, 0
- str r0, [r2, 0x50]
-_08123684:
- movs r4, 0x1
-_08123686:
- ldr r0, =gUnknown_0203A144
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x5C
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r1, r3, 0
- adds r1, 0x5E
- movs r2, 0
- ldrsh r1, [r1, r2]
- ldr r2, [r3, 0x4C]
- lsls r2, 8
- lsrs r2, 16
- str r2, [sp]
- ldr r2, [r3, 0x4C]
- lsls r2, 8
- lsrs r2, 16
- str r2, [sp, 0x4]
- movs r2, 0
- str r2, [sp, 0x8]
- movs r2, 0x38
- movs r3, 0x48
- bl sub_81236C4
- adds r0, r4, 0
-_081236B8:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8123514
-
- thumb_func_start sub_81236C4
-sub_81236C4: @ 81236C4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- ldr r7, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- lsls r4, 16
- lsrs r4, 16
- mov r8, r4
- lsls r7, 16
- adds r4, r7, 0
- lsrs r4, 16
- mov r9, r4
- lsls r5, 24
- lsrs r5, 24
- ldr r4, =gUnknown_0203A144
- ldr r6, [r4]
- ldr r7, =gSineTable
- mov r12, r7
- adds r4, r5, 0
- adds r4, 0x40
- lsls r4, 1
- add r4, r12
- movs r7, 0
- ldrsh r4, [r4, r7]
- str r4, [sp]
- mov r7, r8
- muls r7, r4
- adds r4, r7, 0
- asrs r4, 8
- mov r10, r4
- str r4, [r6, 0x2C]
- lsls r5, 1
- add r5, r12
- movs r7, 0
- ldrsh r5, [r5, r7]
- negs r4, r5
- mov r7, r8
- muls r7, r4
- adds r4, r7, 0
- asrs r4, 8
- mov r12, r4
- str r4, [r6, 0x30]
- mov r7, r9
- muls r7, r5
- adds r5, r7, 0
- asrs r5, 8
- str r5, [r6, 0x34]
- ldr r7, [sp]
- mov r4, r9
- muls r4, r7
- asrs r4, 8
- mov r8, r4
- str r4, [r6, 0x38]
- lsls r0, 16
- asrs r0, 8
- lsls r2, 16
- asrs r2, 16
- lsls r4, r2, 8
- adds r0, r4
- lsls r3, 16
- asrs r3, 16
- adds r4, r3, 0
- muls r4, r5
- mov r5, r10
- muls r5, r2
- adds r4, r5
- subs r0, r4
- str r0, [r6, 0x24]
- lsls r1, 16
- asrs r1, 8
- lsls r0, r3, 8
- adds r1, r0
- mov r0, r8
- muls r0, r3
- mov r3, r12
- muls r3, r2
- adds r2, r3, 0
- adds r0, r2
- subs r1, r0
- str r1, [r6, 0x28]
- adds r6, 0x7D
- movs r0, 0x1
- strb r0, [r6]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81236C4
-
- thumb_func_start sub_812378C
-sub_812378C: @ 812378C
- ldr r2, =gUnknown_0203A144
- ldr r2, [r2]
- lsls r0, 16
- asrs r0, 8
- movs r3, 0xE0
- lsls r3, 5
- adds r0, r3
- str r0, [r2, 0x24]
- lsls r1, 16
- asrs r1, 8
- movs r0, 0x90
- lsls r0, 6
- adds r1, r0
- str r1, [r2, 0x28]
- adds r2, 0x7D
- movs r0, 0x1
- strb r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_812378C
-
- thumb_func_start sub_81237B4
-sub_81237B4: @ 81237B4
- push {r4,lr}
- ldr r4, =gUnknown_0203A144
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x7D
- ldrb r0, [r0]
- cmp r0, 0
- beq _0812381A
- ldrh r1, [r1, 0x2C]
- movs r0, 0x20
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x34]
- movs r0, 0x22
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x30]
- movs r0, 0x24
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x38]
- movs r0, 0x26
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x24]
- movs r0, 0x28
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x26]
- movs r0, 0x2A
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x28]
- movs r0, 0x2C
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x2A]
- movs r0, 0x2E
- bl SetGpuReg
- ldr r0, [r4]
- adds r0, 0x7D
- movs r1, 0
- strb r1, [r0]
-_0812381A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81237B4
-
- thumb_func_start sub_8123824
-sub_8123824: @ 8123824
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x38
- movs r3, 0x48
- bl sub_81236C4
- bl sub_81237B4
- ldr r0, =gUnknown_0203A144
- ldr r2, [r0]
- ldr r1, [r2, 0x20]
- cmp r1, 0
- beq _08123860
- negs r0, r4
- strh r0, [r1, 0x24]
- ldr r1, [r2, 0x20]
- negs r0, r5
- strh r0, [r1, 0x26]
-_08123860:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8123824
-
- thumb_func_start sub_812386C
-sub_812386C: @ 812386C
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- ldr r0, =0xfffe0000
- adds r1, r0
- lsrs r2, r1, 16
- cmp r2, 0xE
- bhi _08123886
- cmp r3, 0
- beq _08123886
- cmp r3, 0x1C
- bls _08123890
-_08123886:
- movs r0, 0xD5
- b _081238A4
- .pool
-_08123890:
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r1, =gUnknown_085A096C
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r3, r0
- adds r0, r1
- ldrb r0, [r0]
-_081238A4:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812386C
-
- thumb_func_start sub_81238AC
-sub_81238AC: @ 81238AC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- movs r1, 0x4
- ldrsb r1, [r2, r1]
- adds r3, r0, 0
- cmp r1, 0x19
- bne _081238DC
- ldrb r0, [r2, 0x5]
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bhi _081238DC
- bl sub_8123C00
- b _08123BEC
- .pool
-_081238DC:
- ldr r1, [r3]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- bl get_map_light_level_by_bank_and_number
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x8
- bhi _08123928
- lsls r0, 2
- ldr r1, =_08123904
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08123904:
- .4byte _08123928
- .4byte _08123928
- .4byte _08123928
- .4byte _0812396C
- .4byte _08123928
- .4byte _08123928
- .4byte _0812396C
- .4byte _08123A28
- .4byte _081239E4
-_08123928:
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldr r3, =gMapHeader
- ldrb r1, [r3, 0x14]
- movs r2, 0
- strh r1, [r0]
- adds r0, 0x7F
- strb r2, [r0]
- ldr r0, [r3]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r9, r0
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r6, [r0]
- ldrh r3, [r0, 0x2]
- ldr r1, [r4]
- ldrh r0, [r1]
- cmp r0, 0x45
- beq _08123956
- cmp r0, 0xCC
- beq _08123956
- b _08123ABE
-_08123956:
- adds r1, 0x7F
- movs r0, 0x1
- strb r0, [r1]
- b _08123ABE
- .pool
-_0812396C:
- ldr r2, =gMapHeader
- ldrb r1, [r2, 0x1A]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081239C8
- ldr r4, =gSaveBlock1Ptr
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x24
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- adds r1, 0x25
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r5, r0, 0
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldrb r1, [r5, 0x14]
- strh r1, [r0]
- adds r0, 0x7F
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r5]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r9, r0
- ldr r0, [r4]
- ldrh r6, [r0, 0x28]
- ldrh r3, [r0, 0x2A]
- b _08123ABE
- .pool
-_081239C8:
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldrb r1, [r2, 0x14]
- strh r1, [r0]
- adds r0, 0x7F
- movs r1, 0x1
- strb r1, [r0]
- movs r2, 0x1
- mov r9, r2
- movs r6, 0x1
- movs r3, 0x1
- b _08123ABE
- .pool
-_081239E4:
- ldr r4, =gSaveBlock1Ptr
- ldr r1, [r4]
- movs r0, 0x14
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x15]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r5, r0, 0
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldrb r1, [r5, 0x14]
- strh r1, [r0]
- adds r0, 0x7F
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r5]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r9, r0
- ldr r0, [r4]
- ldrh r6, [r0, 0x18]
- ldrh r3, [r0, 0x1A]
- b _08123ABE
- .pool
-_08123A28:
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldr r1, =gMapHeader
- ldrb r1, [r1, 0x14]
- strh r1, [r0]
- cmp r1, 0x57
- beq _08123A64
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- adds r7, r0, 0
- adds r7, 0x24
- movs r0, 0
- ldrsb r0, [r7, r0]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ldrsb r1, [r7, r1]
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r5, r0, 0
- b _08123A8A
- .pool
-_08123A64:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- adds r7, r0, 0
- adds r7, 0x14
- ldrb r0, [r0, 0x14]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ldrsb r1, [r7, r1]
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r5, r0, 0
- ldr r1, [r4]
- ldrb r0, [r5, 0x14]
- strh r0, [r1]
-_08123A8A:
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldrb r0, [r0]
- bl sub_8123F74
- adds r1, r0, 0
- cmp r1, 0
- beq _08123AAC
- ldr r0, [r4]
- adds r0, 0x7F
- movs r1, 0x1
- b _08123AB0
- .pool
-_08123AAC:
- ldr r0, [r4]
- adds r0, 0x7F
-_08123AB0:
- strb r1, [r0]
- ldr r0, [r5]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r9, r0
- ldrh r6, [r7, 0x4]
- ldrh r3, [r7, 0x6]
-_08123ABE:
- str r6, [sp]
- ldr r5, =gRegionMapEntries
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- mov r10, r0
- ldrh r7, [r0]
- lsls r0, r7, 3
- adds r0, r5
- str r0, [sp, 0x4]
- ldrb r0, [r0, 0x2]
- mov r8, r0
- adds r0, r2, 0
- mov r1, r8
- str r3, [sp, 0x8]
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r3, [sp, 0x8]
- cmp r1, 0
- bne _08123AEA
- movs r1, 0x1
-_08123AEA:
- adds r0, r6, 0
- str r3, [sp, 0x8]
- bl __udivsi3
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r3, [sp, 0x8]
- cmp r6, r8
- bcc _08123B04
- mov r0, r8
- subs r0, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08123B04:
- ldr r2, [sp, 0x4]
- ldrb r4, [r2, 0x3]
- mov r0, r9
- adds r1, r4, 0
- str r3, [sp, 0x8]
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r3, [sp, 0x8]
- cmp r1, 0
- bne _08123B1E
- movs r1, 0x1
-_08123B1E:
- adds r0, r3, 0
- bl __udivsi3
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r4
- bcc _08123B32
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
-_08123B32:
- cmp r7, 0x29
- beq _08123B5E
- cmp r7, 0x29
- bgt _08123B4C
- cmp r7, 0x1D
- beq _08123B56
- cmp r7, 0x24
- beq _08123B94
- b _08123BC6
- .pool
-_08123B4C:
- cmp r7, 0x33
- beq _08123B5E
- cmp r7, 0xCC
- beq _08123BB8
- b _08123BC6
-_08123B56:
- cmp r3, 0
- beq _08123BC6
- movs r6, 0
- b _08123BC6
-_08123B5E:
- movs r6, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x20
- ble _08123B6E
- movs r6, 0x1
-_08123B6E:
- cmp r0, 0x33
- ble _08123B78
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08123B78:
- movs r3, 0
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- cmp r0, 0x25
- ble _08123B84
- movs r3, 0x1
-_08123B84:
- cmp r0, 0x38
- ble _08123BC6
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- b _08123BC6
- .pool
-_08123B94:
- movs r6, 0
- ldr r0, [sp]
- cmp r0, 0xE
- bls _08123B9E
- movs r6, 0x1
-_08123B9E:
- ldr r2, [sp]
- cmp r2, 0x1C
- bls _08123BAA
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08123BAA:
- ldr r0, [sp]
- cmp r0, 0x36
- bls _08123BC6
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- b _08123BC6
-_08123BB8:
- mov r0, r10
- adds r0, 0x54
- mov r1, r10
- adds r1, 0x56
- bl sub_8123F30
- b _08123BEC
-_08123BC6:
- ldr r0, =gUnknown_0203A144
- ldr r2, [r0]
- ldrh r0, [r2]
- lsls r0, 3
- adds r0, r5
- ldrb r0, [r0]
- adds r0, r6, r0
- adds r0, 0x1
- adds r1, r2, 0
- adds r1, 0x54
- strh r0, [r1]
- ldrh r0, [r2]
- lsls r0, 3
- adds r0, r5
- ldrb r0, [r0, 0x1]
- adds r0, r3, r0
- adds r0, 0x2
- adds r2, 0x56
- strh r0, [r2]
-_08123BEC:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81238AC
-
- thumb_func_start sub_8123C00
-sub_8123C00: @ 8123C00
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r7, 0
- movs r0, 0
- mov r8, r0
- mov r4, sp
- adds r4, 0x1
- mov r5, sp
- adds r5, 0x2
- add r6, sp, 0x4
- mov r0, sp
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl GetSSTidalLocation
- lsls r0, 24
- lsrs r0, 24
- mov r10, r5
- cmp r0, 0x4
- bhi _08123C94
- lsls r0, 2
- ldr r1, =_08123C40
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08123C40:
- .4byte _08123C94
- .4byte _08123C54
- .4byte _08123C64
- .4byte _08123C74
- .4byte _08123C84
-_08123C54:
- ldr r2, =gUnknown_0203A144
- ldr r1, [r2]
- movs r0, 0x8
- strh r0, [r1]
- b _08123D10
- .pool
-_08123C64:
- ldr r2, =gUnknown_0203A144
- ldr r1, [r2]
- movs r0, 0xC
- strh r0, [r1]
- b _08123D10
- .pool
-_08123C74:
- ldr r2, =gUnknown_0203A144
- ldr r1, [r2]
- movs r0, 0x27
- strh r0, [r1]
- b _08123D10
- .pool
-_08123C84:
- ldr r2, =gUnknown_0203A144
- ldr r1, [r2]
- movs r0, 0x2E
- strh r0, [r1]
- b _08123D10
- .pool
-_08123C94:
- mov r0, sp
- ldrb r0, [r0]
- ldrb r1, [r4]
- bl get_mapheader_by_bank_and_number
- ldr r1, =gUnknown_0203A144
- mov r9, r1
- ldr r2, [r1]
- ldrb r1, [r0, 0x14]
- strh r1, [r2]
- ldr r6, [r0]
- ldr r1, =gRegionMapEntries
- ldrh r0, [r2]
- lsls r0, 3
- adds r5, r0, r1
- ldrb r4, [r5, 0x2]
- ldr r0, [r6]
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _08123CC6
- movs r1, 0x1
-_08123CC6:
- mov r2, r10
- movs r3, 0
- ldrsh r0, [r2, r3]
- bl __divsi3
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r8, r4
- bcc _08123CE2
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
-_08123CE2:
- ldrb r4, [r5, 0x3]
- ldr r0, [r6, 0x4]
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _08123CF6
- movs r1, 0x1
-_08123CF6:
- mov r2, sp
- movs r3, 0x4
- ldrsh r0, [r2, r3]
- bl __divsi3
- lsls r0, 16
- lsrs r7, r0, 16
- mov r2, r9
- cmp r7, r4
- bcc _08123D10
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
-_08123D10:
- ldr r0, [r2]
- adds r0, 0x7F
- movs r1, 0
- strb r1, [r0]
- ldr r2, [r2]
- ldr r3, =gRegionMapEntries
- ldrh r0, [r2]
- lsls r0, 3
- adds r0, r3
- ldrb r0, [r0]
- add r0, r8
- adds r0, 0x1
- adds r1, r2, 0
- adds r1, 0x54
- strh r0, [r1]
- ldrh r0, [r2]
- lsls r0, 3
- adds r0, r3
- ldrb r0, [r0, 0x1]
- adds r0, r7, r0
- adds r0, 0x2
- adds r2, 0x56
- strh r0, [r2]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8123C00
-
- thumb_func_start get_flagnr_blue_points
-get_flagnr_blue_points: @ 8123D58
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, 0x9
- beq _08123E18
- cmp r0, 0x9
- bgt _08123D9A
- cmp r0, 0x4
- beq _08123DF0
- cmp r0, 0x4
- bgt _08123D88
- cmp r0, 0x1
- beq _08123DD8
- cmp r0, 0x1
- bgt _08123D7E
- cmp r0, 0
- beq _08123DD0
- b _08123E94
-_08123D7E:
- cmp r0, 0x2
- beq _08123DDE
- cmp r0, 0x3
- beq _08123DE8
- b _08123E94
-_08123D88:
- cmp r0, 0x6
- beq _08123E00
- cmp r0, 0x6
- blt _08123DF8
- cmp r0, 0x7
- beq _08123E08
- cmp r0, 0x8
- beq _08123E10
- b _08123E94
-_08123D9A:
- cmp r0, 0xE
- beq _08123E40
- cmp r0, 0xE
- bgt _08123DB4
- cmp r0, 0xB
- beq _08123E28
- cmp r0, 0xB
- blt _08123E20
- cmp r0, 0xC
- beq _08123E30
- cmp r0, 0xD
- beq _08123E38
- b _08123E94
-_08123DB4:
- cmp r0, 0x3A
- beq _08123E60
- cmp r0, 0x3A
- bgt _08123DC2
- cmp r0, 0xF
- beq _08123E48
- b _08123E94
-_08123DC2:
- cmp r1, 0x49
- beq _08123E7C
- cmp r1, 0xD5
- beq _08123DCC
- b _08123E94
-_08123DCC:
- movs r0, 0
- b _08123E96
-_08123DD0:
- ldr r0, =0x0000086f
- b _08123E4A
- .pool
-_08123DD8:
- movs r0, 0x87
- lsls r0, 4
- b _08123E4A
-_08123DDE:
- ldr r0, =0x00000871
- b _08123E4A
- .pool
-_08123DE8:
- ldr r0, =0x00000872
- b _08123E4A
- .pool
-_08123DF0:
- ldr r0, =0x00000873
- b _08123E4A
- .pool
-_08123DF8:
- ldr r0, =0x00000874
- b _08123E4A
- .pool
-_08123E00:
- ldr r0, =0x00000875
- b _08123E4A
- .pool
-_08123E08:
- ldr r0, =0x00000876
- b _08123E4A
- .pool
-_08123E10:
- ldr r0, =0x00000877
- b _08123E4A
- .pool
-_08123E18:
- ldr r0, =0x00000878
- b _08123E4A
- .pool
-_08123E20:
- ldr r0, =0x00000879
- b _08123E4A
- .pool
-_08123E28:
- ldr r0, =0x0000087a
- b _08123E4A
- .pool
-_08123E30:
- ldr r0, =0x0000087b
- b _08123E4A
- .pool
-_08123E38:
- ldr r0, =0x0000087c
- b _08123E4A
- .pool
-_08123E40:
- ldr r0, =0x0000087d
- b _08123E4A
- .pool
-_08123E48:
- ldr r0, =0x0000087e
-_08123E4A:
- bl FlagGet
- lsls r0, 24
- movs r1, 0x3
- cmp r0, 0
- beq _08123E58
- movs r1, 0x2
-_08123E58:
- adds r0, r1, 0
- b _08123E96
- .pool
-_08123E60:
- ldr r0, =0x000008a8
- bl FlagGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- negs r0, r1
- orrs r0, r1
- asrs r0, 31
- movs r1, 0x4
- ands r0, r1
- b _08123E96
- .pool
-_08123E7C:
- ldr r0, =0x000008a9
- bl FlagGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- b _08123E96
- .pool
-_08123E94:
- movs r0, 0x1
-_08123E96:
- pop {r1}
- bx r1
- thumb_func_end get_flagnr_blue_points
-
- thumb_func_start sub_8123E9C
-sub_8123E9C: @ 8123E9C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- bl sub_812386C
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_8123E9C
-
- thumb_func_start sub_8123EB4
-sub_8123EB4: @ 8123EB4
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r1, =gUnknown_085A1B84
-_08123EBE:
- ldrh r0, [r1]
- cmp r0, r3
- bne _08123ED4
- bl sub_8123F04
- lsls r0, 16
- lsrs r0, 16
- b _08123F00
- .pool
-_08123ED4:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x2
- bls _08123EBE
- ldr r1, =gUnknown_085A1B24
- ldrh r0, [r1]
- cmp r0, 0xD5
- beq _08123EFE
- adds r2, r1, 0
-_08123EE6:
- ldrh r0, [r2]
- cmp r0, r3
- bne _08123EF4
- ldrh r0, [r1, 0x2]
- b _08123F00
- .pool
-_08123EF4:
- adds r1, 0x4
- adds r2, 0x4
- ldrh r0, [r1]
- cmp r0, 0xD5
- bne _08123EE6
-_08123EFE:
- adds r0, r3, 0
-_08123F00:
- pop {r1}
- bx r1
- thumb_func_end sub_8123EB4
-
- thumb_func_start sub_8123F04
-sub_8123F04: @ 8123F04
- push {lr}
- ldr r0, =0x00004037
- bl VarGet
- subs r0, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xF
- bls _08123F18
- movs r1, 0
-_08123F18:
- ldr r0, =gUnknown_085A1B8A
- lsls r1, 16
- asrs r1, 15
- adds r1, r0
- ldrh r0, [r1]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8123F04
-
- thumb_func_start sub_8123F30
-sub_8123F30: @ 8123F30
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, =0x00004037
- bl VarGet
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r2, =0xfff70000
- adds r0, r2
- lsrs r0, 16
- cmp r0, 0x7
- bls _08123F4C
- movs r1, 0x9
-_08123F4C:
- subs r1, 0x9
- lsls r1, 16
- ldr r0, =gUnknown_085A1BAC
- lsrs r1, 14
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r4]
- ldrh r0, [r1, 0x2]
- adds r0, 0x2
- strh r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8123F30
-
- thumb_func_start sub_8123F74
-sub_8123F74: @ 8123F74
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r3, =gUnknown_085A1BCC
-_08123F7E:
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r2
- bne _08123F90
- movs r0, 0x1
- b _08123F98
- .pool
-_08123F90:
- adds r1, 0x1
- cmp r1, 0
- beq _08123F7E
- movs r0, 0
-_08123F98:
- pop {r1}
- bx r1
- thumb_func_end sub_8123F74
-
- thumb_func_start sub_8123F9C
-sub_8123F9C: @ 8123F9C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl sub_8123EB4
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_8123F9C
-
- thumb_func_start sub_8123FB0
-sub_8123FB0: @ 8123FB0
- push {r4-r6,lr}
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- ldrh r0, [r1]
- cmp r0, 0xD5
- bne _08123FC8
- movs r0, 0
- strb r0, [r1, 0x3]
- b _0812402E
- .pool
-_08123FC8:
- adds r0, r1, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0
- bne _08123FD8
- adds r0, r1, 0
- adds r0, 0x54
- b _08123FDC
-_08123FD8:
- adds r0, r1, 0
- adds r0, 0x64
-_08123FDC:
- ldrh r4, [r0]
- adds r0, 0x2
- ldrh r5, [r0]
- movs r6, 0
- b _08124008
-_08123FE6:
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812386C
- ldr r1, =gUnknown_0203A144
- ldr r1, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1]
- cmp r0, r1
- bne _08124008
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08124008:
- cmp r4, 0x1
- bhi _08123FE6
- adds r0, r5, 0
- bl sub_8124038
- lsls r0, 24
- cmp r0, 0
- beq _08124028
- subs r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- movs r4, 0x1D
- b _08124008
- .pool
-_08124028:
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- strb r6, [r0, 0x3]
-_0812402E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8123FB0
-
- thumb_func_start sub_8124038
-sub_8124038: @ 8124038
- push {r4,r5,lr}
- lsls r0, 16
- ldr r1, =0xffff0000
- adds r0, r1
- lsrs r5, r0, 16
- ldr r0, =0x0000ffff
- cmp r5, r0
- bne _08124058
- b _0812407A
- .pool
-_08124054:
- movs r0, 0x1
- b _0812407C
-_08124058:
- movs r4, 0x1
-_0812405A:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812386C
- ldr r1, =gUnknown_0203A144
- ldr r1, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1]
- cmp r0, r1
- beq _08124054
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1C
- bls _0812405A
-_0812407A:
- movs r0, 0
-_0812407C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8124038
-
- thumb_func_start sub_8124088
-sub_8124088: @ 8124088
- push {r4,lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- adds r3, r1, 0
- adds r3, 0x7A
- movs r0, 0
- ldrsb r0, [r3, r0]
- cmp r0, 0
- beq _081240C6
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- ldrh r4, [r2, 0x20]
- adds r0, r4
- strh r0, [r2, 0x20]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- ldrh r1, [r2, 0x22]
- adds r0, r1
- strh r0, [r2, 0x22]
- ldrb r0, [r3]
- subs r0, 0x1
- strb r0, [r3]
-_081240C6:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124088
-
- thumb_func_start TaskDummy8
-TaskDummy8: @ 81240D0
- bx lr
- thumb_func_end TaskDummy8
-
- thumb_func_start sub_81240D4
-sub_81240D4: @ 81240D4
- push {r4-r7,lr}
- sub sp, 0x28
- lsls r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r1, =gUnknown_085A1C00
- ldr r2, [r1, 0x4]
- ldr r1, [r1]
- str r1, [sp, 0x20]
- str r2, [sp, 0x24]
- mov r2, sp
- ldr r1, =gUnknown_085A1C08
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- lsrs r3, r0, 16
- add r2, sp, 0x18
- ldrh r1, [r2, 0x4]
- orrs r1, r0
- str r1, [r2, 0x4]
- mov r0, sp
- strh r3, [r0]
- ldr r0, =gUnknown_0203A144
- ldr r4, [r0]
- adds r0, r4, 0
- adds r0, 0x58
- strh r3, [r0]
- ldr r5, =0xffff0000
- add r1, sp, 0x20
- ldr r0, [r1, 0x4]
- ands r0, r5
- orrs r0, r6
- str r0, [r1, 0x4]
- mov r0, sp
- strh r6, [r0, 0x2]
- adds r3, r4, 0
- adds r0, r3, 0
- adds r0, 0x5A
- strh r6, [r0]
- adds r0, 0x1E
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0
- bne _08124158
- movs r1, 0xC2
- lsls r1, 1
- adds r0, r3, r1
- str r0, [sp, 0x18]
- ldr r0, [r2, 0x4]
- ands r0, r5
- subs r1, 0x84
- orrs r0, r1
- str r0, [r2, 0x4]
- ldr r0, =sub_8124088
- b _0812416E
- .pool
-_08124158:
- movs r3, 0xA1
- lsls r3, 2
- adds r0, r4, r3
- str r0, [sp, 0x18]
- ldr r0, [r2, 0x4]
- ands r0, r5
- movs r1, 0xC0
- lsls r1, 3
- orrs r0, r1
- str r0, [r2, 0x4]
- ldr r0, =TaskDummy8
-_0812416E:
- str r0, [sp, 0x14]
- adds r0, r2, 0
- bl LoadSpriteSheet
- adds r0, r7, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0x38
- movs r2, 0x48
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08124228
- ldr r4, =gUnknown_0203A144
- ldr r2, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r3, r0, r1
- str r3, [r2, 0x1C]
- adds r2, 0x78
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _081241DC
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r3, 0x3]
- ldr r2, [r4]
- ldr r1, [r2, 0x1C]
- ldrh r0, [r1, 0x20]
- subs r0, 0x8
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x1C]
- ldrh r0, [r1, 0x22]
- subs r0, 0x8
- strh r0, [r1, 0x22]
- ldr r0, [r2, 0x1C]
- movs r1, 0x1
- bl StartSpriteAnim
- b _08124204
- .pool
-_081241DC:
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r3, 0x3]
- ldr r1, [r4]
- ldr r2, [r1, 0x1C]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r2, 0x20]
- ldr r2, [r1, 0x1C]
- adds r1, 0x56
- ldrh r0, [r1]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r2, 0x22]
-_08124204:
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldr r1, [r0, 0x1C]
- movs r0, 0x2
- strh r0, [r1, 0x30]
- adds r0, r6, 0
- bl IndexOfSpritePaletteTag
- ldr r1, [r4]
- ldr r2, [r1, 0x1C]
- lsls r0, 24
- lsrs r0, 20
- ldr r4, =0x00000101
- adds r0, r4
- strh r0, [r2, 0x32]
- ldr r1, [r1, 0x1C]
- movs r0, 0x1
- strh r0, [r1, 0x34]
-_08124228:
- add sp, 0x28
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81240D4
-
- thumb_func_start sub_8124238
-sub_8124238: @ 8124238
- push {r4,lr}
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldr r0, [r0, 0x1C]
- cmp r0, 0
- beq _0812425C
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x58
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x5A
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_0812425C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124238
-
- thumb_func_start sub_8124268
-sub_8124268: @ 8124268
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldr r1, [r0, 0x1C]
- movs r0, 0x1
- strh r0, [r1, 0x34]
- bx lr
- .pool
- thumb_func_end sub_8124268
-
- thumb_func_start sub_8124278
-sub_8124278: @ 8124278
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldr r1, [r0, 0x1C]
- movs r0, 0
- strh r0, [r1, 0x34]
- bx lr
- .pool
- thumb_func_end sub_8124278
-
- thumb_func_start sub_8124288
-sub_8124288: @ 8124288
- push {r4-r6,lr}
- sub sp, 0x28
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r2, =gUnknown_085A084C
- str r2, [sp, 0x18]
- movs r2, 0x80
- add r6, sp, 0x18
- lsrs r3, r0, 16
- orrs r0, r2
- str r0, [r6, 0x4]
- ldr r0, =gUnknown_085A082C
- str r0, [sp, 0x20]
- ldr r2, =0xffff0000
- add r4, sp, 0x20
- ldr r0, [r4, 0x4]
- ands r0, r2
- orrs r0, r1
- str r0, [r4, 0x4]
- mov r0, sp
- movs r5, 0
- strh r3, [r0]
- strh r1, [r0, 0x2]
- ldr r0, =gUnknown_085A1C20
- str r0, [sp, 0x4]
- ldr r0, =gUnknown_085A1C30
- str r0, [sp, 0x8]
- str r5, [sp, 0xC]
- ldr r0, =gDummySpriteAffineAnimTable
- str r0, [sp, 0x10]
- ldr r0, =SpriteCallbackDummy
- str r0, [sp, 0x14]
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x14]
- bl sub_8124668
- cmp r0, 0
- beq _08124304
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- str r5, [r0, 0x20]
- b _081243A4
- .pool
-_08124304:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x1
- bne _08124316
- ldr r0, =gUnknown_085A08EC
- str r0, [sp, 0x18]
- ldr r0, =gUnknown_085A08CC
- str r0, [sp, 0x20]
-_08124316:
- adds r0, r6, 0
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0203A144
- ldr r2, [r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- str r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0
- bne _08124384
- adds r0, r2, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x22]
- ldr r1, [r2, 0x20]
- ldr r0, =sub_81244EC
- b _081243A2
- .pool
-_08124384:
- adds r0, r2, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x30
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x42
- strh r0, [r1, 0x22]
- ldr r1, [r2, 0x20]
- ldr r0, =sub_812445C
-_081243A2:
- str r0, [r1, 0x1C]
-_081243A4:
- add sp, 0x28
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124288
-
- thumb_func_start sub_81243B0
-sub_81243B0: @ 81243B0
- push {lr}
- ldr r3, =gUnknown_0203A144
- ldr r0, [r3]
- ldr r2, [r0, 0x20]
- cmp r2, 0
- beq _081243CE
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, [r3]
- ldr r1, [r0, 0x20]
- ldr r0, =SpriteCallbackDummy
- str r0, [r1, 0x1C]
-_081243CE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81243B0
-
- thumb_func_start sub_81243DC
-sub_81243DC: @ 81243DC
- push {lr}
- ldr r0, =gUnknown_0203A144
- ldr r3, [r0]
- ldr r1, [r3, 0x20]
- cmp r1, 0
- beq _08124452
- adds r0, r3, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0812441C
- adds r0, r3, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x30
- strh r0, [r1, 0x20]
- ldr r1, [r3, 0x20]
- adds r0, r3, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x42
- strh r0, [r1, 0x22]
- ldr r1, [r3, 0x20]
- ldr r0, =sub_812445C
- b _08124444
- .pool
-_0812441C:
- adds r0, r3, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- movs r2, 0
- strh r0, [r1, 0x20]
- ldr r1, [r3, 0x20]
- adds r0, r3, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x22]
- ldr r0, [r3, 0x20]
- strh r2, [r0, 0x24]
- ldr r0, [r3, 0x20]
- strh r2, [r0, 0x26]
- ldr r1, [r3, 0x20]
- ldr r0, =sub_81244EC
-_08124444:
- str r0, [r1, 0x1C]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
-_08124452:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81243DC
-
- thumb_func_start sub_812445C
-sub_812445C: @ 812445C
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x5C
- movs r4, 0
- ldrsh r2, [r0, r4]
- lsls r2, 1
- negs r2, r2
- strh r2, [r3, 0x24]
- adds r1, 0x5E
- movs r4, 0
- ldrsh r0, [r1, r4]
- lsls r0, 1
- negs r0, r0
- strh r0, [r3, 0x26]
- ldrh r1, [r3, 0x22]
- adds r1, r0
- adds r0, r3, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- strh r0, [r3, 0x2E]
- ldrh r1, [r3, 0x20]
- adds r1, r2
- adds r2, r3, 0
- adds r2, 0x28
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- adds r2, r1
- strh r2, [r3, 0x30]
- adds r0, 0x8
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB0
- bhi _081244BC
- lsls r0, r2, 16
- asrs r2, r0, 16
- movs r0, 0x8
- negs r0, r0
- cmp r2, r0
- blt _081244BC
- cmp r2, 0xF8
- ble _081244C4
-_081244BC:
- movs r0, 0
- b _081244C6
- .pool
-_081244C4:
- movs r0, 0x1
-_081244C6:
- strh r0, [r3, 0x32]
- movs r1, 0x32
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- bne _081244D8
- adds r0, r3, 0
- bl sub_81244F8
- b _081244E4
-_081244D8:
- adds r0, r3, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_081244E4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812445C
-
- thumb_func_start sub_81244EC
-sub_81244EC: @ 81244EC
- push {lr}
- bl sub_81244F8
- pop {r0}
- bx r0
- thumb_func_end sub_81244EC
-
- thumb_func_start sub_81244F8
-sub_81244F8: @ 81244F8
- push {lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- adds r0, 0x7E
- ldrb r0, [r0]
- cmp r0, 0
- beq _0812453C
- ldrh r0, [r2, 0x3C]
- adds r0, 0x1
- strh r0, [r2, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _08124548
- movs r0, 0
- strh r0, [r2, 0x3C]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _08124548
- .pool
-_0812453C:
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_08124548:
- pop {r0}
- bx r0
- thumb_func_end sub_81244F8
-
- thumb_func_start sub_812454C
-sub_812454C: @ 812454C
- push {lr}
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x7F
- ldrb r0, [r0]
- cmp r0, 0
- beq _08124562
- adds r1, 0x7E
- movs r0, 0x1
- strb r0, [r1]
-_08124562:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812454C
-
- thumb_func_start GetMapName
-@ u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength)
-GetMapName: @ 812456C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r4, r2, 16
- cmp r1, 0x56
- bne _08124584
- bl GetSecretBaseMapName
- adds r1, r0, 0
- b _081245B2
-_08124584:
- cmp r1, 0xD4
- bhi _081245A0
- ldr r0, =gRegionMapEntries
- lsls r1, 3
- adds r0, 0x4
- adds r1, r0
- ldr r1, [r1]
- adds r0, r5, 0
- bl StringCopy
- adds r1, r0, 0
- b _081245B2
- .pool
-_081245A0:
- cmp r4, 0
- bne _081245A6
- movs r4, 0x12
-_081245A6:
- adds r0, r5, 0
- movs r1, 0
- adds r2, r4, 0
- bl StringFill
- b _081245D6
-_081245B2:
- cmp r4, 0
- beq _081245D4
- subs r0, r1, r5
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bcs _081245D0
- movs r2, 0
-_081245C2:
- strb r2, [r1]
- adds r1, 0x1
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bcc _081245C2
-_081245D0:
- movs r0, 0xFF
- strb r0, [r1]
-_081245D4:
- adds r0, r1, 0
-_081245D6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetMapName
-
- thumb_func_start sub_81245DC
-sub_81245DC: @ 81245DC
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x56
- beq _081245F8
- cmp r1, 0x57
- bne _08124604
- ldr r1, =gText_Ferry
- bl StringCopy
- b _0812460A
- .pool
-_081245F8:
- ldr r1, =gText_SecretBase
- bl StringCopy
- b _0812460A
- .pool
-_08124604:
- movs r2, 0
- bl GetMapName
-_0812460A:
- pop {r1}
- bx r1
- thumb_func_end sub_81245DC
-
- thumb_func_start sub_8124610
-sub_8124610: @ 8124610
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x42
- beq _08124620
- bl sub_81245DC
- b _08124626
-_08124620:
- ldr r1, =gText_Hideout
- bl StringCopy
-_08124626:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8124610
-
- thumb_func_start sub_8124630
-sub_8124630: @ 8124630
- push {r4,r5,lr}
- ldr r5, [sp, 0xC]
- lsls r0, 16
- ldr r4, =gRegionMapEntries
- lsrs r0, 13
- adds r0, r4
- ldrb r4, [r0]
- strh r4, [r1]
- ldrb r1, [r0, 0x1]
- strh r1, [r2]
- ldrb r1, [r0, 0x2]
- strh r1, [r3]
- ldrb r0, [r0, 0x3]
- strh r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124630
-
- thumb_func_start sub_8124658
-sub_8124658: @ 8124658
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- adds r0, 0x78
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_8124658
-
- thumb_func_start sub_8124668
-sub_8124668: @ 8124668
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r3, =gUnknown_085A1C34
-_08124672:
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r2, r0
- bne _08124684
- movs r0, 0x1
- b _0812468C
- .pool
-_08124684:
- adds r1, 0x1
- cmp r1, 0x2
- bls _08124672
- movs r0, 0
-_0812468C:
- pop {r1}
- bx r1
- thumb_func_end sub_8124668
-
- thumb_func_start sub_8124690
-sub_8124690: @ 8124690
- push {r4,lr}
- sub sp, 0xC
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xA
- bls _081246A4
- b _081248AA
-_081246A4:
- lsls r0, 2
- ldr r1, =_081246B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081246B8:
- .4byte _081246E4
- .4byte _08124766
- .4byte _0812477C
- .4byte _0812478C
- .4byte _0812479C
- .4byte _081247E4
- .4byte _081247F8
- .4byte _0812480C
- .4byte _0812484C
- .4byte _08124852
- .4byte _0812486C
-_081246E4:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- ldr r4, =gUnknown_0203A148
- ldr r0, =0x00000a74
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- bne _08124754
- ldr r0, =sub_8086194
- bl SetMainCallback2
- b _081248AA
- .pool
-_08124754:
- bl ResetPaletteFade
- bl ResetSpriteData
- bl FreeSpriteTileRanges
- bl FreeAllSpritePalettes
- b _0812489C
-_08124766:
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085A1EE4
- movs r0, 0x1
- movs r2, 0x3
- bl InitBgsFromTemplates
- b _0812489C
- .pool
-_0812477C:
- ldr r0, =gUnknown_085A1EF0
- bl InitWindows
- bl DeactivateAllTextPrinters
- b _0812489C
- .pool
-_0812478C:
- movs r0, 0
- movs r1, 0x65
- movs r2, 0xD0
- bl sub_809882C
- bl clear_scheduled_bg_copies_to_vram
- b _0812489C
-_0812479C:
- ldr r4, =gUnknown_0203A148
- ldr r0, [r4]
- adds r0, 0x8
- movs r1, 0
- bl sub_8122CDC
- movs r0, 0
- movs r1, 0
- bl sub_81240D4
- movs r0, 0x1
- movs r1, 0x1
- bl sub_8124288
- ldr r0, [r4]
- ldrh r1, [r0, 0x8]
- strh r1, [r0, 0x6]
- ldr r1, =0x00000a4c
- adds r0, r1
- movs r1, 0
- movs r2, 0x10
- bl StringFill
- ldr r1, =gUnknown_03001180
- movs r0, 0x1
- str r0, [r1]
- bl sub_8124904
- b _0812489C
- .pool
-_081247E4:
- ldr r0, =gUnknown_085A1C58
- ldr r1, =0x0600c000
- bl LZ77UnCompVram
- b _0812489C
- .pool
-_081247F8:
- ldr r0, =gUnknown_085A1C90
- ldr r1, =0x0600f000
- bl LZ77UnCompVram
- b _0812489C
- .pool
-_0812480C:
- ldr r0, =gUnknown_085A1C38
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0x2
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r2, =gText_FlyToWhere
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- b _0812489C
- .pool
-_0812484C:
- bl sub_8124A70
- b _0812489C
-_08124852:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r0, =sub_81248C0
- bl SetVBlankCallback
- b _0812489C
- .pool
-_0812486C:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- ldr r0, =sub_8124D14
- bl sub_81248F4
- ldr r0, =sub_81248D4
- bl SetMainCallback2
-_0812489C:
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_081248AA:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124690
-
- thumb_func_start sub_81248C0
-sub_81248C0: @ 81248C0
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81248C0
-
- thumb_func_start sub_81248D4
-sub_81248D4: @ 81248D4
- push {lr}
- ldr r0, =gUnknown_0203A148
- ldr r0, [r0]
- ldr r0, [r0]
- bl _call_via_r0
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81248D4
-
- thumb_func_start sub_81248F4
-sub_81248F4: @ 81248F4
- ldr r1, =gUnknown_0203A148
- ldr r1, [r1]
- str r0, [r1]
- movs r0, 0
- strh r0, [r1, 0x4]
- bx lr
- .pool
- thumb_func_end sub_81248F4
-
- thumb_func_start sub_8124904
-sub_8124904: @ 8124904
- push {r4-r7,lr}
- sub sp, 0xC
- ldr r2, =gUnknown_0203A148
- ldr r0, [r2]
- ldrb r0, [r0, 0xA]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _0812491A
- b _08124A2C
-_0812491A:
- movs r7, 0
- movs r3, 0
- ldr r0, =gUnknown_085A1EDC
- mov r12, r0
- adds r5, r2, 0
- movs r6, 0
-_08124926:
- ldr r0, [r5]
- lsls r1, r3, 3
- mov r2, r12
- adds r4, r1, r2
- ldrh r0, [r0, 0x8]
- ldrh r1, [r4, 0x4]
- cmp r0, r1
- bne _081249C4
- ldrh r0, [r4, 0x6]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _081249CE
- ldr r0, [r5]
- ldrb r0, [r0, 0xB]
- ldr r1, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl StringLength
- movs r7, 0x1
- movs r0, 0
- movs r1, 0
- bl sub_8198070
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x65
- movs r3, 0xD
- bl SetWindowBorderStyle
- ldr r2, [r5]
- adds r2, 0xC
- str r7, [sp]
- str r6, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- ldr r0, [r5]
- ldrb r0, [r0, 0xB]
- ldr r1, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r4, [r0]
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x60
- bl GetStringRightAlignXOffset
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x11
- str r0, [sp]
- str r6, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- adds r2, r4, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, =gUnknown_03001180
- str r7, [r0]
- b _081249CE
- .pool
-_081249C4:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- beq _08124926
-_081249CE:
- cmp r7, 0
- bne _08124A62
- ldr r0, =gUnknown_03001180
- ldr r0, [r0]
- cmp r0, 0x1
- bne _081249F4
- movs r0, 0x1
- movs r1, 0
- bl sub_8198070
- movs r0, 0
- movs r1, 0
- movs r2, 0x65
- movs r3, 0xD
- bl SetWindowBorderStyle
- b _081249FC
- .pool
-_081249F4:
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
-_081249FC:
- ldr r0, =gUnknown_0203A148
- ldr r2, [r0]
- adds r2, 0xC
- movs r0, 0x1
- str r0, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, =gUnknown_03001180
- str r4, [r0]
- b _08124A62
- .pool
-_08124A2C:
- ldr r4, =gUnknown_03001180
- ldr r0, [r4]
- cmp r0, 0x1
- bne _08124A48
- movs r0, 0x1
- movs r1, 0
- bl sub_8198070
- movs r0, 0
- movs r1, 0
- movs r2, 0x65
- movs r3, 0xD
- bl SetWindowBorderStyle
-_08124A48:
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0
- str r0, [r4]
-_08124A62:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124904
-
- thumb_func_start sub_8124A70
-sub_8124A70: @ 8124A70
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_085A1D68
- ldr r5, =gUnknown_0203A148
- ldr r1, [r5]
- ldr r4, =0x0000088c
- adds r1, r4
- bl LZ77UnCompWram
- ldr r0, [r5]
- adds r0, r4
- str r0, [sp]
- ldr r1, =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0xE0
- lsls r1, 1
- orrs r0, r1
- ldr r1, =0x0000ffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 10
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- ldr r0, =gUnknown_085A1F10
- bl LoadSpritePalette
- bl sub_8124AD4
- bl sub_8124BE4
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124A70
-
- thumb_func_start sub_8124AD4
-sub_8124AD4: @ 8124AD4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r0, =0x0000086f
- str r0, [sp, 0xC]
- movs r1, 0
- mov r9, r1
- mov r2, sp
- adds r2, 0x6
- str r2, [sp, 0x14]
- mov r3, sp
- adds r3, 0xA
- str r3, [sp, 0x18]
- mov r0, sp
- adds r0, 0x8
- str r0, [sp, 0x10]
- add r1, sp, 0x4
- mov r10, r1
-_08124AFE:
- ldr r2, [sp, 0x18]
- str r2, [sp]
- mov r0, r9
- add r1, sp, 0x4
- mov r2, sp
- adds r2, 0x6
- ldr r3, [sp, 0x10]
- bl sub_8124630
- mov r3, r10
- ldrh r0, [r3]
- adds r0, 0x1
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r3]
- mov r1, sp
- ldrh r0, [r1, 0x6]
- adds r0, 0x2
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x6]
- ldr r2, [sp, 0x10]
- ldrh r0, [r2]
- cmp r0, 0x2
- bne _08124B38
- movs r7, 0x1
- b _08124B44
- .pool
-_08124B38:
- ldr r3, [sp, 0x18]
- ldrh r0, [r3]
- movs r7, 0
- cmp r0, 0x2
- bne _08124B44
- movs r7, 0x2
-_08124B44:
- mov r0, r10
- movs r2, 0
- ldrsh r1, [r0, r2]
- ldr r3, [sp, 0x14]
- movs r0, 0
- ldrsh r2, [r3, r0]
- ldr r0, =gUnknown_085A1F7C
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x40
- beq _08124BB8
- ldr r1, =gSprites
- mov r8, r1
- lsls r4, r5, 4
- adds r0, r4, r5
- lsls r6, r0, 2
- adds r2, r6, r1
- lsls r3, r7, 6
- ldrb r1, [r2, 0x1]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x1]
- ldr r0, [sp, 0xC]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _08124B9C
- mov r0, r8
- adds r0, 0x1C
- adds r0, r6, r0
- ldr r1, =sub_8124CBC
- str r1, [r0]
- b _08124BA2
- .pool
-_08124B9C:
- adds r0, r7, 0x3
- lsls r0, 16
- lsrs r7, r0, 16
-_08124BA2:
- adds r4, r5
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- lsls r1, r7, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- mov r2, r9
- strh r2, [r4, 0x2E]
-_08124BB8:
- ldr r0, [sp, 0xC]
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0xC]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- cmp r0, 0xF
- bls _08124AFE
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124AD4
-
- thumb_func_start sub_8124BE4
-sub_8124BE4: @ 8124BE4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r0, 0
- mov r8, r0
- ldr r6, =gUnknown_085A1F18
- ldrh r0, [r6, 0x2]
- cmp r0, 0xD5
- beq _08124C9C
- mov r5, sp
- adds r5, 0x6
- add r7, sp, 0x4
- ldr r1, =gSprites
- mov r9, r1
- movs r0, 0x1C
- add r0, r9
- mov r10, r0
-_08124C0C:
- mov r1, r8
- lsls r4, r1, 2
- adds r0, r4, r6
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _08124C84
- adds r0, r6, 0x2
- adds r0, r4, r0
- ldrh r6, [r0]
- mov r0, sp
- adds r0, 0xA
- str r0, [sp]
- adds r0, r6, 0
- add r1, sp, 0x4
- adds r2, r5, 0
- add r3, sp, 0x8
- bl sub_8124630
- ldrh r0, [r7]
- adds r0, 0x1
- lsls r0, 3
- strh r0, [r7]
- ldrh r0, [r5]
- adds r0, 0x2
- lsls r0, 3
- strh r0, [r5]
- movs r0, 0
- ldrsh r1, [r7, r0]
- movs r0, 0
- ldrsh r2, [r5, r0]
- ldr r0, =gUnknown_085A1F7C
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08124C84
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- mov r1, r9
- adds r4, r2, r1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r4, 0x3]
- add r2, r10
- ldr r0, =sub_8124CBC
- str r0, [r2]
- adds r0, r4, 0
- movs r1, 0x6
- bl StartSpriteAnim
- strh r6, [r4, 0x2E]
-_08124C84:
- mov r0, r8
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r6, =gUnknown_085A1F18
- lsls r0, 2
- adds r1, r6, 0x2
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0xD5
- bne _08124C0C
-_08124C9C:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124BE4
-
- thumb_func_start sub_8124CBC
-sub_8124CBC: @ 8124CBC
- push {lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_0203A148
- ldr r0, [r0]
- ldrh r1, [r0, 0x8]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bne _08124D00
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _08124D0E
- movs r0, 0
- strh r0, [r2, 0x30]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _08124D0E
- .pool
-_08124D00:
- movs r0, 0x10
- strh r0, [r2, 0x30]
- adds r2, 0x3E
- ldrb r1, [r2]
- subs r0, 0x15
- ands r0, r1
- strb r0, [r2]
-_08124D0E:
- pop {r0}
- bx r0
- thumb_func_end sub_8124CBC
-
- thumb_func_start sub_8124D14
-sub_8124D14: @ 8124D14
- push {r4,lr}
- sub sp, 0x4
- ldr r4, =gUnknown_0203A148
- ldr r0, [r4]
- ldrh r1, [r0, 0x4]
- cmp r1, 0
- beq _08124D2C
- cmp r1, 0x1
- beq _08124D46
- b _08124D56
- .pool
-_08124D2C:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _08124D56
-_08124D46:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08124D56
- ldr r0, =sub_8124D64
- bl sub_81248F4
-_08124D56:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124D14
-
- thumb_func_start sub_8124D64
-sub_8124D64: @ 8124D64
- push {r4,lr}
- ldr r0, =gUnknown_0203A148
- ldr r0, [r0]
- ldrh r0, [r0, 0x4]
- cmp r0, 0
- bne _08124DF8
- bl sub_81230AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _08124DF8
- lsls r0, 2
- ldr r1, =_08124D90
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08124D90:
- .4byte _08124DF8
- .4byte _08124DF8
- .4byte _08124DF8
- .4byte _08124DA8
- .4byte _08124DAE
- .4byte _08124DE0
-_08124DA8:
- bl sub_8124904
- b _08124DF8
-_08124DAE:
- ldr r4, =gUnknown_0203A148
- ldr r0, [r4]
- ldrb r0, [r0, 0xA]
- cmp r0, 0x2
- beq _08124DBC
- cmp r0, 0x4
- bne _08124DF8
-_08124DBC:
- movs r0, 0x5
- bl m4aSongNumStart
- ldr r0, [r4]
- ldr r1, =0x00000a72
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, =sub_8124E0C
- bl sub_81248F4
- b _08124DF8
- .pool
-_08124DE0:
- movs r0, 0x5
- bl m4aSongNumStart
- ldr r0, =gUnknown_0203A148
- ldr r0, [r0]
- ldr r1, =0x00000a72
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, =sub_8124E0C
- bl sub_81248F4
-_08124DF8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124D64
-
- thumb_func_start sub_8124E0C
-sub_8124E0C: @ 8124E0C
- push {r4,lr}
- sub sp, 0x4
- ldr r4, =gUnknown_0203A148
- ldr r0, [r4]
- ldrh r1, [r0, 0x4]
- cmp r1, 0
- beq _08124E24
- cmp r1, 0x1
- beq _08124E3E
- b _08124F1A
- .pool
-_08124E24:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _08124F1A
-_08124E3E:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08124F1A
- bl sub_812305C
- ldr r1, [r4]
- ldr r2, =0x00000a72
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _08124F00
- ldrh r0, [r1, 0x8]
- cmp r0, 0xF
- beq _08124E98
- cmp r0, 0xF
- bgt _08124E6C
- cmp r0, 0
- beq _08124E84
- b _08124EBC
- .pool
-_08124E6C:
- cmp r0, 0x3A
- beq _08124E7C
- cmp r0, 0x49
- bne _08124EBC
- movs r0, 0x15
- bl sub_8084CCC
- b _08124EFA
-_08124E7C:
- movs r0, 0x16
- bl sub_8084CCC
- b _08124EFA
-_08124E84:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- movs r1, 0xD
- cmp r0, 0
- bne _08124EB0
- movs r1, 0xC
- b _08124EB0
- .pool
-_08124E98:
- ldr r0, =0x000008b4
- bl FlagGet
- lsls r0, 24
- movs r1, 0xB
- cmp r0, 0
- beq _08124EB0
- ldr r0, [r4]
- ldrb r0, [r0, 0xB]
- cmp r0, 0
- bne _08124EB0
- movs r1, 0x14
-_08124EB0:
- adds r0, r1, 0
- bl sub_8084CCC
- b _08124EFA
- .pool
-_08124EBC:
- ldr r3, =gUnknown_085A1E3C
- ldr r0, =gUnknown_0203A148
- ldr r0, [r0]
- ldrh r1, [r0, 0x8]
- lsls r0, r1, 1
- adds r2, r0, r1
- adds r0, r3, 0x2
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _08124EE0
- bl sub_8084CCC
- b _08124EFA
- .pool
-_08124EE0:
- adds r0, r2, r3
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r1, r3, 0x1
- adds r1, r2, r1
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- bl warp1_set_2
-_08124EFA:
- bl sub_80B69DC
- b _08124F06
-_08124F00:
- ldr r0, =sub_81B58A8
- bl SetMainCallback2
-_08124F06:
- ldr r4, =gUnknown_0203A148
- ldr r0, [r4]
- cmp r0, 0
- beq _08124F16
- bl Free
- movs r0, 0
- str r0, [r4]
-_08124F16:
- bl FreeAllWindowBuffers
-_08124F1A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124E0C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom4.s b/asm/rom4.s
index bf682fc51..bf354dbd0 100644
--- a/asm/rom4.s
+++ b/asm/rom4.s
@@ -841,7 +841,7 @@ sub_8084CCC: @ 8084CCC
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
- bl sub_8122CBC
+ bl GetHealLocationPointer
adds r4, r0, 0
cmp r4, 0
beq _08084CFA
@@ -885,7 +885,7 @@ Overworld_SetHealLocationWarp: @ 8084D1C
sub sp, 0x8
lsls r0, 24
lsrs r0, 24
- bl sub_8122CBC
+ bl GetHealLocationPointer
adds r5, r0, 0
cmp r5, 0
beq _08084D50
@@ -1187,7 +1187,7 @@ sub_8084F6C: @ 8084F6C
sub sp, 0x8
lsls r0, 24
lsrs r0, 24
- bl sub_8122CBC
+ bl GetHealLocationPointer
adds r5, r0, 0
cmp r5, 0
beq _08084FA0
diff --git a/data/field_region_map.s b/data/field_region_map.s
deleted file mode 100644
index f179ba8ce..000000000
--- a/data/field_region_map.s
+++ /dev/null
@@ -1,14 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_085E5068:: @ 85E5068 struct BgTemplate
- .4byte 0x000001f0, 0x00002dca
-
- .align 2
-gUnknown_085E5070:: @ 85E5070
- window_template 0x00, 0x11, 0x11, 0x0c, 0x02, 0x0f, 0x0001
- window_template 0x00, 0x16, 0x01, 0x07, 0x02, 0x0f, 0x0019
- window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000
diff --git a/data/heal_location.s b/data/heal_location.s
deleted file mode 100644
index 31aa1a351..000000000
--- a/data/heal_location.s
+++ /dev/null
@@ -1,11 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0859F534:: @ 859F534
- .incbin "baserom.gba", 0x59f534, 0x8
-
-gUnknown_0859F53C:: @ 859F53C
- .incbin "baserom.gba", 0x59f53c, 0xd0
diff --git a/data/menu_helpers.s b/data/menu_helpers.s
index b43af0bc4..8d0e12939 100644
--- a/data/menu_helpers.s
+++ b/data/menu_helpers.s
@@ -11,4 +11,4 @@ gUnknown_0859F51C:: @ 859F51C
.incbin "baserom.gba", 0x59f51c, 0x8
gUnknown_0859F524:: @ 859F524
- .incbin "baserom.gba", 0x59f524, 0x10
+ .incbin "baserom.gba", 0x59f524, 0x18
diff --git a/data/region_map.s b/data/region_map.s
deleted file mode 100644
index 78e6cec2f..000000000
--- a/data/region_map.s
+++ /dev/null
@@ -1,101 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0859F60C:: @ 859F60C
- .incbin "baserom.gba", 0x59f60c, 0x44
-
-gUnknown_0859F650:: @ 859F650
- .incbin "baserom.gba", 0x59f650, 0xec
-
-gUnknown_0859F73C:: @ 859F73C
- .incbin "baserom.gba", 0x59f73c, 0x40
-
-gUnknown_0859F77C:: @ 859F77C
- .incbin "baserom.gba", 0x59f77c, 0xd64
-
-gUnknown_085A04E0:: @ 85A04E0
- .incbin "baserom.gba", 0x5a04e0, 0x34c
-
-gUnknown_085A082C:: @ 85A082C
- .incbin "baserom.gba", 0x5a082c, 0x20
-
-gUnknown_085A084C:: @ 85A084C
- .incbin "baserom.gba", 0x5a084c, 0x80
-
-gUnknown_085A08CC:: @ 85A08CC
- .incbin "baserom.gba", 0x5a08cc, 0x20
-
-gUnknown_085A08EC:: @ 85A08EC
- .incbin "baserom.gba", 0x5a08ec, 0x80
-
-gUnknown_085A096C:: @ 85A096C
- .incbin "baserom.gba", 0x5a096c, 0x1a4
-
-@ 85A0B10
- .include "data/region_map_entries.inc"
-
-gUnknown_085A1B24:: @ 85A1B24
- .incbin "baserom.gba", 0x5a1b24, 0x60
-
-gUnknown_085A1B84:: @ 85A1B84
- .incbin "baserom.gba", 0x5a1b84, 0x6
-
-gUnknown_085A1B8A:: @ 85A1B8A
- .incbin "baserom.gba", 0x5a1b8a, 0x22
-
-gUnknown_085A1BAC:: @ 85A1BAC
- .incbin "baserom.gba", 0x5a1bac, 0x20
-
-gUnknown_085A1BCC:: @ 85A1BCC
- .incbin "baserom.gba", 0x5a1bcc, 0x34
-
-gUnknown_085A1C00:: @ 85A1C00
- .incbin "baserom.gba", 0x5a1c00, 0x8
-
-gUnknown_085A1C08:: @ 85A1C08
- .incbin "baserom.gba", 0x5a1c08, 0x18
-
-gUnknown_085A1C20:: @ 85A1C20
- .incbin "baserom.gba", 0x5a1c20, 0x10
-
-gUnknown_085A1C30:: @ 85A1C30
- .incbin "baserom.gba", 0x5a1c30, 0x4
-
-gUnknown_085A1C34:: @ 85A1C34
- .incbin "baserom.gba", 0x5a1c34, 0x4
-
-gUnknown_085A1C38:: @ 85A1C38
- .incbin "baserom.gba", 0x5a1c38, 0x20
-
-gUnknown_085A1C58:: @ 85A1C58
- .incbin "baserom.gba", 0x5a1c58, 0x38
-
-gUnknown_085A1C90:: @ 85A1C90
- .incbin "baserom.gba", 0x5a1c90, 0xd8
-
-gUnknown_085A1D68:: @ 85A1D68
- .incbin "baserom.gba", 0x5a1d68, 0xd4
-
-gUnknown_085A1E3C:: @ 85A1E3C
- .incbin "baserom.gba", 0x5a1e3c, 0xa0
-
-gUnknown_085A1EDC:: @ 85A1EDC
- .incbin "baserom.gba", 0x5a1edc, 0x8
-
-gUnknown_085A1EE4:: @ 85A1EE4
- .incbin "baserom.gba", 0x5a1ee4, 0xc
-
-gUnknown_085A1EF0:: @ 85A1EF0
- .incbin "baserom.gba", 0x5a1ef0, 0x20
-
-gUnknown_085A1F10:: @ 85A1F10
- .incbin "baserom.gba", 0x5a1f10, 0x8
-
-gUnknown_085A1F18:: @ 85A1F18
- .incbin "baserom.gba", 0x5a1f18, 0x64
-
-gUnknown_085A1F7C:: @ 85A1F7C
- .incbin "baserom.gba", 0x5a1f7c, 0x18
diff --git a/data/region_map_entries.inc b/data/region_map_entries.inc
deleted file mode 100644
index ced01648c..000000000
--- a/data/region_map_entries.inc
+++ /dev/null
@@ -1,809 +0,0 @@
-gMapName_LittlerootTown:: @ 85A0B10
- .string "LITTLEROOT TOWN$"
-
-gMapName_OldaleTown:: @ 85A0B20
- .string "OLDALE TOWN$"
-
-gMapName_DewfordTown:: @ 85A0B2C
- .string "DEWFORD TOWN$"
-
-gMapName_LavaridgeTown:: @ 85A0B39
- .string "LAVARIDGE TOWN$"
-
-gMapName_FallarborTown:: @ 85A0B48
- .string "FALLARBOR TOWN$"
-
-gMapName_VerdanturfTown:: @ 85A0B57
- .string "VERDANTURF TOWN$"
-
-gMapName_PacifidlogTown:: @ 85A0B67
- .string "PACIFIDLOG TOWN$"
-
-gMapName_PetalburgCity:: @ 85A0B77
- .string "PETALBURG CITY$"
-
-gMapName_SlateportCity:: @ 85A0B86
- .string "SLATEPORT CITY$"
-
-gMapName_MauvilleCity:: @ 85A0B95
- .string "MAUVILLE CITY$"
-
-gMapName_RustboroCity:: @ 85A0BA3
- .string "RUSTBORO CITY$"
-
-gMapName_FortreeCity:: @ 85A0BB1
- .string "FORTREE CITY$"
-
-gMapName_LilycoveCity:: @ 85A0BBE
- .string "LILYCOVE CITY$"
-
-gMapName_MossdeepCity:: @ 85A0BCC
- .string "MOSSDEEP CITY$"
-
-gMapName_SootopolisCity:: @ 85A0BDA
- .string "SOOTOPOLIS CITY$"
-
-gMapName_EverGrandeCity:: @ 85A0BEA
- .string "EVER GRANDE CITY$"
-
-gMapName_Route101:: @ 85A0BFB
- .string "ROUTE 101$"
-
-gMapName_Route102:: @ 85A0C05
- .string "ROUTE 102$"
-
-gMapName_Route103:: @ 85A0C0F
- .string "ROUTE 103$"
-
-gMapName_Route104:: @ 85A0C19
- .string "ROUTE 104$"
-
-gMapName_Route105:: @ 85A0C23
- .string "ROUTE 105$"
-
-gMapName_Route106:: @ 85A0C2D
- .string "ROUTE 106$"
-
-gMapName_Route107:: @ 85A0C37
- .string "ROUTE 107$"
-
-gMapName_Route108:: @ 85A0C41
- .string "ROUTE 108$"
-
-gMapName_Route109:: @ 85A0C4B
- .string "ROUTE 109$"
-
-gMapName_Route110:: @ 85A0C55
- .string "ROUTE 110$"
-
-gMapName_Route111:: @ 85A0C5F
- .string "ROUTE 111$"
-
-gMapName_Route112:: @ 85A0C69
- .string "ROUTE 112$"
-
-gMapName_Route113:: @ 85A0C73
- .string "ROUTE 113$"
-
-gMapName_Route114:: @ 85A0C7D
- .string "ROUTE 114$"
-
-gMapName_Route115:: @ 85A0C87
- .string "ROUTE 115$"
-
-gMapName_Route116:: @ 85A0C91
- .string "ROUTE 116$"
-
-gMapName_Route117:: @ 85A0C9B
- .string "ROUTE 117$"
-
-gMapName_Route118:: @ 85A0CA5
- .string "ROUTE 118$"
-
-gMapName_Route119:: @ 85A0CAF
- .string "ROUTE 119$"
-
-gMapName_Route120:: @ 85A0CB9
- .string "ROUTE 120$"
-
-gMapName_Route121:: @ 85A0CC3
- .string "ROUTE 121$"
-
-gMapName_Route122:: @ 85A0CCD
- .string "ROUTE 122$"
-
-gMapName_Route123:: @ 85A0CD7
- .string "ROUTE 123$"
-
-gMapName_Route124:: @ 85A0CE1
- .string "ROUTE 124$"
-
-gMapName_Route125:: @ 85A0CEB
- .string "ROUTE 125$"
-
-gMapName_Route126:: @ 85A0CF5
- .string "ROUTE 126$"
-
-gMapName_Route127:: @ 85A0CFF
- .string "ROUTE 127$"
-
-gMapName_Route128:: @ 85A0D09
- .string "ROUTE 128$"
-
-gMapName_Route129:: @ 85A0D13
- .string "ROUTE 129$"
-
-gMapName_Route130:: @ 85A0D1D
- .string "ROUTE 130$"
-
-gMapName_Route131:: @ 85A0D27
- .string "ROUTE 131$"
-
-gMapName_Route132:: @ 85A0D31
- .string "ROUTE 132$"
-
-gMapName_Route133:: @ 85A0D3B
- .string "ROUTE 133$"
-
-gMapName_Route134:: @ 85A0D45
- .string "ROUTE 134$"
-
-gMapName_Underwater:: @ 85A0D4F
- .string "UNDERWATER$"
-
-gMapName_GraniteCave:: @ 85A0D5A
- .string "GRANITE CAVE$"
-
-gMapName_MtChimney:: @ 85A0D67
- .string "MT. CHIMNEY$"
-
-gMapName_SafariZone:: @ 85A0D73
- .string "SAFARI ZONE$"
-
-gMapName_BattleFrontier:: @ 85A0D7F
- .string "BATTLE FRONTIER$"
-
-gMapName_PetalburgWoods:: @ 85A0D8F
- .string "PETALBURG WOODS$"
-
-gMapName_RusturfTunnel:: @ 85A0D9F
- .string "RUSTURF TUNNEL$"
-
-gMapName_AbandonedShip:: @ 85A0DAE
- .string "ABANDONED SHIP$"
-
-gMapName_NewMauville:: @ 85A0DBD
- .string "NEW MAUVILLE$"
-
-gMapName_MeteorFalls:: @ 85A0DCA
- .string "METEOR FALLS$"
-
-gMapName_MtPyre:: @ 85A0DD7
- .string "MT. PYRE$"
-
-@ This was the Aqua or Magma hideout in Ruby/Sapphire, but each team has a
-@ hideout in Emerald with their own new region map entries, and this name
-@ doesn't seem to be used anymore.
-gMapName_AquaHideoutOld:: @ 85A0DE0
- .string "{AQUA} HIDEOUT$"
-
-gMapName_ShoalCave:: @ 85A0DEB
- .string "SHOAL CAVE$"
-
-gMapName_SeafloorCavern:: @ 85A0DF6
- .string "SEAFLOOR CAVERN$"
-
-gMapName_VictoryRoad:: @ 85A0E06
- .string "VICTORY ROAD$"
-
-gMapName_MirageIsland:: @ 85A0E13
- .string "MIRAGE ISLAND$"
-
-gMapName_CaveOfOrigin:: @ 85A0E21
- .string "CAVE OF ORIGIN$"
-
-gMapName_SouthernIsland:: @ 85A0E30
- .string "SOUTHERN ISLAND$"
-
-gMapName_FieryPath:: @ 85A0E40
- .string "FIERY PATH$"
-
-gMapName_JaggedPass:: @ 85A0E4B
- .string "JAGGED PASS$"
-
-gMapName_SealedChamber:: @ 85A0E57
- .string "SEALED CHAMBER$"
-
-gMapName_ScorchedSlab:: @ 85A0E66
- .string "SCORCHED SLAB$"
-
-gMapName_IslandCave:: @ 85A0E74
- .string "ISLAND CAVE$"
-
-gMapName_DesertRuins:: @ 85A0E80
- .string "DESERT RUINS$"
-
-gMapName_AncientTomb:: @ 85A0E8D
- .string "ANCIENT TOMB$"
-
-gMapName_InsideOfTruck:: @ 85A0E9A
- .string "INSIDE OF TRUCK$"
-
-gMapName_SkyPillar:: @ 85A0EAA
- .string "SKY PILLAR$"
-
-gMapName_SecretBase:: @ 85A0EB5
- .string "SECRET BASE$"
-
-gMapName_None:: @ 85A0EC1
- .string "$"
-
-gMapName_PalletTown:: @ 85A0EC2
- .string "PALLET TOWN$"
-
-gMapName_ViridianCity:: @ 85A0ECE
- .string "VIRIDIAN CITY$"
-
-gMapName_PewterCity:: @ 85A0EDC
- .string "PEWTER CITY$"
-
-gMapName_CeruleanCity:: @ 85A0EE8
- .string "CERULEAN CITY$"
-
-gMapName_LavenderTown:: @ 85A0EF6
- .string "LAVENDER TOWN$"
-
-gMapName_VermilionCity:: @ 85A0F04
- .string "VERMILION CITY$"
-
-gMapName_CeladonCity:: @ 85A0F13
- .string "CELADON CITY$"
-
-gMapName_FuchsiaCity:: @ 85A0F20
- .string "FUCHSIA CITY$"
-
-gMapName_CinnabarIsland:: @ 85A0F2D
- .string "CINNABAR ISLAND$"
-
-gMapName_IndigoPlateau:: @ 85A0F3D
- .string "INDIGO PLATEAU$"
-
-gMapName_SaffronCity:: @ 85A0F4C
- .string "SAFFRON CITY$"
-
-gMapName_Route4:: @ 85A0F59
- .string "ROUTE 4$"
-
-gMapName_Route10:: @ 85A0F61
- .string "ROUTE 10$"
-
-gMapName_Route1:: @ 85A0F6A
- .string "ROUTE 1$"
-
-gMapName_Route2:: @ 85A0F72
- .string "ROUTE 2$"
-
-gMapName_Route3:: @ 85A0F7A
- .string "ROUTE 3$"
-
-gMapName_Route4_2:: @ 85A0F82
- .string "ROUTE 4$"
-
-gMapName_Route5:: @ 85A0F8A
- .string "ROUTE 5$"
-
-gMapName_Route6:: @ 85A0F92
- .string "ROUTE 6$"
-
-gMapName_Route7:: @ 85A0F9A
- .string "ROUTE 7$"
-
-gMapName_Route8:: @ 85A0FA2
- .string "ROUTE 8$"
-
-gMapName_Route9:: @ 85A0FAA
- .string "ROUTE 9$"
-
-gMapName_Route10_2:: @ 85A0FB2
- .string "ROUTE 10$"
-
-gMapName_Route11:: @ 85A0FBB
- .string "ROUTE 11$"
-
-gMapName_Route12:: @ 85A0FC4
- .string "ROUTE 12$"
-
-gMapName_Route13:: @ 85A0FCD
- .string "ROUTE 13$"
-
-gMapName_Route14:: @ 85A0FD6
- .string "ROUTE 14$"
-
-gMapName_Route15:: @ 85A0FDF
- .string "ROUTE 15$"
-
-gMapName_Route16:: @ 85A0FE8
- .string "ROUTE 16$"
-
-gMapName_Route17:: @ 85A0FF1
- .string "ROUTE 17$"
-
-gMapName_Route18:: @ 85A0FFA
- .string "ROUTE 18$"
-
-gMapName_Route19:: @ 85A1003
- .string "ROUTE 19$"
-
-gMapName_Route20:: @ 85A100C
- .string "ROUTE 20$"
-
-gMapName_Route21:: @ 85A1015
- .string "ROUTE 21$"
-
-gMapName_Route22:: @ 85A101E
- .string "ROUTE 22$"
-
-gMapName_Route23:: @ 85A1027
- .string "ROUTE 23$"
-
-gMapName_Route24:: @ 85A1030
- .string "ROUTE 24$"
-
-gMapName_Route25:: @ 85A1039
- .string "ROUTE 25$"
-
-gMapName_ViridianForest:: @ 85A1042
- .string "VIRIDIAN FOREST$"
-
-gMapName_MtMoon:: @ 85A1052
- .string "MT. MOON$"
-
-gMapName_SSAnne:: @ 85A105B
- .string "S.S. ANNE$"
-
-gMapName_UndergroundPath:: @ 85A1065
- .string "UNDERGROUND PATH$"
-
-gMapName_UndergroundPath2:: @ 85A1076
- .string "UNDERGROUND PATH$"
-
-gMapName_DiglettsCave:: @ 85A1087
- .string "DIGLETT’S CAVE$"
-
-gMapName_KantoVictoryRoad:: @ 85A1096
- .string "VICTORY ROAD$"
-
-gMapName_RocketHideout:: @ 85A10A3
- .string "ROCKET HIDEOUT$"
-
-gMapName_SilphCo:: @ 85A10B2
- .string "SILPH CO.$"
-
-gMapName_PokemonMansion:: @ 85A10BC
- .string "POKéMON MANSION$"
-
-gMapName_KantoSafariZone:: @ 85A10CC
- .string "SAFARI ZONE$"
-
-gMapName_PokemonLeague:: @ 85A10D8
- .string "POKéMON LEAGUE$"
-
-gMapName_RockTunnel:: @ 85A10E7
- .string "ROCK TUNNEL$"
-
-gMapName_SeafoamIslands:: @ 85A10F3
- .string "SEAFOAM ISLANDS$"
-
-gMapName_PokemonTower:: @ 85A1103
- .string "POKéMON TOWER$"
-
-gMapName_CeruleanCave:: @ 85A1111
- .string "CERULEAN CAVE$"
-
-gMapName_PowerPlant:: @ 85A111F
- .string "POWER PLANT$"
-
-gMapName_OneIsland:: @ 85A112B
- .string "ONE ISLAND$"
-
-gMapName_TwoIsland:: @ 85A1136
- .string "TWO ISLAND$"
-
-gMapName_ThreeIsland:: @ 85A1141
- .string "THREE ISLAND$"
-
-gMapName_FourIsland:: @ 85A114E
- .string "FOUR ISLAND$"
-
-gMapName_FiveIsland:: @ 85A115A
- .string "FIVE ISLAND$"
-
-gMapName_SevenIsland:: @ 85A1166
- .string "SEVEN ISLAND$"
-
-gMapName_SixIsland:: @ 85A1173
- .string "SIX ISLAND$"
-
-gMapName_KindleRoad:: @ 85A117E
- .string "KINDLE ROAD$"
-
-gMapName_TreasureBeach:: @ 85A118A
- .string "TREASURE BEACH$"
-
-gMapName_CapeBrink:: @ 85A1199
- .string "CAPE BRINK$"
-
-gMapName_BondBridge:: @ 85A11A4
- .string "BOND BRIDGE$"
-
-gMapName_ThreeIslePort:: @ 85A11B0
- .string "THREE ISLE PORT$"
-
-gMapName_SeviiIsle6:: @ 85A11C0
- .string "SEVII ISLE 6$"
-
-gMapName_SeviiIsle7:: @ 85A11CD
- .string "SEVII ISLE 7$"
-
-gMapName_SeviiIsle8:: @ 85A11DA
- .string "SEVII ISLE 8$"
-
-gMapName_SeviiIsle9:: @ 85A11E7
- .string "SEVII ISLE 9$"
-
-gMapName_ResortGorgeous:: @ 85A11F4
- .string "RESORT GORGEOUS$"
-
-gMapName_WaterLabyrinth:: @ 85A1204
- .string "WATER LABYRINTH$"
-
-gMapName_FiveIsleMeadow:: @ 85A1214
- .string "FIVE ISLE MEADOW$"
-
-gMapName_MemorialPillar:: @ 85A1225
- .string "MEMORIAL PILLAR$"
-
-gMapName_OutcastIsland:: @ 85A1235
- .string "OUTCAST ISLAND$"
-
-gMapName_GreenPath:: @ 85A1244
- .string "GREEN PATH$"
-
-gMapName_WaterPath:: @ 85A124F
- .string "WATER PATH$"
-
-gMapName_RuinValley:: @ 85A125A
- .string "RUIN VALLEY$"
-
-gMapName_TrainerTower:: @ 85A1266
- .string "TRAINER TOWER$"
-
-gMapName_CanyonEntrance:: @ 85A1274
- .string "CANYON ENTRANCE$"
-
-gMapName_SevaultCanyon:: @ 85A1284
- .string "SEVAULT CANYON$"
-
-gMapName_TanobyRuins:: @ 85A1293
- .string "TANOBY RUINS$"
-
-gMapName_SeviiIsle22:: @ 85A12A0
- .string "SEVII ISLE 22$"
-
-gMapName_SeviiIsle23:: @ 85A12AE
- .string "SEVII ISLE 23$"
-
-gMapName_SeviiIsle24:: @ 85A12BC
- .string "SEVII ISLE 24$"
-
-gMapName_NavelRock:: @ 85A12CA
- .string "NAVEL ROCK$"
-
-gMapName_MtEmber:: @ 85A12D5
- .string "MT. EMBER$"
-
-gMapName_BerryForest:: @ 85A12DF
- .string "BERRY FOREST$"
-
-gMapName_IcefallCave:: @ 85A12EC
- .string "ICEFALL CAVE$"
-
-gMapName_RocketWarehouse:: @ 85A12F9
- .string "ROCKET WAREHOUSE$"
-
-gMapName_TrainerTower2:: @ 85A130A
- .string "TRAINER TOWER$"
-
-gMapName_DottedHole:: @ 85A1318
- .string "DOTTED HOLE$"
-
-gMapName_LostCave:: @ 85A1324
- .string "LOST CAVE$"
-
-gMapName_PatternBush:: @ 85A132E
- .string "PATTERN BUSH$"
-
-gMapName_AlteringCave:: @ 85A133B
- .string "ALTERING CAVE$"
-
-gMapName_TanobyChambers:: @ 85A1349
- .string "TANOBY CHAMBERS$"
-
-gMapName_ThreeIslePath:: @ 85A1359
- .string "THREE ISLE PATH$"
-
-gMapName_TanobyKey:: @ 85A1369
- .string "TANOBY KEY$"
-
-gMapName_BirthIsland:: @ 85A1374
- .string "BIRTH ISLAND$"
-
-gMapName_MoneanChamber:: @ 85A1381
- .string "MONEAN CHAMBER$"
-
-gMapName_LiptooChamber:: @ 85A1390
- .string "LIPTOO CHAMBER$"
-
-gMapName_WeepthChamber:: @ 85A139F
- .string "WEEPTH CHAMBER$"
-
-gMapName_DilfordChamber:: @ 85A13AE
- .string "DILFORD CHAMBER$"
-
-gMapName_ScufibChamber:: @ 85A13BE
- .string "SCUFIB CHAMBER$"
-
-gMapName_RixyChamber:: @ 85A13CD
- .string "RIXY CHAMBER$"
-
-gMapName_ViapoisChamber:: @ 85A13DA
- .string "VIAPOIS CHAMBER$"
-
-gMapName_EmberSpa:: @ 85A13EA
- .string "EMBER SPA$"
-
-gMapName_SpecialArea:: @ 85A13F4
- .string "SPECIAL AREA$"
-
-gMapName_AquaHideout:: @ 85A1401
- .string "AQUA HIDEOUT$"
-
-gMapName_MagmaHideout:: @ 85A140E
- .string "MAGMA HIDEOUT$"
-
-gMapName_MirageTower:: @ 85A141C
- .string "MIRAGE TOWER$"
-
-gMapName_FarawayIsland:: @ 85A1429
- .string "FARAWAY ISLAND$"
-
-gMapName_ArtisanCave:: @ 85A1438
- .string "ARTISAN CAVE$"
-
-gMapName_MarineCave:: @ 85A1445
- .string "MARINE CAVE$"
-
-gMapName_TerraCave:: @ 85A1451
- .string "TERRA CAVE$"
-
-gMapName_DesertUnderpass:: @ 85A145C
- .string "DESERT UNDERPASS$"
-
-gMapName_TrainerHill:: @ 85A146D
- .string "TRAINER HILL$"
-
- .align 2
-gRegionMapEntries:: @ 85A147C
- region_map_entry 4, 11, 1, 1, LittlerootTown
- region_map_entry 4, 9, 1, 1, OldaleTown
- region_map_entry 2, 14, 1, 1, DewfordTown
- region_map_entry 5, 3, 1, 1, LavaridgeTown
- region_map_entry 3, 0, 1, 1, FallarborTown
- region_map_entry 4, 6, 1, 1, VerdanturfTown
- region_map_entry 17, 10, 1, 1, PacifidlogTown
- region_map_entry 1, 9, 1, 1, PetalburgCity
- region_map_entry 8, 10, 1, 2, SlateportCity
- region_map_entry 8, 6, 2, 1, MauvilleCity
- region_map_entry 0, 5, 1, 2, RustboroCity
- region_map_entry 12, 0, 1, 1, FortreeCity
- region_map_entry 18, 3, 2, 1, LilycoveCity
- region_map_entry 24, 5, 2, 1, MossdeepCity
- region_map_entry 21, 7, 1, 1, SootopolisCity
- region_map_entry 27, 8, 1, 2, EverGrandeCity
- region_map_entry 4, 10, 1, 1, Route101
- region_map_entry 2, 9, 2, 1, Route102
- region_map_entry 4, 8, 4, 1, Route103
- region_map_entry 0, 7, 1, 3, Route104
- region_map_entry 0, 10, 1, 3, Route105
- region_map_entry 0, 13, 2, 1, Route106
- region_map_entry 3, 14, 3, 1, Route107
- region_map_entry 6, 14, 2, 1, Route108
- region_map_entry 8, 12, 1, 3, Route109
- region_map_entry 8, 7, 1, 3, Route110
- region_map_entry 8, 0, 1, 6, Route111
- region_map_entry 6, 3, 2, 1, Route112
- region_map_entry 4, 0, 4, 1, Route113
- region_map_entry 1, 0, 2, 3, Route114
- region_map_entry 0, 2, 1, 3, Route115
- region_map_entry 1, 5, 4, 1, Route116
- region_map_entry 5, 6, 3, 1, Route117
- region_map_entry 10, 6, 2, 1, Route118
- region_map_entry 11, 0, 1, 6, Route119
- region_map_entry 13, 0, 1, 4, Route120
- region_map_entry 14, 3, 4, 1, Route121
- region_map_entry 16, 4, 1, 2, Route122
- region_map_entry 12, 6, 5, 1, Route123
- region_map_entry 20, 3, 4, 3, Route124
- region_map_entry 24, 3, 2, 2, Route125
- region_map_entry 20, 6, 3, 3, Route126
- region_map_entry 23, 6, 3, 3, Route127
- region_map_entry 23, 9, 4, 1, Route128
- region_map_entry 24, 10, 2, 1, Route129
- region_map_entry 21, 10, 3, 1, Route130
- region_map_entry 18, 10, 3, 1, Route131
- region_map_entry 15, 10, 2, 1, Route132
- region_map_entry 12, 10, 3, 1, Route133
- region_map_entry 9, 10, 3, 1, Route134
- region_map_entry 20, 3, 4, 3, Underwater
- region_map_entry 20, 6, 3, 3, Underwater
- region_map_entry 23, 6, 3, 3, Underwater
- region_map_entry 23, 9, 4, 1, Underwater
- region_map_entry 21, 7, 1, 1, Underwater
- region_map_entry 1, 13, 1, 1, GraniteCave
- region_map_entry 6, 2, 1, 1, MtChimney
- region_map_entry 16, 2, 1, 1, SafariZone
- region_map_entry 22, 12, 1, 1, BattleFrontier
- region_map_entry 0, 8, 1, 1, PetalburgWoods
- region_map_entry 2, 5, 1, 1, RusturfTunnel
- region_map_entry 6, 14, 1, 1, AbandonedShip
- region_map_entry 8, 7, 1, 1, NewMauville
- region_map_entry 0, 3, 1, 1, MeteorFalls
- region_map_entry 1, 2, 1, 1, MeteorFalls
- region_map_entry 16, 4, 1, 1, MtPyre
- region_map_entry 19, 3, 1, 1, AquaHideoutOld
- region_map_entry 24, 4, 1, 1, ShoalCave
- region_map_entry 24, 9, 1, 1, SeafloorCavern
- region_map_entry 24, 9, 1, 1, Underwater
- region_map_entry 27, 9, 1, 1, VictoryRoad
- region_map_entry 17, 10, 1, 1, MirageIsland
- region_map_entry 21, 7, 1, 1, CaveOfOrigin
- region_map_entry 12, 14, 1, 1, SouthernIsland
- region_map_entry 6, 3, 1, 1, FieryPath
- region_map_entry 7, 3, 1, 1, FieryPath
- region_map_entry 6, 3, 1, 1, JaggedPass
- region_map_entry 7, 2, 1, 1, JaggedPass
- region_map_entry 11, 10, 1, 1, SealedChamber
- region_map_entry 11, 10, 1, 1, Underwater
- region_map_entry 13, 0, 1, 1, ScorchedSlab
- region_map_entry 0, 10, 1, 1, IslandCave
- region_map_entry 8, 3, 1, 1, DesertRuins
- region_map_entry 13, 2, 1, 1, AncientTomb
- region_map_entry 0, 0, 1, 1, InsideOfTruck
- region_map_entry 19, 10, 1, 1, SkyPillar
- region_map_entry 0, 0, 1, 1, SecretBase
- region_map_entry 0, 0, 1, 1, None
- region_map_entry 0, 0, 1, 1, PalletTown
- region_map_entry 0, 0, 1, 1, ViridianCity
- region_map_entry 0, 0, 1, 1, PewterCity
- region_map_entry 0, 0, 1, 1, CeruleanCity
- region_map_entry 0, 0, 1, 1, LavenderTown
- region_map_entry 0, 0, 1, 1, VermilionCity
- region_map_entry 0, 0, 1, 1, CeladonCity
- region_map_entry 0, 0, 1, 1, FuchsiaCity
- region_map_entry 0, 0, 1, 1, CinnabarIsland
- region_map_entry 0, 0, 1, 1, IndigoPlateau
- region_map_entry 0, 0, 1, 1, SaffronCity
- region_map_entry 0, 0, 1, 1, Route4
- region_map_entry 0, 0, 1, 1, Route10
- region_map_entry 0, 0, 1, 1, Route1
- region_map_entry 0, 0, 1, 1, Route2
- region_map_entry 0, 0, 1, 1, Route3
- region_map_entry 0, 0, 1, 1, Route4_2
- region_map_entry 0, 0, 1, 1, Route5
- region_map_entry 0, 0, 1, 1, Route6
- region_map_entry 0, 0, 1, 1, Route7
- region_map_entry 0, 0, 1, 1, Route8
- region_map_entry 0, 0, 1, 1, Route9
- region_map_entry 0, 0, 1, 1, Route10_2
- region_map_entry 0, 0, 1, 1, Route11
- region_map_entry 0, 0, 1, 1, Route12
- region_map_entry 0, 0, 1, 1, Route13
- region_map_entry 0, 0, 1, 1, Route14
- region_map_entry 0, 0, 1, 1, Route15
- region_map_entry 0, 0, 1, 1, Route16
- region_map_entry 0, 0, 1, 1, Route17
- region_map_entry 0, 0, 1, 1, Route18
- region_map_entry 0, 0, 1, 1, Route19
- region_map_entry 0, 0, 1, 1, Route20
- region_map_entry 0, 0, 1, 1, Route21
- region_map_entry 0, 0, 1, 1, Route22
- region_map_entry 0, 0, 1, 1, Route23
- region_map_entry 0, 0, 1, 1, Route24
- region_map_entry 0, 0, 1, 1, Route25
- region_map_entry 0, 0, 1, 1, ViridianForest
- region_map_entry 0, 0, 1, 1, MtMoon
- region_map_entry 0, 0, 1, 1, SSAnne
- region_map_entry 0, 0, 1, 1, UndergroundPath
- region_map_entry 0, 0, 1, 1, UndergroundPath2
- region_map_entry 0, 0, 1, 1, DiglettsCave
- region_map_entry 0, 0, 1, 1, KantoVictoryRoad
- region_map_entry 0, 0, 1, 1, RocketHideout
- region_map_entry 0, 0, 1, 1, SilphCo
- region_map_entry 0, 0, 1, 1, PokemonMansion
- region_map_entry 0, 0, 1, 1, KantoSafariZone
- region_map_entry 0, 0, 1, 1, PokemonLeague
- region_map_entry 0, 0, 1, 1, RockTunnel
- region_map_entry 0, 0, 1, 1, SeafoamIslands
- region_map_entry 0, 0, 1, 1, PokemonTower
- region_map_entry 0, 0, 1, 1, CeruleanCave
- region_map_entry 0, 0, 1, 1, PowerPlant
- region_map_entry 0, 0, 1, 1, OneIsland
- region_map_entry 0, 0, 1, 1, TwoIsland
- region_map_entry 0, 0, 1, 1, ThreeIsland
- region_map_entry 0, 0, 1, 1, FourIsland
- region_map_entry 0, 0, 1, 1, FiveIsland
- region_map_entry 0, 0, 1, 1, SevenIsland
- region_map_entry 0, 0, 1, 1, SixIsland
- region_map_entry 0, 0, 1, 1, KindleRoad
- region_map_entry 0, 0, 1, 1, TreasureBeach
- region_map_entry 0, 0, 1, 1, CapeBrink
- region_map_entry 0, 0, 1, 1, BondBridge
- region_map_entry 0, 0, 1, 1, ThreeIslePort
- region_map_entry 0, 0, 1, 1, SeviiIsle6
- region_map_entry 0, 0, 1, 1, SeviiIsle7
- region_map_entry 0, 0, 1, 1, SeviiIsle8
- region_map_entry 0, 0, 1, 1, SeviiIsle9
- region_map_entry 0, 0, 1, 1, ResortGorgeous
- region_map_entry 0, 0, 1, 1, WaterLabyrinth
- region_map_entry 0, 0, 1, 1, FiveIsleMeadow
- region_map_entry 0, 0, 1, 1, MemorialPillar
- region_map_entry 0, 0, 1, 1, OutcastIsland
- region_map_entry 0, 0, 1, 1, GreenPath
- region_map_entry 0, 0, 1, 1, WaterPath
- region_map_entry 0, 0, 1, 1, RuinValley
- region_map_entry 0, 0, 1, 1, TrainerTower
- region_map_entry 0, 0, 1, 1, CanyonEntrance
- region_map_entry 0, 0, 1, 1, SevaultCanyon
- region_map_entry 0, 0, 1, 1, TanobyRuins
- region_map_entry 0, 0, 1, 1, SeviiIsle22
- region_map_entry 0, 0, 1, 1, SeviiIsle23
- region_map_entry 0, 0, 1, 1, SeviiIsle24
- region_map_entry 0, 0, 1, 1, NavelRock
- region_map_entry 0, 0, 1, 1, MtEmber
- region_map_entry 0, 0, 1, 1, BerryForest
- region_map_entry 0, 0, 1, 1, IcefallCave
- region_map_entry 0, 0, 1, 1, RocketWarehouse
- region_map_entry 0, 0, 1, 1, TrainerTower2
- region_map_entry 0, 0, 1, 1, DottedHole
- region_map_entry 0, 0, 1, 1, LostCave
- region_map_entry 0, 0, 1, 1, PatternBush
- region_map_entry 0, 0, 1, 1, AlteringCave
- region_map_entry 0, 0, 1, 1, TanobyChambers
- region_map_entry 0, 0, 1, 1, ThreeIslePath
- region_map_entry 0, 0, 1, 1, TanobyKey
- region_map_entry 0, 0, 1, 1, BirthIsland
- region_map_entry 0, 0, 1, 1, MoneanChamber
- region_map_entry 0, 0, 1, 1, LiptooChamber
- region_map_entry 0, 0, 1, 1, WeepthChamber
- region_map_entry 0, 0, 1, 1, DilfordChamber
- region_map_entry 0, 0, 1, 1, ScufibChamber
- region_map_entry 0, 0, 1, 1, RixyChamber
- region_map_entry 0, 0, 1, 1, ViapoisChamber
- region_map_entry 0, 0, 1, 1, EmberSpa
- region_map_entry 0, 0, 1, 1, SpecialArea
- region_map_entry 19, 3, 1, 1, AquaHideout
- region_map_entry 6, 3, 1, 1, MagmaHideout
- region_map_entry 8, 2, 1, 1, MirageTower
- region_map_entry 0, 0, 1, 1, BirthIsland
- region_map_entry 0, 0, 1, 1, FarawayIsland
- region_map_entry 22, 12, 1, 1, ArtisanCave
- region_map_entry 0, 0, 1, 1, MarineCave
- region_map_entry 0, 0, 1, 1, Underwater
- region_map_entry 0, 0, 1, 1, TerraCave
- region_map_entry 0, 10, 1, 3, Underwater
- region_map_entry 24, 3, 2, 2, Underwater
- region_map_entry 24, 10, 2, 1, Underwater
- region_map_entry 2, 0, 1, 1, DesertUnderpass
- region_map_entry 6, 8, 1, 1, AlteringCave
- region_map_entry 0, 0, 1, 1, NavelRock
- region_map_entry 8, 4, 1, 1, TrainerHill
diff --git a/graphics/pokenav/brendan_icon.pal b/graphics/pokenav/brendan_icon.pal
new file mode 100644
index 000000000..a83ed903f
--- /dev/null
+++ b/graphics/pokenav/brendan_icon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 197 164
+255 213 180
+255 197 148
+222 148 115
+123 65 65
+57 74 123
+41 57 98
+24 41 82
+16 32 57
+222 230 238
+115 205 115
+74 148 82
+255 98 90
+197 65 65
+255 255 255
+0 0 0
diff --git a/graphics/pokenav/brendan_icon.png b/graphics/pokenav/brendan_icon.png
new file mode 100644
index 000000000..19e39bb29
--- /dev/null
+++ b/graphics/pokenav/brendan_icon.png
Binary files differ
diff --git a/graphics/pokenav/cursor.gbapal b/graphics/pokenav/cursor.gbapal
new file mode 100644
index 000000000..eb55e2159
--- /dev/null
+++ b/graphics/pokenav/cursor.gbapal
Binary files differ
diff --git a/graphics/pokenav/cursor.pal b/graphics/pokenav/cursor.pal
new file mode 100644
index 000000000..b35568acf
--- /dev/null
+++ b/graphics/pokenav/cursor.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 156 0
+255 255 255
+255 255 255
+230 230 246
+205 205 230
+180 180 222
+156 156 205
+131 131 197
+98 98 180
+74 74 164
+49 49 156
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/pokenav/cursor_large.png b/graphics/pokenav/cursor_large.png
new file mode 100644
index 000000000..eeda68a0e
--- /dev/null
+++ b/graphics/pokenav/cursor_large.png
Binary files differ
diff --git a/graphics/pokenav/cursor_small.png b/graphics/pokenav/cursor_small.png
new file mode 100644
index 000000000..031e7ed16
--- /dev/null
+++ b/graphics/pokenav/cursor_small.png
Binary files differ
diff --git a/graphics/pokenav/fly_target_icons.pal b/graphics/pokenav/fly_target_icons.pal
new file mode 100644
index 000000000..c0f2cc4e9
--- /dev/null
+++ b/graphics/pokenav/fly_target_icons.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 0 0
+0 0 0
+0 0 0
+205 205 205
+0 0 0
+0 0 0
+255 213 222
+255 164 197
+197 98 115
+131 131 123
+98 90 90
+49 49 65
+0 0 0
+0 0 0
+255 255 255
diff --git a/graphics/pokenav/fly_target_icons.png b/graphics/pokenav/fly_target_icons.png
new file mode 100644
index 000000000..7a997afc5
--- /dev/null
+++ b/graphics/pokenav/fly_target_icons.png
Binary files differ
diff --git a/graphics/pokenav/map_frame.bin b/graphics/pokenav/map_frame.bin
new file mode 100644
index 000000000..eb8e9ee62
--- /dev/null
+++ b/graphics/pokenav/map_frame.bin
Binary files differ
diff --git a/graphics/pokenav/map_frame.gbapal b/graphics/pokenav/map_frame.gbapal
new file mode 100644
index 000000000..6ac633fd5
--- /dev/null
+++ b/graphics/pokenav/map_frame.gbapal
Binary files differ
diff --git a/graphics/pokenav/map_frame.png b/graphics/pokenav/map_frame.png
new file mode 100644
index 000000000..f64171746
--- /dev/null
+++ b/graphics/pokenav/map_frame.png
Binary files differ
diff --git a/graphics/pokenav/may_icon.pal b/graphics/pokenav/may_icon.pal
new file mode 100644
index 000000000..2833b2613
--- /dev/null
+++ b/graphics/pokenav/may_icon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 197 164
+255 222 205
+222 164 148
+205 131 115
+123 90 82
+98 98 115
+41 57 65
+164 106 82
+74 49 57
+205 205 222
+106 213 65
+65 172 32
+255 98 90
+197 65 65
+255 255 255
+0 0 0
diff --git a/graphics/pokenav/may_icon.png b/graphics/pokenav/may_icon.png
new file mode 100644
index 000000000..5e1809fa5
--- /dev/null
+++ b/graphics/pokenav/may_icon.png
Binary files differ
diff --git a/graphics/pokenav/region_map.pal b/graphics/pokenav/region_map.pal
new file mode 100644
index 000000000..78ffc009a
--- /dev/null
+++ b/graphics/pokenav/region_map.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+156 213 255
+164 180 255
+123 180 213
+74 156 230
+41 131 230
+65 106 205
+0 115 172
+32 74 197
+0 57 139
+213 255 123
+172 238 49
+98 213 0
+57 172 8
+0 115 0
+205 205 148
+0 0 0
+255 255 255
+238 230 172
+238 230 115
+238 189 57
+246 213 82
+230 164 0
+255 172 16
+255 57 16
+246 0 0
+148 0 0
+205 205 205
+98 98 98
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/pokenav/region_map.png b/graphics/pokenav/region_map.png
new file mode 100644
index 000000000..08df6eb29
--- /dev/null
+++ b/graphics/pokenav/region_map.png
Binary files differ
diff --git a/graphics/pokenav/region_map_map.bin b/graphics/pokenav/region_map_map.bin
new file mode 100644
index 000000000..889fd6d36
--- /dev/null
+++ b/graphics/pokenav/region_map_map.bin
Binary files differ
diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk
index def35bc4e..7411d6305 100644
--- a/graphics_file_rules.mk
+++ b/graphics_file_rules.mk
@@ -4,6 +4,7 @@ monfrontdir := graphics/pokemon/anim_front_pics
monpaldir := graphics/pokemon/palettes
INTROGFXDIR := graphics/intro
interfacedir := graphics/interface
+PKNAVGFXDIR := graphics/pokenav
$(monstillfrontdir)/castform_still_front_pic.4bpp: $(monstillfrontdir)/castform_normal_form_still_front_pic.4bpp \
$(monstillfrontdir)/castform_sunny_form_still_front_pic.4bpp \
@@ -290,3 +291,7 @@ $(INTROGFXDIR)/copyright.4bpp: $(INTROGFXDIR)/copyright.png
$(interfacedir)/pkmnjump_bg.4bpp: $(interfacedir)/pkmnjump_bg.png
$(GFX) $< $@ -num_tiles 63
+
+
+$(PKNAVGFXDIR)/region_map.8bpp: $(PKNAVGFXDIR)/region_map.png
+ $(GFX) $< $@ -num_tiles 233
diff --git a/include/data/region_map/region_map_entries.h b/include/data/region_map/region_map_entries.h
new file mode 100644
index 000000000..73599c704
--- /dev/null
+++ b/include/data/region_map/region_map_entries.h
@@ -0,0 +1,421 @@
+#ifndef GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
+#define GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
+
+static const u8 gMapName_LittlerootTown[] = _("LITTLEROOT TOWN");
+static const u8 gMapName_OldaleTown[] = _("OLDALE TOWN");
+static const u8 gMapName_DewfordTown[] = _("DEWFORD TOWN");
+static const u8 gMapName_LavaridgeTown[] = _("LAVARIDGE TOWN");
+static const u8 gMapName_FallarborTown[] = _("FALLARBOR TOWN");
+static const u8 gMapName_VerdanturfTown[] = _("VERDANTURF TOWN");
+static const u8 gMapName_PacifidlogTown[] = _("PACIFIDLOG TOWN");
+static const u8 gMapName_PetalburgCity[] = _("PETALBURG CITY");
+static const u8 gMapName_SlateportCity[] = _("SLATEPORT CITY");
+static const u8 gMapName_MauvilleCity[] = _("MAUVILLE CITY");
+static const u8 gMapName_RustboroCity[] = _("RUSTBORO CITY");
+static const u8 gMapName_FortreeCity[] = _("FORTREE CITY");
+static const u8 gMapName_LilycoveCity[] = _("LILYCOVE CITY");
+static const u8 gMapName_MossdeepCity[] = _("MOSSDEEP CITY");
+static const u8 gMapName_SootopolisCity[] = _("SOOTOPOLIS CITY");
+static const u8 gMapName_EverGrandeCity[] = _("EVER GRANDE CITY");
+static const u8 gMapName_Route101[] = _("ROUTE 101");
+static const u8 gMapName_Route102[] = _("ROUTE 102");
+static const u8 gMapName_Route103[] = _("ROUTE 103");
+static const u8 gMapName_Route104[] = _("ROUTE 104");
+static const u8 gMapName_Route105[] = _("ROUTE 105");
+static const u8 gMapName_Route106[] = _("ROUTE 106");
+static const u8 gMapName_Route107[] = _("ROUTE 107");
+static const u8 gMapName_Route108[] = _("ROUTE 108");
+static const u8 gMapName_Route109[] = _("ROUTE 109");
+static const u8 gMapName_Route110[] = _("ROUTE 110");
+static const u8 gMapName_Route111[] = _("ROUTE 111");
+static const u8 gMapName_Route112[] = _("ROUTE 112");
+static const u8 gMapName_Route113[] = _("ROUTE 113");
+static const u8 gMapName_Route114[] = _("ROUTE 114");
+static const u8 gMapName_Route115[] = _("ROUTE 115");
+static const u8 gMapName_Route116[] = _("ROUTE 116");
+static const u8 gMapName_Route117[] = _("ROUTE 117");
+static const u8 gMapName_Route118[] = _("ROUTE 118");
+static const u8 gMapName_Route119[] = _("ROUTE 119");
+static const u8 gMapName_Route120[] = _("ROUTE 120");
+static const u8 gMapName_Route121[] = _("ROUTE 121");
+static const u8 gMapName_Route122[] = _("ROUTE 122");
+static const u8 gMapName_Route123[] = _("ROUTE 123");
+static const u8 gMapName_Route124[] = _("ROUTE 124");
+static const u8 gMapName_Route125[] = _("ROUTE 125");
+static const u8 gMapName_Route126[] = _("ROUTE 126");
+static const u8 gMapName_Route127[] = _("ROUTE 127");
+static const u8 gMapName_Route128[] = _("ROUTE 128");
+static const u8 gMapName_Route129[] = _("ROUTE 129");
+static const u8 gMapName_Route130[] = _("ROUTE 130");
+static const u8 gMapName_Route131[] = _("ROUTE 131");
+static const u8 gMapName_Route132[] = _("ROUTE 132");
+static const u8 gMapName_Route133[] = _("ROUTE 133");
+static const u8 gMapName_Route134[] = _("ROUTE 134");
+static const u8 gMapName_Underwater[] = _("UNDERWATER");
+static const u8 gMapName_GraniteCave[] = _("GRANITE CAVE");
+static const u8 gMapName_MtChimney[] = _("MT. CHIMNEY");
+static const u8 gMapName_SafariZone[] = _("SAFARI ZONE");
+static const u8 gMapName_BattleFrontier[] = _("BATTLE FRONTIER");
+static const u8 gMapName_PetalburgWoods[] = _("PETALBURG WOODS");
+static const u8 gMapName_RusturfTunnel[] = _("RUSTURF TUNNEL");
+static const u8 gMapName_AbandonedShip[] = _("ABANDONED SHIP");
+static const u8 gMapName_NewMauville[] = _("NEW MAUVILLE");
+static const u8 gMapName_MeteorFalls[] = _("METEOR FALLS");
+static const u8 gMapName_MtPyre[] = _("MT. PYRE");
+// This was the Aqua or Magma hideout in Ruby/Sapphire, but each team has a
+// hideout in Emerald with their own new region map entries, and this name
+// doesn't seem to be used anymore.
+static const u8 gMapName_AquaHideoutOld[] = _("{AQUA} HIDEOUT");
+static const u8 gMapName_ShoalCave[] = _("SHOAL CAVE");
+static const u8 gMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN");
+static const u8 gMapName_VictoryRoad[] = _("VICTORY ROAD");
+static const u8 gMapName_MirageIsland[] = _("MIRAGE ISLAND");
+static const u8 gMapName_CaveOfOrigin[] = _("CAVE OF ORIGIN");
+static const u8 gMapName_SouthernIsland[] = _("SOUTHERN ISLAND");
+static const u8 gMapName_FieryPath[] = _("FIERY PATH");
+static const u8 gMapName_JaggedPass[] = _("JAGGED PASS");
+static const u8 gMapName_SealedChamber[] = _("SEALED CHAMBER");
+static const u8 gMapName_ScorchedSlab[] = _("SCORCHED SLAB");
+static const u8 gMapName_IslandCave[] = _("ISLAND CAVE");
+static const u8 gMapName_DesertRuins[] = _("DESERT RUINS");
+static const u8 gMapName_AncientTomb[] = _("ANCIENT TOMB");
+static const u8 gMapName_InsideOfTruck[] = _("INSIDE OF TRUCK");
+static const u8 gMapName_SkyPillar[] = _("SKY PILLAR");
+static const u8 gMapName_SecretBase[] = _("SECRET BASE");
+static const u8 gMapName_None[] = _("");
+static const u8 gMapName_PalletTown[] = _("PALLET TOWN");
+static const u8 gMapName_ViridianCity[] = _("VIRIDIAN CITY");
+static const u8 gMapName_PewterCity[] = _("PEWTER CITY");
+static const u8 gMapName_CeruleanCity[] = _("CERULEAN CITY");
+static const u8 gMapName_LavenderTown[] = _("LAVENDER TOWN");
+static const u8 gMapName_VermilionCity[] = _("VERMILION CITY");
+static const u8 gMapName_CeladonCity[] = _("CELADON CITY");
+static const u8 gMapName_FuchsiaCity[] = _("FUCHSIA CITY");
+static const u8 gMapName_CinnabarIsland[] = _("CINNABAR ISLAND");
+static const u8 gMapName_IndigoPlateau[] = _("INDIGO PLATEAU");
+static const u8 gMapName_SaffronCity[] = _("SAFFRON CITY");
+static const u8 gMapName_Route4[] = _("ROUTE 4");
+static const u8 gMapName_Route10[] = _("ROUTE 10");
+static const u8 gMapName_Route1[] = _("ROUTE 1");
+static const u8 gMapName_Route2[] = _("ROUTE 2");
+static const u8 gMapName_Route3[] = _("ROUTE 3");
+static const u8 gMapName_Route4_2[] = _("ROUTE 4");
+static const u8 gMapName_Route5[] = _("ROUTE 5");
+static const u8 gMapName_Route6[] = _("ROUTE 6");
+static const u8 gMapName_Route7[] = _("ROUTE 7");
+static const u8 gMapName_Route8[] = _("ROUTE 8");
+static const u8 gMapName_Route9[] = _("ROUTE 9");
+static const u8 gMapName_Route10_2[] = _("ROUTE 10");
+static const u8 gMapName_Route11[] = _("ROUTE 11");
+static const u8 gMapName_Route12[] = _("ROUTE 12");
+static const u8 gMapName_Route13[] = _("ROUTE 13");
+static const u8 gMapName_Route14[] = _("ROUTE 14");
+static const u8 gMapName_Route15[] = _("ROUTE 15");
+static const u8 gMapName_Route16[] = _("ROUTE 16");
+static const u8 gMapName_Route17[] = _("ROUTE 17");
+static const u8 gMapName_Route18[] = _("ROUTE 18");
+static const u8 gMapName_Route19[] = _("ROUTE 19");
+static const u8 gMapName_Route20[] = _("ROUTE 20");
+static const u8 gMapName_Route21[] = _("ROUTE 21");
+static const u8 gMapName_Route22[] = _("ROUTE 22");
+static const u8 gMapName_Route23[] = _("ROUTE 23");
+static const u8 gMapName_Route24[] = _("ROUTE 24");
+static const u8 gMapName_Route25[] = _("ROUTE 25");
+static const u8 gMapName_ViridianForest[] = _("VIRIDIAN FOREST");
+static const u8 gMapName_MtMoon[] = _("MT. MOON");
+static const u8 gMapName_SSAnne[] = _("S.S. ANNE");
+static const u8 gMapName_UndergroundPath[] = _("UNDERGROUND PATH");
+static const u8 gMapName_UndergroundPath2[] = _("UNDERGROUND PATH");
+static const u8 gMapName_DiglettsCave[] = _("DIGLETT’S CAVE");
+static const u8 gMapName_KantoVictoryRoad[] = _("VICTORY ROAD");
+static const u8 gMapName_RocketHideout[] = _("ROCKET HIDEOUT");
+static const u8 gMapName_SilphCo[] = _("SILPH CO.");
+static const u8 gMapName_PokemonMansion[] = _("POKéMON MANSION");
+static const u8 gMapName_KantoSafariZone[] = _("SAFARI ZONE");
+static const u8 gMapName_PokemonLeague[] = _("POKéMON LEAGUE");
+static const u8 gMapName_RockTunnel[] = _("ROCK TUNNEL");
+static const u8 gMapName_SeafoamIslands[] = _("SEAFOAM ISLANDS");
+static const u8 gMapName_PokemonTower[] = _("POKéMON TOWER");
+static const u8 gMapName_CeruleanCave[] = _("CERULEAN CAVE");
+static const u8 gMapName_PowerPlant[] = _("POWER PLANT");
+static const u8 gMapName_OneIsland[] = _("ONE ISLAND");
+static const u8 gMapName_TwoIsland[] = _("TWO ISLAND");
+static const u8 gMapName_ThreeIsland[] = _("THREE ISLAND");
+static const u8 gMapName_FourIsland[] = _("FOUR ISLAND");
+static const u8 gMapName_FiveIsland[] = _("FIVE ISLAND");
+static const u8 gMapName_SevenIsland[] = _("SEVEN ISLAND");
+static const u8 gMapName_SixIsland[] = _("SIX ISLAND");
+static const u8 gMapName_KindleRoad[] = _("KINDLE ROAD");
+static const u8 gMapName_TreasureBeach[] = _("TREASURE BEACH");
+static const u8 gMapName_CapeBrink[] = _("CAPE BRINK");
+static const u8 gMapName_BondBridge[] = _("BOND BRIDGE");
+static const u8 gMapName_ThreeIslePort[] = _("THREE ISLE PORT");
+static const u8 gMapName_SeviiIsle6[] = _("SEVII ISLE 6");
+static const u8 gMapName_SeviiIsle7[] = _("SEVII ISLE 7");
+static const u8 gMapName_SeviiIsle8[] = _("SEVII ISLE 8");
+static const u8 gMapName_SeviiIsle9[] = _("SEVII ISLE 9");
+static const u8 gMapName_ResortGorgeous[] = _("RESORT GORGEOUS");
+static const u8 gMapName_WaterLabyrinth[] = _("WATER LABYRINTH");
+static const u8 gMapName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW");
+static const u8 gMapName_MemorialPillar[] = _("MEMORIAL PILLAR");
+static const u8 gMapName_OutcastIsland[] = _("OUTCAST ISLAND");
+static const u8 gMapName_GreenPath[] = _("GREEN PATH");
+static const u8 gMapName_WaterPath[] = _("WATER PATH");
+static const u8 gMapName_RuinValley[] = _("RUIN VALLEY");
+static const u8 gMapName_TrainerTower[] = _("TRAINER TOWER");
+static const u8 gMapName_CanyonEntrance[] = _("CANYON ENTRANCE");
+static const u8 gMapName_SevaultCanyon[] = _("SEVAULT CANYON");
+static const u8 gMapName_TanobyRuins[] = _("TANOBY RUINS");
+static const u8 gMapName_SeviiIsle22[] = _("SEVII ISLE 22");
+static const u8 gMapName_SeviiIsle23[] = _("SEVII ISLE 23");
+static const u8 gMapName_SeviiIsle24[] = _("SEVII ISLE 24");
+static const u8 gMapName_NavelRock[] = _("NAVEL ROCK");
+static const u8 gMapName_MtEmber[] = _("MT. EMBER");
+static const u8 gMapName_BerryForest[] = _("BERRY FOREST");
+static const u8 gMapName_IcefallCave[] = _("ICEFALL CAVE");
+static const u8 gMapName_RocketWarehouse[] = _("ROCKET WAREHOUSE");
+static const u8 gMapName_TrainerTower2[] = _("TRAINER TOWER");
+static const u8 gMapName_DottedHole[] = _("DOTTED HOLE");
+static const u8 gMapName_LostCave[] = _("LOST CAVE");
+static const u8 gMapName_PatternBush[] = _("PATTERN BUSH");
+static const u8 gMapName_AlteringCave[] = _("ALTERING CAVE");
+static const u8 gMapName_TanobyChambers[] = _("TANOBY CHAMBERS");
+static const u8 gMapName_ThreeIslePath[] = _("THREE ISLE PATH");
+static const u8 gMapName_TanobyKey[] = _("TANOBY KEY");
+static const u8 gMapName_BirthIsland[] = _("BIRTH ISLAND");
+static const u8 gMapName_MoneanChamber[] = _("MONEAN CHAMBER");
+static const u8 gMapName_LiptooChamber[] = _("LIPTOO CHAMBER");
+static const u8 gMapName_WeepthChamber[] = _("WEEPTH CHAMBER");
+static const u8 gMapName_DilfordChamber[] = _("DILFORD CHAMBER");
+static const u8 gMapName_ScufibChamber[] = _("SCUFIB CHAMBER");
+static const u8 gMapName_RixyChamber[] = _("RIXY CHAMBER");
+static const u8 gMapName_ViapoisChamber[] = _("VIAPOIS CHAMBER");
+static const u8 gMapName_EmberSpa[] = _("EMBER SPA");
+static const u8 gMapName_SpecialArea[] = _("SPECIAL AREA");
+static const u8 gMapName_AquaHideout[] = _("AQUA HIDEOUT");
+static const u8 gMapName_MagmaHideout[] = _("MAGMA HIDEOUT");
+static const u8 gMapName_MirageTower[] = _("MIRAGE TOWER");
+static const u8 gMapName_FarawayIsland[] = _("FARAWAY ISLAND");
+static const u8 gMapName_ArtisanCave[] = _("ARTISAN CAVE");
+static const u8 gMapName_MarineCave[] = _("MARINE CAVE");
+static const u8 gMapName_TerraCave[] = _("TERRA CAVE");
+static const u8 gMapName_DesertUnderpass[] = _("DESERT UNDERPASS");
+static const u8 gMapName_TrainerHill[] = _("TRAINER HILL");
+
+const struct RegionMapLocation gRegionMapEntries[] = {
+ { 4, 11, 1, 1, gMapName_LittlerootTown},
+ { 4, 9, 1, 1, gMapName_OldaleTown},
+ { 2, 14, 1, 1, gMapName_DewfordTown},
+ { 5, 3, 1, 1, gMapName_LavaridgeTown},
+ { 3, 0, 1, 1, gMapName_FallarborTown},
+ { 4, 6, 1, 1, gMapName_VerdanturfTown},
+ {17, 10, 1, 1, gMapName_PacifidlogTown},
+ { 1, 9, 1, 1, gMapName_PetalburgCity},
+ { 8, 10, 1, 2, gMapName_SlateportCity},
+ { 8, 6, 2, 1, gMapName_MauvilleCity},
+ { 0, 5, 1, 2, gMapName_RustboroCity},
+ {12, 0, 1, 1, gMapName_FortreeCity},
+ {18, 3, 2, 1, gMapName_LilycoveCity},
+ {24, 5, 2, 1, gMapName_MossdeepCity},
+ {21, 7, 1, 1, gMapName_SootopolisCity},
+ {27, 8, 1, 2, gMapName_EverGrandeCity},
+ { 4, 10, 1, 1, gMapName_Route101},
+ { 2, 9, 2, 1, gMapName_Route102},
+ { 4, 8, 4, 1, gMapName_Route103},
+ { 0, 7, 1, 3, gMapName_Route104},
+ { 0, 10, 1, 3, gMapName_Route105},
+ { 0, 13, 2, 1, gMapName_Route106},
+ { 3, 14, 3, 1, gMapName_Route107},
+ { 6, 14, 2, 1, gMapName_Route108},
+ { 8, 12, 1, 3, gMapName_Route109},
+ { 8, 7, 1, 3, gMapName_Route110},
+ { 8, 0, 1, 6, gMapName_Route111},
+ { 6, 3, 2, 1, gMapName_Route112},
+ { 4, 0, 4, 1, gMapName_Route113},
+ { 1, 0, 2, 3, gMapName_Route114},
+ { 0, 2, 1, 3, gMapName_Route115},
+ { 1, 5, 4, 1, gMapName_Route116},
+ { 5, 6, 3, 1, gMapName_Route117},
+ {10, 6, 2, 1, gMapName_Route118},
+ {11, 0, 1, 6, gMapName_Route119},
+ {13, 0, 1, 4, gMapName_Route120},
+ {14, 3, 4, 1, gMapName_Route121},
+ {16, 4, 1, 2, gMapName_Route122},
+ {12, 6, 5, 1, gMapName_Route123},
+ {20, 3, 4, 3, gMapName_Route124},
+ {24, 3, 2, 2, gMapName_Route125},
+ {20, 6, 3, 3, gMapName_Route126},
+ {23, 6, 3, 3, gMapName_Route127},
+ {23, 9, 4, 1, gMapName_Route128},
+ {24, 10, 2, 1, gMapName_Route129},
+ {21, 10, 3, 1, gMapName_Route130},
+ {18, 10, 3, 1, gMapName_Route131},
+ {15, 10, 2, 1, gMapName_Route132},
+ {12, 10, 3, 1, gMapName_Route133},
+ { 9, 10, 3, 1, gMapName_Route134},
+ {20, 3, 4, 3, gMapName_Underwater},
+ {20, 6, 3, 3, gMapName_Underwater},
+ {23, 6, 3, 3, gMapName_Underwater},
+ {23, 9, 4, 1, gMapName_Underwater},
+ {21, 7, 1, 1, gMapName_Underwater},
+ { 1, 13, 1, 1, gMapName_GraniteCave},
+ { 6, 2, 1, 1, gMapName_MtChimney},
+ {16, 2, 1, 1, gMapName_SafariZone},
+ {22, 12, 1, 1, gMapName_BattleFrontier},
+ { 0, 8, 1, 1, gMapName_PetalburgWoods},
+ { 2, 5, 1, 1, gMapName_RusturfTunnel},
+ { 6, 14, 1, 1, gMapName_AbandonedShip},
+ { 8, 7, 1, 1, gMapName_NewMauville},
+ { 0, 3, 1, 1, gMapName_MeteorFalls},
+ { 1, 2, 1, 1, gMapName_MeteorFalls},
+ {16, 4, 1, 1, gMapName_MtPyre},
+ {19, 3, 1, 1, gMapName_AquaHideoutOld},
+ {24, 4, 1, 1, gMapName_ShoalCave},
+ {24, 9, 1, 1, gMapName_SeafloorCavern},
+ {24, 9, 1, 1, gMapName_Underwater},
+ {27, 9, 1, 1, gMapName_VictoryRoad},
+ {17, 10, 1, 1, gMapName_MirageIsland},
+ {21, 7, 1, 1, gMapName_CaveOfOrigin},
+ {12, 14, 1, 1, gMapName_SouthernIsland},
+ { 6, 3, 1, 1, gMapName_FieryPath},
+ { 7, 3, 1, 1, gMapName_FieryPath},
+ { 6, 3, 1, 1, gMapName_JaggedPass},
+ { 7, 2, 1, 1, gMapName_JaggedPass},
+ {11, 10, 1, 1, gMapName_SealedChamber},
+ {11, 10, 1, 1, gMapName_Underwater},
+ {13, 0, 1, 1, gMapName_ScorchedSlab},
+ { 0, 10, 1, 1, gMapName_IslandCave},
+ { 8, 3, 1, 1, gMapName_DesertRuins},
+ {13, 2, 1, 1, gMapName_AncientTomb},
+ { 0, 0, 1, 1, gMapName_InsideOfTruck},
+ {19, 10, 1, 1, gMapName_SkyPillar},
+ { 0, 0, 1, 1, gMapName_SecretBase},
+ { 0, 0, 1, 1, gMapName_None},
+ { 0, 0, 1, 1, gMapName_PalletTown},
+ { 0, 0, 1, 1, gMapName_ViridianCity},
+ { 0, 0, 1, 1, gMapName_PewterCity},
+ { 0, 0, 1, 1, gMapName_CeruleanCity},
+ { 0, 0, 1, 1, gMapName_LavenderTown},
+ { 0, 0, 1, 1, gMapName_VermilionCity},
+ { 0, 0, 1, 1, gMapName_CeladonCity},
+ { 0, 0, 1, 1, gMapName_FuchsiaCity},
+ { 0, 0, 1, 1, gMapName_CinnabarIsland},
+ { 0, 0, 1, 1, gMapName_IndigoPlateau},
+ { 0, 0, 1, 1, gMapName_SaffronCity},
+ { 0, 0, 1, 1, gMapName_Route4},
+ { 0, 0, 1, 1, gMapName_Route10},
+ { 0, 0, 1, 1, gMapName_Route1},
+ { 0, 0, 1, 1, gMapName_Route2},
+ { 0, 0, 1, 1, gMapName_Route3},
+ { 0, 0, 1, 1, gMapName_Route4_2},
+ { 0, 0, 1, 1, gMapName_Route5},
+ { 0, 0, 1, 1, gMapName_Route6},
+ { 0, 0, 1, 1, gMapName_Route7},
+ { 0, 0, 1, 1, gMapName_Route8},
+ { 0, 0, 1, 1, gMapName_Route9},
+ { 0, 0, 1, 1, gMapName_Route10_2},
+ { 0, 0, 1, 1, gMapName_Route11},
+ { 0, 0, 1, 1, gMapName_Route12},
+ { 0, 0, 1, 1, gMapName_Route13},
+ { 0, 0, 1, 1, gMapName_Route14},
+ { 0, 0, 1, 1, gMapName_Route15},
+ { 0, 0, 1, 1, gMapName_Route16},
+ { 0, 0, 1, 1, gMapName_Route17},
+ { 0, 0, 1, 1, gMapName_Route18},
+ { 0, 0, 1, 1, gMapName_Route19},
+ { 0, 0, 1, 1, gMapName_Route20},
+ { 0, 0, 1, 1, gMapName_Route21},
+ { 0, 0, 1, 1, gMapName_Route22},
+ { 0, 0, 1, 1, gMapName_Route23},
+ { 0, 0, 1, 1, gMapName_Route24},
+ { 0, 0, 1, 1, gMapName_Route25},
+ { 0, 0, 1, 1, gMapName_ViridianForest},
+ { 0, 0, 1, 1, gMapName_MtMoon},
+ { 0, 0, 1, 1, gMapName_SSAnne},
+ { 0, 0, 1, 1, gMapName_UndergroundPath},
+ { 0, 0, 1, 1, gMapName_UndergroundPath2},
+ { 0, 0, 1, 1, gMapName_DiglettsCave},
+ { 0, 0, 1, 1, gMapName_KantoVictoryRoad},
+ { 0, 0, 1, 1, gMapName_RocketHideout},
+ { 0, 0, 1, 1, gMapName_SilphCo},
+ { 0, 0, 1, 1, gMapName_PokemonMansion},
+ { 0, 0, 1, 1, gMapName_KantoSafariZone},
+ { 0, 0, 1, 1, gMapName_PokemonLeague},
+ { 0, 0, 1, 1, gMapName_RockTunnel},
+ { 0, 0, 1, 1, gMapName_SeafoamIslands},
+ { 0, 0, 1, 1, gMapName_PokemonTower},
+ { 0, 0, 1, 1, gMapName_CeruleanCave},
+ { 0, 0, 1, 1, gMapName_PowerPlant},
+ { 0, 0, 1, 1, gMapName_OneIsland},
+ { 0, 0, 1, 1, gMapName_TwoIsland},
+ { 0, 0, 1, 1, gMapName_ThreeIsland},
+ { 0, 0, 1, 1, gMapName_FourIsland},
+ { 0, 0, 1, 1, gMapName_FiveIsland},
+ { 0, 0, 1, 1, gMapName_SevenIsland},
+ { 0, 0, 1, 1, gMapName_SixIsland},
+ { 0, 0, 1, 1, gMapName_KindleRoad},
+ { 0, 0, 1, 1, gMapName_TreasureBeach},
+ { 0, 0, 1, 1, gMapName_CapeBrink},
+ { 0, 0, 1, 1, gMapName_BondBridge},
+ { 0, 0, 1, 1, gMapName_ThreeIslePort},
+ { 0, 0, 1, 1, gMapName_SeviiIsle6},
+ { 0, 0, 1, 1, gMapName_SeviiIsle7},
+ { 0, 0, 1, 1, gMapName_SeviiIsle8},
+ { 0, 0, 1, 1, gMapName_SeviiIsle9},
+ { 0, 0, 1, 1, gMapName_ResortGorgeous},
+ { 0, 0, 1, 1, gMapName_WaterLabyrinth},
+ { 0, 0, 1, 1, gMapName_FiveIsleMeadow},
+ { 0, 0, 1, 1, gMapName_MemorialPillar},
+ { 0, 0, 1, 1, gMapName_OutcastIsland},
+ { 0, 0, 1, 1, gMapName_GreenPath},
+ { 0, 0, 1, 1, gMapName_WaterPath},
+ { 0, 0, 1, 1, gMapName_RuinValley},
+ { 0, 0, 1, 1, gMapName_TrainerTower},
+ { 0, 0, 1, 1, gMapName_CanyonEntrance},
+ { 0, 0, 1, 1, gMapName_SevaultCanyon},
+ { 0, 0, 1, 1, gMapName_TanobyRuins},
+ { 0, 0, 1, 1, gMapName_SeviiIsle22},
+ { 0, 0, 1, 1, gMapName_SeviiIsle23},
+ { 0, 0, 1, 1, gMapName_SeviiIsle24},
+ { 0, 0, 1, 1, gMapName_NavelRock},
+ { 0, 0, 1, 1, gMapName_MtEmber},
+ { 0, 0, 1, 1, gMapName_BerryForest},
+ { 0, 0, 1, 1, gMapName_IcefallCave},
+ { 0, 0, 1, 1, gMapName_RocketWarehouse},
+ { 0, 0, 1, 1, gMapName_TrainerTower2},
+ { 0, 0, 1, 1, gMapName_DottedHole},
+ { 0, 0, 1, 1, gMapName_LostCave},
+ { 0, 0, 1, 1, gMapName_PatternBush},
+ { 0, 0, 1, 1, gMapName_AlteringCave},
+ { 0, 0, 1, 1, gMapName_TanobyChambers},
+ { 0, 0, 1, 1, gMapName_ThreeIslePath},
+ { 0, 0, 1, 1, gMapName_TanobyKey},
+ { 0, 0, 1, 1, gMapName_BirthIsland},
+ { 0, 0, 1, 1, gMapName_MoneanChamber},
+ { 0, 0, 1, 1, gMapName_LiptooChamber},
+ { 0, 0, 1, 1, gMapName_WeepthChamber},
+ { 0, 0, 1, 1, gMapName_DilfordChamber},
+ { 0, 0, 1, 1, gMapName_ScufibChamber},
+ { 0, 0, 1, 1, gMapName_RixyChamber},
+ { 0, 0, 1, 1, gMapName_ViapoisChamber},
+ { 0, 0, 1, 1, gMapName_EmberSpa},
+ { 0, 0, 1, 1, gMapName_SpecialArea},
+ {19, 3, 1, 1, gMapName_AquaHideout},
+ { 6, 3, 1, 1, gMapName_MagmaHideout},
+ { 8, 2, 1, 1, gMapName_MirageTower},
+ { 0, 0, 1, 1, gMapName_BirthIsland},
+ { 0, 0, 1, 1, gMapName_FarawayIsland},
+ {22, 12, 1, 1, gMapName_ArtisanCave},
+ { 0, 0, 1, 1, gMapName_MarineCave},
+ { 0, 0, 1, 1, gMapName_Underwater},
+ { 0, 0, 1, 1, gMapName_TerraCave},
+ { 0, 10, 1, 3, gMapName_Underwater},
+ {24, 3, 2, 2, gMapName_Underwater},
+ {24, 10, 2, 1, gMapName_Underwater},
+ { 2, 0, 1, 1, gMapName_DesertUnderpass},
+ { 6, 8, 1, 1, gMapName_AlteringCave},
+ { 0, 0, 1, 1, gMapName_NavelRock},
+ { 8, 4, 1, 1, gMapName_TrainerHill}
+};
+
+#endif //GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
diff --git a/include/field_effect.h b/include/field_effect.h
index aa3f7eba0..629ae07c7 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -69,9 +69,10 @@ enum FieldEffectScriptIdx
FLDEFF_USE_TELEPORT
};
+extern u32 gFieldEffectArguments[8];
+
u8 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
-
-extern u32 gFieldEffectArguments[8];
+void sub_80B69DC(void);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/flags.h b/include/flags.h
index 7d825feba..474037a0e 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -65,6 +65,9 @@
#define SYS_SHOAL_TIDE CODE_FLAGS + 0x3A
#define SYS_RIBBON_GET CODE_FLAGS + 0x3B
+#define FLAG_UNLOCK_BATTLE_FRONTIER CODE_FLAGS + 0x48
+#define FLAG_UNLOCK_SOUTHERN_ISLAND CODE_FLAGS + 0x49
+
#define SYS_PC_LANETTE CODE_FLAGS + 0x4B
#define SYS_MYSTERY_EVENT_ENABLE CODE_FLAGS + 0x4C
#define SYS_ENC_UP_ITEM CODE_FLAGS + 0x4D
diff --git a/include/heal_location.h b/include/heal_location.h
new file mode 100644
index 000000000..1f966f1ae
--- /dev/null
+++ b/include/heal_location.h
@@ -0,0 +1,25 @@
+#ifndef GUARD_HEAL_LOCATION_H
+#define GUARD_HEAL_LOCATION_H
+
+// Exported type declarations
+
+struct UnkStruct_0859F534 {
+ const union AffineAnimCmd *const *const affineAnims;
+ void (* callback)(struct Sprite *sprite);
+};
+
+struct HealLocation
+{
+ s8 group;
+ s8 map;
+ u16 x;
+ u16 y;
+};
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+const struct HealLocation *GetHealLocationPointer(u32 loc);
+
+#endif //GUARD_HEAL_LOCATION_H
diff --git a/include/menu.h b/include/menu.h
index d8b2afc5c..e93d688e4 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -29,5 +29,7 @@ bool8 free_temp_tile_data_buffers_if_possible(void);
u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
s8 sub_8198C58(void);
+void do_scheduled_bg_tilemap_copies_to_vram(void);
+void clear_scheduled_bg_copies_to_vram(void);
#endif // GUARD_MENU_H
diff --git a/include/overworld.h b/include/overworld.h
index 19bcaaf01..ea3d27319 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -53,13 +53,16 @@ void Overworld_ChangeMusicTo(u16);
bool32 is_c1_link_related_active(void);
void strange_npc_table_clear(void);
-const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8);
+const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16);
void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
void sub_8086230(void);
void c2_exit_to_overworld_2_switch(void);
bool32 sub_8087598(void);
void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
void warp_in(void);
+u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
+void sub_8086194(void);
+void sub_8084CCC(u8 spawn);
void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum);
void c2_load_new_map(void);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
diff --git a/include/party_menu.h b/include/party_menu.h
index c93f63a6d..7a7d59cd0 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -2,6 +2,7 @@
#define GUARD_PARTY_MENU_H
bool8 pokemon_has_move(struct Pokemon *, u16);
+void sub_81B58A8(void);
void DoWallyTutorialBagMenu(void);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/region_map.h b/include/region_map.h
index 52e7376be..90c81931a 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -1,227 +1,314 @@
#ifndef GUARD_REGION_MAP_H
#define GUARD_REGION_MAP_H
+#include "bg.h"
+
// Exported type declarations
enum {
- REGION_MAP_LITTLEROOT_TOWN,
- REGION_MAP_OLDALE_TOWN,
- REGION_MAP_DEWFORD_TOWN,
- REGION_MAP_LAVARIDGE_TOWN,
- REGION_MAP_FALLARBOR_TOWN,
- REGION_MAP_VERDANTURF_TOWN,
- REGION_MAP_PACIFIDLOG_TOWN,
- REGION_MAP_PETALBURG_CITY,
- REGION_MAP_SLATEPORT_CITY,
- REGION_MAP_MAUVILLE_CITY,
- REGION_MAP_RUSTBORO_CITY,
- REGION_MAP_FORTREE_CITY,
- REGION_MAP_LILYCOVE_CITY,
- REGION_MAP_MOSSDEEP_CITY,
- REGION_MAP_SOOTOPOLIS_CITY,
- REGION_MAP_EVER_GRANDE_CITY,
- REGION_MAP_ROUTE_101,
- REGION_MAP_ROUTE_102,
- REGION_MAP_ROUTE_103,
- REGION_MAP_ROUTE_104,
- REGION_MAP_ROUTE_105,
- REGION_MAP_ROUTE_106,
- REGION_MAP_ROUTE_107,
- REGION_MAP_ROUTE_108,
- REGION_MAP_ROUTE_109,
- REGION_MAP_ROUTE_110,
- REGION_MAP_ROUTE_111,
- REGION_MAP_ROUTE_112,
- REGION_MAP_ROUTE_113,
- REGION_MAP_ROUTE_114,
- REGION_MAP_ROUTE_115,
- REGION_MAP_ROUTE_116,
- REGION_MAP_ROUTE_117,
- REGION_MAP_ROUTE_118,
- REGION_MAP_ROUTE_119,
- REGION_MAP_ROUTE_120,
- REGION_MAP_ROUTE_121,
- REGION_MAP_ROUTE_122,
- REGION_MAP_ROUTE_123,
- REGION_MAP_ROUTE_124,
- REGION_MAP_ROUTE_125,
- REGION_MAP_ROUTE_126,
- REGION_MAP_ROUTE_127,
- REGION_MAP_ROUTE_128,
- REGION_MAP_ROUTE_129,
- REGION_MAP_ROUTE_130,
- REGION_MAP_ROUTE_131,
- REGION_MAP_ROUTE_132,
- REGION_MAP_ROUTE_133,
- REGION_MAP_ROUTE_134,
- REGION_MAP_UNDERWATER_124,
- REGION_MAP_UNDERWATER_125,
- REGION_MAP_UNDERWATER_126,
- REGION_MAP_UNDERWATER_127,
- REGION_MAP_UNDERWATER_128,
- REGION_MAP_GRANITE_CAVE,
- REGION_MAP_MT_CHIMNEY,
- REGION_MAP_SAFARI_ZONE,
- REGION_MAP_BATTLE_FRONTIER,
- REGION_MAP_PETALBURG_WOODS,
- REGION_MAP_RUSTURF_TUNNEL,
- REGION_MAP_ABANDONED_SHIP,
- REGION_MAP_NEW_MAUVILLE,
- REGION_MAP_METEOR_FALLS,
- REGION_MAP_METEOR_FALLS2,
- REGION_MAP_MT_PYRE,
- REGION_MAP_AQUA_HIDEOUT_OLD,
- REGION_MAP_SHOAL_CAVE,
- REGION_MAP_SEAFLOOR_CAVERN,
- REGION_MAP_UNDERWATER,
- REGION_MAP_VICTORY_ROAD,
- REGION_MAP_MIRAGE_ISLAND,
- REGION_MAP_CAVE_OF_ORIGIN,
- REGION_MAP_SOUTHERN_ISLAND,
- REGION_MAP_FIERY_PATH,
- REGION_MAP_FIERY_PATH2,
- REGION_MAP_JAGGED_PASS,
- REGION_MAP_JAGGED_PASS2,
- REGION_MAP_SEALED_CHAMBER,
- REGION_MAP_UNDERWATER_SEALED_CHAMBER,
- REGION_MAP_SCORCHED_SLAB,
- REGION_MAP_ISLAND_CAVE,
- REGION_MAP_DESERT_RUINS,
- REGION_MAP_ANCIENT_TOMB,
- REGION_MAP_INSIDE_OF_TRUCK,
- REGION_MAP_SKY_PILLAR,
- REGION_MAP_SECRET_BASE,
- REGION_MAP_NONE,
- REGION_MAP_PALLET_TOWN,
- REGION_MAP_VIRIDIAN_CITY,
- REGION_MAP_PEWTER_CITY,
- REGION_MAP_CERULEAN_CITY,
- REGION_MAP_LAVENDER_TOWN,
- REGION_MAP_VERMILION_CITY,
- REGION_MAP_CELADON_CITY,
- REGION_MAP_FUCHSIA_CITY,
- REGION_MAP_CINNABAR_ISLAND,
- REGION_MAP_INDIGO_PLATEAU,
- REGION_MAP_SAFFRON_CITY,
- REGION_MAP_ROUTE_4,
- REGION_MAP_ROUTE_10,
- REGION_MAP_ROUTE_1,
- REGION_MAP_ROUTE_2,
- REGION_MAP_ROUTE_3,
- REGION_MAP_ROUTE_4_2,
- REGION_MAP_ROUTE_5,
- REGION_MAP_ROUTE_6,
- REGION_MAP_ROUTE_7,
- REGION_MAP_ROUTE_8,
- REGION_MAP_ROUTE_9,
- REGION_MAP_ROUTE_10_2,
- REGION_MAP_ROUTE_11,
- REGION_MAP_ROUTE_12,
- REGION_MAP_ROUTE_13,
- REGION_MAP_ROUTE_14,
- REGION_MAP_ROUTE_15,
- REGION_MAP_ROUTE_16,
- REGION_MAP_ROUTE_17,
- REGION_MAP_ROUTE_18,
- REGION_MAP_ROUTE_19,
- REGION_MAP_ROUTE_20,
- REGION_MAP_ROUTE_21,
- REGION_MAP_ROUTE_22,
- REGION_MAP_ROUTE_23,
- REGION_MAP_ROUTE_24,
- REGION_MAP_ROUTE_25,
- REGION_MAP_VIRIDIAN_FOREST,
- REGION_MAP_MT_MOON,
- REGION_MAP_S_S_ANNE,
- REGION_MAP_UNDERGROUND_PATH,
- REGION_MAP_UNDERGROUND_PATH_2,
- REGION_MAP_DIGLETTS_CAVE,
- REGION_MAP_KANTO_VICTORY_ROAD,
- REGION_MAP_ROCKET_HIDEOUT,
- REGION_MAP_SILPH_CO,
- REGION_MAP_POKEMON_MANSION,
- REGION_MAP_KANTO_SAFARI_ZONE,
- REGION_MAP_POKEMON_LEAGUE,
- REGION_MAP_ROCK_TUNNEL,
- REGION_MAP_SEAFOAM_ISLANDS,
- REGION_MAP_POKEMON_TOWER,
- REGION_MAP_CERULEAN_CAVE,
- REGION_MAP_POWER_PLANT,
- REGION_MAP_ONE_ISLAND,
- REGION_MAP_TWO_ISLAND,
- REGION_MAP_THREE_ISLAND,
- REGION_MAP_FOUR_ISLAND,
- REGION_MAP_FIVE_ISLAND,
- REGION_MAP_SEVEN_ISLAND,
- REGION_MAP_SIX_ISLAND,
- REGION_MAP_KINDLE_ROAD,
- REGION_MAP_TREASURE_BEACH,
- REGION_MAP_CAPE_BRINK,
- REGION_MAP_BOND_BRIDGE,
- REGION_MAP_THREE_ISLE_PORT,
- REGION_MAP_SEVII_ISLE_6,
- REGION_MAP_SEVII_ISLE_7,
- REGION_MAP_SEVII_ISLE_8,
- REGION_MAP_SEVII_ISLE_9,
- REGION_MAP_RESORT_GORGEOUS,
- REGION_MAP_WATER_LABYRINTH,
- REGION_MAP_FIVE_ISLE_MEADOW,
- REGION_MAP_MEMORIAL_PILLAR,
- REGION_MAP_OUTCAST_ISLAND,
- REGION_MAP_GREEN_PATH,
- REGION_MAP_WATER_PATH,
- REGION_MAP_RUIN_VALLEY,
- REGION_MAP_TRAINER_TOWER,
- REGION_MAP_CANYON_ENTRANCE,
- REGION_MAP_SEVAULT_CANYON,
- REGION_MAP_TANOBY_RUINS,
- REGION_MAP_SEVII_ISLE_22,
- REGION_MAP_SEVII_ISLE_23,
- REGION_MAP_SEVII_ISLE_24,
- REGION_MAP_NAVEL_ROCK,
- REGION_MAP_MT_EMBER,
- REGION_MAP_BERRY_FOREST,
- REGION_MAP_ICEFALL_CAVE,
- REGION_MAP_ROCKET_WAREHOUSE,
- REGION_MAP_TRAINER_TOWER_2,
- REGION_MAP_DOTTED_HOLE,
- REGION_MAP_LOST_CAVE,
- REGION_MAP_PATTERN_BUSH,
- REGION_MAP_ALTERING_CAVE,
- REGION_MAP_TANOBY_CHAMBERS,
- REGION_MAP_THREE_ISLE_PATH,
- REGION_MAP_TANOBY_KEY,
- REGION_MAP_BIRTH_ISLAND,
- REGION_MAP_MONEAN_CHAMBER,
- REGION_MAP_LIPTOO_CHAMBER,
- REGION_MAP_WEEPTH_CHAMBER,
- REGION_MAP_DILFORD_CHAMBER,
- REGION_MAP_SCUFIB_CHAMBER,
- REGION_MAP_RIXY_CHAMBER,
- REGION_MAP_VIAPOIS_CHAMBER,
- REGION_MAP_EMBER_SPA,
- REGION_MAP_SPECIAL_AREA,
- REGION_MAP_AQUA_HIDEOUT,
- REGION_MAP_MAGMA_HIDEOUT,
- REGION_MAP_MIRAGE_TOWER,
- REGION_MAP_BIRTH_ISLAND_2,
- REGION_MAP_FARAWAY_ISLAND,
- REGION_MAP_ARTISAN_CAVE,
- REGION_MAP_MARINE_CAVE,
- REGION_MAP_UNDERWATER_MARINE_CAVE,
- REGION_MAP_TERRA_CAVE,
- REGION_MAP_UNDERWATER_TERRA_CAVE,
- REGION_MAP_UNDERWATER_UNK1,
- REGION_MAP_UNDERWATER_UNK2,
- REGION_MAP_DESERT_UNDERPASS,
- REGION_MAP_ALTERING_CAVE_2,
- REGION_MAP_NAVEL_ROCK2,
- REGION_MAP_TRAINER_HILL
+ MAPSEC_LITTLEROOT_TOWN,
+ MAPSEC_OLDALE_TOWN,
+ MAPSEC_DEWFORD_TOWN,
+ MAPSEC_LAVARIDGE_TOWN,
+ MAPSEC_FALLARBOR_TOWN,
+ MAPSEC_VERDANTURF_TOWN,
+ MAPSEC_PACIFIDLOG_TOWN,
+ MAPSEC_PETALBURG_CITY,
+ MAPSEC_SLATEPORT_CITY,
+ MAPSEC_MAUVILLE_CITY,
+ MAPSEC_RUSTBORO_CITY,
+ MAPSEC_FORTREE_CITY,
+ MAPSEC_LILYCOVE_CITY,
+ MAPSEC_MOSSDEEP_CITY,
+ MAPSEC_SOOTOPOLIS_CITY,
+ MAPSEC_EVER_GRANDE_CITY,
+ MAPSEC_ROUTE_101,
+ MAPSEC_ROUTE_102,
+ MAPSEC_ROUTE_103,
+ MAPSEC_ROUTE_104,
+ MAPSEC_ROUTE_105,
+ MAPSEC_ROUTE_106,
+ MAPSEC_ROUTE_107,
+ MAPSEC_ROUTE_108,
+ MAPSEC_ROUTE_109,
+ MAPSEC_ROUTE_110,
+ MAPSEC_ROUTE_111,
+ MAPSEC_ROUTE_112,
+ MAPSEC_ROUTE_113,
+ MAPSEC_ROUTE_114,
+ MAPSEC_ROUTE_115,
+ MAPSEC_ROUTE_116,
+ MAPSEC_ROUTE_117,
+ MAPSEC_ROUTE_118,
+ MAPSEC_ROUTE_119,
+ MAPSEC_ROUTE_120,
+ MAPSEC_ROUTE_121,
+ MAPSEC_ROUTE_122,
+ MAPSEC_ROUTE_123,
+ MAPSEC_ROUTE_124,
+ MAPSEC_ROUTE_125,
+ MAPSEC_ROUTE_126,
+ MAPSEC_ROUTE_127,
+ MAPSEC_ROUTE_128,
+ MAPSEC_ROUTE_129,
+ MAPSEC_ROUTE_130,
+ MAPSEC_ROUTE_131,
+ MAPSEC_ROUTE_132,
+ MAPSEC_ROUTE_133,
+ MAPSEC_ROUTE_134,
+ MAPSEC_UNDERWATER_124,
+ MAPSEC_UNDERWATER_125,
+ MAPSEC_UNDERWATER_126,
+ MAPSEC_UNDERWATER_127,
+ MAPSEC_UNDERWATER_SOOTOPOLIS,
+ MAPSEC_GRANITE_CAVE,
+ MAPSEC_MT_CHIMNEY,
+ MAPSEC_SAFARI_ZONE,
+ MAPSEC_BATTLE_FRONTIER,
+ MAPSEC_PETALBURG_WOODS,
+ MAPSEC_RUSTURF_TUNNEL,
+ MAPSEC_ABANDONED_SHIP,
+ MAPSEC_NEW_MAUVILLE,
+ MAPSEC_METEOR_FALLS,
+ MAPSEC_METEOR_FALLS2,
+ MAPSEC_MT_PYRE,
+ MAPSEC_AQUA_HIDEOUT_OLD,
+ MAPSEC_SHOAL_CAVE,
+ MAPSEC_SEAFLOOR_CAVERN,
+ MAPSEC_UNDERWATER_128,
+ MAPSEC_VICTORY_ROAD,
+ MAPSEC_MIRAGE_ISLAND,
+ MAPSEC_CAVE_OF_ORIGIN,
+ MAPSEC_SOUTHERN_ISLAND,
+ MAPSEC_FIERY_PATH,
+ MAPSEC_FIERY_PATH2,
+ MAPSEC_JAGGED_PASS,
+ MAPSEC_JAGGED_PASS2,
+ MAPSEC_SEALED_CHAMBER,
+ MAPSEC_UNDERWATER_SEALED_CHAMBER,
+ MAPSEC_SCORCHED_SLAB,
+ MAPSEC_ISLAND_CAVE,
+ MAPSEC_DESERT_RUINS,
+ MAPSEC_ANCIENT_TOMB,
+ MAPSEC_INSIDE_OF_TRUCK,
+ MAPSEC_SKY_PILLAR,
+ MAPSEC_SECRET_BASE,
+ MAPSEC_SS_TIDAL,
+ MAPSEC_PALLET_TOWN,
+ MAPSEC_VIRIDIAN_CITY,
+ MAPSEC_PEWTER_CITY,
+ MAPSEC_CERULEAN_CITY,
+ MAPSEC_LAVENDER_TOWN,
+ MAPSEC_VERMILION_CITY,
+ MAPSEC_CELADON_CITY,
+ MAPSEC_FUCHSIA_CITY,
+ MAPSEC_CINNABAR_ISLAND,
+ MAPSEC_INDIGO_PLATEAU,
+ MAPSEC_SAFFRON_CITY,
+ MAPSEC_ROUTE_4,
+ MAPSEC_ROUTE_10,
+ MAPSEC_ROUTE_1,
+ MAPSEC_ROUTE_2,
+ MAPSEC_ROUTE_3,
+ MAPSEC_ROUTE_4_2,
+ MAPSEC_ROUTE_5,
+ MAPSEC_ROUTE_6,
+ MAPSEC_ROUTE_7,
+ MAPSEC_ROUTE_8,
+ MAPSEC_ROUTE_9,
+ MAPSEC_ROUTE_10_2,
+ MAPSEC_ROUTE_11,
+ MAPSEC_ROUTE_12,
+ MAPSEC_ROUTE_13,
+ MAPSEC_ROUTE_14,
+ MAPSEC_ROUTE_15,
+ MAPSEC_ROUTE_16,
+ MAPSEC_ROUTE_17,
+ MAPSEC_ROUTE_18,
+ MAPSEC_ROUTE_19,
+ MAPSEC_ROUTE_20,
+ MAPSEC_ROUTE_21,
+ MAPSEC_ROUTE_22,
+ MAPSEC_ROUTE_23,
+ MAPSEC_ROUTE_24,
+ MAPSEC_ROUTE_25,
+ MAPSEC_VIRIDIAN_FOREST,
+ MAPSEC_MT_MOON,
+ MAPSEC_S_S_ANNE,
+ MAPSEC_UNDERGROUND_PATH,
+ MAPSEC_UNDERGROUND_PATH_2,
+ MAPSEC_DIGLETTS_CAVE,
+ MAPSEC_KANTO_VICTORY_ROAD,
+ MAPSEC_ROCKET_HIDEOUT,
+ MAPSEC_SILPH_CO,
+ MAPSEC_POKEMON_MANSION,
+ MAPSEC_KANTO_SAFARI_ZONE,
+ MAPSEC_POKEMON_LEAGUE,
+ MAPSEC_ROCK_TUNNEL,
+ MAPSEC_SEAFOAM_ISLANDS,
+ MAPSEC_POKEMON_TOWER,
+ MAPSEC_CERULEAN_CAVE,
+ MAPSEC_POWER_PLANT,
+ MAPSEC_ONE_ISLAND,
+ MAPSEC_TWO_ISLAND,
+ MAPSEC_THREE_ISLAND,
+ MAPSEC_FOUR_ISLAND,
+ MAPSEC_FIVE_ISLAND,
+ MAPSEC_SEVEN_ISLAND,
+ MAPSEC_SIX_ISLAND,
+ MAPSEC_KINDLE_ROAD,
+ MAPSEC_TREASURE_BEACH,
+ MAPSEC_CAPE_BRINK,
+ MAPSEC_BOND_BRIDGE,
+ MAPSEC_THREE_ISLE_PORT,
+ MAPSEC_SEVII_ISLE_6,
+ MAPSEC_SEVII_ISLE_7,
+ MAPSEC_SEVII_ISLE_8,
+ MAPSEC_SEVII_ISLE_9,
+ MAPSEC_RESORT_GORGEOUS,
+ MAPSEC_WATER_LABYRINTH,
+ MAPSEC_FIVE_ISLE_MEADOW,
+ MAPSEC_MEMORIAL_PILLAR,
+ MAPSEC_OUTCAST_ISLAND,
+ MAPSEC_GREEN_PATH,
+ MAPSEC_WATER_PATH,
+ MAPSEC_RUIN_VALLEY,
+ MAPSEC_TRAINER_TOWER,
+ MAPSEC_CANYON_ENTRANCE,
+ MAPSEC_SEVAULT_CANYON,
+ MAPSEC_TANOBY_RUINS,
+ MAPSEC_SEVII_ISLE_22,
+ MAPSEC_SEVII_ISLE_23,
+ MAPSEC_SEVII_ISLE_24,
+ MAPSEC_NAVEL_ROCK,
+ MAPSEC_MT_EMBER,
+ MAPSEC_BERRY_FOREST,
+ MAPSEC_ICEFALL_CAVE,
+ MAPSEC_ROCKET_WAREHOUSE,
+ MAPSEC_TRAINER_TOWER_2,
+ MAPSEC_DOTTED_HOLE,
+ MAPSEC_LOST_CAVE,
+ MAPSEC_PATTERN_BUSH,
+ MAPSEC_ALTERING_CAVE,
+ MAPSEC_TANOBY_CHAMBERS,
+ MAPSEC_THREE_ISLE_PATH,
+ MAPSEC_TANOBY_KEY,
+ MAPSEC_BIRTH_ISLAND,
+ MAPSEC_MONEAN_CHAMBER,
+ MAPSEC_LIPTOO_CHAMBER,
+ MAPSEC_WEEPTH_CHAMBER,
+ MAPSEC_DILFORD_CHAMBER,
+ MAPSEC_SCUFIB_CHAMBER,
+ MAPSEC_RIXY_CHAMBER,
+ MAPSEC_VIAPOIS_CHAMBER,
+ MAPSEC_EMBER_SPA,
+ MAPSEC_SPECIAL_AREA,
+ MAPSEC_AQUA_HIDEOUT,
+ MAPSEC_MAGMA_HIDEOUT,
+ MAPSEC_MIRAGE_TOWER,
+ MAPSEC_BIRTH_ISLAND_2,
+ MAPSEC_FARAWAY_ISLAND,
+ MAPSEC_ARTISAN_CAVE,
+ MAPSEC_MARINE_CAVE,
+ MAPSEC_UNDERWATER_MARINE_CAVE,
+ MAPSEC_TERRA_CAVE,
+ MAPSEC_UNDERWATER_TERRA_CAVE,
+ MAPSEC_UNDERWATER_UNK1,
+ MAPSEC_UNDERWATER_129,
+ MAPSEC_DESERT_UNDERPASS,
+ MAPSEC_ALTERING_CAVE_2,
+ MAPSEC_NAVEL_ROCK2,
+ MAPSEC_TRAINER_HILL,
+ MAPSEC_NONE
+};
+
+enum
+{
+ INPUT_EVENT_NONE,
+ INPUT_EVENT_MOVE_START,
+ INPUT_EVENT_MOVE_CONT,
+ INPUT_EVENT_MOVE_END,
+ INPUT_EVENT_A_BUTTON,
+ INPUT_EVENT_B_BUTTON,
};
+enum {
+ MAPSECTYPE_NONE,
+ MAPSECTYPE_PLAIN,
+ MAPSECTYPE_CITY_CANFLY,
+ MAPSECTYPE_CITY_CANTFLY,
+ MAPSECTYPE_BATTLE_FRONTIER
+};
+
+struct RegionMap {
+ /*0x000*/ u16 mapSecId;
+ /*0x002*/ u8 iconDrawType;
+ /*0x003*/ u8 posWithinMapSec;
+ /*0x004*/ u8 mapSecName[0x14];
+ /*0x018*/ u8 (*inputCallback)(void);
+ /*0x01c*/ struct Sprite *cursorSprite;
+ /*0x020*/ struct Sprite *playerIconSprite;
+ /*0x024*/ s32 bg2x;
+ /*0x028*/ s32 bg2y;
+ /*0x02c*/ u32 bg2pa;
+ /*0x034*/ u32 bg2pc;
+ /*0x030*/ u32 bg2pb;
+ /*0x038*/ u32 bg2pd;
+ /*0x03c*/ s32 unk_03c;
+ /*0x040*/ s32 unk_040;
+ /*0x044*/ s32 unk_044;
+ /*0x048*/ s32 unk_048;
+ /*0x04c*/ s32 unk_04c;
+ /*0x050*/ s32 unk_050;
+ /*0x054*/ u16 cursorPosX;
+ /*0x056*/ u16 cursorPosY;
+ /*0x058*/ u16 cursorTileTag;
+ /*0x05a*/ u16 cursorPaletteTag;
+ /*0x05c*/ s16 scrollX;
+ /*0x05e*/ s16 scrollY;
+ /*0x060*/ s16 unk_060;
+ /*0x062*/ s16 unk_062;
+ /*0x064*/ u16 zoomedCursorPosX;
+ /*0x066*/ u16 zoomedCursorPosY;
+ /*0x068*/ s16 zoomedCursorDeltaY;
+ /*0x06a*/ s16 zoomedCursorDeltaX;
+ /*0x06c*/ u16 zoomedCursorMovementFrameCounter;
+ /*0x06e*/ u16 unk_06e;
+ /*0x070*/ u16 playerIconTileTag;
+ /*0x072*/ u16 playerIconPaletteTag;
+ /*0x074*/ u16 playerIconSpritePosX;
+ /*0x076*/ u16 playerIconSpritePosY;
+ /*0x078*/ bool8 zoomed;
+ /*0x079*/ u8 initStep;
+ /*0x07a*/ s8 cursorMovementFrameCounter;
+ /*0x07b*/ s8 cursorDeltaX;
+ /*0x07c*/ s8 cursorDeltaY;
+ /*0x07d*/ bool8 needUpdateVideoRegs;
+ /*0x07e*/ bool8 blinkPlayerIcon;
+ /*0x07f*/ bool8 playerIsInCave;
+ /*0x080*/ u8 bgNum;
+ /*0x081*/ u8 charBaseIdx;
+ /*0x082*/ u8 mapBaseIdx;
+ /*0x083*/ bool8 bgManaged;
+ /*0x084*/ u8 filler_084[0x100];
+ /*0x184*/ u8 cursorSmallImage[0x100];
+ /*0x284*/ u8 cursorLargeImage[0x600];
+}; // size = 0x884
+
// Exported RAM declarations
// Exported ROM declarations
-void GetMapName(u8 *, u16, u16);
+void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed);
+bool8 sub_8122DB0(void);
+void UpdateRegionMapVideoRegs(void);
+void InitRegionMap(struct RegionMap *regionMap, u8 argument);
+u8 sub_81230AC(void);
+bool8 sub_8123514(void);
+void FreeRegionMapIconResources(void);
+u16 GetRegionMapSectionIdAt(u16 x, u16 y);
+void CreateRegionMapPlayerIcon(u16 x, u16 y);
+void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
+u8 *GetMapName(u8 *, u16, u16);
+bool32 sub_8124668(u8 mapSecId);
#endif //GUARD_REGION_MAP_H
diff --git a/include/rom6.h b/include/rom6.h
index a6aab998c..b4a972794 100644
--- a/include/rom6.h
+++ b/include/rom6.h
@@ -3,6 +3,7 @@
void sub_81357FC(u8, void(void));
u8 GetLeadMonIndex(void);
+u8 GetSSTidalLocation(u8 *grp, u8 *num, s16 *x, s16 *y);
void sub_813BADC(bool8);
#endif //GUARD_ROM6_H
diff --git a/include/secret_base.h b/include/secret_base.h
index 14defff26..630a36773 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -8,5 +8,6 @@
// Exported ROM declarations
void sub_80E9578(void);
void sub_80E980C(void);
+u8 *GetSecretBaseMapName(u8 *dest);
#endif //GUARD_SECRET_BASE_H
diff --git a/include/strings.h b/include/strings.h
index fcdb1eca4..79100cdd6 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -70,6 +70,13 @@ extern const u8 gText_Cushion[];
extern const u8 gText_Decorate[];
extern const u8 gText_PutAway[];
extern const u8 gText_Toss2[];
+extern const u8 gText_Hoenn[];
+extern const u8 gText_Ferry[];
+extern const u8 gText_SecretBase[];
+extern const u8 gText_Hideout[];
+extern const u8 gText_FlyToWhere[];
+extern const u8 gUnknown_085EC782[];
+extern const u8 gUnknown_085EC791[];
extern const u8 gText_ApostropheSBase[];
extern const u8 gText_NoRegistry[];
extern const u8 gText_OkayToDeleteFromRegistry[];
diff --git a/include/vars.h b/include/vars.h
index c097faff7..f8057d4b5 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -29,13 +29,14 @@
#define VAR_POISON_STEP_COUNTER 0x402B
#define VAR_RESET_RTC_ENABLE 0x402C
+#define VAR_0x4037 0x4037
#define VAR_DAYS 0x4040
#define VAR_DEPT_STORE_FLOOR 0x4043
#define VAR_STORAGE_UNKNOWN 0x4036
#define VAR_POKELOT_PRIZE 0x4045
#define VAR_NATIONAL_DEX 0x4046
-#define VAR_SEEDOT_SIZE_RECORD 0x4047
+#define VAR_SEEDOT_SIZE_RECORD 0x4047
#define VAR_ASH_GATHER_COUNT 0x4048
#define VAR_BIRCH_STATE 0x4049
#define VAR_CRUISE_STEP_COUNT 0x404A
diff --git a/ld_script.txt b/ld_script.txt
index c8d31c846..5fef46a46 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -167,8 +167,8 @@ SECTIONS {
src/mail.o(.text);
asm/menu_helpers.o(.text);
asm/dewford_trend.o(.text);
- asm/heal_location.o(.text);
- asm/region_map.o(.text);
+ src/heal_location.o(.text);
+ src/region_map.o(.text);
asm/cute_sketch.o(.text);
src/decoration.o(.text);
asm/slot_machine.o(.text);
@@ -212,7 +212,7 @@ SECTIONS {
asm/player_pc.o(.text);
asm/intro.o(.text);
src/reset_save_heap.o(.text);
- asm/field_region_map.o(.text);
+ src/field_region_map.o(.text);
asm/battle_anim_8170478.o(.text);
asm/hall_of_fame.o(.text);
asm/credits.o(.text);
@@ -410,8 +410,8 @@ SECTIONS {
data/mauville_old_man.o(.rodata);
src/mail.o(.rodata);
data/menu_helpers.o(.rodata);
- data/heal_location.o(.rodata);
- data/region_map.o(.rodata);
+ src/heal_location.o(.rodata);
+ src/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
src/decoration.o(.rodata);
data/slot_machine.o(.rodata);
@@ -433,7 +433,7 @@ SECTIONS {
src/battle_controller_wally.o(.rodata);
data/player_pc.o(.rodata);
data/intro.o(.rodata);
- data/field_region_map.o(.rodata);
+ src/field_region_map.o(.rodata);
data/battle_anim_8170478.o(.rodata);
data/hall_of_fame.o(.rodata);
data/credits.o(.rodata);
diff --git a/src/decoration.c b/src/decoration.c
index 0179d36a1..b435c3db5 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1603,7 +1603,7 @@ void sub_81289F0(u8 taskId)
ScriptContext1_SetupScript(gUnknown_08275D1F);
}
gSprites[sDecor_CameraSpriteObjectIdx1].pos1.y += 2;
- if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE)
+ if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
{
TV_PutSecretBaseVisitOnTheAir();
}
@@ -2222,7 +2222,7 @@ void sub_81298EC(u8 taskId)
{
StringExpandPlaceholders(gStringVar4, gText_DecorationReturnedToPC);
DisplayItemMessageOnField(taskId, gStringVar4, sub_8129D64);
- if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE)
+ if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
{
TV_PutSecretBaseVisitOnTheAir();
}
diff --git a/src/field_region_map.c b/src/field_region_map.c
new file mode 100644
index 000000000..776ca6934
--- /dev/null
+++ b/src/field_region_map.c
@@ -0,0 +1,195 @@
+
+// Includes
+#include "global.h"
+#include "main.h"
+#include "malloc.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "text.h"
+#include "window.h"
+#include "text_window.h"
+#include "palette.h"
+#include "menu.h"
+#include "strings.h"
+#include "international_string_util.h"
+#include "region_map.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+static EWRAM_DATA struct {
+ MainCallback callback;
+ u32 filler_004;
+ struct RegionMap regionMap;
+ u16 state;
+} *sFieldRegionMapHandler = NULL;
+
+// Static ROM declarations
+
+static void MCB2_InitRegionMapRegisters(void);
+static void VBCB_FieldUpdateRegionMap(void);
+static void MCB2_FieldUpdateRegionMap(void);
+static void FieldUpdateRegionMap(void);
+static void PrintRegionMapSecName(void);
+
+// .rodata
+
+static const struct BgTemplate gUnknown_085E5068[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ }, {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 28,
+ .screenSize = 2,
+ .paletteMode = 1,
+ .priority = 2,
+ .baseTile = 0
+ }
+};
+
+static const struct WindowTemplate gUnknown_085E5070[] = {
+ {
+ 0, 17, 17, 12, 2, 15, 0x0001
+ }, {
+ 0, 22, 1, 7, 2, 15, 0x0019
+ }, DUMMY_WIN_TEMPLATE
+};
+
+// .text
+
+void sub_817018C(MainCallback callback)
+{
+ SetVBlankCallback(NULL);
+ sFieldRegionMapHandler = malloc(sizeof(*sFieldRegionMapHandler));
+ sFieldRegionMapHandler->state = 0;
+ sFieldRegionMapHandler->callback = callback;
+ SetMainCallback2(MCB2_InitRegionMapRegisters);
+}
+
+static void MCB2_InitRegionMapRegisters(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, gUnknown_085E5068, 2);
+ InitWindows(gUnknown_085E5070);
+ DeactivateAllTextPrinters();
+ sub_809882C(0, 0x27, 0xd0);
+ clear_scheduled_bg_copies_to_vram();
+ SetMainCallback2(MCB2_FieldUpdateRegionMap);
+ SetVBlankCallback(VBCB_FieldUpdateRegionMap);
+}
+
+static void VBCB_FieldUpdateRegionMap(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void MCB2_FieldUpdateRegionMap(void)
+{
+ FieldUpdateRegionMap();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ do_scheduled_bg_tilemap_copies_to_vram();
+}
+
+static void FieldUpdateRegionMap(void)
+{
+ u8 offset;
+
+ switch (sFieldRegionMapHandler->state)
+ {
+ case 0:
+ InitRegionMap(&sFieldRegionMapHandler->regionMap, 0);
+ CreateRegionMapPlayerIcon(0, 0);
+ CreateRegionMapCursor(1, 1);
+ sFieldRegionMapHandler->state ++;
+ break;
+ case 1:
+ SetWindowBorderStyle(1, 0, 0x27, 0xd);
+ offset = GetStringCenterAlignXOffset(1, gText_Hoenn, 0x38);
+ PrintTextOnWindow(1, 1, gText_Hoenn, offset, 1, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+ SetWindowBorderStyle(0, 0, 0x27, 0xd);
+ PrintRegionMapSecName();
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ sFieldRegionMapHandler->state ++;
+ break;
+ case 2:
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(2);
+ sFieldRegionMapHandler->state ++;
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ sFieldRegionMapHandler->state ++;
+ }
+ break;
+ case 4:
+ switch (sub_81230AC())
+ {
+ case INPUT_EVENT_MOVE_END:
+ PrintRegionMapSecName();
+ break;
+ case INPUT_EVENT_A_BUTTON:
+ case INPUT_EVENT_B_BUTTON:
+ sFieldRegionMapHandler->state ++;
+ break;
+ }
+ break;
+ case 5:
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ sFieldRegionMapHandler->state ++;
+ break;
+ case 6:
+ if (!gPaletteFade.active)
+ {
+ FreeRegionMapIconResources();
+ SetMainCallback2(sFieldRegionMapHandler->callback);
+ if (sFieldRegionMapHandler != NULL)
+ {
+ free(sFieldRegionMapHandler);
+ sFieldRegionMapHandler = NULL;
+ }
+ FreeAllWindowBuffers();
+ }
+ break;
+ }
+}
+
+static void PrintRegionMapSecName(void)
+{
+ if (sFieldRegionMapHandler->regionMap.iconDrawType != MAPSECTYPE_NONE)
+ {
+ FillWindowPixelBuffer(0, 0x11);
+ PrintTextOnWindow(0, 1, sFieldRegionMapHandler->regionMap.mapSecName, 0, 1, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+ }
+ else
+ {
+ FillWindowPixelBuffer(0, 0x11);
+ CopyWindowToVram(0, 3);
+ }
+}
diff --git a/src/heal_location.c b/src/heal_location.c
new file mode 100644
index 000000000..e31a30fb4
--- /dev/null
+++ b/src/heal_location.c
@@ -0,0 +1,83 @@
+
+// Includes
+#include "global.h"
+#include "map_constants.h"
+#include "heal_location.h"
+
+#define HEAL_LOCATION(map, x, y) {MAP_GROUP_##map, MAP_ID_##map, x, y}
+
+// Static type declarations
+
+// Static RAM declarations
+
+// Static ROM declarations
+
+// .rodata
+
+static const struct HealLocation sHealLocations[] = {
+ HEAL_LOCATION(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2),
+ HEAL_LOCATION(LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2),
+ HEAL_LOCATION(PETALBURG_CITY, 20, 17),
+ HEAL_LOCATION(SLATEPORT_CITY, 19, 20),
+ HEAL_LOCATION(MAUVILLE_CITY, 22, 6),
+ HEAL_LOCATION(RUSTBORO_CITY, 16, 39),
+ HEAL_LOCATION(FORTREE_CITY, 5, 7),
+ HEAL_LOCATION(LILYCOVE_CITY, 24, 15),
+ HEAL_LOCATION(MOSSDEEP_CITY, 28, 17),
+ HEAL_LOCATION(SOOTOPOLIS_CITY, 43, 32),
+ HEAL_LOCATION(EVER_GRANDE_CITY, 27, 49),
+ HEAL_LOCATION(LITTLEROOT_TOWN, 5, 9),
+ HEAL_LOCATION(LITTLEROOT_TOWN, 14, 9),
+ HEAL_LOCATION(OLDALE_TOWN, 6, 17),
+ HEAL_LOCATION(DEWFORD_TOWN, 2, 11),
+ HEAL_LOCATION(LAVARIDGE_TOWN, 9, 7),
+ HEAL_LOCATION(FALLARBOR_TOWN, 14, 8),
+ HEAL_LOCATION(VERDANTURF_TOWN, 16, 4),
+ HEAL_LOCATION(PACIFIDLOG_TOWN, 8, 16),
+ HEAL_LOCATION(EVER_GRANDE_CITY, 18, 6),
+ HEAL_LOCATION(SOUTHERN_ISLAND_EXTERIOR, 15, 20),
+ HEAL_LOCATION(BATTLE_FRONTIER_OUTSIDE_EAST, 3, 52)
+};
+
+#define NUM_HEAL_LOCATIONS (ARRAY_COUNT(sHealLocations))
+
+// .text
+
+static u32 GetHealLocationIndexFromMapGroupAndNum(u16 mapGroup, u16 mapNum)
+{
+ u32 i;
+
+ for (i = 0; i < NUM_HEAL_LOCATIONS; i ++)
+ {
+ if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum)
+ {
+ return i + 1;
+ }
+ }
+ return 0;
+}
+
+const struct HealLocation *GetHealLocationPointerFromMapGroupAndNum(u16 mapGroup, u16 mapNum)
+{
+ u32 loc;
+
+ loc = GetHealLocationIndexFromMapGroupAndNum(mapGroup, mapNum);
+ if (loc == 0)
+ {
+ return NULL;
+ }
+ return &sHealLocations[loc - 1];
+}
+
+const struct HealLocation *GetHealLocationPointer(u32 loc)
+{
+ if (loc == 0)
+ {
+ return NULL;
+ }
+ if (loc > NUM_HEAL_LOCATIONS)
+ {
+ return NULL;
+ }
+ return &sHealLocations[loc - 1];
+}
diff --git a/src/region_map.c b/src/region_map.c
new file mode 100644
index 000000000..5481606e9
--- /dev/null
+++ b/src/region_map.c
@@ -0,0 +1,1965 @@
+
+// Includes
+#include "global.h"
+#include "main.h"
+#include "menu.h"
+#include "malloc.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "trig.h"
+#include "map_constants.h"
+#include "overworld.h"
+#include "flags.h"
+#include "event_data.h"
+#include "rom6.h"
+#include "secret_base.h"
+#include "string_util.h"
+#include "international_string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "text_window.h"
+#include "songs.h"
+#include "m4a.h"
+#include "field_effect.h"
+#include "region_map.h"
+
+#define MAP_WIDTH 28
+#define MAP_HEIGHT 15
+#define MAPCURSOR_X_MIN 1
+#define MAPCURSOR_Y_MIN 2
+#define MAPCURSOR_X_MAX (MAPCURSOR_X_MIN + MAP_WIDTH - 1)
+#define MAPCURSOR_Y_MAX (MAPCURSOR_Y_MIN + MAP_HEIGHT - 1)
+
+// Static type declarations
+
+struct RegionMapLocation
+{
+ u8 x;
+ u8 y;
+ u8 width;
+ u8 height;
+ const u8 *name;
+};
+
+// Static RAM declarations
+
+static EWRAM_DATA struct RegionMap *gRegionMap = NULL;
+static EWRAM_DATA struct {
+ /*0x000*/ void (*unk_000)(void);
+ /*0x004*/ u16 unk_004;
+ /*0x006*/ u16 mapSecId;
+ /*0x008*/ struct RegionMap regionMap;
+ /*0x88c*/ u8 unk_88c[0x1c0];
+ /*0xa4c*/ u8 unk_a4c[0x26];
+ /*0xa72*/ bool8 unk_a72;
+} *gUnknown_0203A148 = NULL; // a74
+
+static bool32 gUnknown_03001180;
+static bool32 gUnknown_03001184;
+
+// Static ROM declarations
+
+static u8 ProcessRegionMapInput_Full(void);
+static u8 MoveRegionMapCursor_Full(void);
+static u8 ProcessRegionMapInput_Zoomed(void);
+static u8 MoveRegionMapCursor_Zoomed(void);
+static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation);
+static u16 GetRegionMapSectionIdAt_Internal(u16 x, u16 y);
+static void RegionMap_SetBG2XAndBG2Y(s16 x, s16 y);
+static void RegionMap_InitializeStateBasedOnPlayerLocation(void);
+static void RegionMap_InitializeStateBasedOnSSTidalLocation(void);
+static u8 get_flagnr_blue_points(u16 mapSecId);
+static u16 CorrectSpecialMapSecId_Internal(u16 mapSecId);
+static u16 RegionMap_GetTerraCaveMapSecId(void);
+static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y);
+static bool32 RegionMap_IsPlayerInCave(u8 mapSecId);
+static void RegionMap_GetPositionOfCursorWithinMapSection(void);
+static bool8 RegionMap_IsMapSecIdInNextRow(u16 y);
+static void SpriteCallback_CursorFull(struct Sprite *sprite);
+static void FreeRegionMapCursorSprite(void);
+static void HideRegionMapPlayerIcon(void);
+static void UnhideRegionMapPlayerIcon(void);
+static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite);
+static void RegionMapPlayerIconSpriteCallback_Full(struct Sprite *sprite);
+static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite);
+static void sub_81248C0(void);
+static void sub_81248D4(void);
+static void sub_81248F4(void callback(void));
+static void sub_8124904(void);
+static void sub_8124A70(void);
+static void sub_8124AD4(void);
+static void sub_8124BE4(void);
+static void sub_8124CBC(struct Sprite *sprite);
+static void sub_8124D14(void);
+static void sub_8124D64(void);
+static void sub_8124E0C(void);
+
+// .rodata
+
+static const u16 sRegionMapCursorPal[] = INCBIN_U16("graphics/pokenav/cursor.gbapal");
+static const u8 sRegionMapCursorSmallGfxLZ[] = INCBIN_U8("graphics/pokenav/cursor_small.4bpp.lz");
+static const u8 sRegionMapCursorLargeGfxLZ[] = INCBIN_U8("graphics/pokenav/cursor_large.4bpp.lz");
+static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map.gbapal");
+static const u8 sRegionMapBkgnd_GfxLZ[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz");
+static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz");
+static const u16 sRegionMapPlayerIcon_BrendanPal[] = INCBIN_U16("graphics/pokenav/brendan_icon.gbapal");
+static const u8 sRegionMapPlayerIcon_BrendanGfx[] = INCBIN_U8("graphics/pokenav/brendan_icon.4bpp");
+static const u16 sRegionMapPlayerIcon_MayPal[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal");
+static const u8 sRegionMapPlayerIcon_MayGfx[] = INCBIN_U8("graphics/pokenav/may_icon.4bpp");
+
+static const u8 sRegionMap_MapSectionLayout[] = {
+ MAPSEC_NONE, MAPSEC_ROUTE_114, MAPSEC_ROUTE_114, MAPSEC_FALLARBOR_TOWN, MAPSEC_ROUTE_113, MAPSEC_ROUTE_113, MAPSEC_ROUTE_113, MAPSEC_ROUTE_113, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_FORTREE_CITY, MAPSEC_ROUTE_120, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_ROUTE_114, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_CHIMNEY, MAPSEC_MT_CHIMNEY, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_ROUTE_120, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_115, MAPSEC_ROUTE_114, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_CHIMNEY, MAPSEC_MT_CHIMNEY, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_ROUTE_120, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SAFARI_ZONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_115, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_LAVARIDGE_TOWN, MAPSEC_ROUTE_112, MAPSEC_ROUTE_112, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_ROUTE_120, MAPSEC_ROUTE_121, MAPSEC_ROUTE_121, MAPSEC_ROUTE_121, MAPSEC_ROUTE_121, MAPSEC_LILYCOVE_CITY, MAPSEC_LILYCOVE_CITY, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_125, MAPSEC_ROUTE_125, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_115, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_122, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_125, MAPSEC_ROUTE_125, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_RUSTBORO_CITY, MAPSEC_ROUTE_116, MAPSEC_ROUTE_116, MAPSEC_ROUTE_116, MAPSEC_ROUTE_116, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_122, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_MOSSDEEP_CITY, MAPSEC_MOSSDEEP_CITY, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_RUSTBORO_CITY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VERDANTURF_TOWN, MAPSEC_ROUTE_117, MAPSEC_ROUTE_117, MAPSEC_ROUTE_117, MAPSEC_MAUVILLE_CITY, MAPSEC_MAUVILLE_CITY, MAPSEC_ROUTE_118, MAPSEC_ROUTE_118, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_104, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_110, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_126, MAPSEC_SOOTOPOLIS_CITY, MAPSEC_ROUTE_126, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_104, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_103, MAPSEC_ROUTE_103, MAPSEC_ROUTE_103, MAPSEC_ROUTE_103, MAPSEC_ROUTE_110, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_NONE, MAPSEC_EVER_GRANDE_CITY,
+ MAPSEC_ROUTE_104, MAPSEC_PETALBURG_CITY, MAPSEC_ROUTE_102, MAPSEC_ROUTE_102, MAPSEC_OLDALE_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_110, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_128, MAPSEC_ROUTE_128, MAPSEC_ROUTE_128, MAPSEC_ROUTE_128, MAPSEC_EVER_GRANDE_CITY,
+ MAPSEC_ROUTE_105, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_101, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SLATEPORT_CITY, MAPSEC_ROUTE_134, MAPSEC_ROUTE_134, MAPSEC_ROUTE_134, MAPSEC_ROUTE_133, MAPSEC_ROUTE_133, MAPSEC_ROUTE_133, MAPSEC_ROUTE_132, MAPSEC_ROUTE_132, MAPSEC_PACIFIDLOG_TOWN, MAPSEC_ROUTE_131, MAPSEC_ROUTE_131, MAPSEC_ROUTE_131, MAPSEC_ROUTE_130, MAPSEC_ROUTE_130, MAPSEC_ROUTE_130, MAPSEC_ROUTE_129, MAPSEC_ROUTE_129, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_105, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_LITTLEROOT_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SLATEPORT_CITY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_105, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_109, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BATTLE_FRONTIER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_106, MAPSEC_ROUTE_106, MAPSEC_ROUTE_106, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_109, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DEWFORD_TOWN, MAPSEC_ROUTE_107, MAPSEC_ROUTE_107, MAPSEC_ROUTE_107, MAPSEC_ROUTE_108, MAPSEC_ROUTE_108, MAPSEC_ROUTE_109, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SOUTHERN_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
+};
+
+#include "data/region_map/region_map_entries.h"
+
+static const u16 sRegionMap_SpecialPlaceLocations[][2] = {
+ {MAPSEC_UNDERWATER_TERRA_CAVE, MAPSEC_ROUTE_105},
+ {MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124},
+ {MAPSEC_UNDERWATER_UNK1, MAPSEC_ROUTE_129},
+ {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_126},
+ {MAPSEC_UNDERWATER_126, MAPSEC_ROUTE_127},
+ {MAPSEC_UNDERWATER_127, MAPSEC_ROUTE_128},
+ {MAPSEC_UNDERWATER_129, MAPSEC_ROUTE_129},
+ {MAPSEC_UNDERWATER_SOOTOPOLIS, MAPSEC_SOOTOPOLIS_CITY},
+ {MAPSEC_UNDERWATER_128, MAPSEC_ROUTE_128},
+ {MAPSEC_AQUA_HIDEOUT, MAPSEC_LILYCOVE_CITY},
+ {MAPSEC_AQUA_HIDEOUT_OLD, MAPSEC_LILYCOVE_CITY},
+ {MAPSEC_MAGMA_HIDEOUT, MAPSEC_ROUTE_112},
+ {MAPSEC_UNDERWATER_SEALED_CHAMBER, MAPSEC_ROUTE_134},
+ {MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104},
+ {MAPSEC_JAGGED_PASS, MAPSEC_ROUTE_112},
+ {MAPSEC_MT_PYRE, MAPSEC_ROUTE_122},
+ {MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131},
+ {MAPSEC_MIRAGE_TOWER, MAPSEC_ROUTE_111},
+ {MAPSEC_TRAINER_HILL, MAPSEC_ROUTE_111},
+ {MAPSEC_DESERT_UNDERPASS, MAPSEC_ROUTE_114},
+ {MAPSEC_ALTERING_CAVE_2, MAPSEC_ROUTE_103},
+ {MAPSEC_ARTISAN_CAVE, MAPSEC_ROUTE_103},
+ {MAPSEC_ABANDONED_SHIP, MAPSEC_ROUTE_108},
+ {MAPSEC_NONE, MAPSEC_NONE}
+};
+
+static const u16 sRegionMap_MarineCaveMapSecIds[] = {
+ MAPSEC_MARINE_CAVE,
+ MAPSEC_UNDERWATER_MARINE_CAVE,
+ MAPSEC_UNDERWATER_MARINE_CAVE
+};
+
+static const u16 sTerraCaveMapSectionIds[] = {
+ MAPSEC_ROUTE_114,
+ MAPSEC_ROUTE_114,
+ MAPSEC_ROUTE_115,
+ MAPSEC_ROUTE_115,
+ MAPSEC_ROUTE_116,
+ MAPSEC_ROUTE_116,
+ MAPSEC_ROUTE_118,
+ MAPSEC_ROUTE_118,
+ MAPSEC_ROUTE_105,
+ MAPSEC_ROUTE_105,
+ MAPSEC_ROUTE_125,
+ MAPSEC_ROUTE_125,
+ MAPSEC_ROUTE_127,
+ MAPSEC_ROUTE_127,
+ MAPSEC_ROUTE_129,
+ MAPSEC_ROUTE_129
+};
+
+static const struct UCoords16 sTerraCaveLocationCoords[] = {
+ {0x00, 0x0a},
+ {0x00, 0x0c},
+ {0x18, 0x03},
+ {0x19, 0x04},
+ {0x19, 0x06},
+ {0x19, 0x07},
+ {0x18, 0x0a},
+ {0x18, 0x0a}
+};
+
+static const u8 sRegionMap_MapSecAquaHideoutOld[] = {
+ MAPSEC_AQUA_HIDEOUT_OLD
+};
+
+static const struct OamData sRegionMapCursorOam = {
+ .size = 1, .priority = 1
+};
+
+static const union AnimCmd sRegionMapCursorAnim1[] = {
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_FRAME(4, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sRegionMapCursorAnim2[] = {
+ ANIMCMD_FRAME( 0, 10),
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_FRAME(32, 10),
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sRegionMapCursorAnimTable[] = {
+ sRegionMapCursorAnim1,
+ sRegionMapCursorAnim2
+};
+
+static const struct SpritePalette sRegionMapCursorSpritePalette = { sRegionMapCursorPal, 0 };
+
+static const struct SpriteTemplate sRegionMapCursorSpriteTemplate = {
+ 0,
+ 0,
+ &sRegionMapCursorOam,
+ sRegionMapCursorAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallback_CursorFull
+};
+
+static const struct OamData sRegionMapPlayerIconOam = {
+ .size = 1, .priority = 2
+};
+
+static const union AnimCmd sRegionMapPlayerIconAnim1[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sRegionMapPlayerIconAnimTable[] = {
+ sRegionMapPlayerIconAnim1
+};
+
+static const u8 sRegionMapEventSectionIds[] = {
+ MAPSEC_BIRTH_ISLAND_2,
+ MAPSEC_FARAWAY_ISLAND,
+ MAPSEC_NAVEL_ROCK2
+};
+
+static const u16 sRegionMapFramePal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal");
+
+static const u8 sRegionMapFrameGfxLZ[] = INCBIN_U8("graphics/pokenav/map_frame.4bpp.lz");
+
+static const u8 sRegionMapFrameTilemapLZ[] = INCBIN_U8("graphics/pokenav/map_frame.bin.lz");
+
+static const u16 Unknown_085A1D48[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal");
+
+static const u8 gUnknown_085A1D68[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz");
+
+static const u8 gUnknown_085A1E3C[][3] = {
+ {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 1},
+ {MAP_GROUP_OLDALE_TOWN, MAP_ID_OLDALE_TOWN, 14},
+ {MAP_GROUP_DEWFORD_TOWN, MAP_ID_DEWFORD_TOWN, 15},
+ {MAP_GROUP_LAVARIDGE_TOWN, MAP_ID_LAVARIDGE_TOWN, 16},
+ {MAP_GROUP_FALLARBOR_TOWN, MAP_ID_FALLARBOR_TOWN, 17},
+ {MAP_GROUP_VERDANTURF_TOWN, MAP_ID_VERDANTURF_TOWN, 18},
+ {MAP_GROUP_PACIFIDLOG_TOWN, MAP_ID_PACIFIDLOG_TOWN, 19},
+ {MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, 3},
+ {MAP_GROUP_SLATEPORT_CITY, MAP_ID_SLATEPORT_CITY, 4},
+ {MAP_GROUP_MAUVILLE_CITY, MAP_ID_MAUVILLE_CITY, 5},
+ {MAP_GROUP_RUSTBORO_CITY, MAP_ID_RUSTBORO_CITY, 6},
+ {MAP_GROUP_FORTREE_CITY, MAP_ID_FORTREE_CITY, 7},
+ {MAP_GROUP_LILYCOVE_CITY, MAP_ID_LILYCOVE_CITY, 8},
+ {MAP_GROUP_MOSSDEEP_CITY, MAP_ID_MOSSDEEP_CITY, 9},
+ {MAP_GROUP_SOOTOPOLIS_CITY, MAP_ID_SOOTOPOLIS_CITY, 10},
+ {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 11},
+ {MAP_GROUP_ROUTE101, MAP_ID_ROUTE101, 0},
+ {MAP_GROUP_ROUTE102, MAP_ID_ROUTE102, 0},
+ {MAP_GROUP_ROUTE103, MAP_ID_ROUTE103, 0},
+ {MAP_GROUP_ROUTE104, MAP_ID_ROUTE104, 0},
+ {MAP_GROUP_ROUTE105, MAP_ID_ROUTE105, 0},
+ {MAP_GROUP_ROUTE106, MAP_ID_ROUTE106, 0},
+ {MAP_GROUP_ROUTE107, MAP_ID_ROUTE107, 0},
+ {MAP_GROUP_ROUTE108, MAP_ID_ROUTE108, 0},
+ {MAP_GROUP_ROUTE109, MAP_ID_ROUTE109, 0},
+ {MAP_GROUP_ROUTE110, MAP_ID_ROUTE110, 0},
+ {MAP_GROUP_ROUTE111, MAP_ID_ROUTE111, 0},
+ {MAP_GROUP_ROUTE112, MAP_ID_ROUTE112, 0},
+ {MAP_GROUP_ROUTE113, MAP_ID_ROUTE113, 0},
+ {MAP_GROUP_ROUTE114, MAP_ID_ROUTE114, 0},
+ {MAP_GROUP_ROUTE115, MAP_ID_ROUTE115, 0},
+ {MAP_GROUP_ROUTE116, MAP_ID_ROUTE116, 0},
+ {MAP_GROUP_ROUTE117, MAP_ID_ROUTE117, 0},
+ {MAP_GROUP_ROUTE118, MAP_ID_ROUTE118, 0},
+ {MAP_GROUP_ROUTE119, MAP_ID_ROUTE119, 0},
+ {MAP_GROUP_ROUTE120, MAP_ID_ROUTE120, 0},
+ {MAP_GROUP_ROUTE121, MAP_ID_ROUTE121, 0},
+ {MAP_GROUP_ROUTE122, MAP_ID_ROUTE122, 0},
+ {MAP_GROUP_ROUTE123, MAP_ID_ROUTE123, 0},
+ {MAP_GROUP_ROUTE124, MAP_ID_ROUTE124, 0},
+ {MAP_GROUP_ROUTE125, MAP_ID_ROUTE125, 0},
+ {MAP_GROUP_ROUTE126, MAP_ID_ROUTE126, 0},
+ {MAP_GROUP_ROUTE127, MAP_ID_ROUTE127, 0},
+ {MAP_GROUP_ROUTE128, MAP_ID_ROUTE128, 0},
+ {MAP_GROUP_ROUTE129, MAP_ID_ROUTE129, 0},
+ {MAP_GROUP_ROUTE130, MAP_ID_ROUTE130, 0},
+ {MAP_GROUP_ROUTE131, MAP_ID_ROUTE131, 0},
+ {MAP_GROUP_ROUTE132, MAP_ID_ROUTE132, 0},
+ {MAP_GROUP_ROUTE133, MAP_ID_ROUTE133, 0},
+ {MAP_GROUP_ROUTE134, MAP_ID_ROUTE134, 0}
+};
+
+static const u8 *const gUnknown_085A1ED4[] = {
+ gUnknown_085EC782,
+ gUnknown_085EC791
+};
+
+static const struct {
+ const u8 *const *name;
+ u16 mapSecId;
+ u16 flag;
+} gUnknown_085A1EDC[] = {
+ gUnknown_085A1ED4,
+ MAPSEC_EVER_GRANDE_CITY,
+ SYS_POKEMON_LEAGUE_FLY
+};
+
+static const struct BgTemplate gUnknown_085A1EE4[] = {
+ { .bg = 0, .charBaseIndex = 0, .mapBaseIndex = 31, .screenSize = 0, .paletteMode = 0, .priority = 0 },
+ { .bg = 1, .charBaseIndex = 3, .mapBaseIndex = 30, .screenSize = 0, .paletteMode = 0, .priority = 1 },
+ { .bg = 2, .charBaseIndex = 2, .mapBaseIndex = 28, .screenSize = 2, .paletteMode = 1, .priority = 2 }
+};
+
+static const struct WindowTemplate gUnknown_085A1EF0[] = {
+ { 0, 17, 17, 12, 2, 15, 0x01 },
+ { 0, 17, 15, 12, 4, 15, 0x19 },
+ { 0, 1, 18, 14, 2, 15, 0x49 },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct SpritePalette gUnknown_085A1F10 = {
+ Unknown_085A1D48, 2
+};
+
+static const u16 gUnknown_085A1F18[][2] = {
+ {FLAG_UNLOCK_BATTLE_FRONTIER, MAPSEC_BATTLE_FRONTIER},
+ {-1, MAPSEC_NONE}
+};
+
+static const struct OamData gOamData_085A1F20 = {
+ .priority = 2
+};
+
+static const union AnimCmd gUnknown_085A1F28[] = {
+ ANIMCMD_FRAME( 0, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F30[] = {
+ ANIMCMD_FRAME( 1, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F38[] = {
+ ANIMCMD_FRAME( 3, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F40[] = {
+ ANIMCMD_FRAME( 5, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F48[] = {
+ ANIMCMD_FRAME( 6, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F50[] = {
+ ANIMCMD_FRAME( 8, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F58[] = {
+ ANIMCMD_FRAME(10, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gUnknown_085A1F60[] = {
+ gUnknown_085A1F28,
+ gUnknown_085A1F30,
+ gUnknown_085A1F38,
+ gUnknown_085A1F40,
+ gUnknown_085A1F48,
+ gUnknown_085A1F50,
+ gUnknown_085A1F58
+};
+
+static const struct SpriteTemplate gUnknown_085A1F7C = {
+ 2,
+ 2,
+ &gOamData_085A1F20,
+ gUnknown_085A1F60,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+// .text
+
+void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed)
+{
+ sub_8122CF8(regionMap, NULL, zoomed);
+ while (sub_8122DB0());
+}
+
+void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed)
+{
+ gRegionMap = regionMap;
+ gRegionMap->initStep = 0;
+ gRegionMap->zoomed = zoomed;
+ gRegionMap->inputCallback = zoomed == TRUE ? ProcessRegionMapInput_Zoomed : ProcessRegionMapInput_Full;
+ if (template != NULL)
+ {
+ gRegionMap->bgNum = template->bg;
+ gRegionMap->charBaseIdx = template->charBaseIndex;
+ gRegionMap->mapBaseIdx = template->mapBaseIndex;
+ gRegionMap->bgManaged = TRUE;
+ }
+ else
+ {
+ gRegionMap->bgNum = 2;
+ gRegionMap->charBaseIdx = 2;
+ gRegionMap->mapBaseIdx = 28;
+ gRegionMap->bgManaged = FALSE;
+ }
+}
+
+void sub_8122D88(struct RegionMap *regionMap)
+{
+ gRegionMap = regionMap;
+ RegionMap_InitializeStateBasedOnPlayerLocation();
+ gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX;
+ gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY;
+}
+
+bool8 sub_8122DB0(void)
+{
+ switch (gRegionMap->initStep)
+ {
+ case 0:
+ if (gRegionMap->bgManaged)
+ {
+ decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_GfxLZ, 0, 0, 0);
+ }
+ else
+ {
+ LZ77UnCompVram(sRegionMapBkgnd_GfxLZ, (u16 *)BG_CHAR_ADDR(2));
+ }
+ break;
+ case 1:
+ if (gRegionMap->bgManaged)
+ {
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_TilemapLZ, 0, 0, 1);
+ }
+ }
+ else
+ {
+ LZ77UnCompVram(sRegionMapBkgnd_TilemapLZ, (u16 *)BG_SCREEN_ADDR(28));
+ }
+ break;
+ case 2:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ LoadPalette(sRegionMapBkgnd_Pal, 0x70, 0x60);
+ }
+ break;
+ case 3:
+ LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, gRegionMap->cursorSmallImage);
+ break;
+ case 4:
+ LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, gRegionMap->cursorLargeImage);
+ break;
+ case 5:
+ RegionMap_InitializeStateBasedOnPlayerLocation();
+ gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX;
+ gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY;
+ gRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(gRegionMap->mapSecId);
+ gRegionMap->iconDrawType = get_flagnr_blue_points(gRegionMap->mapSecId);
+ GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ break;
+ case 6:
+ if (gRegionMap->zoomed == FALSE)
+ {
+ CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0);
+ }
+ else
+ {
+ gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 0x34;
+ gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 0x44;
+ gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX;
+ gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY;
+ CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0);
+ }
+ break;
+ case 7:
+ RegionMap_GetPositionOfCursorWithinMapSection();
+ UpdateRegionMapVideoRegs();
+ gRegionMap->cursorSprite = NULL;
+ gRegionMap->playerIconSprite = NULL;
+ gRegionMap->cursorMovementFrameCounter = 0;
+ gRegionMap->blinkPlayerIcon = FALSE;
+ if (gRegionMap->bgManaged)
+ {
+ SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_MAPBASEINDEX, 2);
+ SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_VISIBLE, gRegionMap->charBaseIdx);
+ SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_CHARBASEINDEX, gRegionMap->mapBaseIdx);
+ SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_PRIORITY, 1);
+ SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_SCREENSIZE, 1);
+ }
+ gRegionMap->initStep ++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+ gRegionMap->initStep ++;
+ return TRUE;
+}
+
+void sub_8123030(u16 a0, u32 a1)
+{
+ BlendPalettes(0x380, a1, a0);
+ CpuCopy16(gPlttBufferFaded + 0x70, gPlttBufferUnfaded + 0x70, 0x60);
+}
+
+void FreeRegionMapIconResources(void)
+{
+ if (gRegionMap->cursorSprite != NULL)
+ {
+ DestroySprite(gRegionMap->cursorSprite);
+ FreeSpriteTilesByTag(gRegionMap->cursorTileTag);
+ FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag);
+ }
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ DestroySprite(gRegionMap->playerIconSprite);
+ FreeSpriteTilesByTag(gRegionMap->playerIconTileTag);
+ FreeSpritePaletteByTag(gRegionMap->playerIconPaletteTag);
+ }
+}
+
+u8 sub_81230AC(void)
+{
+ return gRegionMap->inputCallback();
+}
+
+static u8 ProcessRegionMapInput_Full(void)
+{
+ u8 input;
+
+ input = INPUT_EVENT_NONE;
+ gRegionMap->cursorDeltaX = 0;
+ gRegionMap->cursorDeltaY = 0;
+ if (gMain.heldKeys & DPAD_UP && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN)
+ {
+ gRegionMap->cursorDeltaY = -1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_DOWN && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX)
+ {
+ gRegionMap->cursorDeltaY = +1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_LEFT && gRegionMap->cursorPosX > MAPCURSOR_X_MIN)
+ {
+ gRegionMap->cursorDeltaX = -1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->cursorPosX < MAPCURSOR_X_MAX)
+ {
+ gRegionMap->cursorDeltaX = +1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ input = INPUT_EVENT_A_BUTTON;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ input = INPUT_EVENT_B_BUTTON;
+ }
+ if (input == INPUT_EVENT_MOVE_START)
+ {
+ gRegionMap->cursorMovementFrameCounter = 4;
+ gRegionMap->inputCallback = MoveRegionMapCursor_Full;
+ }
+ return input;
+}
+
+static u8 MoveRegionMapCursor_Full(void)
+{
+ u16 mapSecId;
+
+ if (gRegionMap->cursorMovementFrameCounter != 0)
+ {
+ return INPUT_EVENT_MOVE_CONT;
+ }
+ if (gRegionMap->cursorDeltaX > 0)
+ {
+ gRegionMap->cursorPosX ++;
+ }
+ if (gRegionMap->cursorDeltaX < 0)
+ {
+ gRegionMap->cursorPosX --;
+ }
+ if (gRegionMap->cursorDeltaY > 0)
+ {
+ gRegionMap->cursorPosY ++;
+ }
+ if (gRegionMap->cursorDeltaY < 0)
+ {
+ gRegionMap->cursorPosY --;
+ }
+ mapSecId = GetRegionMapSectionIdAt_Internal(gRegionMap->cursorPosX, gRegionMap->cursorPosY);
+ gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId);
+ if (mapSecId != gRegionMap->mapSecId)
+ {
+ gRegionMap->mapSecId = mapSecId;
+ GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ }
+ RegionMap_GetPositionOfCursorWithinMapSection();
+ gRegionMap->inputCallback = ProcessRegionMapInput_Full;
+ return INPUT_EVENT_MOVE_END;
+}
+
+static u8 ProcessRegionMapInput_Zoomed(void)
+{
+ u8 input;
+
+ input = INPUT_EVENT_NONE;
+ gRegionMap->zoomedCursorDeltaX = 0;
+ gRegionMap->zoomedCursorDeltaY = 0;
+ if (gMain.heldKeys & DPAD_UP && gRegionMap->scrollY > -0x34)
+ {
+ gRegionMap->zoomedCursorDeltaY = -1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_DOWN && gRegionMap->scrollY < 0x3c)
+ {
+ gRegionMap->zoomedCursorDeltaY = +1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_LEFT && gRegionMap->scrollX > -0x2c)
+ {
+ gRegionMap->zoomedCursorDeltaX = -1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->scrollX < 0xac)
+ {
+ gRegionMap->zoomedCursorDeltaX = +1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ input = INPUT_EVENT_A_BUTTON;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ input = INPUT_EVENT_B_BUTTON;
+ }
+ if (input == INPUT_EVENT_MOVE_START)
+ {
+ gRegionMap->inputCallback = MoveRegionMapCursor_Zoomed;
+ gRegionMap->zoomedCursorMovementFrameCounter = 0;
+ }
+ return input;
+}
+
+static u8 MoveRegionMapCursor_Zoomed(void)
+{
+ u16 x;
+ u16 y;
+ u16 mapSecId;
+
+ gRegionMap->scrollY += gRegionMap->zoomedCursorDeltaY;
+ gRegionMap->scrollX += gRegionMap->zoomedCursorDeltaX;
+ RegionMap_SetBG2XAndBG2Y(gRegionMap->scrollX, gRegionMap->scrollY);
+ gRegionMap->zoomedCursorMovementFrameCounter ++;
+ if (gRegionMap->zoomedCursorMovementFrameCounter == 8)
+ {
+ x = (gRegionMap->scrollX + 0x2c) / 8 + 1;
+ y = (gRegionMap->scrollY + 0x34) / 8 + 2;
+ if (x != gRegionMap->zoomedCursorPosX || y != gRegionMap->zoomedCursorPosY)
+ {
+ gRegionMap->zoomedCursorPosX = x;
+ gRegionMap->zoomedCursorPosY = y;
+ mapSecId = GetRegionMapSectionIdAt_Internal(x, y);
+ gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId);
+ if (mapSecId != gRegionMap->mapSecId)
+ {
+ gRegionMap->mapSecId = mapSecId;
+ GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ }
+ RegionMap_GetPositionOfCursorWithinMapSection();
+ }
+ gRegionMap->zoomedCursorMovementFrameCounter = 0;
+ gRegionMap->inputCallback = ProcessRegionMapInput_Zoomed;
+ return INPUT_EVENT_MOVE_END;
+ }
+ return INPUT_EVENT_MOVE_CONT;
+}
+
+void sub_8123418(void)
+{
+ if (gRegionMap->zoomed == FALSE)
+ {
+ gRegionMap->scrollY = 0;
+ gRegionMap->scrollX = 0;
+ gRegionMap->unk_040 = 0;
+ gRegionMap->unk_03c = 0;
+ gRegionMap->unk_060 = gRegionMap->cursorPosX * 8 - 0x34;
+ gRegionMap->unk_062 = gRegionMap->cursorPosY * 8 - 0x44;
+ gRegionMap->unk_044 = (gRegionMap->unk_060 << 8) / 16;
+ gRegionMap->unk_048 = (gRegionMap->unk_062 << 8) / 16;
+ gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX;
+ gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY;
+ gRegionMap->unk_04c = 0x10000;
+ gRegionMap->unk_050 = -0x800;
+ }
+ else
+ {
+ gRegionMap->unk_03c = gRegionMap->scrollX * 256;
+ gRegionMap->unk_040 = gRegionMap->scrollY * 256;
+ gRegionMap->unk_060 = 0;
+ gRegionMap->unk_062 = 0;
+ gRegionMap->unk_044 = -(gRegionMap->unk_03c / 16);
+ gRegionMap->unk_048 = -(gRegionMap->unk_040 / 16);
+ gRegionMap->cursorPosX = gRegionMap->zoomedCursorPosX;
+ gRegionMap->cursorPosY = gRegionMap->zoomedCursorPosY;
+ gRegionMap->unk_04c = 0x8000;
+ gRegionMap->unk_050 = 0x800;
+ }
+ gRegionMap->unk_06e = 0;
+ FreeRegionMapCursorSprite();
+ HideRegionMapPlayerIcon();
+}
+
+bool8 sub_8123514(void)
+{
+ bool8 r4;
+
+ if (gRegionMap->unk_06e >= 16)
+ {
+ return 0;
+ }
+ gRegionMap->unk_06e ++;
+ if (gRegionMap->unk_06e == 16)
+ {
+ gRegionMap->unk_044 = 0;
+ gRegionMap->unk_048 = 0;
+ gRegionMap->scrollX = gRegionMap->unk_060;
+ gRegionMap->scrollY = gRegionMap->unk_062;
+ gRegionMap->unk_04c = (gRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8);
+ gRegionMap->zoomed = !gRegionMap->zoomed;
+ gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? ProcessRegionMapInput_Full : ProcessRegionMapInput_Zoomed;
+ CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag);
+ UnhideRegionMapPlayerIcon();
+ r4 = FALSE;
+ }
+ else
+ {
+ gRegionMap->unk_03c += gRegionMap->unk_044;
+ gRegionMap->unk_040 += gRegionMap->unk_048;
+ gRegionMap->scrollX = gRegionMap->unk_03c >> 8;
+ gRegionMap->scrollY = gRegionMap->unk_040 >> 8;
+ gRegionMap->unk_04c += gRegionMap->unk_050;
+ if ((gRegionMap->unk_044 < 0 && gRegionMap->scrollX < gRegionMap->unk_060) || (gRegionMap->unk_044 > 0 && gRegionMap->scrollX > gRegionMap->unk_060))
+ {
+ gRegionMap->scrollX = gRegionMap->unk_060;
+ gRegionMap->unk_044 = 0;
+ }
+ if ((gRegionMap->unk_048 < 0 && gRegionMap->scrollY < gRegionMap->unk_062) || (gRegionMap->unk_048 > 0 && gRegionMap->scrollY > gRegionMap->unk_062))
+ {
+ gRegionMap->scrollY = gRegionMap->unk_062;
+ gRegionMap->unk_048 = 0;
+ }
+ if (gRegionMap->zoomed == FALSE)
+ {
+ if (gRegionMap->unk_04c < (128 << 8))
+ {
+ gRegionMap->unk_04c = (128 << 8);
+ gRegionMap->unk_050 = 0;
+ }
+ }
+ else
+ {
+ if (gRegionMap->unk_04c > (256 << 8))
+ {
+ gRegionMap->unk_04c = (256 << 8);
+ gRegionMap->unk_050 = 0;
+ }
+ }
+ r4 = TRUE;
+ }
+ CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk_04c >> 8, gRegionMap->unk_04c >> 8, 0);
+ return r4;
+}
+
+static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation)
+{
+ s32 var1;
+ s32 var2;
+ s32 var3;
+ s32 var4;
+
+ gRegionMap->bg2pa = e * gSineTable[rotation + 64] >> 8;
+ gRegionMap->bg2pc = e * -gSineTable[rotation] >> 8;
+ gRegionMap->bg2pb = f * gSineTable[rotation] >> 8;
+ gRegionMap->bg2pd = f * gSineTable[rotation + 64] >> 8;
+
+ var1 = (scrollX << 8) + (c << 8);
+ var2 = d * gRegionMap->bg2pb + gRegionMap->bg2pa * c;
+ gRegionMap->bg2x = var1 - var2;
+
+ var3 = (scrollY << 8) + (d << 8);
+ var4 = gRegionMap->bg2pd * d + gRegionMap->bg2pc * c;
+ gRegionMap->bg2y = var3 - var4;
+
+ gRegionMap->needUpdateVideoRegs = TRUE;
+}
+
+static void RegionMap_SetBG2XAndBG2Y(s16 x, s16 y)
+{
+ gRegionMap->bg2x = (x << 8) + 0x1c00;
+ gRegionMap->bg2y = (y << 8) + 0x2400;
+ gRegionMap->needUpdateVideoRegs = TRUE;
+}
+
+void UpdateRegionMapVideoRegs(void)
+{
+ if (gRegionMap->needUpdateVideoRegs)
+ {
+ SetGpuReg(REG_OFFSET_BG2PA, gRegionMap->bg2pa);
+ SetGpuReg(REG_OFFSET_BG2PB, gRegionMap->bg2pb);
+ SetGpuReg(REG_OFFSET_BG2PC, gRegionMap->bg2pc);
+ SetGpuReg(REG_OFFSET_BG2PD, gRegionMap->bg2pd);
+ SetGpuReg(REG_OFFSET_BG2X_L, gRegionMap->bg2x);
+ SetGpuReg(REG_OFFSET_BG2X_H, gRegionMap->bg2x >> 16);
+ SetGpuReg(REG_OFFSET_BG2Y_L, gRegionMap->bg2y);
+ SetGpuReg(REG_OFFSET_BG2Y_H, gRegionMap->bg2y >> 16);
+ gRegionMap->needUpdateVideoRegs = FALSE;
+ }
+}
+
+void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y)
+{
+ CalcZoomScrollParams(x, y, 0x38, 0x48, 0x100, 0x100, 0);
+ UpdateRegionMapVideoRegs();
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ gRegionMap->playerIconSprite->pos2.x = -x;
+ gRegionMap->playerIconSprite->pos2.y = -y;
+ }
+}
+
+static u16 GetRegionMapSectionIdAt_Internal(u16 x, u16 y)
+{
+ if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX)
+ {
+ return MAPSEC_NONE;
+ }
+ y -= MAPCURSOR_Y_MIN;
+ x -= MAPCURSOR_X_MIN;
+ return sRegionMap_MapSectionLayout[x + y * MAP_WIDTH];
+}
+
+static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
+{
+ const struct MapHeader *mapHeader;
+ u16 mapWidth;
+ u16 mapHeight;
+ u16 x;
+ u16 y;
+ u16 r1;
+ u16 r9;
+ struct WarpData *r4;
+
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SS_TIDAL_CORRIDOR
+ && (gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_CORRIDOR
+ || gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_LOWER_DECK
+ || gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_ROOMS))
+ {
+ RegionMap_InitializeStateBasedOnSSTidalLocation();
+ return;
+ }
+
+ switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum))
+ {
+ default:
+ case 1:
+ case 2:
+ case 3:
+ case 5:
+ case 6:
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ gRegionMap->playerIsInCave = FALSE;
+ mapWidth = gMapHeader.mapData->width;
+ mapHeight = gMapHeader.mapData->height;
+ x = gSaveBlock1Ptr->pos.x;
+ y = gSaveBlock1Ptr->pos.y;
+ if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_128 || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE)
+ {
+ gRegionMap->playerIsInCave = TRUE;
+ }
+ break;
+ case 4:
+ case 7:
+ if (gMapHeader.flags & 0x02)
+ {
+ mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = gSaveBlock1Ptr->warp4.x;
+ y = gSaveBlock1Ptr->warp4.y;
+ }
+ else
+ {
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = 1;
+ mapHeight = 1;
+ x = 1;
+ y = 1;
+ }
+ break;
+ case 9:
+ mapHeader = get_mapheader_by_bank_and_number((u16)gSaveBlock1Ptr->warp2.mapGroup, (u16)gSaveBlock1Ptr->warp2.mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = gSaveBlock1Ptr->warp2.x;
+ y = gSaveBlock1Ptr->warp2.y;
+ break;
+ case 8:
+
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ if (gRegionMap->mapSecId != MAPSEC_SS_TIDAL)
+ {
+ r4 = &gSaveBlock1Ptr->warp4;
+ mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum);
+ }
+ else
+ {
+ r4 = &gSaveBlock1Ptr->warp2;
+ mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ }
+ if (RegionMap_IsPlayerInCave(gRegionMap->mapSecId))
+ {
+ gRegionMap->playerIsInCave = TRUE;
+ }
+ else
+ {
+ gRegionMap->playerIsInCave = FALSE;
+ }
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = r4->x;
+ y = r4->y;
+ break;
+ }
+
+ r9 = x;
+
+ r1 = mapWidth / gRegionMapEntries[gRegionMap->mapSecId].width;
+ if (r1 == 0)
+ {
+ r1 = 1;
+ }
+ x /= r1;
+ if (x >= gRegionMapEntries[gRegionMap->mapSecId].width)
+ {
+ x = gRegionMapEntries[gRegionMap->mapSecId].width - 1;
+ }
+
+ r1 = mapHeight / gRegionMapEntries[gRegionMap->mapSecId].height;
+ if (r1 == 0)
+ {
+ r1 = 1;
+ }
+ y /= r1;
+ if (y >= gRegionMapEntries[gRegionMap->mapSecId].height)
+ {
+ y = gRegionMapEntries[gRegionMap->mapSecId].height - 1;
+ }
+
+ switch (gRegionMap->mapSecId)
+ {
+ case MAPSEC_ROUTE_114:
+ if (y != 0)
+ {
+ x = 0;
+ }
+ break;
+ case MAPSEC_ROUTE_126:
+ case MAPSEC_UNDERWATER_125:
+ x = 0;
+ if (gSaveBlock1Ptr->pos.x > 32)
+ {
+ x = 1;
+ }
+ if (gSaveBlock1Ptr->pos.x > 0x33)
+ {
+ x++;
+ }
+ y = 0;
+ if (gSaveBlock1Ptr->pos.y > 0x25)
+ {
+ y = 1;
+ }
+ if (gSaveBlock1Ptr->pos.y > 0x38)
+ {
+ y++;
+ }
+ break;
+ case MAPSEC_ROUTE_121:
+ x = 0;
+ if (r9 > 14)
+ {
+ x = 1;
+ }
+ if (r9 > 0x1C)
+ {
+ x++;
+ }
+ if (r9 > 0x36)
+ {
+ x++;
+ }
+ break;
+ case MAPSEC_UNDERWATER_MARINE_CAVE:
+ RegionMap_GetMarineCaveCoords(&gRegionMap->cursorPosX, &gRegionMap->cursorPosY);
+ return;
+ }
+ gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
+ gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
+}
+
+static void RegionMap_InitializeStateBasedOnSSTidalLocation(void)
+{
+ u16 y;
+ u16 x;
+ u8 mapGroup;
+ u8 mapNum;
+ u16 r1;
+ s16 sp2;
+ s16 sp4;
+ const struct MapHeader *mapHeader;
+
+ y = 0;
+ x = 0;
+ switch (GetSSTidalLocation(&mapGroup, &mapNum, &sp2, &sp4))
+ {
+ case 1:
+ gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY;
+ break;
+ case 2:
+ gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY;
+ break;
+ case 3:
+ gRegionMap->mapSecId = MAPSEC_ROUTE_124;
+ break;
+ case 4:
+ gRegionMap->mapSecId = MAPSEC_ROUTE_131;
+ break;
+ default:
+ case 0:
+ mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum);
+
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ r1 = mapHeader->mapData->width / gRegionMapEntries[gRegionMap->mapSecId].width;
+ if (r1 == 0)
+ r1 = 1;
+ x = sp2 / r1;
+ if (x >= gRegionMapEntries[gRegionMap->mapSecId].width)
+ x = gRegionMapEntries[gRegionMap->mapSecId].width - 1;
+
+ r1 = mapHeader->mapData->height / gRegionMapEntries[gRegionMap->mapSecId].height;
+ if (r1 == 0)
+ r1 = 1;
+ y = sp4 / r1;
+ if (y >= gRegionMapEntries[gRegionMap->mapSecId].height)
+ y = gRegionMapEntries[gRegionMap->mapSecId].height - 1;
+ break;
+ }
+ gRegionMap->playerIsInCave = FALSE;
+ gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
+ gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
+}
+
+static u8 get_flagnr_blue_points(u16 mapSecId)
+{
+ switch (mapSecId)
+ {
+ case MAPSEC_NONE:
+ return MAPSECTYPE_NONE;
+ case MAPSEC_LITTLEROOT_TOWN:
+ return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_OLDALE_TOWN:
+ return FlagGet(FLAG_VISITED_OLDALE_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_DEWFORD_TOWN:
+ return FlagGet(FLAG_VISITED_DEWFORD_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_LAVARIDGE_TOWN:
+ return FlagGet(FLAG_VISITED_LAVARIDGE_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_FALLARBOR_TOWN:
+ return FlagGet(FLAG_VISITED_FALLARBOR_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_VERDANTURF_TOWN:
+ return FlagGet(FLAG_VISITED_VERDANTURF_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_PACIFIDLOG_TOWN:
+ return FlagGet(FLAG_VISITED_PACIFIDLOG_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_PETALBURG_CITY:
+ return FlagGet(FLAG_VISITED_PETALBURG_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_SLATEPORT_CITY:
+ return FlagGet(FLAG_VISITED_SLATEPORT_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_MAUVILLE_CITY:
+ return FlagGet(FLAG_VISITED_MAUVILLE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_RUSTBORO_CITY:
+ return FlagGet(FLAG_VISITED_RUSTBORO_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_FORTREE_CITY:
+ return FlagGet(FLAG_VISITED_FORTREE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_LILYCOVE_CITY:
+ return FlagGet(FLAG_VISITED_LILYCOVE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_MOSSDEEP_CITY:
+ return FlagGet(FLAG_VISITED_MOSSDEEP_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_SOOTOPOLIS_CITY:
+ return FlagGet(FLAG_VISITED_SOOTOPOLIS_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_EVER_GRANDE_CITY:
+ return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_BATTLE_FRONTIER:
+ return FlagGet(FLAG_UNLOCK_BATTLE_FRONTIER) ? MAPSECTYPE_BATTLE_FRONTIER : MAPSECTYPE_NONE;
+ case MAPSEC_SOUTHERN_ISLAND:
+ return FlagGet(FLAG_UNLOCK_SOUTHERN_ISLAND) ? MAPSECTYPE_PLAIN : MAPSECTYPE_NONE;
+ default:
+ return MAPSECTYPE_PLAIN;
+ }
+}
+
+u16 GetRegionMapSectionIdAt(u16 x, u16 y)
+{
+ return GetRegionMapSectionIdAt_Internal(x, y);
+}
+
+static u16 CorrectSpecialMapSecId_Internal(u16 mapSecId)
+{
+ u32 i;
+
+ for (i = 0; i < 3; i ++)
+ {
+ if (sRegionMap_MarineCaveMapSecIds[i] == mapSecId)
+ {
+ return RegionMap_GetTerraCaveMapSecId();
+ }
+ }
+ for (i = 0; sRegionMap_SpecialPlaceLocations[i][0] != MAPSEC_NONE; i ++)
+ {
+ if (sRegionMap_SpecialPlaceLocations[i][0] == mapSecId)
+ {
+ return sRegionMap_SpecialPlaceLocations[i][1];
+ }
+ }
+ return mapSecId;
+}
+
+static u16 RegionMap_GetTerraCaveMapSecId(void)
+{
+ s16 idx;
+
+ idx = VarGet(VAR_0x4037) - 1;
+ if (idx < 0 || idx > 15)
+ {
+ idx = 0;
+ }
+ return sTerraCaveMapSectionIds[idx];
+}
+
+static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y)
+{
+ u16 idx;
+
+ idx = VarGet(VAR_0x4037);
+ if (idx < 9 || idx > 16)
+ {
+ idx = 9;
+ }
+ idx -= 9;
+ *x = sTerraCaveLocationCoords[idx].x + MAPCURSOR_X_MIN;
+ *y = sTerraCaveLocationCoords[idx].y + MAPCURSOR_Y_MIN;
+}
+
+static bool32 RegionMap_IsPlayerInCave(u8 mapSecId)
+{
+ u32 i;
+
+ for (i = 0; i < 1; i ++)
+ {
+ if (sRegionMap_MapSecAquaHideoutOld[i] == mapSecId)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+u16 CorrectSpecialMapSecId(u16 mapSecId)
+{
+ return CorrectSpecialMapSecId_Internal(mapSecId);
+}
+
+static void RegionMap_GetPositionOfCursorWithinMapSection(void)
+{
+ u16 x;
+ u16 y;
+ u16 posWithinMapSec;
+
+ if (gRegionMap->mapSecId == MAPSEC_NONE)
+ {
+ gRegionMap->posWithinMapSec = 0;
+ return;
+ }
+ if (!gRegionMap->zoomed)
+ {
+ x = gRegionMap->cursorPosX;
+ y = gRegionMap->cursorPosY;
+ }
+ else
+ {
+ x = gRegionMap->zoomedCursorPosX;
+ y = gRegionMap->zoomedCursorPosY;
+ }
+ posWithinMapSec = 0;
+ while (1)
+ {
+ if (x <= MAPCURSOR_X_MIN)
+ {
+ if (RegionMap_IsMapSecIdInNextRow(y))
+ {
+ y --;
+ x = MAPCURSOR_X_MAX + 1;
+ }
+ else
+ {
+ break;
+ }
+ }
+ else
+ {
+ x --;
+ if (GetRegionMapSectionIdAt_Internal(x, y) == gRegionMap->mapSecId)
+ {
+ posWithinMapSec ++;
+ }
+ }
+ }
+ gRegionMap->posWithinMapSec = posWithinMapSec;
+}
+
+static bool8 RegionMap_IsMapSecIdInNextRow(u16 y)
+{
+ u16 x;
+
+ if (y -- == 0)
+ {
+ return FALSE;
+ }
+ for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x ++)
+ {
+ if (GetRegionMapSectionIdAt_Internal(x, y) == gRegionMap->mapSecId)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void SpriteCallback_CursorFull(struct Sprite *sprite)
+{
+ if (gRegionMap->cursorMovementFrameCounter != 0)
+ {
+ sprite->pos1.x += 2 * gRegionMap->cursorDeltaX;
+ sprite->pos1.y += 2 * gRegionMap->cursorDeltaY;
+ gRegionMap->cursorMovementFrameCounter --;
+ }
+}
+
+static void SpriteCallback_CursorZoomed(struct Sprite *sprite)
+{
+
+}
+
+void CreateRegionMapCursor(u16 tileTag, u16 paletteTag)
+{
+ u8 spriteId;
+ struct SpriteTemplate template;
+ struct SpritePalette palette;
+ struct SpriteSheet sheet;
+
+ palette = sRegionMapCursorSpritePalette;
+ template = sRegionMapCursorSpriteTemplate;
+ sheet.tag = tileTag;
+ template.tileTag = tileTag;
+ gRegionMap->cursorTileTag = tileTag;
+ palette.tag = paletteTag;
+ template.paletteTag = paletteTag;
+ gRegionMap->cursorPaletteTag = paletteTag;
+ if (!gRegionMap->zoomed)
+ {
+ sheet.data = gRegionMap->cursorSmallImage;
+ sheet.size = sizeof(gRegionMap->cursorSmallImage);
+ template.callback = SpriteCallback_CursorFull;
+ }
+ else
+ {
+ sheet.data = gRegionMap->cursorLargeImage;
+ sheet.size = sizeof(gRegionMap->cursorLargeImage);
+ template.callback = SpriteCallback_CursorZoomed;
+ }
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&palette);
+ spriteId = CreateSprite(&template, 0x38, 0x48, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gRegionMap->cursorSprite = &gSprites[spriteId];
+ if (gRegionMap->zoomed == TRUE)
+ {
+ gRegionMap->cursorSprite->oam.size = 2;
+ gRegionMap->cursorSprite->pos1.x -= 8;
+ gRegionMap->cursorSprite->pos1.y -= 8;
+ StartSpriteAnim(gRegionMap->cursorSprite, 1);
+ }
+ else
+ {
+ gRegionMap->cursorSprite->oam.size = 1;
+ gRegionMap->cursorSprite->pos1.x = 8 * gRegionMap->cursorPosX + 4;
+ gRegionMap->cursorSprite->pos1.y = 8 * gRegionMap->cursorPosY + 4;
+ }
+ gRegionMap->cursorSprite->data1 = 2;
+ gRegionMap->cursorSprite->data2 = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101;
+ gRegionMap->cursorSprite->data3 = TRUE;
+ }
+}
+
+static void FreeRegionMapCursorSprite(void)
+{
+ if (gRegionMap->cursorSprite != NULL)
+ {
+ DestroySprite(gRegionMap->cursorSprite);
+ FreeSpriteTilesByTag(gRegionMap->cursorTileTag);
+ FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag);
+ }
+}
+
+void sub_8124268(void)
+{
+ gRegionMap->cursorSprite->data3 = TRUE;
+}
+
+void sub_8124278(void)
+{
+ gRegionMap->cursorSprite->data3 = FALSE;
+}
+
+void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag)
+{
+ u8 spriteId;
+ struct SpriteSheet sheet = {sRegionMapPlayerIcon_BrendanGfx, 0x80, tileTag};
+ struct SpritePalette palette = {sRegionMapPlayerIcon_BrendanPal, paletteTag};
+ struct SpriteTemplate template = {tileTag, paletteTag, &sRegionMapPlayerIconOam, sRegionMapPlayerIconAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
+
+ if (sub_8124668(gMapHeader.regionMapSectionId))
+ {
+ gRegionMap->playerIconSprite = NULL;
+ return;
+ }
+ if (gSaveBlock2Ptr->playerGender == FEMALE)
+ {
+ sheet.data = sRegionMapPlayerIcon_MayGfx;
+ palette.data = sRegionMapPlayerIcon_MayPal;
+ }
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&palette);
+ spriteId = CreateSprite(&template, 0, 0, 1);
+ gRegionMap->playerIconSprite = &gSprites[spriteId];
+ if (!gRegionMap->zoomed)
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 8 + 4;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4;
+ gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Full;
+ }
+ else
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42;
+ gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Zoomed;
+ }
+}
+
+static void HideRegionMapPlayerIcon(void)
+{
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ gRegionMap->playerIconSprite->invisible = TRUE;
+ gRegionMap->playerIconSprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void UnhideRegionMapPlayerIcon(void)
+{
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ if (gRegionMap->zoomed == TRUE)
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42;
+ gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Zoomed;
+ gRegionMap->playerIconSprite->invisible = FALSE;
+ }
+ else
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 8 + 4;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4;
+ gRegionMap->playerIconSprite->pos2.x = 0;
+ gRegionMap->playerIconSprite->pos2.y = 0;
+ gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Full;
+ gRegionMap->playerIconSprite->invisible = FALSE;
+ }
+ }
+}
+
+static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite)
+{
+ sprite->pos2.x = -2 * gRegionMap->scrollX;
+ sprite->pos2.y = -2 * gRegionMap->scrollY;
+ sprite->data0 = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ sprite->data1 = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
+ if (sprite->data0 < -8 || sprite->data0 > 0xa8 || sprite->data1 < -8 || sprite->data1 > 0xf8)
+ {
+ sprite->data2 = FALSE;
+ }
+ else
+ {
+ sprite->data2 = TRUE;
+ }
+ if (sprite->data2 == TRUE)
+ {
+ RegionMapPlayerIconSpriteCallback(sprite);
+ }
+ else
+ {
+ sprite->invisible = TRUE;
+ }
+}
+
+static void RegionMapPlayerIconSpriteCallback_Full(struct Sprite *sprite)
+{
+ RegionMapPlayerIconSpriteCallback(sprite);
+}
+
+static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite)
+{
+ if (gRegionMap->blinkPlayerIcon)
+ {
+ if (++ sprite->data7 > 16)
+ {
+ sprite->data7 = 0;
+ sprite->invisible = sprite->invisible ? FALSE : TRUE;
+ }
+ }
+ else
+ {
+ sprite->invisible = FALSE;
+ }
+}
+
+void sub_812454C(void)
+{
+ if (gRegionMap->playerIsInCave)
+ {
+ gRegionMap->blinkPlayerIcon = TRUE;
+ }
+}
+
+u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength)
+{
+ u8 *str;
+ u16 i;
+
+ if (regionMapId == MAPSEC_SECRET_BASE)
+ {
+ str = GetSecretBaseMapName(dest);
+ }
+ else if (regionMapId < MAPSEC_NONE)
+ {
+ str = StringCopy(dest, gRegionMapEntries[regionMapId].name);
+ }
+ else
+ {
+ if (padLength == 0)
+ {
+ padLength = 18;
+ }
+ return StringFill(dest, CHAR_SPACE, padLength);
+ }
+ if (padLength != 0)
+ {
+ for (i = str - dest; i < padLength; i ++)
+ {
+ *str++ = CHAR_SPACE;
+ }
+ *str = EOS;
+ }
+ return str;
+}
+
+u8 *sub_81245DC(u8 *dest, u16 mapSecId)
+{
+ switch (mapSecId)
+ {
+ case MAPSEC_SS_TIDAL:
+ return StringCopy(dest, gText_Ferry);
+ case MAPSEC_SECRET_BASE:
+ return StringCopy(dest, gText_SecretBase);
+ default:
+ return GetMapName(dest, mapSecId, 0);
+ }
+}
+
+u8 *sub_8124610(u8 *dest, u16 mapSecId)
+{
+ if (mapSecId == MAPSEC_AQUA_HIDEOUT_OLD)
+ {
+ return StringCopy(dest, gText_Hideout);
+ }
+ else
+ {
+ return sub_81245DC(dest, mapSecId);
+ }
+}
+
+void sub_8124630(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height)
+{
+ *x = gRegionMapEntries[mapSecId].x;
+ *y = gRegionMapEntries[mapSecId].y;
+ *width = gRegionMapEntries[mapSecId].width;
+ *height = gRegionMapEntries[mapSecId].height;
+}
+
+bool8 sub_8124658(void)
+{
+ return gRegionMap->zoomed;
+}
+
+bool32 sub_8124668(u8 mapSecId)
+{
+ u32 i;
+
+ for (i = 0; i < 3; i ++)
+ {
+ if (mapSecId == sRegionMapEventSectionIds[i])
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void MCB2_FlyMap(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ gUnknown_0203A148 = malloc(sizeof(*gUnknown_0203A148));
+ if (gUnknown_0203A148 == NULL)
+ {
+ SetMainCallback2(sub_8086194);
+ }
+ else
+ {
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeSpriteTileRanges();
+ FreeAllSpritePalettes();
+ gMain.state ++;
+ }
+ break;
+ case 1:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, gUnknown_085A1EE4, 3);
+ gMain.state ++;
+ break;
+ case 2:
+ InitWindows(gUnknown_085A1EF0);
+ DeactivateAllTextPrinters();
+ gMain.state ++;
+ break;
+ case 3:
+ sub_809882C(0, 0x65, 0xd0);
+ clear_scheduled_bg_copies_to_vram();
+ gMain.state ++;
+ break;
+ case 4:
+ InitRegionMap(&gUnknown_0203A148->regionMap, FALSE);
+ CreateRegionMapCursor(0, 0);
+ CreateRegionMapPlayerIcon(1, 1);
+ gUnknown_0203A148->mapSecId = gUnknown_0203A148->regionMap.mapSecId;
+ StringFill(gUnknown_0203A148->unk_a4c, CHAR_SPACE, 16);
+ gUnknown_03001180 = TRUE;
+ sub_8124904();
+ gMain.state ++;
+ break;
+ case 5:
+ LZ77UnCompVram(sRegionMapFrameGfxLZ, (u16 *)BG_CHAR_ADDR(3));
+ gMain.state ++;
+ break;
+ case 6:
+ LZ77UnCompVram(sRegionMapFrameTilemapLZ, (u16 *)BG_SCREEN_ADDR(30));
+ gMain.state ++;
+ break;
+ case 7:
+ LoadPalette(sRegionMapFramePal, 0x10, 0x20);
+ PutWindowTilemap(2);
+ FillWindowPixelBuffer(2, 0x00);
+ PrintTextOnWindow(2, 1, gText_FlyToWhere, 0, 1, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+ gMain.state ++;
+ break;
+ case 8:
+ sub_8124A70();
+ gMain.state ++;
+ break;
+ case 9:
+ BlendPalettes(-1, 16, 0);
+ SetVBlankCallback(sub_81248C0);
+ gMain.state ++;
+ break;
+ case 10:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ sub_81248F4(sub_8124D14);
+ SetMainCallback2(sub_81248D4);
+ gMain.state ++;
+ break;
+ }
+}
+
+static void sub_81248C0(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void sub_81248D4(void)
+{
+ gUnknown_0203A148->unk_000();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+}
+
+static void sub_81248F4(void callback(void))
+{
+ gUnknown_0203A148->unk_000 = callback;
+ gUnknown_0203A148->unk_004 = 0;
+}
+
+static void sub_8124904(void)
+{
+ u16 i;
+ bool32 flag;
+ const u8 *name;
+
+ if (gUnknown_0203A148->regionMap.iconDrawType > MAPSECTYPE_NONE && gUnknown_0203A148->regionMap.iconDrawType <= MAPSECTYPE_BATTLE_FRONTIER)
+ {
+ flag = FALSE;
+ for (i = 0; i < 1; i ++)
+ {
+ if (gUnknown_0203A148->regionMap.mapSecId == gUnknown_085A1EDC[i].mapSecId)
+ {
+ if (FlagGet(gUnknown_085A1EDC[i].flag))
+ {
+ StringLength(gUnknown_085A1EDC[i].name[gUnknown_0203A148->regionMap.posWithinMapSec]);
+ flag = TRUE;
+ sub_8198070(0, FALSE);
+ SetWindowBorderStyle(1, FALSE, 0x65, 0x0d);
+ PrintTextOnWindow(1, 1, gUnknown_0203A148->regionMap.mapSecName, 0, 1, 0, NULL);
+ name = gUnknown_085A1EDC[i].name[gUnknown_0203A148->regionMap.posWithinMapSec];
+ PrintTextOnWindow(1, 1, name, GetStringRightAlignXOffset(1, name, 0x60), 0x11, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+ gUnknown_03001180 = TRUE;
+ }
+ break;
+ }
+ }
+ if (!flag)
+ {
+ if (gUnknown_03001180 == TRUE)
+ {
+ sub_8198070(1, FALSE);
+ SetWindowBorderStyle(0, FALSE, 0x65, 0x0d);
+ }
+ else
+ {
+ FillWindowPixelBuffer(0, 0x11);
+ }
+ PrintTextOnWindow(0, 1, gUnknown_0203A148->regionMap.mapSecName, 0, 1, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+ gUnknown_03001180 = FALSE;
+ }
+ }
+ else
+ {
+ if (gUnknown_03001180 == TRUE)
+ {
+ sub_8198070(1, FALSE);
+ SetWindowBorderStyle(0, FALSE, 0x65, 0x0d);
+ }
+ FillWindowPixelBuffer(0, 0x11);
+ CopyWindowToVram(0, 2);
+ schedule_bg_copy_tilemap_to_vram(0);
+ gUnknown_03001180 = FALSE;
+ }
+}
+
+
+static void sub_8124A70(void)
+{
+ struct SpriteSheet sheet;
+
+ LZ77UnCompWram(gUnknown_085A1D68, gUnknown_0203A148->unk_88c);
+ sheet.data = gUnknown_0203A148->unk_88c;
+ sheet.size = 0x1c0;
+ sheet.tag = 2;
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&gUnknown_085A1F10);
+ sub_8124AD4();
+ sub_8124BE4();
+}
+
+static void sub_8124AD4(void)
+{
+ u16 canFlyFlag;
+ u16 i;
+ u16 x;
+ u16 y;
+ u16 width;
+ u16 height;
+ u16 shape;
+ u8 spriteId;
+
+ canFlyFlag = FLAG_VISITED_LITTLEROOT_TOWN;
+ for (i = 0; i < 16; i ++)
+ {
+ sub_8124630(i, &x, &y, &width, &height);
+ x = (x + MAPCURSOR_X_MIN) * 8 + 4;
+ y = (y + MAPCURSOR_Y_MIN) * 8 + 4;
+ if (width == 2)
+ {
+ shape = ST_OAM_H_RECTANGLE;
+ }
+ else if (height == 2)
+ {
+ shape = ST_OAM_V_RECTANGLE;
+ }
+ else
+ {
+ shape = ST_OAM_SQUARE;
+ }
+ spriteId = CreateSprite(&gUnknown_085A1F7C, x, y, 10);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.shape = shape;
+ if (FlagGet(canFlyFlag))
+ {
+ gSprites[spriteId].callback = sub_8124CBC;
+ }
+ else
+ {
+ shape += 3;
+ }
+ StartSpriteAnim(&gSprites[spriteId], shape);
+ gSprites[spriteId].data0 = i;
+ }
+ canFlyFlag ++;
+ }
+}
+
+static void sub_8124BE4(void)
+{
+ u16 i;
+ u16 x;
+ u16 y;
+ u16 width;
+ u16 height;
+ u16 mapSecId;
+ u8 spriteId;
+
+ for (i = 0; gUnknown_085A1F18[i][1] != MAPSEC_NONE; i ++)
+ {
+ if (FlagGet(gUnknown_085A1F18[i][0]))
+ {
+ mapSecId = gUnknown_085A1F18[i][1];
+ sub_8124630(mapSecId, &x, &y, &width, &height);
+ x = (x + MAPCURSOR_X_MIN) * 8;
+ y = (y + MAPCURSOR_Y_MIN) * 8;
+ spriteId = CreateSprite(&gUnknown_085A1F7C, x, y, 10);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.size = 1;
+ gSprites[spriteId].callback = sub_8124CBC;
+ StartSpriteAnim(&gSprites[spriteId], 6);
+ gSprites[spriteId].data0 = mapSecId;
+ }
+ }
+ }
+}
+
+static void sub_8124CBC(struct Sprite *sprite)
+{
+ if (gUnknown_0203A148->regionMap.mapSecId == sprite->data0)
+ {
+ if (++ sprite->data1 > 16)
+ {
+ sprite->data1 = 0;
+ sprite->invisible = sprite->invisible ? FALSE : TRUE;
+ }
+ }
+ else
+ {
+ sprite->data1 = 16;
+ sprite->invisible = FALSE;
+ }
+}
+
+static void sub_8124D14(void)
+{
+ switch (gUnknown_0203A148->unk_004)
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ gUnknown_0203A148->unk_004 ++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ sub_81248F4(sub_8124D64);
+ }
+ break;
+ }
+}
+
+static void sub_8124D64(void)
+{
+ if (gUnknown_0203A148->unk_004 == 0)
+ {
+ switch (sub_81230AC())
+ {
+ case INPUT_EVENT_NONE:
+ case INPUT_EVENT_MOVE_START:
+ case INPUT_EVENT_MOVE_CONT:
+ break;
+ case INPUT_EVENT_MOVE_END:
+ sub_8124904();
+ break;
+ case INPUT_EVENT_A_BUTTON:
+ if (gUnknown_0203A148->regionMap.iconDrawType == MAPSECTYPE_CITY_CANFLY || gUnknown_0203A148->regionMap.iconDrawType == MAPSECTYPE_BATTLE_FRONTIER)
+ {
+ m4aSongNumStart(SE_SELECT);
+ gUnknown_0203A148->unk_a72 = TRUE;
+ sub_81248F4(sub_8124E0C);
+ }
+ break;
+ case INPUT_EVENT_B_BUTTON:
+ m4aSongNumStart(SE_SELECT);
+ gUnknown_0203A148->unk_a72 = FALSE;
+ sub_81248F4(sub_8124E0C);
+ break;
+ }
+ }
+}
+
+static void sub_8124E0C(void)
+{
+ switch (gUnknown_0203A148->unk_004)
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gUnknown_0203A148->unk_004 ++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ FreeRegionMapIconResources();
+ if (gUnknown_0203A148->unk_a72)
+ {
+ switch (gUnknown_0203A148->regionMap.mapSecId)
+ {
+ case MAPSEC_SOUTHERN_ISLAND:
+ sub_8084CCC(0x15);
+ break;
+ case MAPSEC_BATTLE_FRONTIER:
+ sub_8084CCC(0x16);
+ break;
+ case MAPSEC_LITTLEROOT_TOWN:
+ sub_8084CCC(gSaveBlock2Ptr->playerGender == MALE ? 0x0C : 0x0D);
+ break;
+ case MAPSEC_EVER_GRANDE_CITY:
+ sub_8084CCC(FlagGet(SYS_POKEMON_LEAGUE_FLY) && gUnknown_0203A148->regionMap.posWithinMapSec == 0 ? 0x14 : 0x0B);
+ break;
+ default:
+ if (gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][2] != 0)
+ {
+ sub_8084CCC(gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][2]);
+ }
+ else
+ {
+ warp1_set_2(gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][0], gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][1], -1);
+ }
+ break;
+ }
+ sub_80B69DC();
+ }
+ else
+ {
+ SetMainCallback2(sub_81B58A8);
+ }
+ if (gUnknown_0203A148 != NULL)
+ {
+ free(gUnknown_0203A148);
+ gUnknown_0203A148 = NULL;
+ }
+ FreeAllWindowBuffers();
+ }
+ break;
+ }
+}
diff --git a/src/tv.c b/src/tv.c
index 3c822b394..933b9c0b8 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -6432,10 +6432,10 @@ void DoTVShowTodaysRivalTrainer(void)
default:
sTVShowState = 7;
break;
- case REGION_MAP_SECRET_BASE:
+ case MAPSEC_SECRET_BASE:
sTVShowState = 8;
break;
- case REGION_MAP_NONE:
+ case MAPSEC_SS_TIDAL:
switch (show->rivalTrainer.mapDataId)
{
case 0x115 ... 0x117:
@@ -6633,7 +6633,7 @@ void DoTVShowHoennTreasureInvestigators(void)
{
case 0:
StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name);
- if (show->treasureInvestigators.location == REGION_MAP_NONE)
+ if (show->treasureInvestigators.location == MAPSEC_SS_TIDAL)
{
switch (show->treasureInvestigators.mapDataId)
{
diff --git a/sym_bss.txt b/sym_bss.txt
index db7495182..00df27703 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -34,8 +34,7 @@ gUnknown_03001178: @ 3001178
gUnknown_0300117C: @ 300117C
.space 0x4
-gUnknown_03001180: @ 3001180
- .space 0x8
+ .include "src/region_map.o"
gUnknown_03001188: @ 3001188
.space 0x68
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 52d24a9ab..d4ce499e1 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1105,12 +1105,7 @@ gUnknown_0203A138: @ 203A138
gUnknown_0203A140: @ 203A140
.space 0x4
-gUnknown_0203A144: @ 203A144
- .space 0x4
-
-gUnknown_0203A148: @ 203A148
- .space 0x4
-
+ .include "src/region_map.o"
.include "src/decoration.o"
.align 2
@@ -1398,8 +1393,7 @@ gUnknown_0203BCC8: @ 203BCC8
gUnknown_0203BCCC: @ 203BCCC
.space 0x4
-gUnknown_0203BCD0: @ 203BCD0
- .space 0x4
+ .include "src/field_region_map.o"
gUnknown_0203BCD4: @ 203BCD4
.space 0x4