summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokedex_area_screen.s2370
-rw-r--r--data/pokedex_area_screen.s73
-rw-r--r--include/constants/region_map_sections.h97
-rw-r--r--include/constants/species.h6
-rw-r--r--include/graphics.h3
-rw-r--r--include/region_map.h16
-rw-r--r--include/region_map_sections.h60
-rw-r--r--include/roamer.h2
-rw-r--r--ld_script.txt4
-rw-r--r--src/data/region_map_layout.h2
-rw-r--r--src/landmark.c98
-rw-r--r--src/pokedex_area_screen.c1425
-rw-r--r--src/region_map.c161
-rw-r--r--src/roamer.c6
-rw-r--r--src/tv.c12
15 files changed, 1632 insertions, 2703 deletions
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s
deleted file mode 100644
index 779a5a0ed..000000000
--- a/asm/pokedex_area_screen.s
+++ /dev/null
@@ -1,2370 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start UnusedPokedexAreaScreen
-UnusedPokedexAreaScreen: @ 8110664
- push {lr}
- ldr r3, _08110678 @ =gSharedMem
- str r1, [r3, 0x4]
- str r2, [r3, 0x8]
- strh r0, [r3, 0xE]
- ldr r0, _0811067C @ =CB2_UnusedPokedexAreaScreen
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_08110678: .4byte gSharedMem
-_0811067C: .4byte CB2_UnusedPokedexAreaScreen
- thumb_func_end UnusedPokedexAreaScreen
-
- thumb_func_start CB2_UnusedPokedexAreaScreen
-CB2_UnusedPokedexAreaScreen: @ 8110680
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0811069C @ =gMain
- ldr r1, _081106A0 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x7
- bls _08110692
- b _081107C0
-_08110692:
- lsls r0, 2
- ldr r1, _081106A4 @ =_081106A8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811069C: .4byte gMain
-_081106A0: .4byte 0x0000043c
-_081106A4: .4byte _081106A8
- .align 2, 0
-_081106A8:
- .4byte _081106C8
- .4byte _08110720
- .4byte _08110740
- .4byte _08110746
- .4byte _08110752
- .4byte _08110770
- .4byte _08110782
- .4byte _081107A8
-_081106C8:
- movs r0, 0
- bl SetVBlankCallback
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xC4
- lsls r2, 7
- adds r0, r2, 0
- strh r0, [r1]
- bl ResetPaletteFade
- bl ResetSpriteData
- bl ResetTasks
- bl FreeSpriteTileRanges
- bl FreeAllSpritePalettes
- ldr r0, _08110710 @ =REG_BG0HOFS
- movs r1, 0
- strh r1, [r0]
- ldr r2, _08110714 @ =REG_BG0VOFS
- ldr r3, _08110718 @ =0x0000fff8
- adds r0, r3, 0
- strh r0, [r2]
- ldr r0, _0811071C @ =REG_BG2VOFS
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- b _081107C0
- .align 2, 0
-_08110710: .4byte REG_BG0HOFS
-_08110714: .4byte REG_BG0VOFS
-_08110718: .4byte 0x0000fff8
-_0811071C: .4byte REG_BG2VOFS
-_08110720:
- ldr r4, _0811073C @ =gSharedMem + 0x6E8
- adds r0, r4, 0
- movs r1, 0
- bl InitRegionMap
- movs r0, 0x88
- lsls r0, 4
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- bl StringFill
- b _081107C0
- .align 2, 0
-_0811073C: .4byte gSharedMem + 0x6E8
-_08110740:
- bl sub_8110824
- b _081107C0
-_08110746:
- bl DrawAreaGlow
- lsls r0, 24
- cmp r0, 0
- bne _081107CC
- b _081107C0
-_08110752:
- movs r0, 0x1
- movs r1, 0x1
- bl CreateRegionMapPlayerIcon
- movs r1, 0x8
- negs r1, r1
- movs r0, 0
- bl sub_80FB2A4
- ldr r0, _0811076C @ =sub_81107DC
- bl SetVBlankCallback
- b _081107C0
- .align 2, 0
-_0811076C: .4byte sub_81107DC
-_08110770:
- movs r0, 0x15
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _081107C0
-_08110782:
- ldr r1, _0811079C @ =REG_BLDCNT
- ldr r2, _081107A0 @ =0x00003f41
- adds r0, r2, 0
- strh r0, [r1]
- bl sub_8111084
- movs r1, 0x80
- lsls r1, 19
- ldr r3, _081107A4 @ =0x00007741
- adds r0, r3, 0
- strh r0, [r1]
- b _081107C0
- .align 2, 0
-_0811079C: .4byte REG_BLDCNT
-_081107A0: .4byte 0x00003f41
-_081107A4: .4byte 0x00007741
-_081107A8:
- ldr r0, _081107B8 @ =sub_8111288
- bl sub_8110814
- ldr r0, _081107BC @ =sub_81107F0
- bl SetMainCallback2
- b _081107CC
- .align 2, 0
-_081107B8: .4byte sub_8111288
-_081107BC: .4byte sub_81107F0
-_081107C0:
- ldr r1, _081107D4 @ =gMain
- ldr r0, _081107D8 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_081107CC:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081107D4: .4byte gMain
-_081107D8: .4byte 0x0000043c
- thumb_func_end CB2_UnusedPokedexAreaScreen
-
- thumb_func_start sub_81107DC
-sub_81107DC: @ 81107DC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81107DC
-
- thumb_func_start sub_81107F0
-sub_81107F0: @ 81107F0
- push {lr}
- ldr r0, _08110810 @ =gSharedMem
- ldr r0, [r0]
- bl _call_via_r0
- bl sub_8111110
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- .align 2, 0
-_08110810: .4byte gSharedMem
- thumb_func_end sub_81107F0
-
- thumb_func_start sub_8110814
-sub_8110814: @ 8110814
- ldr r1, _08110820 @ =gSharedMem
- str r0, [r1]
- movs r0, 0
- strh r0, [r1, 0xC]
- bx lr
- .align 2, 0
-_08110820: .4byte gSharedMem
- thumb_func_end sub_8110814
-
- thumb_func_start sub_8110824
-sub_8110824: @ 8110824
- ldr r0, _08110834 @ =gSharedMem
- movs r1, 0x8A
- lsls r1, 1
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- bx lr
- .align 2, 0
-_08110834: .4byte gSharedMem
- thumb_func_end sub_8110824
-
- thumb_func_start DrawAreaGlow
-DrawAreaGlow: @ 8110838
- push {lr}
- ldr r1, _08110854 @ =gSharedMem
- movs r2, 0x8A
- lsls r2, 1
- adds r0, r1, r2
- ldrh r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x5
- bhi _081108E4
- lsls r0, 2
- ldr r1, _08110858 @ =_0811085C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08110854: .4byte gSharedMem
-_08110858: .4byte _0811085C
- .align 2, 0
-_0811085C:
- .4byte _08110874
- .4byte _08110884
- .4byte _0811088A
- .4byte _0811089C
- .4byte _081108C0
- .4byte _081108D0
-_08110874:
- ldr r0, _08110880 @ =gSharedMem
- ldrh r0, [r0, 0xE]
- bl FindMapsWithMon
- b _081108F0
- .align 2, 0
-_08110880: .4byte gSharedMem
-_08110884:
- bl BuildAreaGlowTilemap
- b _081108F0
-_0811088A:
- ldr r0, _08110894 @ =gUnknown_083F8438
- ldr r1, _08110898 @ =0x0600c000
- bl LZ77UnCompVram
- b _081108F0
- .align 2, 0
-_08110894: .4byte gUnknown_083F8438
-_08110898: .4byte 0x0600c000
-_0811089C:
- ldr r1, _081108B0 @ =0x040000d4
- ldr r0, _081108B4 @ =gSharedMem + 0x116
- str r0, [r1]
- ldr r0, _081108B8 @ =0x0600f000
- str r0, [r1, 0x4]
- ldr r0, _081108BC @ =0x80000280
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- b _081108F0
- .align 2, 0
-_081108B0: .4byte 0x040000d4
-_081108B4: .4byte gSharedMem + 0x116
-_081108B8: .4byte 0x0600f000
-_081108BC: .4byte 0x80000280
-_081108C0:
- ldr r0, _081108CC @ =gUnknown_083F8418
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- b _081108F0
- .align 2, 0
-_081108CC: .4byte gUnknown_083F8418
-_081108D0:
- ldr r1, _081108E8 @ =REG_BG0CNT
- ldr r3, _081108EC @ =0x00001e0d
- adds r0, r3, 0
- strh r0, [r1]
- movs r0, 0x8A
- lsls r0, 1
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_081108E4:
- movs r0, 0
- b _08110900
- .align 2, 0
-_081108E8: .4byte REG_BG0CNT
-_081108EC: .4byte 0x00001e0d
-_081108F0:
- ldr r1, _08110904 @ =gSharedMem
- movs r2, 0x8A
- lsls r2, 1
- adds r1, r2
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x1
-_08110900:
- pop {r1}
- bx r1
- .align 2, 0
-_08110904: .4byte gSharedMem
- thumb_func_end DrawAreaGlow
-
- thumb_func_start FindMapsWithMon
-FindMapsWithMon: @ 8110908
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 16
- lsrs r7, r0, 16
- .ifdef SAPPHIRE
- ldr r0, _sub_8110908_Latias @ =407
- .else
- @ Latios
- movs r0, 0xCC
- lsls r0, 1
- .endif
- cmp r7, r0
- bne _0811091E
- b _08110A44
-_0811091E:
- ldr r2, _08110988 @ =gSharedMem
- movs r1, 0x88
- lsls r1, 1
- adds r0, r2, r1
- movs r1, 0
- strh r1, [r0]
- movs r3, 0x89
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- movs r6, 0
- ldr r1, _0811098C @ =gUnknown_083F856C
-_08110936:
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- bne _08110942
- b _08110A8C
-_08110942:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0
- beq _08110936
- movs r6, 0
- ldr r4, _08110990 @ =gUnknown_083F856E
- ldrh r0, [r4]
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _081109D0
- mov r8, r4
- adds r5, r4, 0x4
- mov r9, r1
-_08110960:
- lsls r0, r6, 1
- adds r1, r0, r6
- lsls r2, r1, 1
- mov r3, r8
- adds r1, r2, r3
- adds r3, r0, 0
- ldrh r1, [r1]
- cmp r7, r1
- bne _081109BA
- adds r0, r4, 0x2
- adds r0, r2, r0
- ldrh r0, [r0]
- cmp r0, 0x18
- beq _081109A6
- cmp r0, 0x18
- bgt _08110994
- cmp r0, 0
- beq _0811099A
- b _081109BA
- .align 2, 0
- .ifdef SAPPHIRE
-_sub_8110908_Latias: .4byte 407
- .endif
-_08110988: .4byte gSharedMem
-_0811098C: .4byte gUnknown_083F856C
-_08110990: .4byte gUnknown_083F856E
-_08110994:
- cmp r0, 0x1A
- beq _081109A6
- b _081109BA
-_0811099A:
- adds r0, r2, r5
- ldrh r1, [r0]
- movs r0, 0
- bl SetAreaHasMon
- b _081109BA
-_081109A6:
- adds r1, r3, r6
- lsls r1, 1
- mov r0, r8
- adds r0, 0x2
- adds r0, r1, r0
- ldrh r0, [r0]
- adds r1, r5
- ldrh r1, [r1]
- bl SetSpecialMapHasMon
-_081109BA:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r4, _08110A00 @ =gUnknown_083F856E
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 1
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, r9
- bne _08110960
-_081109D0:
- movs r6, 0
- ldr r1, _08110A04 @ =gWildMonHeaders
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _08110A8C
-_081109DA:
- lsls r4, r6, 2
- adds r0, r4, r6
- lsls r0, 2
- adds r5, r0, r1
- adds r0, r5, 0
- adds r1, r7, 0
- bl MapHasMon
- lsls r0, 24
- cmp r0, 0
- beq _08110A28
- ldrb r0, [r5]
- cmp r0, 0x18
- beq _08110A18
- cmp r0, 0x18
- bgt _08110A08
- cmp r0, 0
- beq _08110A0E
- b _08110A28
- .align 2, 0
-_08110A00: .4byte gUnknown_083F856E
-_08110A04: .4byte gWildMonHeaders
-_08110A08:
- cmp r0, 0x1A
- beq _08110A18
- b _08110A28
-_08110A0E:
- ldrb r1, [r5, 0x1]
- movs r0, 0
- bl SetAreaHasMon
- b _08110A28
-_08110A18:
- ldr r0, _08110A40 @ =gWildMonHeaders
- adds r1, r4, r6
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- bl SetSpecialMapHasMon
-_08110A28:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r1, _08110A40 @ =gWildMonHeaders
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _081109DA
- b _08110A8C
- .align 2, 0
-_08110A40: .4byte gWildMonHeaders
-_08110A44:
- ldr r4, _08110A7C @ =gSharedMem
- movs r0, 0x89
- lsls r0, 1
- adds r1, r4, r0
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08110A80 @ =gSaveBlock1 + 0x3144
- ldrb r2, [r0, 0x13]
- cmp r2, 0
- beq _08110A84
- adds r0, r4, 0
- adds r0, 0x10
- adds r1, r4, 0
- adds r1, 0x11
- bl GetRoamerLocation
- ldrb r0, [r4, 0x10]
- ldrb r1, [r4, 0x11]
- bl Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x14]
- strh r0, [r4, 0x12]
- movs r3, 0x88
- lsls r3, 1
- adds r1, r4, r3
- movs r0, 0x1
- strh r0, [r1]
- b _08110A8C
- .align 2, 0
-_08110A7C: .4byte gSharedMem
-_08110A80: .4byte gSaveBlock1 + 0x3144
-_08110A84:
- movs r1, 0x88
- lsls r1, 1
- adds r0, r4, r1
- strh r2, [r0]
-_08110A8C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end FindMapsWithMon
-
- thumb_func_start SetAreaHasMon
-SetAreaHasMon: @ 8110A98
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r5, _08110AE0 @ =gSharedMem
- movs r0, 0x88
- lsls r0, 1
- adds r4, r5, r0
- ldrh r0, [r4]
- cmp r0, 0x3F
- bhi _08110AD8
- lsls r0, 2
- adds r0, r5
- strb r2, [r0, 0x10]
- ldrh r0, [r4]
- lsls r0, 2
- adds r0, r5
- strb r1, [r0, 0x11]
- adds r0, r2, 0
- bl Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x14]
- bl sub_80FBA04
- ldrh r1, [r4]
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x12]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_08110AD8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08110AE0: .4byte gSharedMem
- thumb_func_end SetAreaHasMon
-
- thumb_func_start SetSpecialMapHasMon
-SetSpecialMapHasMon: @ 8110AE4
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _08110B9C @ =gSharedMem
- movs r3, 0x89
- lsls r3, 1
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, 0x1F
- bhi _08110B96
- adds r0, r2, 0
- bl Overworld_GetMapHeaderByGroupAndId
- adds r6, r0, 0
- ldrb r0, [r6, 0x14]
- cmp r0, 0x57
- bhi _08110B96
- movs r4, 0
- ldr r1, _08110BA0 @ =gUnknown_083F857A
- ldrh r0, [r1]
- cmp r0, 0x58
- beq _08110B42
- adds r5, r1, 0
-_08110B16:
- lsls r2, r4, 2
- adds r1, r2, r5
- ldrb r0, [r6, 0x14]
- ldrh r1, [r1]
- cmp r0, r1
- bne _08110B32
- adds r0, r5, 0x2
- adds r0, r2, r0
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _08110B96
-_08110B32:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r0, r4, 2
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, 0x58
- bne _08110B16
-_08110B42:
- movs r4, 0
- ldr r0, _08110B9C @ =gSharedMem
- movs r1, 0x89
- lsls r1, 1
- adds r2, r0, r1
- ldrh r3, [r2]
- adds r1, r0, 0
- cmp r4, r3
- bcs _08110B76
- movs r0, 0xC4
- lsls r0, 3
- adds r5, r1, r0
- ldrh r0, [r5]
- ldrb r2, [r6, 0x14]
- cmp r0, r2
- beq _08110B76
-_08110B62:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r3
- bcs _08110B76
- lsls r0, r4, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, r2
- bne _08110B62
-_08110B76:
- movs r3, 0x89
- lsls r3, 1
- adds r2, r1, r3
- ldrh r0, [r2]
- cmp r4, r0
- bne _08110B96
- lsls r0, r4, 1
- movs r3, 0xC4
- lsls r3, 3
- adds r1, r3
- adds r0, r1
- ldrb r1, [r6, 0x14]
- strh r1, [r0]
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
-_08110B96:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08110B9C: .4byte gSharedMem
-_08110BA0: .4byte gUnknown_083F857A
- thumb_func_end SetSpecialMapHasMon
-
- thumb_func_start MapHasMon
-MapHasMon: @ 8110BA4
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- adds r6, r4, 0
- ldr r0, [r5, 0x4]
- adds r1, r4, 0
- movs r2, 0xC
- bl MonListHasMon
- lsls r0, 24
- cmp r0, 0
- bne _08110BF2
- ldr r0, [r5, 0x8]
- adds r1, r4, 0
- movs r2, 0x5
- bl MonListHasMon
- lsls r0, 24
- cmp r0, 0
- bne _08110BF2
- ldr r0, [r5, 0x10]
- adds r1, r4, 0
- movs r2, 0xC
- bl MonListHasMon
- lsls r0, 24
- cmp r0, 0
- bne _08110BF2
- ldr r0, [r5, 0xC]
- adds r1, r6, 0
- movs r2, 0x5
- bl MonListHasMon
- lsls r0, 24
- cmp r0, 0
- bne _08110BF2
- movs r0, 0
- b _08110BF4
-_08110BF2:
- movs r0, 0x1
-_08110BF4:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end MapHasMon
-
- thumb_func_start MonListHasMon
-MonListHasMon: @ 8110BFC
- push {r4,lr}
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r2, 16
- cmp r0, 0
- beq _08110C2A
- movs r3, 0
- cmp r3, r2
- bcs _08110C2A
- ldr r1, [r0, 0x4]
-_08110C12:
- lsls r0, r3, 2
- adds r0, r1
- ldrh r0, [r0, 0x2]
- cmp r0, r4
- bne _08110C20
- movs r0, 0x1
- b _08110C2C
-_08110C20:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r2
- bcc _08110C12
-_08110C2A:
- movs r0, 0
-_08110C2C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MonListHasMon
-
- thumb_func_start BuildAreaGlowTilemap
-BuildAreaGlowTilemap: @ 8110C34
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r1, _08110E5C @ =gUnknown_02039260
- movs r0, 0
- strh r0, [r1]
- mov r9, r1
- ldr r0, _08110E60 @ =gSharedMem
- mov r8, r0
- ldr r1, _08110E64 @ =gUnknown_02039262
- mov r12, r1
- mov r1, r9
- movs r4, 0x8B
- lsls r4, 1
- add r4, r8
- ldr r3, _08110E68 @ =0x0000027f
- movs r2, 0
-_08110C5C:
- ldrh r0, [r1]
- lsls r0, 1
- adds r0, r4
- strh r2, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r3
- bls _08110C5C
- movs r0, 0
- mov r3, r9
- strh r0, [r3]
- movs r1, 0x88
- lsls r1, 1
- add r1, r8
- ldrh r0, [r1]
- cmp r0, 0
- beq _08110D04
- ldr r4, _08110E6C @ =gUnknown_02039266
- movs r2, 0
- ldr r5, _08110E64 @ =gUnknown_02039262
- mov r0, r8
- str r0, [sp, 0x8]
- movs r1, 0x8B
- lsls r1, 1
- add r1, r8
- mov r10, r1
- ldr r6, _08110E70 @ =gUnknown_02039264
- mov r7, r9
-_08110C9A:
- strh r2, [r4]
- ldr r3, _08110E70 @ =gUnknown_02039264
- strh r2, [r3]
-_08110CA0:
- mov r0, r12
- strh r2, [r0]
-_08110CA4:
- ldrh r0, [r5]
- ldrh r1, [r6]
- str r2, [sp]
- bl GetRegionMapSectionAt_
- ldrh r1, [r7]
- lsls r1, 2
- ldr r3, [sp, 0x8]
- adds r1, r3
- lsls r0, 16
- lsrs r0, 16
- ldr r2, [sp]
- ldrh r1, [r1, 0x12]
- cmp r0, r1
- bne _08110CCC
- ldrh r0, [r4]
- lsls r0, 1
- add r0, r10
- ldr r1, _08110E74 @ =0x0000ffff
- strh r1, [r0]
-_08110CCC:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1F
- bls _08110CA4
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08110E64 @ =gUnknown_02039262
- mov r12, r1
- cmp r0, 0x13
- bls _08110CA0
- ldrh r0, [r7]
- adds r0, 0x1
- strh r0, [r7]
- lsls r0, 16
- lsrs r0, 16
- ldr r3, _08110E78 @ =gSharedMem + 0x110
- ldrh r3, [r3]
- cmp r0, r3
- bcc _08110C9A
-_08110D04:
- movs r0, 0
- ldr r1, _08110E6C @ =gUnknown_02039266
- strh r0, [r1]
- ldr r3, _08110E70 @ =gUnknown_02039264
- strh r0, [r3]
- ldr r6, _08110E64 @ =gUnknown_02039262
- mov r10, r0
- adds r3, r1, 0
- ldr r5, _08110E7C @ =gSharedMem + 0x116
- ldr r4, _08110E74 @ =0x0000ffff
- ldr r7, _08110E70 @ =gUnknown_02039264
-_08110D1A:
- mov r0, r10
- strh r0, [r6]
-_08110D1E:
- ldrh r1, [r3]
- lsls r0, r1, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, r4
- bne _08110E10
- ldrh r0, [r6]
- cmp r0, 0
- beq _08110D42
- subs r0, r1, 0x1
- lsls r0, 1
- adds r2, r0, r5
- ldrh r1, [r2]
- cmp r1, r4
- beq _08110D42
- movs r0, 0x2
- orrs r0, r1
- strh r0, [r2]
-_08110D42:
- ldrh r0, [r6]
- cmp r0, 0x1F
- beq _08110D5C
- ldrh r0, [r3]
- adds r0, 0x1
- lsls r0, 1
- adds r2, r0, r5
- ldrh r1, [r2]
- cmp r1, r4
- beq _08110D5C
- movs r0, 0x1
- orrs r0, r1
- strh r0, [r2]
-_08110D5C:
- ldrh r0, [r7]
- cmp r0, 0
- beq _08110D76
- ldrh r0, [r3]
- subs r0, 0x20
- lsls r0, 1
- adds r2, r0, r5
- ldrh r1, [r2]
- cmp r1, r4
- beq _08110D76
- movs r0, 0x8
- orrs r0, r1
- strh r0, [r2]
-_08110D76:
- ldrh r0, [r7]
- cmp r0, 0x13
- beq _08110D90
- ldrh r0, [r3]
- adds r0, 0x20
- lsls r0, 1
- adds r2, r0, r5
- ldrh r1, [r2]
- cmp r1, r4
- beq _08110D90
- movs r0, 0x4
- orrs r0, r1
- strh r0, [r2]
-_08110D90:
- ldrh r0, [r6]
- cmp r0, 0
- beq _08110DB0
- ldrh r0, [r7]
- cmp r0, 0
- beq _08110DB0
- ldrh r0, [r3]
- subs r0, 0x21
- lsls r0, 1
- adds r2, r0, r5
- ldrh r1, [r2]
- cmp r1, r4
- beq _08110DB0
- movs r0, 0x10
- orrs r0, r1
- strh r0, [r2]
-_08110DB0:
- ldrh r0, [r6]
- cmp r0, 0x1F
- beq _08110DD0
- ldrh r0, [r7]
- cmp r0, 0
- beq _08110DD0
- ldrh r0, [r3]
- subs r0, 0x1F
- lsls r0, 1
- adds r2, r0, r5
- ldrh r1, [r2]
- cmp r1, r4
- beq _08110DD0
- movs r0, 0x40
- orrs r0, r1
- strh r0, [r2]
-_08110DD0:
- ldrh r0, [r6]
- cmp r0, 0
- beq _08110DF0
- ldrh r0, [r7]
- cmp r0, 0x13
- beq _08110DF0
- ldrh r0, [r3]
- adds r0, 0x1F
- lsls r0, 1
- adds r2, r0, r5
- ldrh r1, [r2]
- cmp r1, r4
- beq _08110DF0
- movs r0, 0x20
- orrs r0, r1
- strh r0, [r2]
-_08110DF0:
- ldrh r0, [r6]
- cmp r0, 0x1F
- beq _08110E10
- ldrh r0, [r7]
- cmp r0, 0x13
- beq _08110E10
- ldrh r0, [r3]
- adds r0, 0x21
- lsls r0, 1
- adds r2, r0, r5
- ldrh r1, [r2]
- cmp r1, r4
- beq _08110E10
- movs r0, 0x80
- orrs r0, r1
- strh r0, [r2]
-_08110E10:
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1F
- bhi _08110E26
- b _08110D1E
-_08110E26:
- ldrh r0, [r7]
- adds r0, 0x1
- strh r0, [r7]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x13
- bhi _08110E36
- b _08110D1A
-_08110E36:
- movs r0, 0
- mov r1, r9
- strh r0, [r1]
-_08110E3C:
- mov r3, r9
- ldrh r0, [r3]
- lsls r0, 1
- movs r4, 0x8B
- lsls r4, 1
- add r4, r8
- adds r3, r0, r4
- ldrh r2, [r3]
- adds r1, r2, 0
- ldr r0, _08110E74 @ =0x0000ffff
- cmp r1, r0
- bne _08110E80
- movs r0, 0x10
- strh r0, [r3]
- b _0811105E
- .align 2, 0
-_08110E5C: .4byte gUnknown_02039260
-_08110E60: .4byte gSharedMem
-_08110E64: .4byte gUnknown_02039262
-_08110E68: .4byte 0x0000027f
-_08110E6C: .4byte gUnknown_02039266
-_08110E70: .4byte gUnknown_02039264
-_08110E74: .4byte 0x0000ffff
-_08110E78: .4byte gSharedMem + 0x110
-_08110E7C: .4byte gSharedMem + 0x116
-_08110E80:
- cmp r1, 0
- bne _08110E86
- b _0811105E
-_08110E86:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _08110E94
- ldr r0, _08110F28 @ =0x0000ffcf
- ands r0, r2
- strh r0, [r3]
-_08110E94:
- mov r1, r9
- ldrh r0, [r1]
- lsls r0, 1
- adds r2, r0, r4
- ldrh r1, [r2]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08110EAC
- ldr r0, _08110F2C @ =0x0000ff3f
- ands r0, r1
- strh r0, [r2]
-_08110EAC:
- mov r3, r9
- ldrh r0, [r3]
- lsls r0, 1
- adds r2, r0, r4
- ldrh r1, [r2]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08110EC4
- ldr r0, _08110F30 @ =0x0000ffaf
- ands r0, r1
- strh r0, [r2]
-_08110EC4:
- mov r1, r9
- ldrh r0, [r1]
- lsls r0, 1
- adds r2, r0, r4
- ldrh r1, [r2]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08110EDC
- ldr r0, _08110F34 @ =0x0000ff5f
- ands r0, r1
- strh r0, [r2]
-_08110EDC:
- ldr r6, _08110F38 @ =gUnknown_02039268
- mov r3, r9
- ldrh r0, [r3]
- lsls r0, 1
- adds r0, r4
- ldrh r1, [r0]
- movs r5, 0xF
- adds r0, r5, 0
- ands r0, r1
- strh r0, [r6]
- ldr r2, _08110F3C @ =gUnknown_0203926A
- ldrh r0, [r3]
- lsls r0, 1
- adds r0, r4
- ldrh r1, [r0]
- movs r0, 0xF0
- ands r0, r1
- strh r0, [r2]
- ldrh r1, [r3]
- adds r3, r2, 0
- cmp r0, 0
- bne _08110F0A
- b _0811105E
-_08110F0A:
- lsls r0, r1, 1
- adds r0, r4
- ldrh r2, [r0]
- adds r1, r5, 0
- ands r1, r2
- strh r1, [r0]
- ldrh r0, [r6]
- cmp r0, 0xA
- bls _08110F1E
- b _0811105E
-_08110F1E:
- lsls r0, 2
- ldr r1, _08110F40 @ =_08110F44
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08110F28: .4byte 0x0000ffcf
-_08110F2C: .4byte 0x0000ff3f
-_08110F30: .4byte 0x0000ffaf
-_08110F34: .4byte 0x0000ff5f
-_08110F38: .4byte gUnknown_02039268
-_08110F3C: .4byte gUnknown_0203926A
-_08110F40: .4byte _08110F44
- .align 2, 0
-_08110F44:
- .4byte _08110F70
- .4byte _08110FAC
- .4byte _08110F8E
- .4byte _0811105E
- .4byte _08111002
- .4byte _08111036
- .4byte _08111036
- .4byte _0811105E
- .4byte _08110FCE
- .4byte _0811104A
- .4byte _0811104A
-_08110F70:
- ldrh r0, [r3]
- lsls r1, r0, 16
- cmp r1, 0
- beq _0811105E
- mov r0, r9
- ldrh r2, [r0]
- lsls r2, 1
- movs r0, 0x8B
- lsls r0, 1
- add r0, r8
- adds r2, r0
- ldrh r0, [r2]
- adds r0, 0x10
- lsrs r1, 20
- b _08110FC8
-_08110F8E:
- ldrh r0, [r3]
- lsls r1, r0, 16
- cmp r1, 0
- beq _0811105E
- mov r3, r9
- ldrh r2, [r3]
- lsls r2, 1
- movs r0, 0x8B
- lsls r0, 1
- add r0, r8
- adds r2, r0
- ldrh r0, [r2]
- adds r0, 0x1E
- lsrs r1, 20
- b _08110FC8
-_08110FAC:
- ldrh r0, [r3]
- lsls r1, r0, 16
- cmp r1, 0
- beq _0811105E
- mov r0, r9
- ldrh r2, [r0]
- lsls r2, 1
- movs r0, 0x8B
- lsls r0, 1
- add r0, r8
- adds r2, r0
- ldrh r0, [r2]
- adds r0, 0x20
- lsrs r1, 22
-_08110FC8:
- adds r0, r1
- strh r0, [r2]
- b _0811105E
-_08110FCE:
- ldrh r2, [r3]
- cmp r2, 0
- beq _0811105E
- movs r0, 0x80
- ands r0, r2
- lsls r0, 16
- lsrs r0, 16
- negs r0, r0
- lsrs r3, r0, 31
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- beq _08110FEC
- movs r0, 0x2
- orrs r3, r0
-_08110FEC:
- mov r0, r9
- ldrh r1, [r0]
- lsls r1, 1
- movs r0, 0x8B
- lsls r0, 1
- add r0, r8
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x20
- adds r0, r3
- b _0811105C
-_08111002:
- ldrh r2, [r3]
- cmp r2, 0
- beq _0811105E
- movs r0, 0x40
- ands r0, r2
- lsls r0, 16
- lsrs r0, 16
- negs r0, r0
- lsrs r3, r0, 31
- movs r0, 0x10
- ands r0, r2
- cmp r0, 0
- beq _08111020
- movs r0, 0x2
- orrs r3, r0
-_08111020:
- mov r0, r9
- ldrh r1, [r0]
- lsls r1, 1
- movs r0, 0x8B
- lsls r0, 1
- add r0, r8
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x21
- adds r0, r3
- b _0811105C
-_08111036:
- mov r3, r9
- ldrh r1, [r3]
- lsls r1, 1
- movs r0, 0x8B
- lsls r0, 1
- add r0, r8
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x27
- b _0811105C
-_0811104A:
- mov r0, r9
- ldrh r1, [r0]
- lsls r1, 1
- movs r0, 0x8B
- lsls r0, 1
- add r0, r8
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x25
-_0811105C:
- strh r0, [r1]
-_0811105E:
- mov r3, r9
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
- lsls r0, 16
- ldr r1, _08111080 @ =0x027f0000
- cmp r0, r1
- bhi _08111070
- b _08110E3C
-_08111070:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08111080: .4byte 0x027f0000
- thumb_func_end BuildAreaGlowTilemap
-
- thumb_func_start sub_8111084
-sub_8111084: @ 8111084
- push {lr}
- ldr r0, _081110AC @ =gSharedMem
- movs r2, 0x89
- lsls r2, 1
- adds r1, r0, r2
- ldrh r1, [r1]
- adds r2, r0, 0
- cmp r1, 0
- beq _081110B4
- movs r3, 0x88
- lsls r3, 1
- adds r0, r2, r3
- ldrh r0, [r0]
- cmp r0, 0
- bne _081110B4
- ldr r0, _081110B0 @ =0x0000061e
- adds r1, r2, r0
- movs r0, 0x1
- b _081110BA
- .align 2, 0
-_081110AC: .4byte gSharedMem
-_081110B0: .4byte 0x0000061e
-_081110B4:
- ldr r3, _081110FC @ =0x0000061e
- adds r1, r2, r3
- movs r0, 0
-_081110BA:
- strb r0, [r1]
- ldr r1, _08111100 @ =0x00000616
- adds r0, r2, r1
- movs r1, 0
- strh r1, [r0]
- movs r3, 0xC3
- lsls r3, 3
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- ldr r0, _08111104 @ =0x0000061c
- adds r1, r2, r0
- movs r0, 0x40
- strh r0, [r1]
- adds r3, 0x5
- adds r1, r2, r3
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _08111108 @ =REG_BLDCNT
- ldr r2, _0811110C @ =0x00003f41
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r3, 0x80
- lsls r3, 5
- adds r0, r3, 0
- strh r0, [r1]
- bl sub_8111110
- pop {r0}
- bx r0
- .align 2, 0
-_081110FC: .4byte 0x0000061e
-_08111100: .4byte 0x00000616
-_08111104: .4byte 0x0000061c
-_08111108: .4byte REG_BLDCNT
-_0811110C: .4byte 0x00003f41
- thumb_func_end sub_8111084
-
- thumb_func_start sub_8111110
-sub_8111110: @ 8111110
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _0811114C @ =gSharedMem
- ldr r2, _08111150 @ =0x0000061e
- adds r1, r0, r2
- ldrb r1, [r1]
- adds r5, r0, 0
- cmp r1, 0
- bne _081111DE
- ldr r3, _08111154 @ =0x00000616
- adds r1, r5, r3
- ldrh r0, [r1]
- cmp r0, 0
- bne _081111D8
- movs r1, 0xC3
- lsls r1, 3
- adds r0, r5, r1
- ldrh r1, [r0]
- adds r1, 0x1
- strh r1, [r0]
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08111158
- subs r2, 0x4
- adds r0, r5, r2
- b _0811115C
- .align 2, 0
-_0811114C: .4byte gSharedMem
-_08111150: .4byte 0x0000061e
-_08111154: .4byte 0x00000616
-_08111158:
- ldr r3, _081111C0 @ =0x0000061c
- adds r0, r5, r3
-_0811115C:
- ldrh r1, [r0]
- adds r1, 0x4
- movs r2, 0x7F
- ands r1, r2
- strh r1, [r0]
- ldr r2, _081111C4 @ =gSineTable
- ldr r1, _081111C8 @ =0x0000061a
- adds r0, r5, r1
- ldrh r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- lsls r1, 16
- asrs r1, 20
- lsls r1, 16
- lsrs r1, 16
- ldr r3, _081111C0 @ =0x0000061c
- adds r0, r5, r3
- ldrh r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 20
- lsls r0, 16
- ldr r2, _081111CC @ =REG_BLDALPHA
- lsrs r0, 8
- orrs r1, r0
- strh r1, [r2]
- ldr r1, _081111D0 @ =0x00000616
- adds r0, r5, r1
- movs r2, 0
- strh r2, [r0]
- subs r3, 0x4
- adds r1, r5, r3
- ldrh r0, [r1]
- cmp r0, 0x40
- bne _0811126E
- strh r2, [r1]
- movs r1, 0x89
- lsls r1, 1
- adds r0, r5, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811126E
- ldr r2, _081111D4 @ =0x0000061e
- adds r1, r5, r2
- movs r0, 0x1
- b _0811126C
- .align 2, 0
-_081111C0: .4byte 0x0000061c
-_081111C4: .4byte gSineTable
-_081111C8: .4byte 0x0000061a
-_081111CC: .4byte REG_BLDALPHA
-_081111D0: .4byte 0x00000616
-_081111D4: .4byte 0x0000061e
-_081111D8:
- subs r0, 0x1
- strh r0, [r1]
- b _0811126E
-_081111DE:
- ldr r3, _0811127C @ =0x00000616
- adds r1, r5, r3
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC
- bls _0811126E
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08111280 @ =0x0000061f
- adds r1, r5, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r4, 0
- movs r2, 0x89
- lsls r2, 1
- adds r0, r5, r2
- ldrh r3, [r0]
- cmp r4, r3
- bcs _0811124C
- movs r2, 0xCC
- lsls r2, 3
- adds r2, r5
- mov r9, r2
- mov r8, r1
- movs r3, 0x1
- mov r12, r3
- adds r6, r0, 0
- movs r7, 0x5
- negs r7, r7
-_08111220:
- lsls r0, r4, 2
- add r0, r9
- ldr r3, [r0]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x1
- adds r3, 0x3E
- ands r1, r0
- mov r2, r12
- ands r1, r2
- lsls r1, 2
- ldrb r2, [r3]
- adds r0, r7, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldrh r3, [r6]
- cmp r4, r3
- bcc _08111220
-_0811124C:
- ldr r0, _08111280 @ =0x0000061f
- adds r1, r5, r0
- ldrb r0, [r1]
- cmp r0, 0x4
- bls _0811126E
- movs r0, 0x1
- strb r0, [r1]
- movs r1, 0x88
- lsls r1, 1
- adds r0, r5, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811126E
- ldr r2, _08111284 @ =0x0000061e
- adds r1, r5, r2
- movs r0, 0
-_0811126C:
- strb r0, [r1]
-_0811126E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811127C: .4byte 0x00000616
-_08111280: .4byte 0x0000061f
-_08111284: .4byte 0x0000061e
- thumb_func_end sub_8111110
-
- thumb_func_start sub_8111288
-sub_8111288: @ 8111288
- push {lr}
- ldr r1, _08111298 @ =gSharedMem
- ldrh r0, [r1, 0xC]
- cmp r0, 0
- beq _0811129C
- cmp r0, 0x1
- beq _081112A2
- b _081112B2
- .align 2, 0
-_08111298: .4byte gSharedMem
-_0811129C:
- movs r0, 0x1
- strh r0, [r1, 0xC]
- b _081112B2
-_081112A2:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _081112B2
- ldr r0, _081112B8 @ =sub_81112BC
- bl sub_8110814
-_081112B2:
- pop {r0}
- bx r0
- .align 2, 0
-_081112B8: .4byte sub_81112BC
- thumb_func_end sub_8111288
-
- thumb_func_start sub_81112BC
-sub_81112BC: @ 81112BC
- push {lr}
- ldr r0, _081112DC @ =gSharedMem
- ldrh r0, [r0, 0xC]
- cmp r0, 0
- bne _08111308
- ldr r0, _081112E0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081112E8
- ldr r0, _081112E4 @ =sub_8111314
- bl sub_8110814
- b _08111308
- .align 2, 0
-_081112DC: .4byte gSharedMem
-_081112E0: .4byte gMain
-_081112E4: .4byte sub_8111314
-_081112E8:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08111302
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08111308
- ldr r0, _0811130C @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _08111308
-_08111302:
- ldr r0, _08111310 @ =sub_8111360
- bl sub_8110814
-_08111308:
- pop {r0}
- bx r0
- .align 2, 0
-_0811130C: .4byte gSaveBlock2
-_08111310: .4byte sub_8111360
- thumb_func_end sub_81112BC
-
- thumb_func_start sub_8111314
-sub_8111314: @ 8111314
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _08111328 @ =gSharedMem
- ldrh r1, [r4, 0xC]
- cmp r1, 0
- beq _0811132C
- cmp r1, 0x1
- beq _08111344
- b _08111358
- .align 2, 0
-_08111328: .4byte gSharedMem
-_0811132C:
- movs r0, 0x15
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _08111358
-_08111344:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08111358
- bl FreeRegionMapIconResources
- ldr r0, [r4, 0x4]
- bl SetMainCallback2
-_08111358:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8111314
-
- thumb_func_start sub_8111360
-sub_8111360: @ 8111360
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _08111374 @ =gSharedMem
- ldrh r1, [r4, 0xC]
- cmp r1, 0
- beq _08111378
- cmp r1, 0x1
- beq _08111390
- b _081113A4
- .align 2, 0
-_08111374: .4byte gSharedMem
-_08111378:
- movs r0, 0x15
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _081113A4
-_08111390:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _081113A4
- bl FreeRegionMapIconResources
- ldr r0, [r4, 0x8]
- bl SetMainCallback2
-_081113A4:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8111360
-
- thumb_func_start ShowPokedexAreaScreen
-ShowPokedexAreaScreen: @ 81113AC
- push {r4,lr}
- ldr r2, _081113DC @ =gSharedMem
- movs r3, 0
- movs r4, 0
- strh r0, [r2, 0xE]
- ldr r0, _081113E0 @ =0x000006e4
- adds r2, r0
- str r1, [r2]
- strb r3, [r1]
- ldr r0, _081113E4 @ =Task_PokedexAreaScreen_0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081113E8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081113DC: .4byte gSharedMem
-_081113E0: .4byte 0x000006e4
-_081113E4: .4byte Task_PokedexAreaScreen_0
-_081113E8: .4byte gTasks
- thumb_func_end ShowPokedexAreaScreen
-
- thumb_func_start Task_PokedexAreaScreen_0
-Task_PokedexAreaScreen_0: @ 81113EC
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08111414 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0xB
- bls _0811140A
- b _08111540
-_0811140A:
- lsls r0, 2
- ldr r1, _08111418 @ =_0811141C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08111414: .4byte gTasks
-_08111418: .4byte _0811141C
- .align 2, 0
-_0811141C:
- .4byte _0811144C
- .4byte _08111488
- .4byte _08111496
- .4byte _081114B8
- .4byte _081114BE
- .4byte _081114CA
- .4byte _081114DE
- .4byte _081114E4
- .4byte _081114EA
- .4byte _081114F0
- .4byte _08111502
- .4byte _08111528
-_0811144C:
- movs r1, 0x80
- lsls r1, 19
- movs r3, 0xC4
- lsls r3, 7
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, _08111478 @ =REG_BG0HOFS
- movs r1, 0
- strh r1, [r0]
- ldr r2, _0811147C @ =REG_BG0VOFS
- ldr r3, _08111480 @ =0x0000fff8
- adds r0, r3, 0
- strh r0, [r2]
- ldr r0, _08111484 @ =REG_BG2VOFS
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- b _08111540
- .align 2, 0
-_08111478: .4byte REG_BG0HOFS
-_0811147C: .4byte REG_BG0VOFS
-_08111480: .4byte 0x0000fff8
-_08111484: .4byte REG_BG2VOFS
-_08111488:
- bl ResetPaletteFade
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- b _08111540
-_08111496:
- ldr r4, _081114B4 @ =gSharedMem + 0x6E8
- adds r0, r4, 0
- movs r1, 0
- bl InitRegionMap
- movs r0, 0x88
- lsls r0, 4
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- bl StringFill
- b _08111540
- .align 2, 0
-_081114B4: .4byte gSharedMem + 0x6E8
-_081114B8:
- bl sub_8110824
- b _08111540
-_081114BE:
- bl DrawAreaGlow
- lsls r0, 24
- cmp r0, 0
- bne _08111550
- b _08111540
-_081114CA:
- movs r0, 0x1
- movs r1, 0x1
- bl CreateRegionMapPlayerIcon
- movs r1, 0x8
- negs r1, r1
- movs r0, 0
- bl sub_80FB2A4
- b _08111540
-_081114DE:
- bl CreateAreaMarkerSprites
- b _08111540
-_081114E4:
- bl LoadAreaUnknownGraphics
- b _08111540
-_081114EA:
- bl CreateAreaUnknownSprites
- b _08111540
-_081114F0:
- movs r0, 0x15
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08111540
-_08111502:
- ldr r1, _0811151C @ =REG_BLDCNT
- ldr r2, _08111520 @ =0x00003f41
- adds r0, r2, 0
- strh r0, [r1]
- bl sub_8111084
- movs r1, 0x80
- lsls r1, 19
- ldr r3, _08111524 @ =0x00007741
- adds r0, r3, 0
- strh r0, [r1]
- b _08111540
- .align 2, 0
-_0811151C: .4byte REG_BLDCNT
-_08111520: .4byte 0x00003f41
-_08111524: .4byte 0x00007741
-_08111528:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r2
- ldr r1, _0811153C @ =Task_PokedexAreaScreen_1
- str r1, [r0]
- movs r1, 0
- strh r1, [r0, 0x8]
- b _08111550
- .align 2, 0
-_0811153C: .4byte Task_PokedexAreaScreen_1
-_08111540:
- ldr r0, _08111558 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_08111550:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08111558: .4byte gTasks
- thumb_func_end Task_PokedexAreaScreen_0
-
- thumb_func_start Task_PokedexAreaScreen_1
-Task_PokedexAreaScreen_1: @ 811155C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8111110
- ldr r1, _08111584 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- cmp r1, 0x1
- beq _081115B4
- cmp r1, 0x1
- bgt _08111588
- cmp r1, 0
- beq _0811159E
- b _08111590
- .align 2, 0
-_08111584: .4byte gTasks
-_08111588:
- cmp r1, 0x2
- beq _081115F8
- cmp r1, 0x3
- beq _0811160A
-_08111590:
- ldr r0, _081115AC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x8]
-_0811159E:
- ldr r0, _081115B0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811164C
- b _0811163C
- .align 2, 0
-_081115AC: .4byte gTasks
-_081115B0: .4byte gPaletteFade
-_081115B4:
- ldr r0, _081115CC @ =gMain
- ldrh r2, [r0, 0x2E]
- movs r3, 0x2
- adds r0, r3, 0
- ands r0, r2
- cmp r0, 0
- beq _081115D0
- strh r1, [r5, 0xA]
- movs r0, 0x3
- bl PlaySE
- b _0811163C
- .align 2, 0
-_081115CC: .4byte gMain
-_081115D0:
- movs r0, 0x10
- ands r0, r2
- cmp r0, 0
- bne _081115EA
- movs r0, 0x80
- lsls r0, 1
- ands r0, r2
- cmp r0, 0
- beq _0811164C
- ldr r0, _081115F4 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _0811164C
-_081115EA:
- strh r3, [r5, 0xA]
- movs r0, 0x6D
- bl PlaySE
- b _0811163C
- .align 2, 0
-_081115F4: .4byte gSaveBlock2
-_081115F8:
- movs r0, 0x15
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0811163C
-_0811160A:
- ldr r0, _08111630 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811164C
- bl DestroyAreaSprites
- ldr r0, _08111634 @ =gSharedMem
- ldr r1, _08111638 @ =0x000006e4
- adds r0, r1
- ldr r1, [r0]
- ldrh r0, [r5, 0xA]
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
- b _0811164C
- .align 2, 0
-_08111630: .4byte gPaletteFade
-_08111634: .4byte gSharedMem
-_08111638: .4byte 0x000006e4
-_0811163C:
- ldr r0, _08111654 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0811164C:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08111654: .4byte gTasks
- thumb_func_end Task_PokedexAreaScreen_1
-
- thumb_func_start CreateAreaMarkerSprites
-CreateAreaMarkerSprites: @ 8111658
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _08111720 @ =gUnknown_083F858C
- bl LoadSpriteSheet
- ldr r0, _08111724 @ =gUnknown_083F8594
- bl LoadSpritePalette
- movs r5, 0
- movs r1, 0
- ldr r0, _08111728 @ =gSharedMem
- movs r3, 0x89
- lsls r3, 1
- adds r2, r0, r3
- ldrh r7, [r2]
- cmp r5, r7
- bge _0811170C
- adds r6, r0, 0
- mov r8, r2
-_08111680:
- lsls r0, r1, 16
- asrs r4, r0, 16
- lsls r1, r4, 1
- movs r2, 0xC4
- lsls r2, 3
- adds r0, r6, r2
- adds r1, r0
- ldr r2, _0811172C @ =gRegionMapLocations
- movs r3, 0
- ldrsh r0, [r1, r3]
- lsls r0, 3
- adds r0, r2
- ldrb r1, [r0]
- adds r1, 0x1
- lsls r1, 3
- adds r1, 0x4
- ldrb r2, [r0, 0x1]
- lsls r2, 19
- ldrb r3, [r0, 0x2]
- subs r3, 0x1
- lsls r3, 2
- ldrb r0, [r0, 0x3]
- subs r0, 0x1
- lsls r0, 2
- movs r7, 0xE0
- lsls r7, 13
- adds r2, r7
- asrs r2, 16
- adds r1, r3
- adds r2, r0
- ldr r0, _08111730 @ =gSpriteTemplate_83F85A4
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _081116FC
- ldr r0, _08111734 @ =gSprites
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
- adds r1, r5, 0
- lsls r0, r1, 16
- movs r3, 0x80
- lsls r3, 9
- adds r0, r3
- lsrs r5, r0, 16
- lsls r1, 16
- asrs r1, 14
- movs r7, 0xCC
- lsls r7, 3
- adds r0, r6, r7
- adds r1, r0
- str r2, [r1]
-_081116FC:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- asrs r0, 16
- mov r2, r8
- ldrh r2, [r2]
- cmp r0, r2
- blt _08111680
-_0811170C:
- ldr r0, _08111728 @ =gSharedMem
- movs r3, 0xDC
- lsls r3, 3
- adds r0, r3
- strh r5, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08111720: .4byte gUnknown_083F858C
-_08111724: .4byte gUnknown_083F8594
-_08111728: .4byte gSharedMem
-_0811172C: .4byte gRegionMapLocations
-_08111730: .4byte gSpriteTemplate_83F85A4
-_08111734: .4byte gSprites
- thumb_func_end CreateAreaMarkerSprites
-
- thumb_func_start DestroyAreaSprites
-DestroyAreaSprites: @ 8111738
- push {r4-r6,lr}
- movs r0, 0x2
- bl FreeSpriteTilesByTag
- movs r0, 0x2
- bl FreeSpritePaletteByTag
- movs r4, 0
- ldr r1, _081117A4 @ =gSharedMem
- movs r2, 0xDC
- lsls r2, 3
- adds r0, r1, r2
- ldrh r2, [r0]
- cmp r4, r2
- bcs _08111776
- adds r6, r1, 0
- adds r5, r0, 0
-_0811175A:
- lsls r0, r4, 2
- movs r2, 0xCC
- lsls r2, 3
- adds r1, r6, r2
- adds r0, r1
- ldr r0, [r0]
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldrh r0, [r5]
- cmp r4, r0
- bcc _0811175A
-_08111776:
- movs r0, 0x3
- bl FreeSpriteTilesByTag
- movs r0, 0x3
- bl FreeSpritePaletteByTag
- movs r4, 0
- ldr r5, _081117A8 @ =gSharedMem + 0xFA8
-_08111786:
- lsls r0, r4, 2
- adds r0, r5
- ldr r0, [r0]
- cmp r0, 0
- beq _08111794
- bl DestroySprite
-_08111794:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x2
- bls _08111786
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081117A4: .4byte gSharedMem
-_081117A8: .4byte gSharedMem + 0xFA8
- thumb_func_end DestroyAreaSprites
-
- thumb_func_start LoadAreaUnknownGraphics
-LoadAreaUnknownGraphics: @ 81117AC
- push {lr}
- sub sp, 0x8
- ldr r0, _081117D4 @ =gUnknown_083F8664
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r0, _081117D8 @ =gAreaUnknownTiles
- ldr r1, _081117DC @ =gSharedMem + 0xFB4
- bl LZ77UnCompWram
- mov r0, sp
- bl LoadSpriteSheet
- ldr r0, _081117E0 @ =gUnknown_083F865C
- bl LoadSpritePalette
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_081117D4: .4byte gUnknown_083F8664
-_081117D8: .4byte gAreaUnknownTiles
-_081117DC: .4byte gSharedMem + 0xFB4
-_081117E0: .4byte gUnknown_083F865C
- thumb_func_end LoadAreaUnknownGraphics
-
- thumb_func_start CreateAreaUnknownSprites
-CreateAreaUnknownSprites: @ 81117E4
- push {r4-r7,lr}
- ldr r1, _08111810 @ =gSharedMem
- movs r2, 0x88
- lsls r2, 1
- adds r0, r1, r2
- ldr r0, [r0]
- cmp r0, 0
- beq _08111818
- movs r4, 0
- ldr r7, _08111814 @ =0x00000fa8
- adds r2, r1, r7
- movs r1, 0
-_081117FC:
- lsls r0, r4, 2
- adds r0, r2
- str r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x2
- bls _081117FC
- b _0811188E
- .align 2, 0
-_08111810: .4byte gSharedMem
-_08111814: .4byte 0x00000fa8
-_08111818:
- movs r4, 0
- ldr r6, _08111868 @ =gSprites
- ldr r0, _0811186C @ =0x00000fa8
- adds r5, r1, r0
-_08111820:
- lsls r1, r4, 21
- movs r2, 0xA0
- lsls r2, 16
- adds r1, r2
- asrs r1, 16
- ldr r0, _08111870 @ =gSpriteTemplate_83F8674
- movs r2, 0x8C
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0811187C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldrh r3, [r2, 0x4]
- lsls r0, r3, 22
- lsrs r0, 22
- lsls r1, r4, 4
- adds r0, r1
- ldr r7, _08111874 @ =0x000003ff
- adds r1, r7, 0
- ands r0, r1
- ldr r7, _08111878 @ =0xfffffc00
- adds r1, r7, 0
- ands r3, r1
- orrs r3, r0
- strh r3, [r2, 0x4]
- lsls r0, r4, 2
- adds r0, r5
- str r2, [r0]
- b _08111884
- .align 2, 0
-_08111868: .4byte gSprites
-_0811186C: .4byte 0x00000fa8
-_08111870: .4byte gSpriteTemplate_83F8674
-_08111874: .4byte 0x000003ff
-_08111878: .4byte 0xfffffc00
-_0811187C:
- lsls r0, r4, 2
- adds r0, r5
- movs r1, 0
- str r1, [r0]
-_08111884:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x2
- bls _08111820
-_0811188E:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end CreateAreaUnknownSprites
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/pokedex_area_screen.s b/data/pokedex_area_screen.s
deleted file mode 100644
index 410f0d4c5..000000000
--- a/data/pokedex_area_screen.s
+++ /dev/null
@@ -1,73 +0,0 @@
- .include "include/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_083F8418:: @ 83F8418
- .incbin "graphics/pokedex/area_glow.gbapal"
-
-gUnknown_083F8438:: @ 83F8438
- .incbin "graphics/pokedex/area_glow.4bpp.lz"
-
- .align 1
-gUnknown_083F856C:: @ 83F856C
- .2byte 360
-
- .align 1
-gUnknown_083F856E:: @ 83F856E
- .2byte 328, 0, 34
- .2byte 412, 0, 0
-
- .align 1
-gUnknown_083F857A:: @ 83F857A
- .2byte 85, 2142 @ FLAG_LANDMARK_SKY_PILLAR
- .2byte 68, 2119 @ FLAG_LANDMARK_SEAFLOOR_CAVERN
- .2byte 88, 0
-
-@ XXX: what is this?
- .align 2
- .4byte gSharedMem
-
- .align 2
-gUnknown_083F858C:: @ 83F858C
- obj_tiles AreaMarkerTiles, 0x80, 2
-
- .align 2
-gUnknown_083F8594:: @ 83F8594
- obj_pal AreaMarkerPalette, 2
-
- .align 2
-gOamData_83F859C:: @ 83F859C
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteTemplate_83F85A4:: @ 83F85A4
- spr_template 2, 2, gOamData_83F859C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-AreaMarkerPalette:
- .incbin "graphics/pokedex/area_marker.gbapal"
-
- .align 2
-AreaMarkerTiles:
- .incbin "graphics/pokedex/area_marker.4bpp"
-
- .align 2
-gUnknown_083F865C:: @ 83F865C
- obj_pal gAreaUnknownPalette, 3
-
- .align 2
-gUnknown_083F8664:: @ 83F8664
- obj_tiles gSharedMem + 0xFB4, 0x600, 3
-
- .align 2
-gOamData_83F866C:: @ 83F866C
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteTemplate_83F8674:: @ 83F8674
- spr_template 3, 3, gOamData_83F866C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
diff --git a/include/constants/region_map_sections.h b/include/constants/region_map_sections.h
new file mode 100644
index 000000000..38ca06e1b
--- /dev/null
+++ b/include/constants/region_map_sections.h
@@ -0,0 +1,97 @@
+#ifndef GUARD_REGIONMAPSEC_H
+#define GUARD_REGIONMAPSEC_H
+
+enum
+{
+ MAPSEC_LITTLEROOT_TOWN, // 0x00
+ MAPSEC_OLDALE_TOWN, // 0x01
+ MAPSEC_DEWFORD_TOWN, // 0x02
+ MAPSEC_LAVARIDGE_TOWN, // 0x03
+ MAPSEC_FALLARBOR_TOWN, // 0x04
+ MAPSEC_VERDANTURF_TOWN, // 0x05
+ MAPSEC_PACIFIDLOG_TOWN, // 0x06
+ MAPSEC_PETALBURG_CITY, // 0x07
+ MAPSEC_SLATEPORT_CITY, // 0x08
+ MAPSEC_MAUVILLE_CITY, // 0x09
+ MAPSEC_RUSTBORO_CITY, // 0x0A
+ MAPSEC_FORTREE_CITY, // 0x0B
+ MAPSEC_LILYCOVE_CITY, // 0x0C
+ MAPSEC_MOSSDEEP_CITY, // 0x0D
+ MAPSEC_SOOTOPOLIS_CITY, // 0x0E
+ MAPSEC_EVER_GRANDE_CITY, // 0x0F
+ MAPSEC_ROUTE_101, // 0x10
+ MAPSEC_ROUTE_102, // 0x11
+ MAPSEC_ROUTE_103, // 0x12
+ MAPSEC_ROUTE_104, // 0x13
+ MAPSEC_ROUTE_105, // 0x14
+ MAPSEC_ROUTE_106, // 0x15
+ MAPSEC_ROUTE_107, // 0x16
+ MAPSEC_ROUTE_108, // 0x17
+ MAPSEC_ROUTE_109, // 0x18
+ MAPSEC_ROUTE_110, // 0x19
+ MAPSEC_ROUTE_111, // 0x1A
+ MAPSEC_ROUTE_112, // 0x1B
+ MAPSEC_ROUTE_113, // 0x1C
+ MAPSEC_ROUTE_114, // 0x1D
+ MAPSEC_ROUTE_115, // 0x1E
+ MAPSEC_ROUTE_116, // 0x1F
+ MAPSEC_ROUTE_117, // 0x20
+ MAPSEC_ROUTE_118, // 0x21
+ MAPSEC_ROUTE_119, // 0x22
+ MAPSEC_ROUTE_120, // 0x23
+ MAPSEC_ROUTE_121, // 0x24
+ MAPSEC_ROUTE_122, // 0x25
+ MAPSEC_ROUTE_123, // 0x26
+ MAPSEC_ROUTE_124, // 0x27
+ MAPSEC_ROUTE_125, // 0x28
+ MAPSEC_ROUTE_126, // 0x29
+ MAPSEC_ROUTE_127, // 0x2A
+ MAPSEC_ROUTE_128, // 0x2B
+ MAPSEC_ROUTE_129, // 0x2C
+ MAPSEC_ROUTE_130, // 0x2D
+ MAPSEC_ROUTE_131, // 0x2E
+ MAPSEC_ROUTE_132, // 0x2F
+ MAPSEC_ROUTE_133, // 0x30
+ MAPSEC_ROUTE_134, // 0x31
+ MAPSEC_UNDERWATER_124, // 0x32
+ MAPSEC_UNDERWATER_125, // 0x33
+ MAPSEC_UNDERWATER_126, // 0x34
+ MAPSEC_UNDERWATER_127, // 0x35
+ MAPSEC_UNDERWATER_SOOTOPOLIS, // 0x36
+ MAPSEC_GRANITE_CAVE, // 0x37
+ MAPSEC_MT_CHIMNEY, // 0x38
+ MAPSEC_SAFARI_ZONE, // 0x39
+ MAPSEC_BATTLE_TOWER, // 0x3A
+ MAPSEC_PETALBURG_WOODS, // 0x3B
+ MAPSEC_RUSTURF_TUNNEL, // 0x3C
+ MAPSEC_ABANDONED_SHIP, // 0x3D
+ MAPSEC_NEW_MAUVILLE, // 0x3E
+ MAPSEC_METEOR_FALLS, // 0x3F
+ MAPSEC_METEOR_FALLS_2, // 0x40
+ MAPSEC_MT_PYRE, // 0x41
+ MAPSEC_EVIL_TEAM_HIDEOUT, // 0x42
+ MAPSEC_SHOAL_CAVE, // 0x43
+ MAPSEC_SEAFLOOR_CAVERN, // 0x44
+ MAPSEC_UNDERWATER_128, // 0x45
+ MAPSEC_VICTORY_ROAD, // 0x46
+ MAPSEC_MIRAGE_ISLAND, // 0x47
+ MAPSEC_CAVE_OF_ORIGIN, // 0x48
+ MAPSEC_SOUTHERN_ISLAND, // 0x49
+ MAPSEC_FIERY_PATH, // 0x4A
+ MAPSEC_FIERY_PATH_2, // 0x4B
+ MAPSEC_JAGGED_PASS, // 0x4C
+ MAPSEC_JAGGED_PASS_2, // 0x4D
+ MAPSEC_SEALED_CHAMBER, // 0x4E
+ MAPSEC_UNDERWATER_SEALED_CHAMBER, // 0x4F
+ MAPSEC_SCORCHED_SLAB, // 0x50
+ MAPSEC_ISLAND_CAVE, // 0x51
+ MAPSEC_DESERT_RUINS, // 0x52
+ MAPSEC_ANCIENT_TOMB, // 0x53
+ MAPSEC_INSIDE_OF_TRUCK, // 0x54
+ MAPSEC_SKY_PILLAR, // 0x55
+ MAPSEC_SECRET_BASE, // 0x56
+ MAPSEC_DYNAMIC, // 0x57
+ MAPSEC_NOTHING // 0x58
+};
+
+#endif // GUARD_REGIONMAPSEC_H
diff --git a/include/constants/species.h b/include/constants/species.h
index f698ada14..dc9856081 100644
--- a/include/constants/species.h
+++ b/include/constants/species.h
@@ -447,4 +447,10 @@
#define NUM_SPECIES SPECIES_EGG
+#ifdef SAPPHIRE
+#define ROAMER_SPECIES SPECIES_LATIAS
+#else
+#define ROAMER_SPECIES SPECIES_LATIOS
+#endif
+
#endif // GUARD_CONSTANTS_SPECIES_H
diff --git a/include/graphics.h b/include/graphics.h
index d70aefac6..8e95d100d 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -3415,4 +3415,7 @@ extern const u16 gUnknown_08D1212C[];
extern const u16 gUnknown_08D1214C[];
extern const u8 Tiles_D129AC[];
+extern const u8 gAreaUnknownTiles[];
+extern const u16 gAreaUnknownPalette[];
+
#endif // GUARD_GRAPHICS_H
diff --git a/include/region_map.h b/include/region_map.h
index 89a47cd05..4c10d84cb 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -1,6 +1,13 @@
#ifndef GUARD_REGION_MAP_H
#define GUARD_REGION_MAP_H
+struct RegionMapLocation
+{
+ u8 x, y;
+ u8 width, height;
+ const u8 *regionMapSectionId;
+};
+
struct RegionMap
{
u8 mapSectionName[20];
@@ -51,7 +58,7 @@ struct RegionMap
/*0x080*/ u8 filler80[0x100];
/*0x180*/ u8 cursorSmallImage[0x100];
/*0x280*/ u8 cursorLargeImage[0x600];
-};
+}; // size: 0x880
void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed);
void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed);
@@ -61,8 +68,8 @@ u8 sub_80FAB60(void);
void sub_80FAEC4(void);
u8 sub_80FAFC0(void);
void UpdateRegionMapVideoRegs(void);
-void sub_80FB2A4(s16, s16);
-u16 sub_80FBA04(u16 mapSectionId);
+void RegionMapDefaultZoomOffsetPlayerSprite(s16, s16);
+u16 GetOverworldMapFromUnderwaterMap(u16 mapSectionId);
void CreateRegionMapCursor(u16, u16);
void CreateRegionMapPlayerIcon(u16, u16);
const u8 *GetMapSectionName(u8 *dest, u16 mapSectionId, u16 length);
@@ -70,5 +77,8 @@ const u8 *CopyMapName(u8 *dest, u16 b);
const u8 *CopyLocationName(u8 *dest, u16 b);
void CB2_InitFlyRegionMap(void);
void debug_sub_8110F28(void);
+u16 GetRegionMapSectionAt_(u16 x, u16 y);
+
+extern const struct RegionMapLocation gRegionMapLocations[];
#endif // GUARD_REGION_MAP_H
diff --git a/include/region_map_sections.h b/include/region_map_sections.h
deleted file mode 100644
index a3bd60b59..000000000
--- a/include/region_map_sections.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef GUARD_REGIONMAPSEC_H
-#define GUARD_REGIONMAPSEC_H
-
-enum
-{
- MAPSEC_LittlerootTown, // 0x00
- MAPSEC_OldaleTown, // 0x01
- MAPSEC_DewfordTown, // 0x02
- MAPSEC_LavaridgeTown, // 0x03
- MAPSEC_FallarborTown, // 0x04
- MAPSEC_VerdanturfTown, // 0x05
- MAPSEC_PacifidlogTown, // 0x06
- MAPSEC_PetalburgCity, // 0x07
- MAPSEC_SlateportCity, // 0x08
- MAPSEC_MauvilleCity, // 0x09
- MAPSEC_RustboroCity, // 0x0A
- MAPSEC_FortreeCity, // 0x0B
- MAPSEC_LilycoveCity, // 0x0C
- MAPSEC_MossdeepCity, // 0x0D
- MAPSEC_SootopolisCity, // 0x0E
- MAPSEC_EverGrandeCity, // 0x0F
- MAPSEC_Route101, // 0x10
- MAPSEC_Route102, // 0x11
- MAPSEC_Route103, // 0x12
- MAPSEC_Route104, // 0x13
- MAPSEC_Route105, // 0x14
- MAPSEC_Route106, // 0x15
- MAPSEC_Route107, // 0x16
- MAPSEC_Route108, // 0x17
- MAPSEC_Route109, // 0x18
- MAPSEC_Route110, // 0x19
- MAPSEC_Route111, // 0x1A
- MAPSEC_Route112, // 0x1B
- MAPSEC_Route113, // 0x1C
- MAPSEC_Route114, // 0x1D
- MAPSEC_Route115, // 0x1E
- MAPSEC_Route116, // 0x1F
- MAPSEC_Route117, // 0x20
- MAPSEC_Route118, // 0x21
- MAPSEC_Route119, // 0x22
- MAPSEC_Route120, // 0x23
- MAPSEC_Route121, // 0x24
- MAPSEC_Route122, // 0x25
- MAPSEC_Route123, // 0x26
- MAPSEC_Route124, // 0x27
- MAPSEC_Route125, // 0x28
- MAPSEC_Route126, // 0x29
- MAPSEC_Route127, // 0x2A
- MAPSEC_Route128, // 0x2B
- MAPSEC_Route129, // 0x2C
- MAPSEC_Route130, // 0x2D
- MAPSEC_Route131, // 0x2E
- MAPSEC_Route132, // 0x2F
- MAPSEC_Route133, // 0x30
- MAPSEC_Route134, // 0x31
- MAPSEC_MtChimney = 0x38, // 0x38
- MAPSEC_Nothing = 0x58, // 0x58
-};
-
-#endif // GUARD_REGIONMAPSEC_H
diff --git a/include/roamer.h b/include/roamer.h
index 6f0813eb8..18cb0b4e4 100644
--- a/include/roamer.h
+++ b/include/roamer.h
@@ -15,4 +15,6 @@ void Debug_CreateRoamer(void);
void Debug_GetRoamerLocation(u8 *);
#endif // DEBUG
+void GetRoamerLocation(u8 *mapGroup, u8 *mapNum);
+
#endif // GUARD_ROAMER_H
diff --git a/ld_script.txt b/ld_script.txt
index 957dc76fb..688682a34 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -340,7 +340,7 @@ SECTIONS {
src/hof_pc.o(.text);
src/field_specials.o(.text);
src/battle/battle_records.o(.text);
- asm/pokedex_area_screen.o(.text);
+ src/pokedex_area_screen.o(.text);
src/evolution_scene.o(.text);
src/roulette.o(.text);
asm/pokedex_cry_screen.o(.text);
@@ -632,7 +632,7 @@ SECTIONS {
src/time_events.o(.rodata);
src/field_specials.o(.rodata);
src/battle/battle_records.o(.rodata);
- data/pokedex_area_screen.o(.rodata);
+ src/pokedex_area_screen.o(.rodata);
src/evolution_scene.o(.rodata);
data/roulette.o(.rodata);
data/pokedex_cry_screen.o(.rodata);
diff --git a/src/data/region_map_layout.h b/src/data/region_map_layout.h
index ca33ef37a..1bc93cbb3 100644
--- a/src/data/region_map_layout.h
+++ b/src/data/region_map_layout.h
@@ -20,7 +20,7 @@
#define SAFARI MAPSEC_SAFARI_ZONE
#define BTLTWR MAPSEC_BATTLE_TOWER
#define S_ISLD MAPSEC_SOUTHERN_ISLAND
-#define ______ MAPSEC_NONE
+#define ______ MAPSEC_NOTHING
static const u8 sRegionMapLayout[] =
{
diff --git a/src/landmark.c b/src/landmark.c
index 476821ec6..0572da4ca 100644
--- a/src/landmark.c
+++ b/src/landmark.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "landmark.h"
#include "event_data.h"
-#include "region_map_sections.h"
+#include "constants/region_map_sections.h"
struct Landmark
{
@@ -315,52 +315,52 @@ static const struct Landmark *const Landmarks_MtChimney_2[] =
static const struct LandmarkList gLandmarkLists[] =
{
- {MAPSEC_Route104, 0, Landmarks_Route104_0},
- {MAPSEC_Route104, 1, Landmarks_Route104_1},
- {MAPSEC_Route105, 0, Landmarks_Route105_0},
- {MAPSEC_Route106, 1, Landmarks_Route106_1},
- {MAPSEC_Route108, 0, Landmarks_Route108_0},
- {MAPSEC_Route109, 0, Landmarks_Route109_0},
- {MAPSEC_Route110, 0, Landmarks_Route110_0},
- {MAPSEC_Route110, 1, Landmarks_Route110_1},
- {MAPSEC_Route110, 2, Landmarks_Route110_2},
- {MAPSEC_Route111, 0, Landmarks_Route111_0},
- {MAPSEC_Route111, 1, Landmarks_Route111_1},
- {MAPSEC_Route111, 2, Landmarks_Route111_1},
- {MAPSEC_Route111, 3, Landmarks_Route111_3},
- {MAPSEC_Route111, 4, Landmarks_Route111_4},
- {MAPSEC_Route112, 0, Landmarks_Route112_0},
- {MAPSEC_Route112, 1, Landmarks_Route112_1},
- {MAPSEC_Route113, 1, Landmarks_Route113_1},
- {MAPSEC_Route114, 1, Landmarks_Route114_1},
- {MAPSEC_Route114, 2, Landmarks_Route114_2},
- {MAPSEC_Route114, 3, Landmarks_MeteorFalls},
- {MAPSEC_Route115, 0, Landmarks_MeteorFalls},
- {MAPSEC_Route115, 1, Landmarks_MeteorFalls},
- {MAPSEC_Route116, 1, Landmarks_Route116_1},
- {MAPSEC_Route116, 2, Landmarks_Route116_2},
- {MAPSEC_Route117, 2, Landmarks_Route117_2},
- {MAPSEC_Route119, 1, Landmarks_Route119_1},
- {MAPSEC_Route120, 0, Landmarks_Route120_0},
- {MAPSEC_Route120, 2, Landmarks_Route120_2},
- {MAPSEC_Route121, 2, Landmarks_Route121_2},
- {MAPSEC_Route122, 0, Landmarks_Route122_0},
- {MAPSEC_Route123, 0, Landmarks_Route123_0},
- {MAPSEC_Route122, 1, Landmarks_Route122_0},
- {MAPSEC_Route124, 7, Landmarks_Route124_7},
- {MAPSEC_Route125, 2, Landmarks_Route125_2},
- {MAPSEC_Route128, 1, Landmarks_Route128_1},
- {MAPSEC_Route131, 1, Landmarks_Route131_1},
- {MAPSEC_Route132, 0, Landmarks_OceanCurrent},
- {MAPSEC_Route132, 1, Landmarks_OceanCurrent},
- {MAPSEC_Route133, 0, Landmarks_OceanCurrent},
- {MAPSEC_Route133, 1, Landmarks_OceanCurrent},
- {MAPSEC_Route133, 2, Landmarks_OceanCurrent},
- {MAPSEC_Route134, 0, Landmarks_OceanCurrent},
- {MAPSEC_Route134, 1, Landmarks_OceanCurrent},
- {MAPSEC_Route134, 2, Landmarks_Route134_2},
- {MAPSEC_MtChimney, 2, Landmarks_MtChimney_2},
- {MAPSEC_Nothing, 0, NULL},
+ {MAPSEC_ROUTE_104, 0, Landmarks_Route104_0},
+ {MAPSEC_ROUTE_104, 1, Landmarks_Route104_1},
+ {MAPSEC_ROUTE_105, 0, Landmarks_Route105_0},
+ {MAPSEC_ROUTE_106, 1, Landmarks_Route106_1},
+ {MAPSEC_ROUTE_108, 0, Landmarks_Route108_0},
+ {MAPSEC_ROUTE_109, 0, Landmarks_Route109_0},
+ {MAPSEC_ROUTE_110, 0, Landmarks_Route110_0},
+ {MAPSEC_ROUTE_110, 1, Landmarks_Route110_1},
+ {MAPSEC_ROUTE_110, 2, Landmarks_Route110_2},
+ {MAPSEC_ROUTE_111, 0, Landmarks_Route111_0},
+ {MAPSEC_ROUTE_111, 1, Landmarks_Route111_1},
+ {MAPSEC_ROUTE_111, 2, Landmarks_Route111_1},
+ {MAPSEC_ROUTE_111, 3, Landmarks_Route111_3},
+ {MAPSEC_ROUTE_111, 4, Landmarks_Route111_4},
+ {MAPSEC_ROUTE_112, 0, Landmarks_Route112_0},
+ {MAPSEC_ROUTE_112, 1, Landmarks_Route112_1},
+ {MAPSEC_ROUTE_113, 1, Landmarks_Route113_1},
+ {MAPSEC_ROUTE_114, 1, Landmarks_Route114_1},
+ {MAPSEC_ROUTE_114, 2, Landmarks_Route114_2},
+ {MAPSEC_ROUTE_114, 3, Landmarks_MeteorFalls},
+ {MAPSEC_ROUTE_115, 0, Landmarks_MeteorFalls},
+ {MAPSEC_ROUTE_115, 1, Landmarks_MeteorFalls},
+ {MAPSEC_ROUTE_116, 1, Landmarks_Route116_1},
+ {MAPSEC_ROUTE_116, 2, Landmarks_Route116_2},
+ {MAPSEC_ROUTE_117, 2, Landmarks_Route117_2},
+ {MAPSEC_ROUTE_119, 1, Landmarks_Route119_1},
+ {MAPSEC_ROUTE_120, 0, Landmarks_Route120_0},
+ {MAPSEC_ROUTE_120, 2, Landmarks_Route120_2},
+ {MAPSEC_ROUTE_121, 2, Landmarks_Route121_2},
+ {MAPSEC_ROUTE_122, 0, Landmarks_Route122_0},
+ {MAPSEC_ROUTE_123, 0, Landmarks_Route123_0},
+ {MAPSEC_ROUTE_122, 1, Landmarks_Route122_0},
+ {MAPSEC_ROUTE_124, 7, Landmarks_Route124_7},
+ {MAPSEC_ROUTE_125, 2, Landmarks_Route125_2},
+ {MAPSEC_ROUTE_128, 1, Landmarks_Route128_1},
+ {MAPSEC_ROUTE_131, 1, Landmarks_Route131_1},
+ {MAPSEC_ROUTE_132, 0, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_132, 1, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_133, 0, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_133, 1, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_133, 2, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_134, 0, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_134, 1, Landmarks_OceanCurrent},
+ {MAPSEC_ROUTE_134, 2, Landmarks_Route134_2},
+ {MAPSEC_MT_CHIMNEY, 2, Landmarks_MtChimney_2},
+ {MAPSEC_NOTHING, 0, NULL},
};
static const struct Landmark *const *GetLandmarks(u8 mapSection, u8 id);
@@ -396,7 +396,7 @@ static const struct Landmark *const *GetLandmarks(u8 mapSection, u8 id)
{
u16 i = 0;
- for (; gLandmarkLists[i].mapSection != MAPSEC_Nothing; i++)
+ for (; gLandmarkLists[i].mapSection != MAPSEC_NOTHING; i++)
{
if (gLandmarkLists[i].mapSection > mapSection)
return NULL;
@@ -404,7 +404,7 @@ static const struct Landmark *const *GetLandmarks(u8 mapSection, u8 id)
break;
}
- if (gLandmarkLists[i].mapSection == MAPSEC_Nothing)
+ if (gLandmarkLists[i].mapSection == MAPSEC_NOTHING)
return NULL;
for (; gLandmarkLists[i].mapSection == mapSection; i++)
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
index 67ca276c4..fd60581b9 100644
--- a/src/pokedex_area_screen.c
+++ b/src/pokedex_area_screen.c
@@ -1,20 +1,1437 @@
-
// Includes
#include "global.h"
+#include "constants/species.h"
+#include "constants/maps.h"
+#include "constants/songs.h"
+#include "constants/region_map_sections.h"
+#include "sound.h"
+#include "ewram.h"
+#include "main.h"
+#include "palette.h"
+#include "task.h"
+#include "sprite.h"
+#include "region_map.h"
+#include "string_util.h"
+#include "text.h"
+#include "wild_encounter.h"
+#include "roamer.h"
+#include "overworld.h"
+#include "event_data.h"
+#include "trig.h"
+#include "graphics.h"
// Static type declarations
+struct PokedexAreaScreenSubstruct0010
+{
+ u8 mapGroup;
+ u8 mapNum;
+ u16 regionMapSectionId;
+};
+
+struct PokedexAreaScreenEwramStruct
+{
+ void (*callback)(void);
+ MainCallback prev;
+ MainCallback next;
+ u16 state;
+ u16 species;
+ struct PokedexAreaScreenSubstruct0010 overworldAreasWithMons[0x40];
+ u16 numOverworldAreas;
+ u16 numSpecialAreas;
+ u16 drawAreaGlowState;
+ u16 areaGlowTilemap[0x280];
+ u16 areaShadeOrMarkerFrameCounter;
+ u16 areaShadeFrameCounter;
+ u16 areaShadeBldArgLo;
+ u16 areaShadeBldArgHi;
+ u8 whichMarkersFlashing;
+ u8 specialMarkerCycleCounter;
+ u16 specialAreaRegionMapSectionIds[0x20];
+ struct Sprite * areaMarkerSprites[0x20];
+ u16 numAreaMarkerSprites;
+ u8 * errno;
+ struct RegionMap regionMap;
+ u8 charBuffer[0x40];
+ struct Sprite * areaUnknownSprites[3];
+ u8 areaUnknownGraphicsBuffer[0x600];
+};
+
+#define ePokedexAreaScreen (*(struct PokedexAreaScreenEwramStruct *)gSharedMem)
+
// Static RAM declarations
+// Static ROM declarations
+
+static void CB2_UnusedPokedexAreaScreen(void);
+static void VBlankCB_AreaScren(void);
+static void MainCB_AreaScren(void);
+static void SetCallback(void (*func)(void));
+static void ResetDrawAreaGlowState(void);
+static bool8 DrawAreaGlow(void);
+static void FindMapsWithMon(u16 mon);
+static void SetAreaHasMon(u16 mapGroup, u16 mapNum);
+static void SetSpecialMapHasMon(u16 mapGroup, u16 mapNum);
+static bool8 MapHasMon(const struct WildPokemonHeader *header, u16 mon);
+static bool8 MonListHasMon(const struct WildPokemonInfo *info, u16 mon, u16 size);
+static void BuildAreaGlowTilemap(void);
+static void StartAreaGlow(void);
+static void DoAreaGlow(void);
+static void DebugCB_WaitFade(void);
+static void DebugCB_WaitButton(void);
+static void DebugCB_GoBack(void);
+static void DebugCB_GoNext(void);
+
+// .rodata
+
+static const u16 gUnknown_083F8418[] = INCBIN_U16("graphics/pokedex/area_glow.gbapal");
+
+static const u8 gUnknown_083F8438[] = INCBIN_U8("graphics/pokedex/area_glow.4bpp.lz");
+
+static const u16 sSpeciesHiddenFromAreaScreen[] = {SPECIES_WYNAUT};
+
+static const u16 sFeebasData[][3] = {
+ {SPECIES_FEEBAS, MAP_GROUP(ROUTE119), MAP_NUM(ROUTE119)},
+ {NUM_SPECIES}
+};
+
+static const u16 sLandmarkData[][2] = {
+ {MAPSEC_SKY_PILLAR, FLAG_LANDMARK_SKY_PILLAR},
+ {MAPSEC_SEAFLOOR_CAVERN, FLAG_LANDMARK_SEAFLOOR_CAVERN},
+ {MAPSEC_NOTHING}
+};
+
+static struct PokedexAreaScreenEwramStruct *const gPokedexAreaScreenPtr = &ePokedexAreaScreen;
+
+// .text
+
+void UnusedPokedexAreaScreen(u16 a0, MainCallback a1, MainCallback a2)
+{
+ gPokedexAreaScreenPtr->prev = a1;
+ gPokedexAreaScreenPtr->next = a2;
+ gPokedexAreaScreenPtr->species = a0;
+ SetMainCallback2(CB2_UnusedPokedexAreaScreen);
+}
+
+static void CB2_UnusedPokedexAreaScreen(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG1_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ FreeSpriteTileRanges();
+ FreeAllSpritePalettes();
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = -8;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ break;
+ case 1:
+ InitRegionMap(&gPokedexAreaScreenPtr->regionMap, FALSE);
+ StringFill(gPokedexAreaScreenPtr->charBuffer, CHAR_SPACE, 16);
+ break;
+ case 2:
+ ResetDrawAreaGlowState();
+ break;
+ case 3:
+ if (DrawAreaGlow())
+ return;
+ break;
+ case 4:
+ CreateRegionMapPlayerIcon(1, 1);
+ RegionMapDefaultZoomOffsetPlayerSprite(0, -8);
+ SetVBlankCallback(VBlankCB_AreaScren);
+ break;
+ case 5:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 16, 0, 0);
+ break;
+ case 6:
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD;
+ StartAreaGlow();
+ REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ break;
+ case 7:
+ SetCallback(DebugCB_WaitFade);
+ SetMainCallback2(MainCB_AreaScren);
+ return;
+ }
+ gMain.state++;
+}
+
+static void VBlankCB_AreaScren(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void MainCB_AreaScren(void)
+{
+ gPokedexAreaScreenPtr->callback();
+ DoAreaGlow();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void SetCallback(void (*func)(void))
+{
+ gPokedexAreaScreenPtr->callback = func;
+ gPokedexAreaScreenPtr->state = 0;
+}
+
+static void ResetDrawAreaGlowState(void)
+{
+ gPokedexAreaScreenPtr->drawAreaGlowState = 0;
+}
+
+bool8 DrawAreaGlow(void)
+{
+ switch (gPokedexAreaScreenPtr->drawAreaGlowState)
+ {
+ case 0:
+ FindMapsWithMon(gPokedexAreaScreenPtr->species);
+ break;
+ case 1:
+ BuildAreaGlowTilemap();
+ break;
+ case 2:
+ LZ77UnCompVram(gUnknown_083F8438, BG_CHAR_ADDR(3));
+ break;
+ case 3:
+ DmaCopy16(3, gPokedexAreaScreenPtr->areaGlowTilemap, BG_SCREEN_ADDR(30), 0x500);
+ break;
+ case 4:
+ LoadPalette(gUnknown_083F8418, 0, 32);
+ break;
+ case 5:
+ REG_BG0CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT256x256;
+ gPokedexAreaScreenPtr->drawAreaGlowState++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+ gPokedexAreaScreenPtr->drawAreaGlowState++;
+ return TRUE;
+}
+
+static void FindMapsWithMon(u16 mon)
+{
+ u16 i;
+ struct Roamer *roamer;
+
+ if (mon != ROAMER_SPECIES)
+ {
+ gPokedexAreaScreenPtr->numOverworldAreas = 0;
+ gPokedexAreaScreenPtr->numSpecialAreas = 0;
+ for (i = 0; i < ARRAY_COUNT(sSpeciesHiddenFromAreaScreen); i++)
+ {
+ if (sSpeciesHiddenFromAreaScreen[i] == mon)
+ return;
+ }
+ for (i = 0; sFeebasData[i][0] != NUM_SPECIES; i++)
+ {
+ if (mon == sFeebasData[i][0])
+ {
+ switch (sFeebasData[i][1])
+ {
+ case MAP_GROUP(PETALBURG_CITY):
+ SetAreaHasMon(sFeebasData[i][1], sFeebasData[i][2]);
+ break;
+ case MAP_GROUP(METEOR_FALLS_1F_1R):
+ case MAP_GROUP(SAFARI_ZONE_NORTHWEST):
+ SetSpecialMapHasMon(sFeebasData[i][1], sFeebasData[i][2]);
+ break;
+ }
+ }
+ }
+ for (i = 0; gWildMonHeaders[i].mapGroup != 0xFF; i++)
+ {
+ if (MapHasMon(gWildMonHeaders + i, mon))
+ {
+ switch (gWildMonHeaders[i].mapGroup)
+ {
+ case MAP_GROUP(PETALBURG_CITY):
+ SetAreaHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum);
+ break;
+ case MAP_GROUP(METEOR_FALLS_1F_1R):
+ case MAP_GROUP(SAFARI_ZONE_NORTHWEST):
+ SetSpecialMapHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum);
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ gPokedexAreaScreenPtr->numSpecialAreas = 0;
+ roamer = &gSaveBlock1.roamer;
+ if (roamer->active)
+ {
+ GetRoamerLocation(&gPokedexAreaScreenPtr->overworldAreasWithMons[0].mapGroup, &gPokedexAreaScreenPtr->overworldAreasWithMons[0].mapNum);
+ gPokedexAreaScreenPtr->overworldAreasWithMons[0].regionMapSectionId = Overworld_GetMapHeaderByGroupAndId(gPokedexAreaScreenPtr->overworldAreasWithMons[0].mapGroup, gPokedexAreaScreenPtr->overworldAreasWithMons[0].mapNum)->regionMapSectionId;
+ gPokedexAreaScreenPtr->numOverworldAreas = 1;
+ }
+ else
+ gPokedexAreaScreenPtr->numOverworldAreas = 0;
+ }
+}
+
+static void SetAreaHasMon(u16 mapGroup, u16 mapNum)
+{
+ if (gPokedexAreaScreenPtr->numOverworldAreas < 0x40)
+ {
+ gPokedexAreaScreenPtr->overworldAreasWithMons[gPokedexAreaScreenPtr->numOverworldAreas].mapGroup = mapGroup;
+ gPokedexAreaScreenPtr->overworldAreasWithMons[gPokedexAreaScreenPtr->numOverworldAreas].mapNum = mapNum;
+ gPokedexAreaScreenPtr->overworldAreasWithMons[gPokedexAreaScreenPtr->numOverworldAreas].regionMapSectionId = GetOverworldMapFromUnderwaterMap(Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->regionMapSectionId);
+ gPokedexAreaScreenPtr->numOverworldAreas++;
+ }
+}
+
+static void SetSpecialMapHasMon(u16 mapGroup, u16 mapNum)
+{
+ const struct MapHeader *mapHeader;
+ u16 i;
+
+ if (gPokedexAreaScreenPtr->numSpecialAreas < 0x20)
+ {
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
+ if (mapHeader->regionMapSectionId < MAPSEC_NOTHING)
+ {
+ for (i = 0; sLandmarkData[i][0] != MAPSEC_NOTHING; i++)
+ {
+ if (mapHeader->regionMapSectionId == sLandmarkData[i][0] && !FlagGet(sLandmarkData[i][1]))
+ return;
+ }
+ for (i = 0; i < gPokedexAreaScreenPtr->numSpecialAreas; i++)
+ {
+ if (gPokedexAreaScreenPtr->specialAreaRegionMapSectionIds[i] == mapHeader->regionMapSectionId)
+ break;
+ }
+ if (i == gPokedexAreaScreenPtr->numSpecialAreas)
+ {
+ gPokedexAreaScreenPtr->specialAreaRegionMapSectionIds[i] = mapHeader->regionMapSectionId;
+ gPokedexAreaScreenPtr->numSpecialAreas++;
+ }
+ }
+ }
+}
+
+static bool8 MapHasMon(const struct WildPokemonHeader *header, u16 mon)
+{
+ if (MonListHasMon(header->landMonsInfo, mon, 12))
+ return TRUE;
+ if (MonListHasMon(header->waterMonsInfo, mon, 5))
+ return TRUE;
+ if (MonListHasMon(header->fishingMonsInfo, mon, 12))
+ return TRUE;
+ if (MonListHasMon(header->rockSmashMonsInfo, mon, 5))
+ return TRUE;
+ return FALSE;
+}
+
+static bool8 MonListHasMon(const struct WildPokemonInfo *info, u16 mon, u16 size)
+{
+ u16 i;
+ if (info != NULL)
+ {
+ for (i = 0; i < size; i++)
+ {
+ if (info->wildPokemon[i].species == mon)
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+#ifdef NONMATCHING
+static void BuildAreaGlowTilemap(void)
+{
+ static EWRAM_DATA u16 gUnknown_02039260 = 0;
+ static EWRAM_DATA u16 gUnknown_02039262 = 0;
+ static EWRAM_DATA u16 gUnknown_02039264 = 0;
+ static EWRAM_DATA u16 gUnknown_02039266 = 0;
+ static EWRAM_DATA u16 gUnknown_02039268 = 0;
+ static EWRAM_DATA u16 gUnknown_0203926A = 0;
+ u32 r3;
+
+ for (gUnknown_02039260 = 0; gUnknown_02039260 < 0x280; gUnknown_02039260++)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] = 0;
+
+ for (gUnknown_02039260 = 0; gUnknown_02039260 < gPokedexAreaScreenPtr->numOverworldAreas; gUnknown_02039260++)
+ {
+ gUnknown_02039266 = 0;
+ for (gUnknown_02039264 = 0; gUnknown_02039264 < 20; gUnknown_02039264++)
+ {
+ for (gUnknown_02039262 = 0; gUnknown_02039262 < 32; gUnknown_02039262++)
+ {
+ if (GetRegionMapSectionAt_(gUnknown_02039262, gUnknown_02039264) == gPokedexAreaScreenPtr->overworldAreasWithMons[gUnknown_02039260].regionMapSectionId)
+ {
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266] = 0xFFFF;
+ }
+ gUnknown_02039266++;
+ }
+ }
+ }
+
+ gUnknown_02039266 = 0;
+ for (gUnknown_02039264 = 0; gUnknown_02039264 < 20; gUnknown_02039264++)
+ {
+ for (gUnknown_02039262 = 0; gUnknown_02039262 < 32; gUnknown_02039262++)
+ {
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266] == 0xFFFF)
+ {
+ if (gUnknown_02039262 != 0 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 1] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 1] |= 0x02;
+ if (gUnknown_02039262 != 31 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 1] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 1] |= 0x01;
+ if (gUnknown_02039264 != 0 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 32] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 32] |= 0x08;
+ if (gUnknown_02039264 != 19 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 32] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 32] |= 0x04;
+ if (gUnknown_02039262 != 0 && gUnknown_02039264 != 0 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 33] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 33] |= 0x10;
+ if (gUnknown_02039262 != 31 && gUnknown_02039264 != 0 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 31] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 - 31] |= 0x40;
+ if (gUnknown_02039262 != 0 && gUnknown_02039264 != 19 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 31] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 31] |= 0x20;
+ if (gUnknown_02039262 != 31 && gUnknown_02039264 != 19 && gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 33] != 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039266 + 33] |= 0x80;
+ }
+ gUnknown_02039266++;
+ }
+ }
+
+ for (gUnknown_02039260 = 0; gUnknown_02039260 < 0x280; gUnknown_02039260++) // Register difference on induction: expected r3, got r1
+ {
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] == 0xFFFF)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] = 0x10;
+ else if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] != 0)
+ {
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0x02)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] &= 0xFFCF;
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0x01)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] &= 0xFF3F;
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0x08)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] &= 0xFFAF;
+ if (gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0x04)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] &= 0xFF5F;
+ gUnknown_02039268 = gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0x0F;
+ gUnknown_0203926A = gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] & 0xF0;
+ if (gUnknown_0203926A)
+ {
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] &= 0x0F;
+ switch (gUnknown_02039268)
+ {
+ case 0:
+ if (gUnknown_0203926A != 0)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += (gUnknown_0203926A >> 4) + 0x10;
+ break;
+ case 2:
+ if (gUnknown_0203926A != 0)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += (gUnknown_0203926A >> 4) + 0x1E;
+ break;
+ case 1:
+ if (gUnknown_0203926A != 0)
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += (gUnknown_0203926A >> 6) + 0x20;
+ break;
+ case 8:
+ if (gUnknown_0203926A != 0)
+ {
+ r3 = 0;
+ if (gUnknown_0203926A & 0x80)
+ r3 |= 1;
+ if (gUnknown_0203926A & 0x20)
+ r3 |= 2;
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += r3 + 0x20;
+ }
+ break;
+ case 4:
+ if (gUnknown_0203926A != 0)
+ {
+ r3 = 0;
+ if (gUnknown_0203926A & 0x40)
+ r3 |= 1;
+ if (gUnknown_0203926A & 0x10)
+ r3 |= 2;
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += r3 + 0x21;
+ }
+ break;
+ case 5:
+ case 6:
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += 0x27;
+ break;
+ case 9:
+ case 10:
+ gPokedexAreaScreenPtr->areaGlowTilemap[gUnknown_02039260] += 0x25;
+ break;
+ }
+ }
+ }
+ }
+}
+# else
EWRAM_DATA u16 gUnknown_02039260 = 0;
EWRAM_DATA u16 gUnknown_02039262 = 0;
EWRAM_DATA u16 gUnknown_02039264 = 0;
EWRAM_DATA u16 gUnknown_02039266 = 0;
EWRAM_DATA u16 gUnknown_02039268 = 0;
EWRAM_DATA u16 gUnknown_0203926A = 0;
+static NAKED void BuildAreaGlowTilemap(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0xC\n"
+ "\tldr r1, _08110E5C @ =gUnknown_02039260\n"
+ "\tmovs r0, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tmov r9, r1\n"
+ "\tldr r0, _08110E60 @ =gSharedMem\n"
+ "\tmov r8, r0\n"
+ "\tldr r1, _08110E64 @ =gUnknown_02039262\n"
+ "\tmov r12, r1\n"
+ "\tmov r1, r9\n"
+ "\tmovs r4, 0x8B\n"
+ "\tlsls r4, 1\n"
+ "\tadd r4, r8\n"
+ "\tldr r3, _08110E68 @ =0x0000027f\n"
+ "\tmovs r2, 0\n"
+ "_08110C5C:\n"
+ "\tldrh r0, [r1]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, r4\n"
+ "\tstrh r2, [r0]\n"
+ "\tldrh r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r1]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, r3\n"
+ "\tbls _08110C5C\n"
+ "\tmovs r0, 0\n"
+ "\tmov r3, r9\n"
+ "\tstrh r0, [r3]\n"
+ "\tmovs r1, 0x88\n"
+ "\tlsls r1, 1\n"
+ "\tadd r1, r8\n"
+ "\tldrh r0, [r1]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110D04\n"
+ "\tldr r4, _08110E6C @ =gUnknown_02039266\n"
+ "\tmovs r2, 0\n"
+ "\tldr r5, _08110E64 @ =gUnknown_02039262\n"
+ "\tmov r0, r8\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tmovs r1, 0x8B\n"
+ "\tlsls r1, 1\n"
+ "\tadd r1, r8\n"
+ "\tmov r10, r1\n"
+ "\tldr r6, _08110E70 @ =gUnknown_02039264\n"
+ "\tmov r7, r9\n"
+ "_08110C9A:\n"
+ "\tstrh r2, [r4]\n"
+ "\tldr r3, _08110E70 @ =gUnknown_02039264\n"
+ "\tstrh r2, [r3]\n"
+ "_08110CA0:\n"
+ "\tmov r0, r12\n"
+ "\tstrh r2, [r0]\n"
+ "_08110CA4:\n"
+ "\tldrh r0, [r5]\n"
+ "\tldrh r1, [r6]\n"
+ "\tstr r2, [sp]\n"
+ "\tbl GetRegionMapSectionAt_\n"
+ "\tldrh r1, [r7]\n"
+ "\tlsls r1, 2\n"
+ "\tldr r3, [sp, 0x8]\n"
+ "\tadds r1, r3\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r2, [sp]\n"
+ "\tldrh r1, [r1, 0x12]\n"
+ "\tcmp r0, r1\n"
+ "\tbne _08110CCC\n"
+ "\tldrh r0, [r4]\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r10\n"
+ "\tldr r1, _08110E74 @ =0x0000ffff\n"
+ "\tstrh r1, [r0]\n"
+ "_08110CCC:\n"
+ "\tldrh r0, [r4]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r4]\n"
+ "\tldrh r0, [r5]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r5]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbls _08110CA4\n"
+ "\tldrh r0, [r6]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r6]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r1, _08110E64 @ =gUnknown_02039262\n"
+ "\tmov r12, r1\n"
+ "\tcmp r0, 0x13\n"
+ "\tbls _08110CA0\n"
+ "\tldrh r0, [r7]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r7]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r3, _08110E78 @ =gSharedMem + 0x110\n"
+ "\tldrh r3, [r3]\n"
+ "\tcmp r0, r3\n"
+ "\tbcc _08110C9A\n"
+ "_08110D04:\n"
+ "\tmovs r0, 0\n"
+ "\tldr r1, _08110E6C @ =gUnknown_02039266\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r3, _08110E70 @ =gUnknown_02039264\n"
+ "\tstrh r0, [r3]\n"
+ "\tldr r6, _08110E64 @ =gUnknown_02039262\n"
+ "\tmov r10, r0\n"
+ "\tadds r3, r1, 0\n"
+ "\tldr r5, _08110E7C @ =gSharedMem + 0x116\n"
+ "\tldr r4, _08110E74 @ =0x0000ffff\n"
+ "\tldr r7, _08110E70 @ =gUnknown_02039264\n"
+ "_08110D1A:\n"
+ "\tmov r0, r10\n"
+ "\tstrh r0, [r6]\n"
+ "_08110D1E:\n"
+ "\tldrh r1, [r3]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r5\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, r4\n"
+ "\tbne _08110E10\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110D42\n"
+ "\tsubs r0, r1, 0x1\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110D42\n"
+ "\tmovs r0, 0x2\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110D42:\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbeq _08110D5C\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x1\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110D5C\n"
+ "\tmovs r0, 0x1\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110D5C:\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110D76\n"
+ "\tldrh r0, [r3]\n"
+ "\tsubs r0, 0x20\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110D76\n"
+ "\tmovs r0, 0x8\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110D76:\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0x13\n"
+ "\tbeq _08110D90\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x20\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110D90\n"
+ "\tmovs r0, 0x4\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110D90:\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110DB0\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110DB0\n"
+ "\tldrh r0, [r3]\n"
+ "\tsubs r0, 0x21\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110DB0\n"
+ "\tmovs r0, 0x10\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110DB0:\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbeq _08110DD0\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110DD0\n"
+ "\tldrh r0, [r3]\n"
+ "\tsubs r0, 0x1F\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110DD0\n"
+ "\tmovs r0, 0x40\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110DD0:\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110DF0\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0x13\n"
+ "\tbeq _08110DF0\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x1F\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110DF0\n"
+ "\tmovs r0, 0x20\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110DF0:\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbeq _08110E10\n"
+ "\tldrh r0, [r7]\n"
+ "\tcmp r0, 0x13\n"
+ "\tbeq _08110E10\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x21\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r5\n"
+ "\tldrh r1, [r2]\n"
+ "\tcmp r1, r4\n"
+ "\tbeq _08110E10\n"
+ "\tmovs r0, 0x80\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110E10:\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r3]\n"
+ "\tldrh r0, [r6]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r6]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbhi _08110E26\n"
+ "\tb _08110D1E\n"
+ "_08110E26:\n"
+ "\tldrh r0, [r7]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r7]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x13\n"
+ "\tbhi _08110E36\n"
+ "\tb _08110D1A\n"
+ "_08110E36:\n"
+ "\tmovs r0, 0\n"
+ "\tmov r1, r9\n"
+ "\tstrh r0, [r1]\n"
+ "_08110E3C:\n"
+ "\tmov r3, r9\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r4, 0x8B\n"
+ "\tlsls r4, 1\n"
+ "\tadd r4, r8\n"
+ "\tadds r3, r0, r4\n"
+ "\tldrh r2, [r3]\n"
+ "\tadds r1, r2, 0\n"
+ "\tldr r0, _08110E74 @ =0x0000ffff\n"
+ "\tcmp r1, r0\n"
+ "\tbne _08110E80\n"
+ "\tmovs r0, 0x10\n"
+ "\tstrh r0, [r3]\n"
+ "\tb _0811105E\n"
+ "\t.align 2, 0\n"
+ "_08110E5C: .4byte gUnknown_02039260\n"
+ "_08110E60: .4byte gSharedMem\n"
+ "_08110E64: .4byte gUnknown_02039262\n"
+ "_08110E68: .4byte 0x0000027f\n"
+ "_08110E6C: .4byte gUnknown_02039266\n"
+ "_08110E70: .4byte gUnknown_02039264\n"
+ "_08110E74: .4byte 0x0000ffff\n"
+ "_08110E78: .4byte gSharedMem + 0x110\n"
+ "_08110E7C: .4byte gSharedMem + 0x116\n"
+ "_08110E80:\n"
+ "\tcmp r1, 0\n"
+ "\tbne _08110E86\n"
+ "\tb _0811105E\n"
+ "_08110E86:\n"
+ "\tmovs r0, 0x2\n"
+ "\tands r0, r2\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110E94\n"
+ "\tldr r0, _08110F28 @ =0x0000ffcf\n"
+ "\tands r0, r2\n"
+ "\tstrh r0, [r3]\n"
+ "_08110E94:\n"
+ "\tmov r1, r9\n"
+ "\tldrh r0, [r1]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r4\n"
+ "\tldrh r1, [r2]\n"
+ "\tmovs r0, 0x1\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110EAC\n"
+ "\tldr r0, _08110F2C @ =0x0000ff3f\n"
+ "\tands r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110EAC:\n"
+ "\tmov r3, r9\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r4\n"
+ "\tldrh r1, [r2]\n"
+ "\tmovs r0, 0x8\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110EC4\n"
+ "\tldr r0, _08110F30 @ =0x0000ffaf\n"
+ "\tands r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110EC4:\n"
+ "\tmov r1, r9\n"
+ "\tldrh r0, [r1]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0, r4\n"
+ "\tldrh r1, [r2]\n"
+ "\tmovs r0, 0x4\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110EDC\n"
+ "\tldr r0, _08110F34 @ =0x0000ff5f\n"
+ "\tands r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "_08110EDC:\n"
+ "\tldr r6, _08110F38 @ =gUnknown_02039268\n"
+ "\tmov r3, r9\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, r4\n"
+ "\tldrh r1, [r0]\n"
+ "\tmovs r5, 0xF\n"
+ "\tadds r0, r5, 0\n"
+ "\tands r0, r1\n"
+ "\tstrh r0, [r6]\n"
+ "\tldr r2, _08110F3C @ =gUnknown_0203926A\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, r4\n"
+ "\tldrh r1, [r0]\n"
+ "\tmovs r0, 0xF0\n"
+ "\tands r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "\tldrh r1, [r3]\n"
+ "\tadds r3, r2, 0\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08110F0A\n"
+ "\tb _0811105E\n"
+ "_08110F0A:\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r4\n"
+ "\tldrh r2, [r0]\n"
+ "\tadds r1, r5, 0\n"
+ "\tands r1, r2\n"
+ "\tstrh r1, [r0]\n"
+ "\tldrh r0, [r6]\n"
+ "\tcmp r0, 0xA\n"
+ "\tbls _08110F1E\n"
+ "\tb _0811105E\n"
+ "_08110F1E:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _08110F40 @ =_08110F44\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_08110F28: .4byte 0x0000ffcf\n"
+ "_08110F2C: .4byte 0x0000ff3f\n"
+ "_08110F30: .4byte 0x0000ffaf\n"
+ "_08110F34: .4byte 0x0000ff5f\n"
+ "_08110F38: .4byte gUnknown_02039268\n"
+ "_08110F3C: .4byte gUnknown_0203926A\n"
+ "_08110F40: .4byte _08110F44\n"
+ "\t.align 2, 0\n"
+ "_08110F44:\n"
+ "\t.4byte _08110F70\n"
+ "\t.4byte _08110FAC\n"
+ "\t.4byte _08110F8E\n"
+ "\t.4byte _0811105E\n"
+ "\t.4byte _08111002\n"
+ "\t.4byte _08111036\n"
+ "\t.4byte _08111036\n"
+ "\t.4byte _0811105E\n"
+ "\t.4byte _08110FCE\n"
+ "\t.4byte _0811104A\n"
+ "\t.4byte _0811104A\n"
+ "_08110F70:\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r1, r0, 16\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _0811105E\n"
+ "\tmov r0, r9\n"
+ "\tldrh r2, [r0]\n"
+ "\tlsls r2, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r2, r0\n"
+ "\tldrh r0, [r2]\n"
+ "\tadds r0, 0x10\n"
+ "\tlsrs r1, 20\n"
+ "\tb _08110FC8\n"
+ "_08110F8E:\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r1, r0, 16\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _0811105E\n"
+ "\tmov r3, r9\n"
+ "\tldrh r2, [r3]\n"
+ "\tlsls r2, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r2, r0\n"
+ "\tldrh r0, [r2]\n"
+ "\tadds r0, 0x1E\n"
+ "\tlsrs r1, 20\n"
+ "\tb _08110FC8\n"
+ "_08110FAC:\n"
+ "\tldrh r0, [r3]\n"
+ "\tlsls r1, r0, 16\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _0811105E\n"
+ "\tmov r0, r9\n"
+ "\tldrh r2, [r0]\n"
+ "\tlsls r2, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r2, r0\n"
+ "\tldrh r0, [r2]\n"
+ "\tadds r0, 0x20\n"
+ "\tlsrs r1, 22\n"
+ "_08110FC8:\n"
+ "\tadds r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "\tb _0811105E\n"
+ "_08110FCE:\n"
+ "\tldrh r2, [r3]\n"
+ "\tcmp r2, 0\n"
+ "\tbeq _0811105E\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r2\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tnegs r0, r0\n"
+ "\tlsrs r3, r0, 31\n"
+ "\tmovs r0, 0x20\n"
+ "\tands r0, r2\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08110FEC\n"
+ "\tmovs r0, 0x2\n"
+ "\torrs r3, r0\n"
+ "_08110FEC:\n"
+ "\tmov r0, r9\n"
+ "\tldrh r1, [r0]\n"
+ "\tlsls r1, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1]\n"
+ "\tadds r0, 0x20\n"
+ "\tadds r0, r3\n"
+ "\tb _0811105C\n"
+ "_08111002:\n"
+ "\tldrh r2, [r3]\n"
+ "\tcmp r2, 0\n"
+ "\tbeq _0811105E\n"
+ "\tmovs r0, 0x40\n"
+ "\tands r0, r2\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tnegs r0, r0\n"
+ "\tlsrs r3, r0, 31\n"
+ "\tmovs r0, 0x10\n"
+ "\tands r0, r2\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08111020\n"
+ "\tmovs r0, 0x2\n"
+ "\torrs r3, r0\n"
+ "_08111020:\n"
+ "\tmov r0, r9\n"
+ "\tldrh r1, [r0]\n"
+ "\tlsls r1, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1]\n"
+ "\tadds r0, 0x21\n"
+ "\tadds r0, r3\n"
+ "\tb _0811105C\n"
+ "_08111036:\n"
+ "\tmov r3, r9\n"
+ "\tldrh r1, [r3]\n"
+ "\tlsls r1, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1]\n"
+ "\tadds r0, 0x27\n"
+ "\tb _0811105C\n"
+ "_0811104A:\n"
+ "\tmov r0, r9\n"
+ "\tldrh r1, [r0]\n"
+ "\tlsls r1, 1\n"
+ "\tmovs r0, 0x8B\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1]\n"
+ "\tadds r0, 0x25\n"
+ "_0811105C:\n"
+ "\tstrh r0, [r1]\n"
+ "_0811105E:\n"
+ "\tmov r3, r9\n"
+ "\tldrh r0, [r3]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r3]\n"
+ "\tlsls r0, 16\n"
+ "\tldr r1, _08111080 @ =0x027f0000\n"
+ "\tcmp r0, r1\n"
+ "\tbhi _08111070\n"
+ "\tb _08110E3C\n"
+ "_08111070:\n"
+ "\tadd sp, 0xC\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_08111080: .4byte 0x027f0000");
+}
+#endif // NONMATCHING
-// Static ROM declarations
+static void StartAreaGlow(void)
+{
+ if (gPokedexAreaScreenPtr->numSpecialAreas != 0 && gPokedexAreaScreenPtr->numOverworldAreas == 0)
+ gPokedexAreaScreenPtr->whichMarkersFlashing = 1;
+ else
+ gPokedexAreaScreenPtr->whichMarkersFlashing = 0;
+ gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter = 0;
+ gPokedexAreaScreenPtr->areaShadeFrameCounter = 0;
+ gPokedexAreaScreenPtr->areaShadeBldArgLo = 0;
+ gPokedexAreaScreenPtr->areaShadeBldArgHi = 0x40;
+ gPokedexAreaScreenPtr->specialMarkerCycleCounter = 1;
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD;
+ REG_BLDALPHA = 0x1000;
+ DoAreaGlow();
+}
-// .rodata
+static void DoAreaGlow(void)
+{
+ u16 x;
+ u16 y;
+ u16 i;
-// .text
+ if (gPokedexAreaScreenPtr->whichMarkersFlashing == 0)
+ {
+ if (gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter == 0)
+ {
+ gPokedexAreaScreenPtr->areaShadeFrameCounter++;
+ if (gPokedexAreaScreenPtr->areaShadeFrameCounter & 1)
+ gPokedexAreaScreenPtr->areaShadeBldArgLo = (gPokedexAreaScreenPtr->areaShadeBldArgLo + 4) & 0x7f;
+ else
+ gPokedexAreaScreenPtr->areaShadeBldArgHi = (gPokedexAreaScreenPtr->areaShadeBldArgHi + 4) & 0x7f;
+ x = gSineTable[gPokedexAreaScreenPtr->areaShadeBldArgLo] >> 4;
+ y = gSineTable[gPokedexAreaScreenPtr->areaShadeBldArgHi] >> 4;
+ REG_BLDALPHA = x | (y << 8);
+ gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter = 0;
+ if (gPokedexAreaScreenPtr->areaShadeFrameCounter == 0x40)
+ {
+ gPokedexAreaScreenPtr->areaShadeFrameCounter = 0;
+ if (gPokedexAreaScreenPtr->numSpecialAreas != 0)
+ gPokedexAreaScreenPtr->whichMarkersFlashing = 1;
+ }
+ }
+ else
+ gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter--;
+ }
+ else
+ {
+ gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter++;
+ if (gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter > 12)
+ {
+ gPokedexAreaScreenPtr->areaShadeOrMarkerFrameCounter = 0;
+ gPokedexAreaScreenPtr->specialMarkerCycleCounter++;
+ for (i = 0; i < gPokedexAreaScreenPtr->numSpecialAreas; i++)
+ {
+ gPokedexAreaScreenPtr->areaMarkerSprites[i]->invisible = gPokedexAreaScreenPtr->specialMarkerCycleCounter & 1;
+ }
+ if (gPokedexAreaScreenPtr->specialMarkerCycleCounter > 4)
+ {
+ gPokedexAreaScreenPtr->specialMarkerCycleCounter = 1;
+ if (gPokedexAreaScreenPtr->numOverworldAreas != 0)
+ gPokedexAreaScreenPtr->whichMarkersFlashing = 0;
+ }
+ }
+ }
+}
+
+static void DebugCB_WaitFade(void)
+{
+ switch (gPokedexAreaScreenPtr->state)
+ {
+ case 0:
+ gPokedexAreaScreenPtr->state = 1;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ SetCallback(DebugCB_WaitButton);
+ }
+ break;
+ }
+}
+
+static void DebugCB_WaitButton(void)
+{
+ switch (gPokedexAreaScreenPtr->state)
+ {
+ case 0:
+ if (gMain.newKeys & B_BUTTON)
+ {
+ SetCallback(DebugCB_GoBack);
+ }
+ else if (gMain.newKeys & DPAD_RIGHT || (gMain.newKeys & R_BUTTON && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ {
+ SetCallback(DebugCB_GoNext);
+ }
+ break;
+ }
+}
+
+static void DebugCB_GoBack(void)
+{
+ switch (gPokedexAreaScreenPtr->state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, 0);
+ gPokedexAreaScreenPtr->state++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ FreeRegionMapIconResources();
+ SetMainCallback2(gPokedexAreaScreenPtr->prev);
+ }
+ break;
+ }
+}
+
+static void DebugCB_GoNext(void)
+{
+ switch (gPokedexAreaScreenPtr->state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, 0);
+ gPokedexAreaScreenPtr->state++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ FreeRegionMapIconResources();
+ SetMainCallback2(gPokedexAreaScreenPtr->next);
+ }
+ break;
+ }
+}
+
+static void Task_PokedexAreaScreen_0(u8 taskId);
+static void Task_PokedexAreaScreen_1(u8 taskId);
+static void CreateAreaMarkerSprites(void);
+static void DestroyAreaSprites(void);
+static void LoadAreaUnknownGraphics(void);
+static void CreateAreaUnknownSprites(void);
+
+void ShowPokedexAreaScreen(u16 species, u8 * errno)
+{
+ u8 taskId;
+ gPokedexAreaScreenPtr->species = species;
+ gPokedexAreaScreenPtr->errno = errno;
+ errno[0] = 0;
+ taskId = CreateTask(Task_PokedexAreaScreen_0, 0);
+ gTasks[taskId].data[0] = 0;
+}
+
+static void Task_PokedexAreaScreen_0(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG1_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = -8;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ break;
+ case 1:
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ break;
+ case 2:
+ InitRegionMap(&gPokedexAreaScreenPtr->regionMap, FALSE);
+ StringFill(gPokedexAreaScreenPtr->charBuffer, CHAR_SPACE, 16);
+ break;
+ case 3:
+ ResetDrawAreaGlowState();
+ break;
+ case 4:
+ if (DrawAreaGlow())
+ return;
+ break;
+ case 5:
+ CreateRegionMapPlayerIcon(1, 1);
+ RegionMapDefaultZoomOffsetPlayerSprite(0, -8);
+ break;
+ case 6:
+ CreateAreaMarkerSprites();
+ break;
+ case 7:
+ LoadAreaUnknownGraphics();
+ break;
+ case 8:
+ CreateAreaUnknownSprites();
+ break;
+ case 9:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 16, 0, 0);
+ break;
+ case 10:
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD;
+ StartAreaGlow();
+ REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ break;
+ case 11:
+ gTasks[taskId].func = Task_PokedexAreaScreen_1;
+ gTasks[taskId].data[0] = 0;
+ return;
+ }
+ gTasks[taskId].data[0]++;
+}
+
+static void Task_PokedexAreaScreen_1(u8 taskId)
+{
+ DoAreaGlow();
+ switch (gTasks[taskId].data[0])
+ {
+ default:
+ gTasks[taskId].data[0] = 0;
+ case 0:
+ if (gPaletteFade.active)
+ return;
+ break;
+ case 1:
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].data[1] = 1;
+ PlaySE(SE_PC_OFF);
+ }
+ else if (gMain.newKeys & DPAD_RIGHT || (gMain.newKeys & R_BUTTON && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ {
+ gTasks[taskId].data[1] = 2;
+ PlaySE(SE_Z_PAGE);
+ }
+ else
+ return;
+ break;
+ case 2:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, 0);
+ break;
+ case 3:
+ if (gPaletteFade.active)
+ return;
+ DestroyAreaSprites();
+ gPokedexAreaScreenPtr->errno[0] = gTasks[taskId].data[1];
+ DestroyTask(taskId);
+ return;
+ }
+ gTasks[taskId].data[0]++;
+}
+
+const u16 AreaMarkerPalette[];
+const u8 AreaMarkerTiles[];
+
+const struct SpriteSheet sAreaMarkerSpriteSheet = {
+ AreaMarkerTiles, 0x80, 2
+};
+
+const struct SpritePalette sAreaMarkerSpritePalette = {
+ AreaMarkerPalette, 2
+};
+
+const struct OamData sAreaMarkerOamData = {
+ .size = 1,
+ .priority = 1
+};
+
+const struct SpriteTemplate sAreaMarkerSpriteTemplate = {
+ 2,
+ 2,
+ &sAreaMarkerOamData,
+ gDummySpriteAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+const u16 AreaMarkerPalette[] = INCBIN_U16("graphics/pokedex/area_marker.gbapal");
+const u8 AreaMarkerTiles[] = INCBIN_U8("graphics/pokedex/area_marker.4bpp");
+
+static void CreateAreaMarkerSprites(void)
+{
+ s16 i;
+ u8 spriteId;
+ s16 x;
+ s16 y;
+ s16 cnt;
+ s16 mapSecId;
+
+ LoadSpriteSheet(&sAreaMarkerSpriteSheet);
+ LoadSpritePalette(&sAreaMarkerSpritePalette);
+ cnt = 0;
+ for (i = 0; i < gPokedexAreaScreenPtr->numSpecialAreas; i++)
+ {
+ mapSecId = gPokedexAreaScreenPtr->specialAreaRegionMapSectionIds[i];
+ x = 8 * (gRegionMapLocations[mapSecId].x + 1) + 4;
+ y = 8 * (gRegionMapLocations[mapSecId].y) + 28;
+ x += 4 * (gRegionMapLocations[mapSecId].width - 1);
+ y += 4 * (gRegionMapLocations[mapSecId].height - 1);
+ spriteId = CreateSprite(&sAreaMarkerSpriteTemplate, x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].invisible = TRUE;
+ gPokedexAreaScreenPtr->areaMarkerSprites[cnt++] = gSprites + spriteId;
+ }
+ }
+ gPokedexAreaScreenPtr->numAreaMarkerSprites = cnt;
+}
+
+static void DestroyAreaSprites(void)
+{
+ u16 i;
+ FreeSpriteTilesByTag(2);
+ FreeSpritePaletteByTag(2);
+ for (i = 0; i < gPokedexAreaScreenPtr->numAreaMarkerSprites; i++)
+ {
+ DestroySprite(gPokedexAreaScreenPtr->areaMarkerSprites[i]);
+ }
+ FreeSpriteTilesByTag(3);
+ FreeSpritePaletteByTag(3);
+ for (i = 0; i < 3; i++)
+ {
+ if (gPokedexAreaScreenPtr->areaUnknownSprites[i] != NULL)
+ {
+ DestroySprite(gPokedexAreaScreenPtr->areaUnknownSprites[i]);
+ }
+ }
+}
+
+const struct SpritePalette sAreaUnknownSpritePalette = {gAreaUnknownPalette, 3};
+
+static void LoadAreaUnknownGraphics(void)
+{
+ struct SpriteSheet spriteSheet = {gPokedexAreaScreenPtr->areaUnknownGraphicsBuffer, 0x600, 3};
+
+ LZ77UnCompWram(gAreaUnknownTiles, gPokedexAreaScreenPtr->areaUnknownGraphicsBuffer);
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&sAreaUnknownSpritePalette);
+}
+
+const struct OamData sAreaUnknownOamData = {
+ .size = 2,
+ .priority = 1
+};
+
+const struct SpriteTemplate sAreaUnknownSpriteTemplate = {
+ 3,
+ 3,
+ &sAreaUnknownOamData,
+ gDummySpriteAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+static void CreateAreaUnknownSprites(void)
+{
+ u16 i;
+ u8 spriteId;
+
+ if (gPokedexAreaScreenPtr->numOverworldAreas != 0 || gPokedexAreaScreenPtr->numSpecialAreas != 0)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ gPokedexAreaScreenPtr->areaUnknownSprites[i] = NULL;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 3; i++)
+ {
+ spriteId = CreateSprite(&sAreaUnknownSpriteTemplate, i * 32 + 0xa0, 0x8c, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.tileNum += i * 16;
+ gPokedexAreaScreenPtr->areaUnknownSprites[i] = gSprites + spriteId;
+ }
+ else
+ gPokedexAreaScreenPtr->areaUnknownSprites[i] = NULL;
+ }
+ }
+}
diff --git a/src/region_map.c b/src/region_map.c
index b4ed2c558..190cc6576 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "constants/region_map_sections.h"
#include "event_data.h"
#include "field_effect.h"
#include "field_specials.h"
@@ -19,97 +20,6 @@
#include "trig.h"
#include "ewram.h"
-// Map Section IDs
-#define MAPSEC_LITTLEROOT_TOWN 0
-#define MAPSEC_OLDALE_TOWN 1
-#define MAPSEC_DEWFORD_TOWN 2
-#define MAPSEC_LAVARIDGE_TOWN 3
-#define MAPSEC_FALLARBOR_TOWN 4
-#define MAPSEC_VERDANTURF_TOWN 5
-#define MAPSEC_PACIFIDLOG_TOWN 6
-#define MAPSEC_PETALBURG_CITY 7
-#define MAPSEC_SLATEPORT_CITY 8
-#define MAPSEC_MAUVILLE_CITY 9
-#define MAPSEC_RUSTBORO_CITY 10
-#define MAPSEC_FORTREE_CITY 11
-#define MAPSEC_LILYCOVE_CITY 12
-#define MAPSEC_MOSSDEEP_CITY 13
-#define MAPSEC_SOOTOPOLIS_CITY 14
-#define MAPSEC_EVER_GRANDE_CITY 15
-#define MAPSEC_ROUTE_101 0x10
-#define MAPSEC_ROUTE_102 0x11
-#define MAPSEC_ROUTE_103 0x12
-#define MAPSEC_ROUTE_104 0x13
-#define MAPSEC_ROUTE_105 0x14
-#define MAPSEC_ROUTE_106 0x15
-#define MAPSEC_ROUTE_107 0x16
-#define MAPSEC_ROUTE_108 0x17
-#define MAPSEC_ROUTE_109 0x18
-#define MAPSEC_ROUTE_110 0x19
-#define MAPSEC_ROUTE_111 0x1A
-#define MAPSEC_ROUTE_112 0x1B
-#define MAPSEC_ROUTE_113 0x1C
-#define MAPSEC_ROUTE_114 0x1D
-#define MAPSEC_ROUTE_115 0x1E
-#define MAPSEC_ROUTE_116 0x1F
-#define MAPSEC_ROUTE_117 0x20
-#define MAPSEC_ROUTE_118 0x21
-#define MAPSEC_ROUTE_119 0x22
-#define MAPSEC_ROUTE_120 0x23
-#define MAPSEC_ROUTE_121 0x24
-#define MAPSEC_ROUTE_122 0x25
-#define MAPSEC_ROUTE_123 0x26
-#define MAPSEC_ROUTE_124 0x27
-#define MAPSEC_ROUTE_125 0x28
-#define MAPSEC_ROUTE_126 0x29
-#define MAPSEC_ROUTE_127 0x2A
-#define MAPSEC_ROUTE_128 0x2B
-#define MAPSEC_ROUTE_129 0x2C
-#define MAPSEC_ROUTE_130 0x2D
-#define MAPSEC_ROUTE_131 0x2E
-#define MAPSEC_ROUTE_132 0x2F
-#define MAPSEC_ROUTE_133 0x30
-#define MAPSEC_ROUTE_134 0x31
-#define MAPSEC_UNDERWATER1 0x32
-#define MAPSEC_UNDERWATER2 0x33
-#define MAPSEC_UNDERWATER3 0x34
-#define MAPSEC_UNDERWATER4 0x35
-#define MAPSEC_UNDERWATER5 0x36
-#define MAPSEC_GRANITE_CAVE 0x37
-#define MAPSEC_MT_CHIMNEY 0x38
-#define MAPSEC_SAFARI_ZONE 0x39
-#define MAPSEC_BATTLE_TOWER 0x3A
-#define MAPSEC_PETALBURG_WOODS 0x3B
-#define MAPSEC_RUSTURF_TUNNEL 0x3C
-#define MAPSEC_ABANDONED_SHIP 0x3D
-#define MAPSEC_NEW_MAUVILLE 0x3E
-#define MAPSEC_METEOR_FALLS_1 0x3F
-#define MAPSEC_METEOR_FALLS_2 0x40
-#define MAPSEC_MT_PYRE 0x41
-#define MAPSEC_EVIL_TEAM_HIDEOUT 0x42
-#define MAPSEC_SHOAL_CAVE 0x43
-#define MAPSEC_SEAFLOOR_CAVERN 0x44
-#define MAPSEC_UNDERWATER6 0x45
-#define MAPSEC_VICTORY_ROAD 0x46
-#define MAPSEC_MIRAGE_ISLAND 0x47
-#define MAPSEC_CAVE_OF_ORIGIN 0x48
-#define MAPSEC_SOUTHERN_ISLAND 0x49
-#define MAPSEC_FIERY_PATH_1 0x4A
-#define MAPSEC_FIERY_PATH_2 0x4B
-#define MAPSEC_JAGGED_PASS_1 0x4C
-#define MAPSEC_JAGGED_PASS_2 0x4D
-#define MAPSEC_SEALED_CHAMBER 0x4E
-#define MAPSEC_UNDERWATER7 0x4F
-#define MAPSEC_SCORCHED_SLAB 0x50
-#define MAPSEC_ISLAND_CAVE 0x51
-#define MAPSEC_DESERT_RUINS 0x52
-#define MAPSEC_ANCIENT_TOMB 0x53
-#define MAPSEC_INSIDE_OF_TRUCK 0x54
-#define MAPSEC_SKY_PILLAR 0x55
-#define MAPSEC_SECRET_BASE 0x56
-#define MAPSEC_UNK_0x57 0x57
-#define MAPSEC_NONE 0x58
-
#define MAP_WIDTH 28
#define MAP_HEIGHT 15
#define MAPCURSOR_X_MIN 1
@@ -149,13 +59,6 @@ static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region
#include "data/region_map_names_de.h"
#endif
-struct RegionMapLocation
-{
- u8 x, y;
- u8 width, height;
- const u8 *regionMapSectionId;
-};
-
const struct RegionMapLocation gRegionMapLocations[] =
{
{ 4, 11, 1, 1, gMapName_LittlerootTown},
@@ -248,21 +151,21 @@ const struct RegionMapLocation gRegionMapLocations[] =
{ 0, 0, 1, 1, gMapName_None},
};
-static const u16 gUnknown_083E7684[][2] =
+static const u16 sUnderwaterMaps[][2] =
{
- {MAPSEC_UNDERWATER1, MAPSEC_ROUTE_124},
- {MAPSEC_UNDERWATER2, MAPSEC_ROUTE_126},
- {MAPSEC_UNDERWATER3, MAPSEC_ROUTE_127},
- {MAPSEC_UNDERWATER4, MAPSEC_ROUTE_128},
- {MAPSEC_UNDERWATER5, MAPSEC_SOOTOPOLIS_CITY},
- {MAPSEC_UNDERWATER6, MAPSEC_ROUTE_128},
+ {MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124},
+ {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_126},
+ {MAPSEC_UNDERWATER_126, MAPSEC_ROUTE_127},
+ {MAPSEC_UNDERWATER_127, MAPSEC_ROUTE_128},
+ {MAPSEC_UNDERWATER_SOOTOPOLIS, MAPSEC_SOOTOPOLIS_CITY},
+ {MAPSEC_UNDERWATER_128, MAPSEC_ROUTE_128},
{MAPSEC_EVIL_TEAM_HIDEOUT, MAPSEC_LILYCOVE_CITY},
- {MAPSEC_UNDERWATER7, MAPSEC_ROUTE_134},
+ {MAPSEC_UNDERWATER_SEALED_CHAMBER, MAPSEC_ROUTE_134},
{MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104},
- {MAPSEC_JAGGED_PASS_1, MAPSEC_ROUTE_112},
+ {MAPSEC_JAGGED_PASS, MAPSEC_ROUTE_112},
{MAPSEC_MT_PYRE, MAPSEC_ROUTE_122},
{MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131},
- {MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NOTHING, MAPSEC_NOTHING},
};
static u8 sub_80FAB78(void);
@@ -276,7 +179,7 @@ static u16 GetRegionMapSectionAt(u16, u16);
static void InitializeCursorPosition(void);
static void sub_80FB600(void);
static u16 sub_80FB758(u16);
-static u16 sub_80FB9C0(u16);
+static u16 GetOverworldMapFromUnderwaterMap_(u16);
static void sub_80FBA18(void);
static bool8 sub_80FBAA0(u16);
void CreateRegionMapCursor(u16, u16);
@@ -338,7 +241,7 @@ bool8 sub_80FA940(void)
gRegionMap->unk74 = gRegionMap->cursorPosX;
gRegionMap->unk76 = gRegionMap->cursorPosY;
gRegionMap->unk16 = sub_80FB758(gRegionMap->mapSectionId);
- gRegionMap->mapSectionId = sub_80FB9C0(gRegionMap->mapSectionId);
+ gRegionMap->mapSectionId = GetOverworldMapFromUnderwaterMap_(gRegionMap->mapSectionId);
GetMapSectionName(gRegionMap->mapSectionName, gRegionMap->mapSectionId, 16);
break;
case 6:
@@ -676,7 +579,7 @@ void UpdateRegionMapVideoRegs(void)
}
}
-void sub_80FB2A4(s16 a, s16 b)
+void RegionMapDefaultZoomOffsetPlayerSprite(s16 a, s16 b)
{
CalcZoomScrollParams(a, b, 0x38, 0x48, 0x100, 0x100, 0);
UpdateRegionMapVideoRegs();
@@ -690,7 +593,7 @@ void sub_80FB2A4(s16 a, s16 b)
static u16 GetRegionMapSectionAt(u16 x, u16 y)
{
if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX)
- return MAPSEC_NONE;
+ return MAPSEC_NOTHING;
y -= MAPCURSOR_Y_MIN;
x -= MAPCURSOR_X_MIN;
return sRegionMapLayout[x + y * 28];
@@ -729,7 +632,7 @@ static void InitializeCursorPosition(void)
mapHeight = gMapHeader.mapData->height;
x = gSaveBlock1.pos.x;
y = gSaveBlock1.pos.y;
- if (gRegionMap->mapSectionId == MAPSEC_UNDERWATER6)
+ if (gRegionMap->mapSectionId == MAPSEC_UNDERWATER_128)
gRegionMap->playerIsInCave = TRUE;
break;
case 3:
@@ -756,7 +659,7 @@ static void InitializeCursorPosition(void)
struct WarpData *r4;
gRegionMap->mapSectionId = gMapHeader.regionMapSectionId;
- if (gRegionMap->mapSectionId != MAPSEC_UNK_0x57)
+ if (gRegionMap->mapSectionId != MAPSEC_DYNAMIC)
{
r4 = &gSaveBlock1.warp4;
mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum);
@@ -799,7 +702,7 @@ static void InitializeCursorPosition(void)
x = 0;
break;
case MAPSEC_ROUTE_126:
- case MAPSEC_UNDERWATER2:
+ case MAPSEC_UNDERWATER_125:
x = 0;
if (gSaveBlock1.pos.x > 32)
x = 1;
@@ -880,7 +783,7 @@ static u16 sub_80FB758(u16 mapSectionId)
{
switch (mapSectionId)
{
- case MAPSEC_NONE:
+ case MAPSEC_NOTHING:
return 0;
case MAPSEC_LITTLEROOT_TOWN:
return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? 2 : 3;
@@ -929,21 +832,21 @@ u16 GetRegionMapSectionAt_(u16 x, u16 y)
return GetRegionMapSectionAt(x, y);
}
-static u16 sub_80FB9C0(u16 mapSectionId)
+static u16 GetOverworldMapFromUnderwaterMap_(u16 mapSectionId)
{
u16 i;
- for (i = 0; gUnknown_083E7684[i][0] != MAPSEC_NONE; i++)
+ for (i = 0; sUnderwaterMaps[i][0] != MAPSEC_NOTHING; i++)
{
- if (gUnknown_083E7684[i][0] == mapSectionId)
- return gUnknown_083E7684[i][1];
+ if (sUnderwaterMaps[i][0] == mapSectionId)
+ return sUnderwaterMaps[i][1];
}
return mapSectionId;
}
-u16 sub_80FBA04(u16 mapSectionId)
+u16 GetOverworldMapFromUnderwaterMap(u16 mapSectionId)
{
- return sub_80FB9C0(mapSectionId);
+ return GetOverworldMapFromUnderwaterMap_(mapSectionId);
}
static void sub_80FBA18(void)
@@ -952,7 +855,7 @@ static void sub_80FBA18(void)
u16 y;
u16 i;
- if (gRegionMap->mapSectionId == MAPSEC_NONE)
+ if (gRegionMap->mapSectionId == MAPSEC_NOTHING)
{
gRegionMap->everGrandeCityArea = 0;
return;
@@ -1307,7 +1210,7 @@ const u8 *GetMapSectionName(u8 *dest, u16 mapSectionId, u16 length)
{
if (mapSectionId == MAPSEC_SECRET_BASE)
return GetSecretBaseMapName(dest);
- if (mapSectionId < MAPSEC_NONE)
+ if (mapSectionId < MAPSEC_NOTHING)
return StringCopy(dest, gRegionMapLocations[mapSectionId].regionMapSectionId);
if (length == 0)
length = 18;
@@ -1318,7 +1221,7 @@ const u8 *CopyMapName(u8 *dest, u16 mapSectionId)
{
switch (mapSectionId)
{
- case MAPSEC_UNK_0x57:
+ case MAPSEC_DYNAMIC:
return StringCopy(dest, gOtherText_Ferry);
case MAPSEC_SECRET_BASE:
return StringCopy(dest, gOtherText_SecretBase);
@@ -1438,8 +1341,8 @@ static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons
static const u16 sSpecialFlyAreas[][2] =
{
// flag, mapSectionId
- {0x848, MAPSEC_BATTLE_TOWER},
- {0xFFFF, MAPSEC_NONE},
+ {FLAG_LANDMARK_BATTLE_TOWER, MAPSEC_BATTLE_TOWER},
+ {0xFFFF, MAPSEC_NOTHING},
};
static const struct OamData sFlyTargetOamData =
@@ -1662,7 +1565,7 @@ static void CreateFlyTargetGraphics(void)
// Draws a light overlay on cities and towns that the player can fly to
static void CreateCityTownFlyTargetIcons(void)
{
- u16 canFlyFlag = 0x80F;
+ u16 canFlyFlag = FLAG_VISITED_LITTLEROOT_TOWN;
u16 i;
for (i = 0; i < 16; i++)
@@ -1704,7 +1607,7 @@ static void CreateSpecialAreaFlyTargetIcons(void)
{
u16 i;
- for (i = 0; sSpecialFlyAreas[i][1] != MAPSEC_NONE; i++)
+ for (i = 0; sSpecialFlyAreas[i][1] != MAPSEC_NOTHING; i++)
{
u16 x;
u16 y;
diff --git a/src/roamer.c b/src/roamer.c
index 459082e42..57dd0745b 100644
--- a/src/roamer.c
+++ b/src/roamer.c
@@ -6,12 +6,6 @@
#include "region_map.h"
#include "constants/species.h"
-#ifdef SAPPHIRE
-#define ROAMER_SPECIES SPECIES_LATIAS
-#else
-#define ROAMER_SPECIES SPECIES_LATIOS
-#endif
-
enum
{
MAP_GRP = 0, // map group
diff --git a/src/tv.c b/src/tv.c
index 7cf549802..87cecbefc 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -40,7 +40,7 @@
#include "text.h"
#include "ewram.h"
#include "constants/moves.h"
-#include "region_map_sections.h"
+#include "constants/region_map_sections.h"
struct UnkTvStruct
{
@@ -90,31 +90,31 @@ const struct OutbreakPokemon gPokeOutbreakSpeciesList[5] =
.species = SPECIES_SURSKIT,
.moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
.level = 3,
- .location = MAPSEC_Route102,
+ .location = MAPSEC_ROUTE_102,
},
{
.species = SPECIES_SURSKIT,
.moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
.level = 15,
- .location = MAPSEC_Route114,
+ .location = MAPSEC_ROUTE_114,
},
{
.species = SPECIES_SURSKIT,
.moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
.level = 15,
- .location = MAPSEC_Route117,
+ .location = MAPSEC_ROUTE_117,
},
{
.species = SPECIES_SURSKIT,
.moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
.level = 28,
- .location = MAPSEC_Route120,
+ .location = MAPSEC_ROUTE_120,
},
{
.species = SPECIES_SKITTY,
.moves = {MOVE_GROWL, MOVE_TACKLE, MOVE_NONE, MOVE_NONE},
.level = 15,
- .location = MAPSEC_Route116,
+ .location = MAPSEC_ROUTE_116,
},
};