summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-11-06 22:30:13 -0800
committerMarcus Huderle <huderlem@gmail.com>2017-11-11 12:16:37 -0800
commit955c5a8e90c9afba35114c583628f74f849a0da4 (patch)
tree0d7feb21dc3179cb9de8a7f3b1d04329daebd68e
parent67b49fe4b0545d9fd455caee95c003e8e030e247 (diff)
More pokenav decomp
-rw-r--r--asm/pokenav.s2053
-rw-r--r--include/pokenav.h47
-rw-r--r--include/region_map.h8
-rw-r--r--src/field/region_map.c168
-rw-r--r--src/pokenav_before.c1857
5 files changed, 1976 insertions, 2157 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s
index f82d5507e..cbae6d0cc 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -6,2059 +6,6 @@
.text
- thumb_func_start sub_80EF58C
-sub_80EF58C: @ 80EF58C
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x1
- beq _080EF5D0
- cmp r0, 0x1
- bgt _080EF5A4
- cmp r0, 0
- beq _080EF5AA
- b _080EF610
-_080EF5A4:
- cmp r1, 0x2
- beq _080EF5F8
- b _080EF610
-_080EF5AA:
- movs r1, 0
- ldr r0, _080EF5C8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r3, _080EF5CC @ =0x0000ce52
- adds r2, r0, r3
- movs r3, 0
-_080EF5B6:
- lsls r0, r1, 1
- adds r0, r2, r0
- strh r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x3D
- bls _080EF5B6
- b _080EF610
- .align 2, 0
-_080EF5C8: .4byte gUnknown_083DFEC4
-_080EF5CC: .4byte 0x0000ce52
-_080EF5D0:
- ldr r0, _080EF5EC @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EF5F0 @ =0x0000ce52
- adds r2, r0, r1
- ldr r1, _080EF5F4 @ =gUnknown_083E003C
- adds r0, r1, 0x2
- adds r1, 0x6
- str r2, [sp]
- movs r2, 0x10
- movs r3, 0x2
- bl sub_80EF624
- b _080EF610
- .align 2, 0
-_080EF5EC: .4byte gUnknown_083DFEC4
-_080EF5F0: .4byte 0x0000ce52
-_080EF5F4: .4byte gUnknown_083E003C
-_080EF5F8:
- ldr r0, _080EF618 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r3, _080EF61C @ =0x0000ce8e
- adds r2, r0, r3
- ldr r1, _080EF620 @ =gUnknown_083E003C
- adds r0, r1, 0x6
- adds r1, 0xE
- str r2, [sp]
- movs r2, 0x10
- movs r3, 0x2
- bl sub_80EF624
-_080EF610:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080EF618: .4byte gUnknown_083DFEC4
-_080EF61C: .4byte 0x0000ce8e
-_080EF620: .4byte gUnknown_083E003C
- thumb_func_end sub_80EF58C
-
- thumb_func_start sub_80EF624
-sub_80EF624: @ 80EF624
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x38
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r4, [sp, 0x58]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x8]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0xC]
- movs r0, 0
- str r0, [sp, 0x10]
- lsls r0, r3, 16
- ldr r1, [sp, 0x10]
- cmp r1, r3
- bcs _080EF72E
- subs r2, 0x1
- str r2, [sp, 0x20]
- str r0, [sp, 0x2C]
-_080EF654:
- ldr r2, [sp]
- ldrh r1, [r2]
- movs r0, 0x1F
- ands r0, r1
- lsls r7, r0, 8
- lsls r1, 16
- lsrs r0, r1, 21
- movs r2, 0x1F
- ands r0, r2
- lsls r6, r0, 8
- lsrs r1, 26
- ands r1, r2
- lsls r5, r1, 8
- ldr r0, [sp, 0x4]
- ldrh r1, [r0]
- movs r0, 0x1F
- ands r0, r1
- lsls r0, 8
- str r0, [sp, 0x14]
- lsls r1, 16
- lsrs r0, r1, 21
- ands r0, r2
- lsls r0, 8
- str r0, [sp, 0x18]
- lsrs r1, 26
- ands r1, r2
- lsls r1, 8
- str r1, [sp, 0x1C]
- ldr r1, [sp, 0x14]
- subs r0, r1, r7
- ldr r1, [sp, 0x8]
- bl __divsi3
- mov r10, r0
- ldr r2, [sp, 0x18]
- subs r0, r2, r6
- ldr r1, [sp, 0x8]
- bl __divsi3
- mov r9, r0
- ldr r1, [sp, 0x1C]
- subs r0, r1, r5
- ldr r1, [sp, 0x8]
- bl __divsi3
- mov r8, r0
- adds r3, r4, 0
- movs r4, 0
- ldr r2, [sp]
- adds r2, 0x2
- str r2, [sp, 0x30]
- ldr r0, [sp, 0x4]
- adds r0, 0x2
- str r0, [sp, 0x34]
- adds r1, r3, 0x2
- str r1, [sp, 0x24]
- ldr r2, [sp, 0x10]
- adds r2, 0x1
- str r2, [sp, 0x28]
- ldr r0, [sp, 0x20]
- cmp r4, r0
- bge _080EF700
- ldr r1, [sp, 0xC]
- lsls r1, 1
- mov r12, r1
-_080EF6D6:
- lsls r0, r7, 8
- lsrs r2, r0, 16
- lsls r0, r6, 8
- lsrs r1, r0, 16
- lsls r0, r5, 8
- lsrs r0, 16
- lsls r0, 10
- lsls r1, 5
- orrs r0, r1
- orrs r2, r0
- strh r2, [r3]
- add r3, r12
- add r7, r10
- add r6, r9
- add r5, r8
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r2, [sp, 0x20]
- cmp r4, r2
- blt _080EF6D6
-_080EF700:
- ldr r4, [sp, 0x14]
- lsrs r2, r4, 8
- ldr r1, [sp, 0x1C]
- lsls r0, r1, 2
- ldr r4, [sp, 0x18]
- lsrs r1, r4, 3
- orrs r0, r1
- orrs r2, r0
- strh r2, [r3]
- ldr r0, [sp, 0x30]
- str r0, [sp]
- ldr r1, [sp, 0x34]
- str r1, [sp, 0x4]
- ldr r4, [sp, 0x24]
- ldr r2, [sp, 0x28]
- lsls r0, r2, 16
- lsrs r0, 16
- str r0, [sp, 0x10]
- ldr r1, [sp, 0x2C]
- lsrs r0, r1, 16
- ldr r2, [sp, 0x10]
- cmp r2, r0
- bcc _080EF654
-_080EF72E:
- add sp, 0x38
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80EF624
-
- thumb_func_start sub_80EF740
-sub_80EF740: @ 80EF740
- push {lr}
- ldr r0, _080EF770 @ =gUnknown_083DFEC4
- ldr r3, [r0]
- ldr r0, _080EF774 @ =0x00006da0
- adds r2, r3, r0
- ldrh r0, [r2]
- adds r0, 0x1
- movs r1, 0x1
- ands r0, r1
- strh r0, [r2]
- cmp r0, 0
- beq _080EF762
- ldr r2, _080EF778 @ =0x00006da2
- adds r1, r3, r2
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080EF762:
- ldr r0, _080EF77C @ =REG_BG3HOFS
- ldr r2, _080EF778 @ =0x00006da2
- adds r1, r3, r2
- ldrh r1, [r1]
- strh r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080EF770: .4byte gUnknown_083DFEC4
-_080EF774: .4byte 0x00006da0
-_080EF778: .4byte 0x00006da2
-_080EF77C: .4byte REG_BG3HOFS
- thumb_func_end sub_80EF740
-
- thumb_func_start sub_80EF780
-sub_80EF780: @ 80EF780
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080EF7B0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080EF7AA
- ldr r0, _080EF7B4 @ =gUnknown_083DFEC4
- ldr r3, [r0]
- ldr r0, _080EF7B8 @ =0x00006da2
- adds r2, r3, r0
- ldrh r0, [r2]
- movs r1, 0x7
- ands r1, r0
- cmp r1, 0
- beq _080EF7BC
-_080EF7AA:
- bl sub_80EF740
- b _080EF7C8
- .align 2, 0
-_080EF7B0: .4byte gTasks
-_080EF7B4: .4byte gUnknown_083DFEC4
-_080EF7B8: .4byte 0x00006da2
-_080EF7BC:
- strh r1, [r2]
- ldr r2, _080EF7CC @ =0x00006da0
- adds r0, r3, r2
- strh r1, [r0]
- ldr r0, _080EF7D0 @ =REG_BG3HOFS
- strh r1, [r0]
-_080EF7C8:
- pop {r0}
- bx r0
- .align 2, 0
-_080EF7CC: .4byte 0x00006da0
-_080EF7D0: .4byte REG_BG3HOFS
- thumb_func_end sub_80EF780
-
- thumb_func_start sub_80EF7D4
-sub_80EF7D4: @ 80EF7D4
- push {r4,lr}
- ldr r0, _080EF800 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080EF804 @ =0x00006da2
- adds r0, r4, r1
- movs r1, 0
- strh r1, [r0]
- ldr r2, _080EF808 @ =0x00006da0
- adds r0, r4, r2
- strh r1, [r0]
- ldr r0, _080EF80C @ =sub_80EF780
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080EF810 @ =0x00006da4
- adds r4, r1
- strh r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF800: .4byte gUnknown_083DFEC4
-_080EF804: .4byte 0x00006da2
-_080EF808: .4byte 0x00006da0
-_080EF80C: .4byte sub_80EF780
-_080EF810: .4byte 0x00006da4
- thumb_func_end sub_80EF7D4
-
- thumb_func_start sub_80EF814
-sub_80EF814: @ 80EF814
- push {lr}
- ldr r0, _080EF834 @ =sub_80EF780
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _080EF830
- ldr r0, _080EF838 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EF83C @ =0x00006da4
- adds r0, r1
- ldrb r0, [r0]
- bl DestroyTask
-_080EF830:
- pop {r0}
- bx r0
- .align 2, 0
-_080EF834: .4byte sub_80EF780
-_080EF838: .4byte gUnknown_083DFEC4
-_080EF83C: .4byte 0x00006da4
- thumb_func_end sub_80EF814
-
- thumb_func_start sub_80EF840
-sub_80EF840: @ 80EF840
- push {lr}
- ldr r0, _080EF868 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EF86C @ =0x0000d160
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- ldr r1, _080EF870 @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EF862
-_080EF858:
- bl sub_80EF874
- lsls r0, 24
- cmp r0, 0
- bne _080EF858
-_080EF862:
- pop {r0}
- bx r0
- .align 2, 0
-_080EF868: .4byte gUnknown_083DFEC4
-_080EF86C: .4byte 0x0000d160
-_080EF870: .4byte 0x00006dac
- thumb_func_end sub_80EF840
-
- thumb_func_start sub_80EF874
-sub_80EF874: @ 80EF874
- push {lr}
- ldr r0, _080EF890 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EF894 @ =0x0000d160
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0xB
- bls _080EF886
- b _080EF9D8
-_080EF886:
- lsls r0, 2
- ldr r1, _080EF898 @ =_080EF89C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080EF890: .4byte gUnknown_083DFEC4
-_080EF894: .4byte 0x0000d160
-_080EF898: .4byte _080EF89C
- .align 2, 0
-_080EF89C:
- .4byte _080EF8CC
- .4byte _080EF8D2
- .4byte _080EF8E0
- .4byte _080EF8EC
- .4byte _080EF8F6
- .4byte _080EF8FC
- .4byte _080EF920
- .4byte _080EF92C
- .4byte _080EF940
- .4byte _080EF954
- .4byte _080EF960
- .4byte _080EF972
-_080EF8CC:
- bl sub_80EEDE8
- b _080EF9DC
-_080EF8D2:
- ldr r0, _080EF8DC @ =gWindowConfig_81E7224
- bl SetUpWindowConfig
- b _080EF9DC
- .align 2, 0
-_080EF8DC: .4byte gWindowConfig_81E7224
-_080EF8E0:
- ldr r0, _080EF8E8 @ =gWindowConfig_81E7224
- bl MultistepInitMenuWindowBegin
- b _080EF9DC
- .align 2, 0
-_080EF8E8: .4byte gWindowConfig_81E7224
-_080EF8EC:
- bl MultistepInitMenuWindowContinue
- cmp r0, 0
- bne _080EF9DC
- b _080EF9EA
-_080EF8F6:
- bl MenuZeroFillScreen
- b _080EF9DC
-_080EF8FC:
- ldr r0, _080EF914 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080EF918 @ =0x00006e18
- adds r0, r2
- ldr r1, _080EF91C @ =gSaveBlock2
- ldrb r1, [r1, 0x15]
- lsrs r1, 3
- movs r2, 0x1
- ands r1, r2
- bl sub_80FA904
- b _080EF9DC
- .align 2, 0
-_080EF914: .4byte gUnknown_083DFEC4
-_080EF918: .4byte 0x00006e18
-_080EF91C: .4byte gSaveBlock2
-_080EF920:
- bl sub_80FA940
- lsls r0, 24
- cmp r0, 0
- beq _080EF9DC
- b _080EF9EA
-_080EF92C:
- ldr r0, _080EF938 @ =gPokenavHoennMapSquares_Gfx
- ldr r1, _080EF93C @ =0x06005000
- bl LZ77UnCompVram
- b _080EF9DC
- .align 2, 0
-_080EF938: .4byte gPokenavHoennMapSquares_Gfx
-_080EF93C: .4byte 0x06005000
-_080EF940:
- ldr r0, _080EF950 @ =gPokenavHoennMapSquares_Pal
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- bl sub_80EFC3C
- b _080EF9DC
- .align 2, 0
-_080EF950: .4byte gPokenavHoennMapSquares_Pal
-_080EF954:
- bl sub_80EFC64
- lsls r0, 24
- cmp r0, 0
- beq _080EF9DC
- b _080EF9EA
-_080EF960:
- movs r0, 0xD
- movs r1, 0x3
- movs r2, 0x1D
- movs r3, 0x11
- bl MenuDrawTextWindow
- bl sub_80EF9F8
- b _080EF9DC
-_080EF972:
- ldr r0, _080EF990 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080EF994 @ =0x00006e90
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EF9A0
- ldr r2, _080EF998 @ =0x00007698
- adds r0, r1, r2
- movs r1, 0xA0
- strh r1, [r0]
- ldr r0, _080EF99C @ =REG_BG0VOFS
- strh r1, [r0]
- b _080EF9B0
- .align 2, 0
-_080EF990: .4byte gUnknown_083DFEC4
-_080EF994: .4byte 0x00006e90
-_080EF998: .4byte 0x00007698
-_080EF99C: .4byte REG_BG0VOFS
-_080EF9A0:
- ldr r0, _080EF9C8 @ =0x00007698
- adds r1, r0
- movs r2, 0
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1]
- ldr r0, _080EF9CC @ =REG_BG0VOFS
- strh r2, [r0]
-_080EF9B0:
- ldr r2, _080EF9D0 @ =REG_BG0CNT
- ldrh r0, [r2]
- strh r0, [r2]
- ldrh r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _080EF9D4 @ =REG_BLDCNT
- movs r0, 0
- strh r0, [r1]
- b _080EF9DC
- .align 2, 0
-_080EF9C8: .4byte 0x00007698
-_080EF9CC: .4byte REG_BG0VOFS
-_080EF9D0: .4byte REG_BG0CNT
-_080EF9D4: .4byte REG_BLDCNT
-_080EF9D8:
- movs r0, 0
- b _080EF9EC
-_080EF9DC:
- ldr r0, _080EF9F0 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080EF9F4 @ =0x0000d160
- adds r1, r2
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080EF9EA:
- movs r0, 0x1
-_080EF9EC:
- pop {r1}
- bx r1
- .align 2, 0
-_080EF9F0: .4byte gUnknown_083DFEC4
-_080EF9F4: .4byte 0x0000d160
- thumb_func_end sub_80EF874
-
- thumb_func_start sub_80EF9F8
-sub_80EF9F8: @ 80EF9F8
- push {r4-r6,lr}
- sub sp, 0x14
- movs r5, 0x4
- ldr r0, _080EFA18 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EFA1C @ =0x00006e2e
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _080EFA0E
- b _080EFB6A
-_080EFA0E:
- lsls r0, 2
- ldr r1, _080EFA20 @ =_080EFA24
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080EFA18: .4byte gUnknown_083DFEC4
-_080EFA1C: .4byte 0x00006e2e
-_080EFA20: .4byte _080EFA24
- .align 2, 0
-_080EFA24:
- .4byte _080EFB6A
- .4byte _080EFA38
- .4byte _080EFAC0
- .4byte _080EFB4C
- .4byte _080EFA38
-_080EFA38:
- ldr r0, _080EFA64 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080EFA68 @ =0x00006e18
- adds r0, r2
- lsls r2, r5, 19
- lsrs r2, 16
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0x70
- movs r3, 0x78
- bl sub_8072A18
- adds r0, r5, 0x2
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, _080EFA6C @ =gLinkOpen
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080EFA70
- bl sub_80F1A80
- b _080EFB82
- .align 2, 0
-_080EFA64: .4byte gUnknown_083DFEC4
-_080EFA68: .4byte 0x00006e18
-_080EFA6C: .4byte gLinkOpen
-_080EFA70:
- movs r4, 0
- b _080EFA92
-_080EFA74:
- lsls r2, r5, 19
- lsrs r2, 16
- movs r0, 0x1
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0x70
- movs r3, 0x78
- bl sub_8072A18
- adds r0, r5, 0x2
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_080EFA92:
- cmp r4, 0x3
- bhi _080EFB6A
- ldr r0, _080EFAB8 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080EFABC @ =0x00006e2c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, 0x3
- adds r1, r2
- ldrb r1, [r1]
- lsls r2, r4, 24
- lsrs r2, 24
- bl GetLandmarkName
- adds r1, r0, 0
- cmp r1, 0
- bne _080EFA74
- b _080EFB6A
- .align 2, 0
-_080EFAB8: .4byte gUnknown_083DFEC4
-_080EFABC: .4byte 0x00006e2c
-_080EFAC0:
- ldr r0, _080EFB38 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080EFB3C @ =0x00006e18
- adds r0, r4, r1
- lsls r2, r5, 19
- lsrs r2, 16
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0x70
- movs r3, 0x78
- bl sub_8072A18
- adds r0, r5, 0x2
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r2, _080EFB40 @ =0x00006e2c
- adds r0, r4, r2
- ldrh r1, [r0]
- adds r2, 0x3
- adds r0, r4, r2
- ldrb r0, [r0]
- lsls r0, 2
- lsls r1, 3
- adds r0, r1
- ldr r1, _080EFB44 @ =0x0000cdcc
- adds r4, r1
- adds r6, r4, r0
- ldr r0, [r6]
- cmp r0, 0
- beq _080EFB6A
- lsls r4, r5, 24
- lsrs r4, 24
- movs r0, 0xE
- adds r1, r4, 0
- movs r2, 0xF
- movs r3, 0xF
- bl MenuFillWindowRectWithBlankTile
- movs r0, 0x1A
- adds r1, r4, 0
- movs r2, 0x1C
- movs r3, 0xF
- bl MenuFillWindowRectWithBlankTile
- ldr r0, _080EFB48 @ =0x0600f800
- ldr r3, [r6]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r1, 0xA
- str r1, [sp, 0x8]
- str r1, [sp, 0xC]
- str r1, [sp, 0x10]
- movs r1, 0x10
- movs r2, 0x6
- bl sub_8095C8C
- adds r0, r5, 0
- adds r0, 0xB
- b _080EFB66
- .align 2, 0
-_080EFB38: .4byte gUnknown_083DFEC4
-_080EFB3C: .4byte 0x00006e18
-_080EFB40: .4byte 0x00006e2c
-_080EFB44: .4byte 0x0000cdcc
-_080EFB48: .4byte 0x0600f800
-_080EFB4C:
- ldr r0, _080EFB98 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080EFB9C @ =0x00006e18
- adds r0, r2
- lsls r2, r5, 19
- lsrs r2, 16
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0x70
- movs r3, 0x78
- bl sub_8072A18
- adds r0, r5, 0x2
-_080EFB66:
- lsls r0, 16
- lsrs r5, r0, 16
-_080EFB6A:
- movs r0, 0
- cmp r0, 0
- bne _080EFB82
- cmp r5, 0xF
- bhi _080EFB82
- lsls r1, r5, 24
- lsrs r1, 24
- movs r0, 0xE
- movs r2, 0x1C
- movs r3, 0xF
- bl MenuFillWindowRectWithBlankTile
-_080EFB82:
- ldr r0, _080EFB98 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EFBA0 @ =0x00006e2e
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080EFBA4
- bl sub_80EFD74
- b _080EFBA8
- .align 2, 0
-_080EFB98: .4byte gUnknown_083DFEC4
-_080EFB9C: .4byte 0x00006e18
-_080EFBA0: .4byte 0x00006e2e
-_080EFBA4:
- bl sub_80EFDA0
-_080EFBA8:
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80EF9F8
-
- thumb_func_start sub_80EFBB0
-sub_80EFBB0: @ 80EFBB0
- push {lr}
- ldr r0, _080EFBC8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EFBCC @ =0x00006e90
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EFBD0
- movs r0, 0x8
- bl sub_80EEFBC
- b _080EFBD6
- .align 2, 0
-_080EFBC8: .4byte gUnknown_083DFEC4
-_080EFBCC: .4byte 0x00006e90
-_080EFBD0:
- movs r0, 0x7
- bl sub_80EEFBC
-_080EFBD6:
- pop {r0}
- bx r0
- thumb_func_end sub_80EFBB0
-
- thumb_func_start sub_80EFBDC
-sub_80EFBDC: @ 80EFBDC
- push {r4,lr}
- lsls r0, 24
- movs r4, 0x1
- ldr r2, _080EFBFC @ =gUnknown_083DFEC4
- ldr r1, [r2]
- ldr r3, _080EFC00 @ =0x00007698
- adds r1, r3
- ldrh r3, [r1]
- cmp r0, 0
- beq _080EFC08
- cmp r3, 0xA8
- bls _080EFC04
- adds r0, r3, 0
- subs r0, 0x8
- b _080EFC10
- .align 2, 0
-_080EFBFC: .4byte gUnknown_083DFEC4
-_080EFC00: .4byte 0x00007698
-_080EFC04:
- movs r3, 0xA0
- b _080EFC1A
-_080EFC08:
- cmp r3, 0xF7
- bhi _080EFC16
- adds r0, r3, 0
- adds r0, 0x8
-_080EFC10:
- lsls r0, 16
- lsrs r3, r0, 16
- b _080EFC1C
-_080EFC16:
- movs r3, 0x80
- lsls r3, 1
-_080EFC1A:
- movs r4, 0
-_080EFC1C:
- ldr r0, [r2]
- ldr r1, _080EFC34 @ =0x00007698
- adds r0, r1
- strh r3, [r0]
- ldr r1, _080EFC38 @ =REG_BG0VOFS
- movs r0, 0xFF
- ands r3, r0
- strh r3, [r1]
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080EFC34: .4byte 0x00007698
-_080EFC38: .4byte REG_BG0VOFS
- thumb_func_end sub_80EFBDC
-
- thumb_func_start sub_80EFC3C
-sub_80EFC3C: @ 80EFC3C
- push {lr}
- ldr r0, _080EFC58 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080EFC5C @ =0x0000bc9a
- adds r1, r0, r2
- movs r2, 0
- strb r2, [r1]
- ldr r1, _080EFC60 @ =0x0000bc9b
- adds r0, r1
- strb r2, [r0]
- bl sub_80EFD3C
- pop {r0}
- bx r0
- .align 2, 0
-_080EFC58: .4byte gUnknown_083DFEC4
-_080EFC5C: .4byte 0x0000bc9a
-_080EFC60: .4byte 0x0000bc9b
- thumb_func_end sub_80EFC3C
-
- thumb_func_start sub_80EFC64
-sub_80EFC64: @ 80EFC64
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- ldr r4, _080EFCD0 @ =gUnknown_083DFEC4
- ldr r2, [r4]
- ldr r0, _080EFCD4 @ =0x0000bc9a
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0xF
- bhi _080EFD2C
- ldrb r1, [r1]
- mov r8, r1
- ldr r1, _080EFCD8 @ =0x0000bc9b
- adds r0, r2, r1
- ldrb r7, [r0]
- movs r2, 0
- ldr r0, _080EFCDC @ =gPokenavCityMaps
- mov r9, r0
- adds r3, r4, 0
-_080EFC8E:
- lsls r0, r2, 2
- mov r4, r8
- lsls r1, r4, 3
- adds r6, r0, r1
- mov r1, r9
- adds r0, r6, r1
- ldr r1, [r0]
- cmp r1, 0
- beq _080EFCE8
- movs r0, 0xC8
- adds r5, r7, 0
- muls r5, r0
- ldr r4, _080EFCE0 @ =0x0000bc9c
- adds r5, r4
- ldr r4, [r3]
- adds r5, r4, r5
- adds r0, r1, 0
- adds r1, r5, 0
- str r2, [sp]
- str r3, [sp, 0x4]
- bl LZ77UnCompVram
- ldr r0, _080EFCE4 @ =0x0000cdcc
- adds r4, r0
- adds r4, r6
- str r5, [r4]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r2, [sp]
- ldr r3, [sp, 0x4]
- b _080EFCF2
- .align 2, 0
-_080EFCD0: .4byte gUnknown_083DFEC4
-_080EFCD4: .4byte 0x0000bc9a
-_080EFCD8: .4byte 0x0000bc9b
-_080EFCDC: .4byte gPokenavCityMaps
-_080EFCE0: .4byte 0x0000bc9c
-_080EFCE4: .4byte 0x0000cdcc
-_080EFCE8:
- ldr r0, [r3]
- ldr r4, _080EFD1C @ =0x0000cdcc
- adds r0, r4
- adds r0, r6
- str r1, [r0]
-_080EFCF2:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1
- bls _080EFC8E
- ldr r0, _080EFD20 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r0, _080EFD24 @ =0x0000bc9a
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xF
- bhi _080EFD2C
- ldr r1, _080EFD28 @ =0x0000bc9b
- adds r0, r2, r1
- strb r7, [r0]
- movs r0, 0x1
- b _080EFD2E
- .align 2, 0
-_080EFD1C: .4byte 0x0000cdcc
-_080EFD20: .4byte gUnknown_083DFEC4
-_080EFD24: .4byte 0x0000bc9a
-_080EFD28: .4byte 0x0000bc9b
-_080EFD2C:
- movs r0, 0
-_080EFD2E:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80EFC64
-
- thumb_func_start sub_80EFD3C
-sub_80EFD3C: @ 80EFD3C
- ldr r0, _080EFD60 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080EFD64 @ =0x0000769e
- adds r0, r1, r2
- movs r2, 0
- strb r2, [r0]
- ldr r0, _080EFD68 @ =0x0000769c
- adds r3, r1, r0
- movs r0, 0x2F
- strb r0, [r3]
- ldr r3, _080EFD6C @ =0x0000769d
- adds r0, r1, r3
- strb r2, [r0]
- ldr r0, _080EFD70 @ =0x0000769a
- adds r1, r0
- strh r2, [r1]
- bx lr
- .align 2, 0
-_080EFD60: .4byte gUnknown_083DFEC4
-_080EFD64: .4byte 0x0000769e
-_080EFD68: .4byte 0x0000769c
-_080EFD6C: .4byte 0x0000769d
-_080EFD70: .4byte 0x0000769a
- thumb_func_end sub_80EFD3C
-
- thumb_func_start sub_80EFD74
-sub_80EFD74: @ 80EFD74
- push {lr}
- ldr r0, _080EFD94 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r0, _080EFD98 @ =0x0000769e
- adds r1, r2, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, _080EFD9C @ =0x0000769d
- adds r2, r0
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _080EFD90
- movs r0, 0x2
- strb r0, [r2]
-_080EFD90:
- pop {r0}
- bx r0
- .align 2, 0
-_080EFD94: .4byte gUnknown_083DFEC4
-_080EFD98: .4byte 0x0000769e
-_080EFD9C: .4byte 0x0000769d
- thumb_func_end sub_80EFD74
-
- thumb_func_start sub_80EFDA0
-sub_80EFDA0: @ 80EFDA0
- push {r4,lr}
- sub sp, 0x14
- ldr r0, _080EFDD4 @ =0x0600f800
- ldr r3, _080EFDD8 @ =gUnknown_08E9AC2C
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r2, 0xF
- str r2, [sp, 0x8]
- movs r1, 0x1
- str r1, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0xE
- movs r2, 0x10
- bl sub_8095C8C
- ldr r0, _080EFDDC @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EFDE0 @ =0x0000769e
- adds r0, r1
- strb r4, [r0]
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EFDD4: .4byte 0x0600f800
-_080EFDD8: .4byte gUnknown_08E9AC2C
-_080EFDDC: .4byte gUnknown_083DFEC4
-_080EFDE0: .4byte 0x0000769e
- thumb_func_end sub_80EFDA0
-
- thumb_func_start sub_80EFDE4
-sub_80EFDE4: @ 80EFDE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- ldr r0, _080EFE68 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080EFE6C @ =0x0000769c
- adds r0, r1, r2
- ldrb r2, [r0]
- movs r0, 0x3C
- subs r0, r2
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xF
- bls _080EFE06
- movs r4, 0xF
-_080EFE06:
- ldr r3, _080EFE70 @ =0x0000769e
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0
- beq _080EFE58
- ldr r0, _080EFE74 @ =0x0600f800
- mov r8, r0
- ldr r3, _080EFE78 @ =gUnknown_08E9ABB4
- mov r9, r3
- str r2, [sp]
- movs r5, 0
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r7, 0x1
- str r7, [sp, 0xC]
- movs r6, 0x3C
- str r6, [sp, 0x10]
- movs r1, 0xE
- movs r2, 0x10
- bl sub_8095C8C
- cmp r4, 0xE
- bhi _080EFE58
- adds r1, r4, 0
- adds r1, 0xE
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r0, 0xF
- subs r0, r4
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- str r7, [sp, 0xC]
- str r6, [sp, 0x10]
- mov r0, r8
- movs r2, 0x10
- mov r3, r9
- bl sub_8095C8C
-_080EFE58:
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EFE68: .4byte gUnknown_083DFEC4
-_080EFE6C: .4byte 0x0000769c
-_080EFE70: .4byte 0x0000769e
-_080EFE74: .4byte 0x0600f800
-_080EFE78: .4byte gUnknown_08E9ABB4
- thumb_func_end sub_80EFDE4
-
- thumb_func_start sub_80EFE7C
-sub_80EFE7C: @ 80EFE7C
- push {r4,lr}
- ldr r0, _080EFE98 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r0, _080EFE9C @ =0x0000769d
- adds r4, r2, r0
- ldrb r1, [r4]
- cmp r1, 0x1
- beq _080EFF08
- cmp r1, 0x1
- bgt _080EFEA0
- cmp r1, 0
- beq _080EFEA6
- b _080EFF2E
- .align 2, 0
-_080EFE98: .4byte gUnknown_083DFEC4
-_080EFE9C: .4byte 0x0000769d
-_080EFEA0:
- cmp r1, 0x2
- beq _080EFF24
- b _080EFF2E
-_080EFEA6:
- ldr r0, _080EFED4 @ =0x0000769c
- adds r4, r2, r0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3B
- bls _080EFEBA
- strb r1, [r4]
-_080EFEBA:
- ldr r1, _080EFED8 @ =0x0000769e
- adds r0, r2, r1
- ldrb r0, [r0]
- bl sub_80EFDE4
- ldrb r0, [r4]
- cmp r0, 0xF
- beq _080EFEE4
- cmp r0, 0xF
- bgt _080EFEDC
- cmp r0, 0
- beq _080EFEE4
- b _080EFF2E
- .align 2, 0
-_080EFED4: .4byte 0x0000769c
-_080EFED8: .4byte 0x0000769e
-_080EFEDC:
- cmp r0, 0x1E
- beq _080EFEE4
- cmp r0, 0x2D
- bne _080EFF2E
-_080EFEE4:
- ldr r0, _080EFEFC @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080EFF00 @ =0x0000769d
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0x1
- strb r0, [r2]
- ldr r0, _080EFF04 @ =0x0000769a
- adds r1, r0
- strh r3, [r1]
- b _080EFF2E
- .align 2, 0
-_080EFEFC: .4byte gUnknown_083DFEC4
-_080EFF00: .4byte 0x0000769d
-_080EFF04: .4byte 0x0000769a
-_080EFF08:
- ldr r0, _080EFF20 @ =0x0000769a
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x78
- bls _080EFF2E
- movs r0, 0
- strh r0, [r1]
- b _080EFF2C
- .align 2, 0
-_080EFF20: .4byte 0x0000769a
-_080EFF24:
- movs r0, 0x1
- bl sub_80EFDE4
- movs r0, 0x1
-_080EFF2C:
- strb r0, [r4]
-_080EFF2E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80EFE7C
-
- thumb_func_start sub_80EFF34
-sub_80EFF34: @ 80EFF34
- push {lr}
- ldr r0, _080EFF5C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EFF60 @ =0x0000d160
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- ldr r1, _080EFF64 @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EFF56
-_080EFF4C:
- bl sub_80EFF68
- lsls r0, 24
- cmp r0, 0
- bne _080EFF4C
-_080EFF56:
- pop {r0}
- bx r0
- .align 2, 0
-_080EFF5C: .4byte gUnknown_083DFEC4
-_080EFF60: .4byte 0x0000d160
-_080EFF64: .4byte 0x00006dac
- thumb_func_end sub_80EFF34
-
- thumb_func_start sub_80EFF68
-sub_80EFF68: @ 80EFF68
- push {r4,lr}
- sub sp, 0x14
- ldr r0, _080EFF88 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EFF8C @ =0x0000d160
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0xD
- bls _080EFF7C
- b _080F0150
-_080EFF7C:
- lsls r0, 2
- ldr r1, _080EFF90 @ =_080EFF94
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080EFF88: .4byte gUnknown_083DFEC4
-_080EFF8C: .4byte 0x0000d160
-_080EFF90: .4byte _080EFF94
- .align 2, 0
-_080EFF94:
- .4byte _080EFFCC
- .4byte _080EFFE8
- .4byte _080EFFF4
- .4byte _080F0000
- .4byte _080F000C
- .4byte _080F0012
- .4byte _080F0018
- .4byte _080F0028
- .4byte _080F003C
- .4byte _080F005C
- .4byte _080F0098
- .4byte _080F00AC
- .4byte _080F00F8
- .4byte _080F0118
-_080EFFCC:
- bl sub_80EEDE8
- ldr r0, _080EFFE0 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080EFFE4 @ =0x0000d162
- adds r0, r2
- movs r1, 0xB
- strb r1, [r0]
- b _080F0154
- .align 2, 0
-_080EFFE0: .4byte gUnknown_083DFEC4
-_080EFFE4: .4byte 0x0000d162
-_080EFFE8:
- ldr r0, _080EFFF0 @ =gWindowConfig_81E7080
- bl SetUpWindowConfig
- b _080F0154
- .align 2, 0
-_080EFFF0: .4byte gWindowConfig_81E7080
-_080EFFF4:
- ldr r0, _080EFFFC @ =gWindowConfig_81E7080
- bl MultistepInitMenuWindowBegin
- b _080F0154
- .align 2, 0
-_080EFFFC: .4byte gWindowConfig_81E7080
-_080F0000:
- bl MultistepInitMenuWindowContinue
- cmp r0, 0
- beq _080F000A
- b _080F0154
-_080F000A:
- b _080F0162
-_080F000C:
- bl MenuZeroFillScreen
- b _080F0154
-_080F0012:
- bl sub_80F1614
- b _080F0154
-_080F0018:
- movs r0, 0
- bl sub_80F162C
- lsls r0, 24
- cmp r0, 0
- bne _080F0026
- b _080F0154
-_080F0026:
- b _080F0162
-_080F0028:
- ldr r0, _080F0034 @ =gPokenavConditionView_Gfx
- ldr r1, _080F0038 @ =0x06005000
- bl LZ77UnCompVram
- b _080F0154
- .align 2, 0
-_080F0034: .4byte gPokenavConditionView_Gfx
-_080F0038: .4byte 0x06005000
-_080F003C:
- ldr r0, _080F0050 @ =gUnknown_08E9AC4C
- ldr r1, _080F0054 @ =0x0600f000
- bl LZ77UnCompVram
- ldr r0, _080F0058 @ =gPokenavConditionMenu2_Pal
- movs r1, 0x20
- movs r2, 0x20
- bl LoadPalette
- b _080F0154
- .align 2, 0
-_080F0050: .4byte gUnknown_08E9AC4C
-_080F0054: .4byte 0x0600f000
-_080F0058: .4byte gPokenavConditionMenu2_Pal
-_080F005C:
- ldr r0, _080F0088 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F008C @ =0x000076aa
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080F0154
- ldr r0, _080F0090 @ =0x0600f000
- ldr r3, _080F0094 @ =gUnknown_083E01AC
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r2, 0x9
- str r2, [sp, 0x8]
- movs r1, 0x4
- str r1, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0
- movs r2, 0x5
- bl sub_8095C8C
- b _080F0154
- .align 2, 0
-_080F0088: .4byte gUnknown_083DFEC4
-_080F008C: .4byte 0x000076aa
-_080F0090: .4byte 0x0600f000
-_080F0094: .4byte gUnknown_083E01AC
-_080F0098:
- ldr r0, _080F00A4 @ =gUnknown_08E9FEB4
- ldr r1, _080F00A8 @ =0x0600b800
- bl LZ77UnCompVram
- b _080F0154
- .align 2, 0
-_080F00A4: .4byte gUnknown_08E9FEB4
-_080F00A8: .4byte 0x0600b800
-_080F00AC:
- ldr r0, _080F00EC @ =gUnknown_083E0254
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _080F00F0 @ =gUnknownPalette_81E6692
- movs r1, 0xB0
- movs r2, 0x20
- bl LoadPalette
- ldr r4, _080F00F4 @ =gPokenavConditionMenu2_Pal + 0x2
- adds r0, r4, 0
- movs r1, 0xB1
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- adds r0, 0xE
- movs r1, 0xB5
- movs r2, 0x2
- bl LoadPalette
- adds r4, 0x1C
- adds r0, r4, 0
- movs r1, 0xBF
- movs r2, 0x2
- bl LoadPalette
- bl sub_80F01A4
- b _080F0154
- .align 2, 0
-_080F00EC: .4byte gUnknown_083E0254
-_080F00F0: .4byte gUnknownPalette_81E6692
-_080F00F4: .4byte gPokenavConditionMenu2_Pal + 0x2
-_080F00F8:
- ldr r0, _080F0110 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F0114 @ =0x00008fe9
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- bl sub_80F01E0
- b _080F0154
- .align 2, 0
-_080F0110: .4byte gUnknown_083DFEC4
-_080F0114: .4byte 0x00008fe9
-_080F0118:
- ldr r1, _080F013C @ =REG_BG3CNT
- ldr r2, _080F0140 @ =0x00001e03
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _080F0144 @ =0x00001702
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x44
- ldr r2, _080F0148 @ =0x00000844
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _080F014C @ =0x0000040b
- adds r0, r2, 0
- strh r0, [r1]
- b _080F0154
- .align 2, 0
-_080F013C: .4byte REG_BG3CNT
-_080F0140: .4byte 0x00001e03
-_080F0144: .4byte 0x00001702
-_080F0148: .4byte 0x00000844
-_080F014C: .4byte 0x0000040b
-_080F0150:
- movs r0, 0
- b _080F0164
-_080F0154:
- ldr r0, _080F016C @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F0170 @ =0x0000d160
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F0162:
- movs r0, 0x1
-_080F0164:
- add sp, 0x14
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F016C: .4byte gUnknown_083DFEC4
-_080F0170: .4byte 0x0000d160
- thumb_func_end sub_80EFF68
-
- thumb_func_start sub_80F0174
-sub_80F0174: @ 80F0174
- push {lr}
- lsls r0, 24
- cmp r0, 0
- beq _080F018E
- movs r0, 0x80
- lsls r0, 19
- ldrh r1, [r0]
- movs r3, 0x80
- lsls r3, 3
- adds r2, r3, 0
- orrs r1, r2
- strh r1, [r0]
- b _080F019A
-_080F018E:
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _080F01A0 @ =0x0000fbff
- ands r0, r1
- strh r0, [r2]
-_080F019A:
- pop {r0}
- bx r0
- .align 2, 0
-_080F01A0: .4byte 0x0000fbff
- thumb_func_end sub_80F0174
-
- thumb_func_start sub_80F01A4
-sub_80F01A4: @ 80F01A4
- ldr r1, _080F01CC @ =REG_WIN0H
- movs r0, 0xF0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x9B
- strh r0, [r1]
- ldr r0, _080F01D0 @ =REG_WIN0V
- ldr r2, _080F01D4 @ =0x00003879
- adds r1, r2, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r1, _080F01D8 @ =REG_WININ
- ldr r2, _080F01DC @ =0x00003f3f
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x1B
- strh r0, [r1]
- bx lr
- .align 2, 0
-_080F01CC: .4byte REG_WIN0H
-_080F01D0: .4byte REG_WIN0V
-_080F01D4: .4byte 0x00003879
-_080F01D8: .4byte REG_WININ
-_080F01DC: .4byte 0x00003f3f
- thumb_func_end sub_80F01A4
-
- thumb_func_start sub_80F01E0
-sub_80F01E0: @ 80F01E0
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r1, _080F0248 @ =gUnknown_083DFEC4
- lsls r0, r4, 6
- ldr r2, _080F024C @ =0x00008829
- adds r0, r2
- ldr r5, [r1]
- adds r0, r5, r0
- movs r1, 0xD
- movs r2, 0x1
- bl MenuPrint
- ldr r1, _080F0250 @ =0x000076aa
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080F0242
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- ldr r2, _080F0254 @ =0x000088e9
- adds r0, r2
- adds r0, r5, r0
- movs r1, 0xD
- movs r2, 0x3
- bl MenuPrint
- ldr r0, _080F0258 @ =0x00008788
- adds r4, r5, r0
- ldr r1, _080F025C @ =0x000087dc
- adds r0, r5, r1
- movs r2, 0
- ldrsh r0, [r0, r2]
- lsls r0, 2
- adds r0, r5, r0
- ldr r1, _080F0260 @ =0x0000893e
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 18
- lsrs r1, 23
- adds r0, r4, 0
- bl sub_80F443C
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0x6
- bl MenuPrint
-_080F0242:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0248: .4byte gUnknown_083DFEC4
-_080F024C: .4byte 0x00008829
-_080F0250: .4byte 0x000076aa
-_080F0254: .4byte 0x000088e9
-_080F0258: .4byte 0x00008788
-_080F025C: .4byte 0x000087dc
-_080F0260: .4byte 0x0000893e
- thumb_func_end sub_80F01E0
-
- thumb_func_start sub_80F0264
-sub_80F0264: @ 80F0264
- push {lr}
- ldr r1, _080F0290 @ =gUnknown_083DFEC4
- ldr r2, [r1]
- ldr r1, _080F0294 @ =0x00000306
- adds r3, r2, r1
- movs r1, 0
- strh r1, [r3]
- ldr r3, _080F0298 @ =0x000087ca
- adds r1, r2, r3
- strb r0, [r1]
- ldr r0, _080F029C @ =0x00006dac
- adds r2, r0
- ldrb r0, [r2]
- cmp r0, 0
- bne _080F028C
-_080F0282:
- bl sub_80F02A0
- lsls r0, 24
- cmp r0, 0
- bne _080F0282
-_080F028C:
- pop {r0}
- bx r0
- .align 2, 0
-_080F0290: .4byte gUnknown_083DFEC4
-_080F0294: .4byte 0x00000306
-_080F0298: .4byte 0x000087ca
-_080F029C: .4byte 0x00006dac
- thumb_func_end sub_80F0264
-
- thumb_func_start sub_80F02A0
-sub_80F02A0: @ 80F02A0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x18
- ldr r1, _080F02C4 @ =gUnknown_083DFEC4
- ldr r0, [r1]
- ldr r2, _080F02C8 @ =0x00000306
- adds r0, r2
- ldrh r0, [r0]
- adds r2, r1, 0
- cmp r0, 0xE
- bls _080F02BA
- b _080F05FA
-_080F02BA:
- lsls r0, 2
- ldr r1, _080F02CC @ =_080F02D0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F02C4: .4byte gUnknown_083DFEC4
-_080F02C8: .4byte 0x00000306
-_080F02CC: .4byte _080F02D0
- .align 2, 0
-_080F02D0:
- .4byte _080F030C
- .4byte _080F0344
- .4byte _080F0350
- .4byte _080F035C
- .4byte _080F0368
- .4byte _080F036E
- .4byte _080F0380
- .4byte _080F0394
- .4byte _080F04BC
- .4byte _080F053C
- .4byte _080F0550
- .4byte _080F0574
- .4byte _080F057A
- .4byte _080F0586
- .4byte _080F05BC
-_080F030C:
- bl sub_80EEDE8
- ldr r0, _080F0334 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- movs r2, 0
- ldr r3, _080F0338 @ =0x000087ca
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080F0322
- movs r2, 0x1
-_080F0322:
- ldr r3, _080F033C @ =0x000087c8
- adds r0, r1, r3
- strb r2, [r0]
- ldr r0, _080F0340 @ =0x0000d162
- adds r1, r0
- movs r0, 0xB
- strb r0, [r1]
- b _080F0618
- .align 2, 0
-_080F0334: .4byte gUnknown_083DFEC4
-_080F0338: .4byte 0x000087ca
-_080F033C: .4byte 0x000087c8
-_080F0340: .4byte 0x0000d162
-_080F0344:
- ldr r0, _080F034C @ =gWindowConfig_81E70D4
- bl SetUpWindowConfig
- b _080F0618
- .align 2, 0
-_080F034C: .4byte gWindowConfig_81E70D4
-_080F0350:
- ldr r0, _080F0358 @ =gWindowConfig_81E70D4
- bl MultistepInitMenuWindowBegin
- b _080F0618
- .align 2, 0
-_080F0358: .4byte gWindowConfig_81E70D4
-_080F035C:
- bl MultistepInitMenuWindowContinue
- cmp r0, 0
- beq _080F0366
- b _080F0618
-_080F0366:
- b _080F0626
-_080F0368:
- bl MenuZeroFillScreen
- b _080F0618
-_080F036E:
- ldr r0, _080F0378 @ =gUnknown_08E9FC64
- ldr r1, _080F037C @ =0x0600e800
- bl LZ77UnCompVram
- b _080F0618
- .align 2, 0
-_080F0378: .4byte gUnknown_08E9FC64
-_080F037C: .4byte 0x0600e800
-_080F0380:
- ldr r0, _080F038C @ =gPokenavConditionSearch2_Gfx
- ldr r1, _080F0390 @ =0x06008000
- bl LZ77UnCompVram
- b _080F0618
- .align 2, 0
-_080F038C: .4byte gPokenavConditionSearch2_Gfx
-_080F0390: .4byte 0x06008000
-_080F0394:
- ldr r6, _080F03FC @ =gUnknown_083E02B4
- adds r0, r6, 0
- movs r1, 0xB0
- movs r2, 0x20
- bl LoadPalette
- adds r0, r6, 0
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _080F0400 @ =gUnknown_083E0334
- movs r1, 0x40
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _080F0404 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F0408 @ =0x000087ca
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F0418
- ldr r4, _080F040C @ =gPokenavConditionSearch2_Pal
- adds r0, r4, 0
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _080F0410 @ =gPlttBufferUnfaded
- ldrh r0, [r4, 0xA]
- strh r0, [r1]
- ldr r0, _080F0414 @ =gUnknownPalette_81E6692
- movs r1, 0xB0
- movs r2, 0x20
- bl LoadPalette
- adds r0, r6, 0x2
- movs r1, 0xB1
- movs r2, 0x2
- bl LoadPalette
- adds r0, r6, 0
- adds r0, 0x10
- movs r1, 0xB5
- movs r2, 0x2
- bl LoadPalette
- adds r4, 0xA
- adds r0, r4, 0
- movs r1, 0xBF
- b _080F04A8
- .align 2, 0
-_080F03FC: .4byte gUnknown_083E02B4
-_080F0400: .4byte gUnknown_083E0334
-_080F0404: .4byte gUnknown_083DFEC4
-_080F0408: .4byte 0x000087ca
-_080F040C: .4byte gPokenavConditionSearch2_Pal
-_080F0410: .4byte gPlttBufferUnfaded
-_080F0414: .4byte gUnknownPalette_81E6692
-_080F0418:
- cmp r0, 0x1
- bne _080F0464
- ldr r4, _080F0458 @ =gUnknown_083E0274
- adds r0, r4, 0
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _080F045C @ =gPlttBufferUnfaded
- ldrh r0, [r4, 0xA]
- strh r0, [r1]
- ldr r0, _080F0460 @ =gUnknownPalette_81E6692
- movs r1, 0xB0
- movs r2, 0x20
- bl LoadPalette
- adds r0, r6, 0x2
- movs r1, 0xB1
- movs r2, 0x2
- bl LoadPalette
- adds r0, r6, 0
- adds r0, 0x10
- movs r1, 0xB5
- movs r2, 0x2
- bl LoadPalette
- adds r4, 0xA
- adds r0, r4, 0
- movs r1, 0xBF
- b _080F04A8
- .align 2, 0
-_080F0458: .4byte gUnknown_083E0274
-_080F045C: .4byte gPlttBufferUnfaded
-_080F0460: .4byte gUnknownPalette_81E6692
-_080F0464:
- ldr r4, _080F04B0 @ =gUnknown_08E9F9E8
- adds r0, r4, 0
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _080F04B4 @ =gPlttBufferUnfaded
- adds r5, r4, 0
- adds r5, 0xA
- ldrh r0, [r4, 0xA]
- strh r0, [r1]
- ldr r0, _080F04B8 @ =gUnknown_083E0314
- movs r1, 0x50
- movs r2, 0x20
- bl LoadPalette
- adds r0, r6, 0x2
- movs r1, 0xB1
- movs r2, 0x2
- bl LoadPalette
- adds r0, r6, 0
- adds r0, 0x10
- movs r1, 0xB5
- movs r2, 0x2
- bl LoadPalette
- adds r0, r5, 0
- movs r1, 0xBF
- movs r2, 0x2
- bl LoadPalette
- adds r0, r5, 0
- movs r1, 0x5F
-_080F04A8:
- movs r2, 0x2
- bl LoadPalette
- b _080F0618
- .align 2, 0
-_080F04B0: .4byte gUnknown_08E9F9E8
-_080F04B4: .4byte gPlttBufferUnfaded
-_080F04B8: .4byte gUnknown_083E0314
-_080F04BC:
- ldr r0, _080F04E8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F04EC @ =0x000087ca
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _080F04F8
- ldr r0, _080F04F0 @ =0x0600e800
- ldr r3, _080F04F4 @ =gUnknown_08E9FD1C
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r2, 0x9
- str r2, [sp, 0x8]
- movs r1, 0x4
- str r1, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0
- movs r2, 0x5
- bl sub_8095C8C
- b _080F0618
- .align 2, 0
-_080F04E8: .4byte gUnknown_083DFEC4
-_080F04EC: .4byte 0x000087ca
-_080F04F0: .4byte 0x0600e800
-_080F04F4: .4byte gUnknown_08E9FD1C
-_080F04F8:
- ldr r3, _080F0530 @ =0x0600e800
- mov r8, r3
- ldr r3, _080F0534 @ =gUnknown_08E9FE54
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r5, 0xC
- str r5, [sp, 0x8]
- movs r6, 0xA
- str r6, [sp, 0xC]
- str r5, [sp, 0x10]
- mov r0, r8
- movs r1, 0
- movs r2, 0x4
- bl sub_8095C8C
- ldr r3, _080F0538 @ =gUnknown_08E9FD64
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- str r6, [sp, 0xC]
- str r5, [sp, 0x10]
- mov r0, r8
- movs r1, 0
- movs r2, 0x8
- bl sub_8095C8C
- b _080F0618
- .align 2, 0
-_080F0530: .4byte 0x0600e800
-_080F0534: .4byte gUnknown_08E9FE54
-_080F0538: .4byte gUnknown_08E9FD64
-_080F053C:
- ldr r0, _080F0548 @ =gUnknown_083E0354
- ldr r1, _080F054C @ =0x06005000
- bl LZ77UnCompVram
- b _080F0618
- .align 2, 0
-_080F0548: .4byte gUnknown_083E0354
-_080F054C: .4byte 0x06005000
-_080F0550:
- ldr r2, _080F0568 @ =0x0600f800
- add r1, sp, 0x14
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080F056C @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _080F0570 @ =0x81000400
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080F0618
- .align 2, 0
-_080F0568: .4byte 0x0600f800
-_080F056C: .4byte 0x040000d4
-_080F0570: .4byte 0x81000400
-_080F0574:
- bl sub_80F0900
- b _080F0618
-_080F057A:
- bl sub_80F0944
- lsls r0, 24
- cmp r0, 0
- beq _080F0618
- b _080F0626
-_080F0586:
- ldr r0, _080F059C @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F05A0 @ =0x000087ca
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _080F05A4
- bl ShowMapNamePopUpWindow
- b _080F0618
- .align 2, 0
-_080F059C: .4byte gUnknown_083DFEC4
-_080F05A0: .4byte 0x000087ca
-_080F05A4:
- movs r0, 0
- bl sub_80F081C
- ldr r2, _080F05B8 @ =0x0000876e
- adds r0, r4, r2
- ldrb r0, [r0]
- bl sub_80F0FFC
- b _080F0618
- .align 2, 0
-_080F05B8: .4byte 0x0000876e
-_080F05BC:
- ldr r1, _080F0600 @ =REG_BG2CNT
- ldr r3, _080F0604 @ =0x00001d0a
- adds r0, r3, 0
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0xF9
- adds r0, r3, 0
- strh r0, [r1]
- subs r1, 0x6
- adds r3, 0xFE
- adds r0, r3, 0
- strh r0, [r1]
- adds r1, 0x16
- movs r0, 0xF8
- strh r0, [r1]
- ldr r1, [r2]
- ldr r0, _080F0608 @ =0x00008776
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0xF8
- strh r0, [r2]
- ldr r2, _080F060C @ =0x00008778
- adds r0, r1, r2
- strh r3, [r0]
- ldr r0, _080F0610 @ =REG_BLDCNT
- strh r3, [r0]
- ldr r3, _080F0614 @ =0x0000d160
- adds r1, r3
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F05FA:
- movs r0, 0
- b _080F0628
- .align 2, 0
-_080F0600: .4byte REG_BG2CNT
-_080F0604: .4byte 0x00001d0a
-_080F0608: .4byte 0x00008776
-_080F060C: .4byte 0x00008778
-_080F0610: .4byte REG_BLDCNT
-_080F0614: .4byte 0x0000d160
-_080F0618:
- ldr r0, _080F0634 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F0638 @ =0x00000306
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F0626:
- movs r0, 0x1
-_080F0628:
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080F0634: .4byte gUnknown_083DFEC4
-_080F0638: .4byte 0x00000306
- thumb_func_end sub_80F02A0
-
thumb_func_start sub_80F063C
sub_80F063C: @ 80F063C
push {r4-r7,lr}
diff --git a/include/pokenav.h b/include/pokenav.h
index ab7b32d7c..f77f93e2d 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -1,6 +1,8 @@
#ifndef GUARD_POKENAV_H
#define GUARD_POKENAV_H
+#include "region_map.h"
+
struct UnkPokenavStruct_Sub {
/*0x0*/ u16 unk0;
/*0x2*/ u8 filler2[6];
@@ -37,28 +39,54 @@ struct UnkPokenavStruct_Sub3 {
struct UnkUsePokeblockSub {
/*0*/ u8 fil0[2];
/*2*/ u8 partyIdx:5;
+ /*2*/ u16 unk2:9;
};
struct UnkPokenavStruct {
- /*0x0000*/ u8 filler0000[0x30C];
+ /*0x0000*/ u8 filler0000[0x306];
+ /*0x0306*/ u16 unk306;
+ /*0x0306*/ u8 filler0308[0x4];
/*0x030C*/ union { // TODO: what?
u16 val;
struct UnkPokenavStruct_Sub3 unk030C;
} unk030C;
- /*0x0310*/ u8 filler030E[0x6a9c];
+ /*0x0310*/ u8 filler030E[0x6a90];
+ /*0x6DA0*/ u16 unk6DA0;
+ /*0x6DA2*/ u16 unk6DA2;
+ /*0x6DA4*/ u16 taskId6DA4;
+ /*0x6DA6*/ u8 filler6DA6[0x6];
/*0x6DAC*/ u8 unk6DAC;
- /*0x6DAD*/ u8 filler6DAD[0x8fd];
+ /*0x6DAD*/ u8 filler6DAD[0x6B];
+ /*0x6E18*/ struct RegionMap regionMap;
+ /*0x7698*/ u16 unk7698;
+ /*0x769A*/ u16 unk769A;
+ /*0x769C*/ u8 unk769C;
+ /*0x769D*/ u8 unk769D;
+ /*0x769E*/ u8 unk769E;
+ /*0x769F*/ u8 filler769F[0xB];
/*0x76AA*/ u8 unk76AA;
/*0x76AB*/ u8 filler76AB[0x10bd];
/*0x8768*/ struct UnkPokenavStruct_Sub2 *unk8768;
- /*0x876C*/ u8 filler876C[0x6e];
+ /*0x876C*/ u8 filler876C[0x2];
+ /*0x876E*/ u8 unk876E;
+ /*0x876F*/ u8 filler876F[0x7];
+ /*0x8776*/ u16 unk8776;
+ /*0x8778*/ u16 unk8778;
+ /*0x877A*/ u8 filler877A[0xE];
+ /*0x8788*/ u8 unk8788[0x40];
+ /*0x87C8*/ u8 unk87C8;
+ /*0x87C9*/ u8 filler87C9;
+ /*0x87CA*/ u8 unk87CA;
+ /*0x87CB*/ u8 filler87CB[0xF];
/*0x87DA*/ s16 unk87DA;
/*0x87DC*/ s16 unk87DC;
/*0x87DE*/ s16 unk87DE;
/*0x87E0*/ void *unk87E0;
/*0x87E4*/ u8 filler87E4[0x44];
/*0x8828*/ u8 unk8828;
- /*0x8829*/ u8 filler8829[0x113];
+ /*0x8829*/ u8 unk8829[3][64];
+ /*0x88E9*/ u8 unk88E9[3][24];
+ /*0x8931*/ u8 unk8931[11];
/*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1ab];
/*0x8fe8*/ u8 fil8fe8[1];
/*0x8fe9*/ s8 unk8fe9;
@@ -68,11 +96,16 @@ struct UnkPokenavStruct {
/*0x9004*/ u8 unk9004[3][20];
/*0x9040*/ u8 unk9040[0x304];
/*0x9344*/ u8 unk9344;
- /*0x9345*/ u8 filler9345[0x3b07];
+ /*0x9345*/ u8 filler9345[0x2955];
+ /*0xBC9A*/ u8 unkBC9A;
+ /*0xBC9B*/ u8 unkBC9B;
+ /*0xBC9C*/ u8 unkBC9C[22][200];
+ /*0xCDCC*/ const u8 *unkCDCC[16][2];
/*0xCE4C*/ u16 unkCE4C;
/*0xCE4E*/ u16 unkCE4E;
/*0xCE50*/ u16 unkCE50;
- /*0xCE52*/ u16 palettesCE52[0x4B];
+ /*0xCE52*/ u16 palettesCE52[30];
+ /*0xCE8E*/ u16 palettesCE8E[0x2D];
/*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78];
/*0xD158*/ u16 unkD158;
/*0xD15A*/ u8 fillerD15A[6];
diff --git a/include/region_map.h b/include/region_map.h
index 3d970fa0a..4061c5e3d 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -3,8 +3,8 @@
struct RegionMap
{
- u8 mapSecName[0x14];
- u16 mapSecId;
+ u8 mapSectionName[20];
+ u16 mapSectionId;
u8 unk16;
u8 everGrandeCityArea;
u8 (*inputCallback)(void);
@@ -62,10 +62,10 @@ void sub_80FAEC4(void);
u8 sub_80FAFC0(void);
void UpdateRegionMapVideoRegs(void);
void sub_80FB2A4(s16, s16);
-u16 sub_80FBA04(u16 mapSecId);
+u16 sub_80FBA04(u16 mapSectionId);
void CreateRegionMapCursor(u16, u16);
void CreateRegionMapPlayerIcon(u16, u16);
-const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length);
+const u8 *GetMapSectionName(u8 *dest, u16 mapSectionId, u16 length);
const u8 *CopyMapName(u8 *dest, u16 b);
const u8 *CopyLocationName(u8 *dest, u16 b);
diff --git a/src/field/region_map.c b/src/field/region_map.c
index bfd2729c2..daf0501f7 100644
--- a/src/field/region_map.c
+++ b/src/field/region_map.c
@@ -336,9 +336,9 @@ bool8 sub_80FA940(void)
InitializeCursorPosition();
gRegionMap->unk74 = gRegionMap->cursorPosX;
gRegionMap->unk76 = gRegionMap->cursorPosY;
- gRegionMap->unk16 = sub_80FB758(gRegionMap->mapSecId);
- gRegionMap->mapSecId = sub_80FB9C0(gRegionMap->mapSecId);
- GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ gRegionMap->unk16 = sub_80FB758(gRegionMap->mapSectionId);
+ gRegionMap->mapSectionId = sub_80FB9C0(gRegionMap->mapSectionId);
+ GetMapSectionName(gRegionMap->mapSectionName, gRegionMap->mapSectionId, 16);
break;
case 6:
if (gRegionMap->zoomed == FALSE)
@@ -433,7 +433,7 @@ static u8 sub_80FAB78(void)
static u8 _swiopen(void)
{
- u16 mapSecId;
+ u16 mapSectionId;
if (gRegionMap->unk7A != 0)
return INPUT_EVENT_2;
@@ -450,12 +450,12 @@ static u8 _swiopen(void)
if (gRegionMap->cursorDeltaY < 0)
gRegionMap->cursorPosY--;
- mapSecId = GetRegionMapSectionAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY);
- gRegionMap->unk16 = sub_80FB758(mapSecId);
- if (mapSecId != gRegionMap->mapSecId)
+ mapSectionId = GetRegionMapSectionAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY);
+ gRegionMap->unk16 = sub_80FB758(mapSectionId);
+ if (mapSectionId != gRegionMap->mapSectionId)
{
- gRegionMap->mapSecId = mapSecId;
- GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ gRegionMap->mapSectionId = mapSectionId;
+ GetMapSectionName(gRegionMap->mapSectionName, gRegionMap->mapSectionId, 16);
}
sub_80FBA18();
gRegionMap->inputCallback = sub_80FAB78;
@@ -515,16 +515,16 @@ static u8 sub_80FADE4(void)
if (r3 != gRegionMap->unk64 || r1 != gRegionMap->unk66)
{
- u16 mapSecId;
+ u16 mapSectionId;
gRegionMap->unk64 = r3;
gRegionMap->unk66 = r1;
- mapSecId = GetRegionMapSectionAt(r3, r1);
- gRegionMap->unk16 = sub_80FB758(mapSecId);
- if (mapSecId != gRegionMap->mapSecId)
+ mapSectionId = GetRegionMapSectionAt(r3, r1);
+ gRegionMap->unk16 = sub_80FB758(mapSectionId);
+ if (mapSectionId != gRegionMap->mapSectionId)
{
- gRegionMap->mapSecId = mapSecId;
- GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ gRegionMap->mapSectionId = mapSectionId;
+ GetMapSectionName(gRegionMap->mapSectionName, gRegionMap->mapSectionId, 16);
}
sub_80FBA18();
}
@@ -722,19 +722,19 @@ static void InitializeCursorPosition(void)
case 2:
case 4:
case 5:
- gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ gRegionMap->mapSectionId = gMapHeader.regionMapSectionId;
gRegionMap->playerIsInCave = FALSE;
mapWidth = gMapHeader.mapData->width;
mapHeight = gMapHeader.mapData->height;
x = gSaveBlock1.pos.x;
y = gSaveBlock1.pos.y;
- if (gRegionMap->mapSecId == MAPSEC_UNDERWATER6)
+ if (gRegionMap->mapSectionId == MAPSEC_UNDERWATER6)
gRegionMap->playerIsInCave = TRUE;
break;
case 3:
case 6:
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum);
- gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->mapSectionId = mapHeader->regionMapSectionId;
gRegionMap->playerIsInCave = TRUE;
mapWidth = mapHeader->mapData->width;
mapHeight = mapHeader->mapData->height;
@@ -743,7 +743,7 @@ static void InitializeCursorPosition(void)
break;
case 8:
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum);
- gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->mapSectionId = mapHeader->regionMapSectionId;
gRegionMap->playerIsInCave = TRUE;
mapWidth = mapHeader->mapData->width;
mapHeight = mapHeader->mapData->height;
@@ -754,8 +754,8 @@ static void InitializeCursorPosition(void)
{
struct WarpData *r4;
- gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
- if (gRegionMap->mapSecId != MAPSEC_UNK_0x57)
+ gRegionMap->mapSectionId = gMapHeader.regionMapSectionId;
+ if (gRegionMap->mapSectionId != MAPSEC_UNK_0x57)
{
r4 = &gSaveBlock1.warp4;
mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum);
@@ -764,7 +764,7 @@ static void InitializeCursorPosition(void)
{
r4 = &gSaveBlock1.warp2;
mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum);
- gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->mapSectionId = mapHeader->regionMapSectionId;
}
gRegionMap->playerIsInCave = FALSE;
mapWidth = mapHeader->mapData->width;
@@ -777,21 +777,21 @@ static void InitializeCursorPosition(void)
r9 = x;
- r1 = mapWidth / gRegionMapLocations[gRegionMap->mapSecId].width;
+ r1 = mapWidth / gRegionMapLocations[gRegionMap->mapSectionId].width;
if (r1 == 0)
r1 = 1;
x /= r1;
- if (x >= gRegionMapLocations[gRegionMap->mapSecId].width)
- x = gRegionMapLocations[gRegionMap->mapSecId].width - 1;
+ if (x >= gRegionMapLocations[gRegionMap->mapSectionId].width)
+ x = gRegionMapLocations[gRegionMap->mapSectionId].width - 1;
- r1 = mapHeight / gRegionMapLocations[gRegionMap->mapSecId].height;
+ r1 = mapHeight / gRegionMapLocations[gRegionMap->mapSectionId].height;
if (r1 == 0)
r1 = 1;
y /= r1;
- if (y >= gRegionMapLocations[gRegionMap->mapSecId].height)
- y = gRegionMapLocations[gRegionMap->mapSecId].height - 1;
+ if (y >= gRegionMapLocations[gRegionMap->mapSectionId].height)
+ y = gRegionMapLocations[gRegionMap->mapSectionId].height - 1;
- switch (gRegionMap->mapSecId)
+ switch (gRegionMap->mapSectionId)
{
case MAPSEC_ROUTE_114:
if (y != 0)
@@ -820,8 +820,8 @@ static void InitializeCursorPosition(void)
x++;
break;
}
- gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
- gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
+ gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSectionId].x + x + MAPCURSOR_X_MIN;
+ gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSectionId].y + y + MAPCURSOR_Y_MIN;
}
static void sub_80FB600(void)
@@ -836,16 +836,16 @@ static void sub_80FB600(void)
switch (GetSSTidalLocation(&mapGroup, &mapNum, &sp2, &sp4))
{
case 1:
- gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY;
+ gRegionMap->mapSectionId = MAPSEC_SLATEPORT_CITY;
break;
case 2:
- gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY;
+ gRegionMap->mapSectionId = MAPSEC_LILYCOVE_CITY;
break;
case 3:
- gRegionMap->mapSecId = MAPSEC_ROUTE_124;
+ gRegionMap->mapSectionId = MAPSEC_ROUTE_124;
break;
case 4:
- gRegionMap->mapSecId = MAPSEC_ROUTE_131;
+ gRegionMap->mapSectionId = MAPSEC_ROUTE_131;
break;
default:
case 0:
@@ -853,31 +853,31 @@ static void sub_80FB600(void)
struct MapHeader *mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
u16 r1;
- gRegionMap->mapSecId = mapHeader->regionMapSectionId;
- r1 = mapHeader->mapData->width / gRegionMapLocations[gRegionMap->mapSecId].width;
+ gRegionMap->mapSectionId = mapHeader->regionMapSectionId;
+ r1 = mapHeader->mapData->width / gRegionMapLocations[gRegionMap->mapSectionId].width;
if (r1 == 0)
r1 = 1;
x = sp2 / r1;
- if (x >= gRegionMapLocations[gRegionMap->mapSecId].width)
- x = gRegionMapLocations[gRegionMap->mapSecId].width - 1;
+ if (x >= gRegionMapLocations[gRegionMap->mapSectionId].width)
+ x = gRegionMapLocations[gRegionMap->mapSectionId].width - 1;
- r1 = mapHeader->mapData->height / gRegionMapLocations[gRegionMap->mapSecId].height;
+ r1 = mapHeader->mapData->height / gRegionMapLocations[gRegionMap->mapSectionId].height;
if (r1 == 0)
r1 = 1;
y = sp4 / r1;
- if (y >= gRegionMapLocations[gRegionMap->mapSecId].height)
- y = gRegionMapLocations[gRegionMap->mapSecId].height - 1;
+ if (y >= gRegionMapLocations[gRegionMap->mapSectionId].height)
+ y = gRegionMapLocations[gRegionMap->mapSectionId].height - 1;
}
break;
}
gRegionMap->playerIsInCave = FALSE;
- gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
- gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
+ gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSectionId].x + x + MAPCURSOR_X_MIN;
+ gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSectionId].y + y + MAPCURSOR_Y_MIN;
}
-static u16 sub_80FB758(u16 mapSecId)
+static u16 sub_80FB758(u16 mapSectionId)
{
- switch (mapSecId)
+ switch (mapSectionId)
{
case MAPSEC_NONE:
return 0;
@@ -928,21 +928,21 @@ u16 GetRegionMapSectionAt_(u16 x, u16 y)
return GetRegionMapSectionAt(x, y);
}
-static u16 sub_80FB9C0(u16 mapSecId)
+static u16 sub_80FB9C0(u16 mapSectionId)
{
u16 i;
for (i = 0; gUnknown_083E7684[i][0] != MAPSEC_NONE; i++)
{
- if (gUnknown_083E7684[i][0] == mapSecId)
+ if (gUnknown_083E7684[i][0] == mapSectionId)
return gUnknown_083E7684[i][1];
}
- return mapSecId;
+ return mapSectionId;
}
-u16 sub_80FBA04(u16 mapSecId)
+u16 sub_80FBA04(u16 mapSectionId)
{
- return sub_80FB9C0(mapSecId);
+ return sub_80FB9C0(mapSectionId);
}
static void sub_80FBA18(void)
@@ -951,7 +951,7 @@ static void sub_80FBA18(void)
u16 y;
u16 i;
- if (gRegionMap->mapSecId == MAPSEC_NONE)
+ if (gRegionMap->mapSectionId == MAPSEC_NONE)
{
gRegionMap->everGrandeCityArea = 0;
return;
@@ -986,7 +986,7 @@ static void sub_80FBA18(void)
else
{
x--;
- if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId)
+ if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSectionId)
i++;
}
}
@@ -1005,7 +1005,7 @@ static bool8 sub_80FBAA0(u16 a)
for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++)
{
- if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId)
+ if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSectionId)
return TRUE;
}
return FALSE;
@@ -1302,44 +1302,44 @@ void sub_80FBF94(void)
gRegionMap->blinkPlayerIcon = TRUE;
}
-const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length)
+const u8 *GetMapSectionName(u8 *dest, u16 mapSectionId, u16 length)
{
- if (mapSecId == MAPSEC_SECRET_BASE)
+ if (mapSectionId == MAPSEC_SECRET_BASE)
return GetSecretBaseMapName(dest);
- if (mapSecId < MAPSEC_NONE)
- return StringCopy(dest, gRegionMapLocations[mapSecId].regionMapSectionId);
+ if (mapSectionId < MAPSEC_NONE)
+ return StringCopy(dest, gRegionMapLocations[mapSectionId].regionMapSectionId);
if (length == 0)
length = 18;
return StringFill(dest, CHAR_SPACE, length);
}
-const u8 *CopyMapName(u8 *dest, u16 mapSecId)
+const u8 *CopyMapName(u8 *dest, u16 mapSectionId)
{
- switch (mapSecId)
+ switch (mapSectionId)
{
case MAPSEC_UNK_0x57:
return StringCopy(dest, gOtherText_Ferry);
case MAPSEC_SECRET_BASE:
return StringCopy(dest, gOtherText_SecretBase);
default:
- return GetMapSectionName(dest, mapSecId, 0);
+ return GetMapSectionName(dest, mapSectionId, 0);
}
}
-const u8 *CopyLocationName(u8 *dest, u16 mapSecId)
+const u8 *CopyLocationName(u8 *dest, u16 mapSectionId)
{
- if (mapSecId == MAPSEC_EVIL_TEAM_HIDEOUT)
+ if (mapSectionId == MAPSEC_EVIL_TEAM_HIDEOUT)
return StringCopy(dest, gOtherText_Hideout);
else
- return CopyMapName(dest, mapSecId);
+ return CopyMapName(dest, mapSectionId);
}
-static void GetRegionMapLocationPosition(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height)
+static void GetRegionMapLocationPosition(u16 mapSectionId, u16 *x, u16 *y, u16 *width, u16 *height)
{
- *x = gRegionMapLocations[mapSecId].x;
- *y = gRegionMapLocations[mapSecId].y;
- *width = gRegionMapLocations[mapSecId].width;
- *height = gRegionMapLocations[mapSecId].height;
+ *x = gRegionMapLocations[mapSectionId].x;
+ *y = gRegionMapLocations[mapSectionId].y;
+ *width = gRegionMapLocations[mapSectionId].width;
+ *height = gRegionMapLocations[mapSectionId].height;
}
struct UnknownStruct3
@@ -1419,7 +1419,7 @@ static const u8 sUnknown_083E7920[][3] =
struct UnknownStruct4
{
const u8 *const *unk0;
- u16 mapSecId;
+ u16 mapSectionId;
u16 flag;
};
@@ -1438,7 +1438,7 @@ static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons
// Fly targets that are not cities or towns
static const u16 sSpecialFlyAreas[][2] =
{
- // flag, mapSecId
+ // flag, mapSectionId
{0x848, MAPSEC_BATTLE_TOWER},
{0xFFFF, MAPSEC_NONE},
};
@@ -1555,7 +1555,7 @@ void CB2_InitFlyRegionMap(void)
InitRegionMap(&ewram0.regionMap, 0);
CreateRegionMapCursor(0, 0);
CreateRegionMapPlayerIcon(1, 1);
- ewram0.unk6 = ewram0.regionMap.mapSecId;
+ ewram0.unk6 = ewram0.regionMap.mapSectionId;
StringFill(ewramBlankMapName, CHAR_SPACE, 12);
PrintFlyTargetName();
break;
@@ -1620,12 +1620,12 @@ static void PrintFlyTargetName(void)
{
const struct UnknownStruct4 *r4 = &sUnknown_083E79C0[i];
- if (ewram0.regionMap.mapSecId == r4->mapSecId)
+ if (ewram0.regionMap.mapSectionId == r4->mapSectionId)
{
if (FlagGet(r4->flag))
{
MenuDrawTextWindow(16, 14, 29, 19);
- MenuPrint(ewram0.regionMap.mapSecName, 17, 15);
+ MenuPrint(ewram0.regionMap.mapSectionName, 17, 15);
MenuPrint_RightAligned(r4->unk0[ewram0.regionMap.everGrandeCityArea], 29, 17);
return;
}
@@ -1637,7 +1637,7 @@ static void PrintFlyTargetName(void)
if (zero == 0)
{
MenuDrawTextWindow(16, 16, 29, 19);
- MenuPrint(ewram0.regionMap.mapSecName, 17, 17);
+ MenuPrint(ewram0.regionMap.mapSectionName, 17, 17);
MenuZeroFillWindowRect(16, 14, 29, 15);
}
}
@@ -1717,10 +1717,10 @@ static void CreateSpecialAreaFlyTargetIcons(void)
if (FlagGet(sSpecialFlyAreas[i][0]))
{
- u16 mapSecId = sSpecialFlyAreas[i][1];
+ u16 mapSectionId = sSpecialFlyAreas[i][1];
u8 spriteId;
- GetRegionMapLocationPosition(mapSecId, &x, &y, &width, &height);
+ GetRegionMapLocationPosition(mapSectionId, &x, &y, &width, &height);
x = (x + 1) * 8;
y = (y + 2) * 8;
spriteId = CreateSprite(&gFlyTargetSpriteTemplate, x, y, 10);
@@ -1729,7 +1729,7 @@ static void CreateSpecialAreaFlyTargetIcons(void)
gSprites[spriteId].oam.size = 1;
gSprites[spriteId].callback = SpriteCB_FlyTargetIcons;
StartSpriteAnim(&gSprites[spriteId], 6);
- gSprites[spriteId].data0 = mapSecId;
+ gSprites[spriteId].data0 = mapSectionId;
}
}
}
@@ -1737,8 +1737,8 @@ static void CreateSpecialAreaFlyTargetIcons(void)
static void SpriteCB_FlyTargetIcons(struct Sprite *sprite)
{
- // Blink if our mapSecId is the one selected on the map
- if (ewram0.regionMap.mapSecId == sprite->data0)
+ // Blink if our mapSectionId is the one selected on the map
+ if (ewram0.regionMap.mapSectionId == sprite->data0)
{
// Toggle visibility every 16 frames
sprite->data1++;
@@ -1815,7 +1815,7 @@ static void sub_80FC69C(void)
FreeRegionMapIconResources();
if (ewramA6E != 0)
{
- switch (ewram0.regionMap.mapSecId)
+ switch (ewram0.regionMap.mapSectionId)
{
case MAPSEC_SOUTHERN_ISLAND:
sub_8053538(22);
@@ -1830,10 +1830,10 @@ static void sub_80FC69C(void)
sub_8053538((FlagGet(0x854) && ewram0.regionMap.everGrandeCityArea == 0) ? 20 : 11);
break;
default:
- if (sUnknown_083E7920[ewram0.regionMap.mapSecId][2] != 0)
- sub_8053538(sUnknown_083E7920[ewram0.regionMap.mapSecId][2]);
+ if (sUnknown_083E7920[ewram0.regionMap.mapSectionId][2] != 0)
+ sub_8053538(sUnknown_083E7920[ewram0.regionMap.mapSectionId][2]);
else
- warp1_set_2(sUnknown_083E7920[ewram0.regionMap.mapSecId][0], sUnknown_083E7920[ewram0.regionMap.mapSecId][1], -1);
+ warp1_set_2(sUnknown_083E7920[ewram0.regionMap.mapSectionId][0], sUnknown_083E7920[ewram0.regionMap.mapSectionId][1], -1);
break;
}
sub_80865BC();
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index 67578f9a1..db9de522a 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -4,6 +4,8 @@
#include "battle.h"
#include "data2.h"
#include "de_rom_8040FE0.h"
+#include "landmark.h"
+#include "link.h"
#include "menu.h"
#include "overworld.h"
#include "string_util.h"
@@ -89,6 +91,31 @@ struct UnknownPokenav0_1 {
IWRAM_DATA void (*gUnknown_03000744)(void);
+extern const u8 gUnknown_083E0314[];
+extern const u16 gUnknown_08E9F9E8[];
+extern const u16 gUnknown_083E0274[];
+extern const u8 gUnknown_08E9FC64[];
+extern const u8 gUnknown_083E0354[];
+extern const u8 gUnknown_08E9FD64[];
+extern const u8 gUnknown_08E9FE54[];
+extern const u8 gUnknown_08E9FD1C[];
+extern const u16 gPokenavConditionSearch2_Pal[];
+extern const u8 gUnknown_083E0334[];
+extern const u16 gUnknown_083E02B4[];
+extern const u8 gPokenavConditionSearch2_Gfx[];
+extern const u8 gUnknownPalette_81E6692[];
+extern const u8 gUnknown_083E0254[];
+extern const u8 gUnknown_08E9FEB4[];
+extern const u8 gUnknown_083E01AC[];
+extern const u8 gUnknown_08E9AC4C[];
+extern const u8 gPokenavConditionMenu2_Pal[];
+extern const u8 gPokenavConditionView_Gfx[];
+extern const u8 gUnknown_08E9ABB4[];
+extern const u8 gUnknown_08E9AC2C[];
+extern const u8 *const gPokenavCityMaps[][2];
+extern const u8 gPokenavHoennMapSquares_Pal[];
+extern const u8 gPokenavHoennMapSquares_Gfx[];
+extern const u16 gUnknown_083E003C[];
extern const u8 *const gUnknown_083E31B0[];
extern const u8 *const gUnknown_083E31CC[];
extern const u8 *const gUnknown_083E31D8[];
@@ -144,10 +171,26 @@ static void sub_80EE658();
static void sub_80EE8F4();
static void sub_80EEDC4();
+extern bool8 sub_80F0944(void);
+extern void sub_80F081C();
+extern void sub_80F0900(void);
+extern void sub_80F443C(u8 *, u16);
+extern bool8 sub_80F162C(u8);
+extern void sub_80F01E0(u16);
+extern void sub_80F01A4(void);
+extern void sub_80F1614(void);
+extern void sub_80EFD3C(void);
+extern void sub_8095C8C();
+extern void sub_80EFDA0(void);
+extern void sub_80EFD74(void);
+extern void sub_80F1A80(void);
+extern bool8 sub_80EFC64(void);
+extern void sub_80EFC3C(void);
+extern void sub_80EF624(const u16 *, const u16 *, u8, u8, u16 *);
extern void sub_80EF7D4(void);
extern void sub_80EF54C(u8);
extern void sub_809D104(u16 *, u16, u16, const u8 *, u16, u16, u16, u16);
-extern void sub_80EF58C(u32);
+extern void sub_80EF58C(u8);
extern void sub_80F6FFC();
extern void sub_80F3294();
extern void sub_80F0B24();
@@ -200,23 +243,23 @@ extern bool8 sub_80F0718();
extern bool8 sub_80F3264();
extern void sub_80F4D44();
extern bool8 sub_80F4D88();
-extern void sub_80F0264();
+extern void sub_80F0264(u8);
extern bool8 sub_80F02A0();
extern void sub_80F3008();
extern void sub_80F3130();
extern void sub_80F2D6C(u32);
extern bool8 sub_80F1E6C();
-extern void sub_80EF9F8();
-extern bool8 sub_80EFBDC(u32);
-extern void sub_80EFBB0();
+extern void sub_80EF9F8(void);
+extern bool8 sub_80EFBDC(bool8);
+extern void sub_80EFBB0(void);
extern void sub_80F2DF4();
extern void sub_80F1E84();
extern bool8 sub_80F1F10();
extern void sub_80EEFBC(u8);
extern void sub_80F2620();
-extern void sub_80EF814();
-extern void sub_80EF840();
-extern bool8 sub_80EF874();
+extern void sub_80EF814(void);
+extern void sub_80EF840(void);
+extern bool8 sub_80EF874(void);
extern void sub_80F2DD8();
extern bool8 sub_80F6250();
extern void sub_80F6208();
@@ -248,7 +291,7 @@ extern void sub_80EBD18();
extern void sub_80F1A74();
extern void sub_80F1FF0();
extern void sub_80FB260();
-extern void sub_80EFE7C();
+extern void sub_80EFE7C(void);
extern void sub_80F5BF0();
extern void sub_80F6F64();
extern void sub_80F19FC();
@@ -3166,3 +3209,1799 @@ void sub_80EF54C(u8 a)
gUnknown_083DFEC4->unkCE4C = a * 30;
LoadPalette(&gUnknown_083DFEC4->palettesCE52[gUnknown_083DFEC4->unkCE4C], 0x31, 4);
}
+
+void sub_80EF58C(u8 a)
+{
+ u16 i;
+ u16 * palettes;
+ const u16 *var1;
+
+ switch (a)
+ {
+ case 0:
+ for (i = 0; i < 62; i++)
+ {
+ gUnknown_083DFEC4->palettesCE52[i] = 0;
+ }
+ break;
+ case 1:
+ palettes = gUnknown_083DFEC4->palettesCE52;
+ var1 = gUnknown_083E003C;
+ sub_80EF624(&var1[1], &var1[3], 16, 2, palettes);
+ break;
+ case 2:
+ palettes = gUnknown_083DFEC4->palettesCE8E;
+ var1 = gUnknown_083E003C;
+ sub_80EF624(&var1[3], &var1[7], 16, 2, palettes);
+ break;
+ }
+}
+
+#ifdef NONMATCHING
+void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes)
+{
+ u16 red1, green1, blue1;
+ u16 red2, green2, blue2;
+ s32 redDiv, greenDiv, blueDiv;
+ u16 *palettes2;
+ u16 i, j;
+
+ i = 0;
+ while (i < d)
+ {
+ red1 = (*a & 0x1F) << 8;
+ green1 = ((*a >> 5) & 0x1F) << 8;
+ blue1 = ((*a >> 10) & 0x1F) << 8;
+
+ red2 = (*b & 0x1F) << 8;
+ green2 = ((*b >> 5) & 0x1F) << 8;
+ blue2 = ((*b >> 10) & 0x1F) << 8;
+
+ redDiv = (red2 - red1) / c;
+ greenDiv = (green2 - green1) / c;
+ blueDiv = (blue2 - blue1) / c;
+
+ palettes2 = palettes;
+ for (j = 0; j < c - 1; j++)
+ {
+ *palettes2 = (((blue1 << 8) >> 16) << 10) | (((green1 << 8) >> 16) << 5) | ((red1 << 8) >> 16);
+ palettes2 += d;
+ red1 += redDiv;
+ green1 += greenDiv;
+ blue1 += blueDiv;
+ }
+
+ *palettes2 = (red2 >> 8) | (blue2 << 2) | (green2 >> 3);
+ palettes++;
+
+ a++;
+ b++;
+ i++;
+ }
+}
+#else
+__attribute__((naked))
+void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x38\n\
+ str r0, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ ldr r4, [sp, 0x58]\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x8]\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ str r3, [sp, 0xC]\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x10]\n\
+ lsls r0, r3, 16\n\
+ ldr r1, [sp, 0x10]\n\
+ cmp r1, r3\n\
+ bcs _080EF72E\n\
+ subs r2, 0x1\n\
+ str r2, [sp, 0x20]\n\
+ str r0, [sp, 0x2C]\n\
+_080EF654:\n\
+ ldr r2, [sp]\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x1F\n\
+ ands r0, r1\n\
+ lsls r7, r0, 8\n\
+ lsls r1, 16\n\
+ lsrs r0, r1, 21\n\
+ movs r2, 0x1F\n\
+ ands r0, r2\n\
+ lsls r6, r0, 8\n\
+ lsrs r1, 26\n\
+ ands r1, r2\n\
+ lsls r5, r1, 8\n\
+ ldr r0, [sp, 0x4]\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1F\n\
+ ands r0, r1\n\
+ lsls r0, 8\n\
+ str r0, [sp, 0x14]\n\
+ lsls r1, 16\n\
+ lsrs r0, r1, 21\n\
+ ands r0, r2\n\
+ lsls r0, 8\n\
+ str r0, [sp, 0x18]\n\
+ lsrs r1, 26\n\
+ ands r1, r2\n\
+ lsls r1, 8\n\
+ str r1, [sp, 0x1C]\n\
+ ldr r1, [sp, 0x14]\n\
+ subs r0, r1, r7\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ mov r10, r0\n\
+ ldr r2, [sp, 0x18]\n\
+ subs r0, r2, r6\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ mov r9, r0\n\
+ ldr r1, [sp, 0x1C]\n\
+ subs r0, r1, r5\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ mov r8, r0\n\
+ adds r3, r4, 0\n\
+ movs r4, 0\n\
+ ldr r2, [sp]\n\
+ adds r2, 0x2\n\
+ str r2, [sp, 0x30]\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, 0x2\n\
+ str r0, [sp, 0x34]\n\
+ adds r1, r3, 0x2\n\
+ str r1, [sp, 0x24]\n\
+ ldr r2, [sp, 0x10]\n\
+ adds r2, 0x1\n\
+ str r2, [sp, 0x28]\n\
+ ldr r0, [sp, 0x20]\n\
+ cmp r4, r0\n\
+ bge _080EF700\n\
+ ldr r1, [sp, 0xC]\n\
+ lsls r1, 1\n\
+ mov r12, r1\n\
+_080EF6D6:\n\
+ lsls r0, r7, 8\n\
+ lsrs r2, r0, 16\n\
+ lsls r0, r6, 8\n\
+ lsrs r1, r0, 16\n\
+ lsls r0, r5, 8\n\
+ lsrs r0, 16\n\
+ lsls r0, 10\n\
+ lsls r1, 5\n\
+ orrs r0, r1\n\
+ orrs r2, r0\n\
+ strh r2, [r3]\n\
+ add r3, r12\n\
+ add r7, r10\n\
+ add r6, r9\n\
+ add r5, r8\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ ldr r2, [sp, 0x20]\n\
+ cmp r4, r2\n\
+ blt _080EF6D6\n\
+_080EF700:\n\
+ ldr r4, [sp, 0x14]\n\
+ lsrs r2, r4, 8\n\
+ ldr r1, [sp, 0x1C]\n\
+ lsls r0, r1, 2\n\
+ ldr r4, [sp, 0x18]\n\
+ lsrs r1, r4, 3\n\
+ orrs r0, r1\n\
+ orrs r2, r0\n\
+ strh r2, [r3]\n\
+ ldr r0, [sp, 0x30]\n\
+ str r0, [sp]\n\
+ ldr r1, [sp, 0x34]\n\
+ str r1, [sp, 0x4]\n\
+ ldr r4, [sp, 0x24]\n\
+ ldr r2, [sp, 0x28]\n\
+ lsls r0, r2, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x10]\n\
+ ldr r1, [sp, 0x2C]\n\
+ lsrs r0, r1, 16\n\
+ ldr r2, [sp, 0x10]\n\
+ cmp r2, r0\n\
+ bcc _080EF654\n\
+_080EF72E:\n\
+ add sp, 0x38\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80EF740(void)
+{
+ gUnknown_083DFEC4->unk6DA0 = (gUnknown_083DFEC4->unk6DA0 + 1) & 1;
+ if (gUnknown_083DFEC4->unk6DA0)
+ {
+ gUnknown_083DFEC4->unk6DA2++;
+ }
+
+ REG_BG3HOFS = gUnknown_083DFEC4->unk6DA2;
+}
+
+void sub_80EF780(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0 || (gUnknown_083DFEC4->unk6DA2 & 0x7) != 0)
+ {
+ sub_80EF740();
+ }
+ else
+ {
+ u16 value = gUnknown_083DFEC4->unk6DA2 & 0x7;
+ gUnknown_083DFEC4->unk6DA2 = value;
+ gUnknown_083DFEC4->unk6DA0 = value;
+ REG_BG3HOFS = value;
+ }
+}
+
+void sub_80EF7D4(void)
+{
+ gUnknown_083DFEC4->unk6DA2 = 0;
+ gUnknown_083DFEC4->unk6DA0 = 0;
+ gUnknown_083DFEC4->taskId6DA4 = CreateTask(sub_80EF780, 80);
+}
+
+void sub_80EF814(void)
+{
+ if (FuncIsActiveTask(sub_80EF780))
+ {
+ DestroyTask(gUnknown_083DFEC4->taskId6DA4);
+ }
+}
+
+void sub_80EF840(void)
+{
+ gUnknown_083DFEC4->unkD160 = 0;
+
+ if (gUnknown_083DFEC4->unk6DAC == 0)
+ {
+ while (sub_80EF874() != 0);
+ }
+}
+
+// The only non-matching part is the gSaveBlock2.regionMapZoom access.
+#ifdef NONMATCHING
+bool8 sub_80EF874(void)
+{
+ switch (gUnknown_083DFEC4->unkD160)
+ {
+ case 0:
+ sub_80EEDE8();
+ break;
+ case 1:
+ SetUpWindowConfig(&gWindowConfig_81E7224);
+ break;
+ case 2:
+ MultistepInitMenuWindowBegin(&gWindowConfig_81E7224);
+ break;
+ case 3:
+ if (!MultistepInitMenuWindowContinue())
+ {
+ return TRUE;
+ }
+ break;
+ case 4:
+ MenuZeroFillScreen();
+ break;
+ case 5:
+ sub_80FA904(&gUnknown_083DFEC4->regionMap, gSaveBlock2.regionMapZoom);
+ break;
+ case 6:
+ if (sub_80FA940())
+ {
+ return TRUE;
+ }
+ break;
+ case 7:
+ LZ77UnCompVram(gPokenavHoennMapSquares_Gfx, (void *)VRAM + 0x5000);
+ break;
+ case 8:
+ LoadPalette(gPokenavHoennMapSquares_Pal, 0x30, 0x20);
+ sub_80EFC3C();
+ break;
+ case 9:
+ if (sub_80EFC64())
+ {
+ return TRUE;
+ }
+ break;
+ case 10:
+ MenuDrawTextWindow(13, 3, 29, 17);
+ sub_80EF9F8();
+ break;
+ case 11:
+ if (!gUnknown_083DFEC4->regionMap.zoomed)
+ {
+ gUnknown_083DFEC4->unk7698 = 160;
+ REG_BG0VOFS = 160;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk7698 = 256;
+ REG_BG0VOFS = 0;
+ }
+
+ REG_BG0CNT = REG_BG0CNT;
+ REG_BG0CNT |= 1;
+ REG_BLDCNT = 0;
+ break;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unkD160++;
+ return TRUE;
+}
+#else
+asm(".include \"constants/gba_constants.inc\"\n");
+
+__attribute__((naked))
+bool8 sub_80EF874(void)
+{
+ asm(".syntax unified\n\
+ push {lr}\n\
+ ldr r0, _080EF890 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080EF894 @ =0x0000d160\n\
+ adds r0, r1\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0xB\n\
+ bls _080EF886\n\
+ b _080EF9D8\n\
+_080EF886:\n\
+ lsls r0, 2\n\
+ ldr r1, _080EF898 @ =_080EF89C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_080EF890: .4byte gUnknown_083DFEC4\n\
+_080EF894: .4byte 0x0000d160\n\
+_080EF898: .4byte _080EF89C\n\
+ .align 2, 0\n\
+_080EF89C:\n\
+ .4byte _080EF8CC\n\
+ .4byte _080EF8D2\n\
+ .4byte _080EF8E0\n\
+ .4byte _080EF8EC\n\
+ .4byte _080EF8F6\n\
+ .4byte _080EF8FC\n\
+ .4byte _080EF920\n\
+ .4byte _080EF92C\n\
+ .4byte _080EF940\n\
+ .4byte _080EF954\n\
+ .4byte _080EF960\n\
+ .4byte _080EF972\n\
+_080EF8CC:\n\
+ bl sub_80EEDE8\n\
+ b _080EF9DC\n\
+_080EF8D2:\n\
+ ldr r0, _080EF8DC @ =gWindowConfig_81E7224\n\
+ bl SetUpWindowConfig\n\
+ b _080EF9DC\n\
+ .align 2, 0\n\
+_080EF8DC: .4byte gWindowConfig_81E7224\n\
+_080EF8E0:\n\
+ ldr r0, _080EF8E8 @ =gWindowConfig_81E7224\n\
+ bl MultistepInitMenuWindowBegin\n\
+ b _080EF9DC\n\
+ .align 2, 0\n\
+_080EF8E8: .4byte gWindowConfig_81E7224\n\
+_080EF8EC:\n\
+ bl MultistepInitMenuWindowContinue\n\
+ cmp r0, 0\n\
+ bne _080EF9DC\n\
+ b _080EF9EA\n\
+_080EF8F6:\n\
+ bl MenuZeroFillScreen\n\
+ b _080EF9DC\n\
+_080EF8FC:\n\
+ ldr r0, _080EF914 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ ldr r2, _080EF918 @ =0x00006e18\n\
+ adds r0, r2\n\
+ ldr r1, _080EF91C @ =gSaveBlock2\n\
+ ldrb r1, [r1, 0x15]\n\
+ lsrs r1, 3\n\
+ movs r2, 0x1\n\
+ ands r1, r2\n\
+ bl sub_80FA904\n\
+ b _080EF9DC\n\
+ .align 2, 0\n\
+_080EF914: .4byte gUnknown_083DFEC4\n\
+_080EF918: .4byte 0x00006e18\n\
+_080EF91C: .4byte gSaveBlock2\n\
+_080EF920:\n\
+ bl sub_80FA940\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080EF9DC\n\
+ b _080EF9EA\n\
+_080EF92C:\n\
+ ldr r0, _080EF938 @ =gPokenavHoennMapSquares_Gfx\n\
+ ldr r1, _080EF93C @ =0x06005000\n\
+ bl LZ77UnCompVram\n\
+ b _080EF9DC\n\
+ .align 2, 0\n\
+_080EF938: .4byte gPokenavHoennMapSquares_Gfx\n\
+_080EF93C: .4byte 0x06005000\n\
+_080EF940:\n\
+ ldr r0, _080EF950 @ =gPokenavHoennMapSquares_Pal\n\
+ movs r1, 0x30\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ bl sub_80EFC3C\n\
+ b _080EF9DC\n\
+ .align 2, 0\n\
+_080EF950: .4byte gPokenavHoennMapSquares_Pal\n\
+_080EF954:\n\
+ bl sub_80EFC64\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080EF9DC\n\
+ b _080EF9EA\n\
+_080EF960:\n\
+ movs r0, 0xD\n\
+ movs r1, 0x3\n\
+ movs r2, 0x1D\n\
+ movs r3, 0x11\n\
+ bl MenuDrawTextWindow\n\
+ bl sub_80EF9F8\n\
+ b _080EF9DC\n\
+_080EF972:\n\
+ ldr r0, _080EF990 @ =gUnknown_083DFEC4\n\
+ ldr r1, [r0]\n\
+ ldr r2, _080EF994 @ =0x00006e90\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080EF9A0\n\
+ ldr r2, _080EF998 @ =0x00007698\n\
+ adds r0, r1, r2\n\
+ movs r1, 0xA0\n\
+ strh r1, [r0]\n\
+ ldr r0, _080EF99C @ =REG_BG0VOFS\n\
+ strh r1, [r0]\n\
+ b _080EF9B0\n\
+ .align 2, 0\n\
+_080EF990: .4byte gUnknown_083DFEC4\n\
+_080EF994: .4byte 0x00006e90\n\
+_080EF998: .4byte 0x00007698\n\
+_080EF99C: .4byte REG_BG0VOFS\n\
+_080EF9A0:\n\
+ ldr r0, _080EF9C8 @ =0x00007698\n\
+ adds r1, r0\n\
+ movs r2, 0\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ strh r0, [r1]\n\
+ ldr r0, _080EF9CC @ =REG_BG0VOFS\n\
+ strh r2, [r0]\n\
+_080EF9B0:\n\
+ ldr r2, _080EF9D0 @ =REG_BG0CNT\n\
+ ldrh r0, [r2]\n\
+ strh r0, [r2]\n\
+ ldrh r0, [r2]\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strh r0, [r2]\n\
+ ldr r1, _080EF9D4 @ =REG_BLDCNT\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ b _080EF9DC\n\
+ .align 2, 0\n\
+_080EF9C8: .4byte 0x00007698\n\
+_080EF9CC: .4byte REG_BG0VOFS\n\
+_080EF9D0: .4byte REG_BG0CNT\n\
+_080EF9D4: .4byte REG_BLDCNT\n\
+_080EF9D8:\n\
+ movs r0, 0\n\
+ b _080EF9EC\n\
+_080EF9DC:\n\
+ ldr r0, _080EF9F0 @ =gUnknown_083DFEC4\n\
+ ldr r1, [r0]\n\
+ ldr r2, _080EF9F4 @ =0x0000d160\n\
+ adds r1, r2\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+_080EF9EA:\n\
+ movs r0, 0x1\n\
+_080EF9EC:\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080EF9F0: .4byte gUnknown_083DFEC4\n\
+_080EF9F4: .4byte 0x0000d160\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+#ifdef NONMATCHING
+void sub_80EF9F8(void)
+{
+ s32 zero;
+ u16 i;
+ u8 *mapSectionName;
+ u32 offset;
+ u16 mapSectionId;
+ u8 b;
+ u8 **pointer;
+ u16 var1 = 4;
+
+
+ switch (gUnknown_083DFEC4->regionMap.unk16)
+ {
+ case 1:
+ case 4:
+ sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1);
+ var1 += 2;
+
+ if (gLinkOpen == TRUE)
+ {
+ sub_80F1A80();
+ }
+ else
+ {
+ i = 0;
+ while (i < 4 && (mapSectionName = GetLandmarkName(gUnknown_083DFEC4->regionMap.mapSectionId, gUnknown_083DFEC4->regionMap.everGrandeCityArea, i)) != NULL)
+ {
+ sub_8072A18(mapSectionName, 0x70, var1 * 8, 0x78, 1);
+ var1 += 2;
+ i++;
+ }
+
+ // This check is always true, but somehow the compiler still performed it.
+ asm("mov %0, #0\n":"=r"(zero)); // zero = 0
+ if (!zero && var1 < 16)
+ {
+ MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
+ }
+ }
+ break;
+ case 2:
+ sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1);
+ var1 += 2;
+
+ mapSectionId = gUnknown_083DFEC4->regionMap.mapSectionId;
+ b = gUnknown_083DFEC4->regionMap.everGrandeCityArea;
+ offset = (b << 2) + (mapSectionId << 3);
+ pointer = (u8 **)((u8 *)&gUnknown_083DFEC4->unkCDCC + offset);
+ if (*pointer != NULL)
+ {
+ MenuFillWindowRectWithBlankTile(14, var1, 15, 15);
+ MenuFillWindowRectWithBlankTile(26, var1, 28, 15);
+
+ sub_8095C8C((void *)VRAM + 0xF800, 16, 6, *pointer, 0, 0, 10, 10, 10);
+
+ var1 += 11;
+ }
+
+ // This check is always true, but somehow the compiler still performed it.
+ asm("mov %0, #0\n":"=r"(zero)); // zero = 0
+ if (!zero && var1 < 16)
+ {
+ MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
+ }
+ break;
+ case 3:
+ sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1);
+ var1 += 2;
+
+ // This check is always true, but somehow the compiler still performed it.
+ asm("mov %0, #0\n":"=r"(zero)); // zero = 0
+ if (!zero && var1 < 16)
+ {
+ MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
+ }
+ break;
+ case 0:
+ default:
+ // This check is always true, but somehow the compiler still performed it.
+ asm("mov %0, #0\n":"=r"(zero)); // zero = 0
+ if (!zero && var1 < 16)
+ {
+ MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
+ }
+ break;
+ }
+
+ if (gUnknown_083DFEC4->regionMap.unk16 == 2)
+ {
+ sub_80EFD74();
+ }
+ else
+ {
+ sub_80EFDA0();
+ }
+}
+#else
+__attribute__((naked))
+void sub_80EF9F8(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x14\n\
+ movs r5, 0x4\n\
+ ldr r0, _080EFA18 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080EFA1C @ =0x00006e2e\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x4\n\
+ bls _080EFA0E\n\
+ b _080EFB6A\n\
+_080EFA0E:\n\
+ lsls r0, 2\n\
+ ldr r1, _080EFA20 @ =_080EFA24\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_080EFA18: .4byte gUnknown_083DFEC4\n\
+_080EFA1C: .4byte 0x00006e2e\n\
+_080EFA20: .4byte _080EFA24\n\
+ .align 2, 0\n\
+_080EFA24:\n\
+ .4byte _080EFB6A\n\
+ .4byte _080EFA38\n\
+ .4byte _080EFAC0\n\
+ .4byte _080EFB4C\n\
+ .4byte _080EFA38\n\
+_080EFA38:\n\
+ ldr r0, _080EFA64 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ ldr r2, _080EFA68 @ =0x00006e18\n\
+ adds r0, r2\n\
+ lsls r2, r5, 19\n\
+ lsrs r2, 16\n\
+ movs r1, 0x1\n\
+ str r1, [sp]\n\
+ movs r1, 0x70\n\
+ movs r3, 0x78\n\
+ bl sub_8072A18\n\
+ adds r0, r5, 0x2\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldr r0, _080EFA6C @ =gLinkOpen\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _080EFA70\n\
+ bl sub_80F1A80\n\
+ b _080EFB82\n\
+ .align 2, 0\n\
+_080EFA64: .4byte gUnknown_083DFEC4\n\
+_080EFA68: .4byte 0x00006e18\n\
+_080EFA6C: .4byte gLinkOpen\n\
+_080EFA70:\n\
+ movs r4, 0\n\
+ b _080EFA92\n\
+_080EFA74:\n\
+ lsls r2, r5, 19\n\
+ lsrs r2, 16\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ adds r0, r1, 0\n\
+ movs r1, 0x70\n\
+ movs r3, 0x78\n\
+ bl sub_8072A18\n\
+ adds r0, r5, 0x2\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+_080EFA92:\n\
+ cmp r4, 0x3\n\
+ bhi _080EFB6A\n\
+ ldr r0, _080EFAB8 @ =gUnknown_083DFEC4\n\
+ ldr r1, [r0]\n\
+ ldr r2, _080EFABC @ =0x00006e2c\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ adds r2, 0x3\n\
+ adds r1, r2\n\
+ ldrb r1, [r1]\n\
+ lsls r2, r4, 24\n\
+ lsrs r2, 24\n\
+ bl GetLandmarkName\n\
+ adds r1, r0, 0\n\
+ cmp r1, 0\n\
+ bne _080EFA74\n\
+ b _080EFB6A\n\
+ .align 2, 0\n\
+_080EFAB8: .4byte gUnknown_083DFEC4\n\
+_080EFABC: .4byte 0x00006e2c\n\
+_080EFAC0:\n\
+ ldr r0, _080EFB38 @ =gUnknown_083DFEC4\n\
+ ldr r4, [r0]\n\
+ ldr r1, _080EFB3C @ =0x00006e18\n\
+ adds r0, r4, r1\n\
+ lsls r2, r5, 19\n\
+ lsrs r2, 16\n\
+ movs r1, 0x1\n\
+ str r1, [sp]\n\
+ movs r1, 0x70\n\
+ movs r3, 0x78\n\
+ bl sub_8072A18\n\
+ adds r0, r5, 0x2\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldr r2, _080EFB40 @ =0x00006e2c\n\
+ adds r0, r4, r2\n\
+ ldrh r1, [r0]\n\
+ adds r2, 0x3\n\
+ adds r0, r4, r2\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ lsls r1, 3\n\
+ adds r0, r1\n\
+ ldr r1, _080EFB44 @ =0x0000cdcc\n\
+ adds r4, r1\n\
+ adds r6, r4, r0\n\
+ ldr r0, [r6]\n\
+ cmp r0, 0\n\
+ beq _080EFB6A\n\
+ lsls r4, r5, 24\n\
+ lsrs r4, 24\n\
+ movs r0, 0xE\n\
+ adds r1, r4, 0\n\
+ movs r2, 0xF\n\
+ movs r3, 0xF\n\
+ bl MenuFillWindowRectWithBlankTile\n\
+ movs r0, 0x1A\n\
+ adds r1, r4, 0\n\
+ movs r2, 0x1C\n\
+ movs r3, 0xF\n\
+ bl MenuFillWindowRectWithBlankTile\n\
+ ldr r0, _080EFB48 @ =0x0600f800\n\
+ ldr r3, [r6]\n\
+ movs r1, 0\n\
+ str r1, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ movs r1, 0xA\n\
+ str r1, [sp, 0x8]\n\
+ str r1, [sp, 0xC]\n\
+ str r1, [sp, 0x10]\n\
+ movs r1, 0x10\n\
+ movs r2, 0x6\n\
+ bl sub_8095C8C\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xB\n\
+ b _080EFB66\n\
+ .align 2, 0\n\
+_080EFB38: .4byte gUnknown_083DFEC4\n\
+_080EFB3C: .4byte 0x00006e18\n\
+_080EFB40: .4byte 0x00006e2c\n\
+_080EFB44: .4byte 0x0000cdcc\n\
+_080EFB48: .4byte 0x0600f800\n\
+_080EFB4C:\n\
+ ldr r0, _080EFB98 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ ldr r2, _080EFB9C @ =0x00006e18\n\
+ adds r0, r2\n\
+ lsls r2, r5, 19\n\
+ lsrs r2, 16\n\
+ movs r1, 0x1\n\
+ str r1, [sp]\n\
+ movs r1, 0x70\n\
+ movs r3, 0x78\n\
+ bl sub_8072A18\n\
+ adds r0, r5, 0x2\n\
+_080EFB66:\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+_080EFB6A:\n\
+ movs r0, 0\n\
+ cmp r0, 0\n\
+ bne _080EFB82\n\
+ cmp r5, 0xF\n\
+ bhi _080EFB82\n\
+ lsls r1, r5, 24\n\
+ lsrs r1, 24\n\
+ movs r0, 0xE\n\
+ movs r2, 0x1C\n\
+ movs r3, 0xF\n\
+ bl MenuFillWindowRectWithBlankTile\n\
+_080EFB82:\n\
+ ldr r0, _080EFB98 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080EFBA0 @ =0x00006e2e\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x2\n\
+ bne _080EFBA4\n\
+ bl sub_80EFD74\n\
+ b _080EFBA8\n\
+ .align 2, 0\n\
+_080EFB98: .4byte gUnknown_083DFEC4\n\
+_080EFB9C: .4byte 0x00006e18\n\
+_080EFBA0: .4byte 0x00006e2e\n\
+_080EFBA4:\n\
+ bl sub_80EFDA0\n\
+_080EFBA8:\n\
+ add sp, 0x14\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80EFBB0(void)
+{
+ if (!gUnknown_083DFEC4->regionMap.zoomed)
+ {
+ sub_80EEFBC(8);
+ }
+ else
+ {
+ sub_80EEFBC(7);
+ }
+}
+
+bool8 sub_80EFBDC(bool8 a)
+{
+ bool8 retVal = TRUE;
+ u16 var1 = gUnknown_083DFEC4->unk7698;
+
+ if (a)
+ {
+ if (var1 > 168)
+ {
+ var1 = var1 - 8;
+ }
+ else
+ {
+ var1 = 160;
+ retVal = FALSE;
+ }
+ }
+ else
+ {
+ if (var1 < 248)
+ {
+ var1 = var1 + 8;
+ }
+ else
+ {
+ var1 = 256;
+ retVal = FALSE;
+ }
+ }
+
+ gUnknown_083DFEC4->unk7698 = var1;
+ REG_BG0VOFS = var1 & 0xFF;
+
+ return retVal;
+}
+
+void sub_80EFC3C(void)
+{
+ gUnknown_083DFEC4->unkBC9A = 0;
+ gUnknown_083DFEC4->unkBC9B = 0;
+ sub_80EFD3C();
+}
+
+#ifdef NONMATCHING // "var1 = gUnknown_083DFEC4->unkBC9A;" is the only thing that doesnt' match.
+bool8 sub_80EFC64(void)
+{
+ u16 i;
+ u16 var1;
+ u16 var2;
+
+ if (gUnknown_083DFEC4->unkBC9A < 16)
+ {
+ var1 = gUnknown_083DFEC4->unkBC9A;
+ var2 = gUnknown_083DFEC4->unkBC9B;
+ for (i = 0; i < 2; i++)
+ {
+ if (gPokenavCityMaps[var1][i] != 0)
+ {
+ LZ77UnCompVram(gPokenavCityMaps[var1][i], gUnknown_083DFEC4->unkBC9C[var2]);
+ gUnknown_083DFEC4->unkCDCC[var1][i] = gUnknown_083DFEC4->unkBC9C[var2];
+ var2++;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unkCDCC[var1][i] = NULL;
+ }
+ }
+
+ gUnknown_083DFEC4->unkBC9A++;
+ if (gUnknown_083DFEC4->unkBC9A < 16)
+ {
+ gUnknown_083DFEC4->unkBC9B = var2;
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+#else
+__attribute__((naked))
+bool8 sub_80EFC64(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ sub sp, 0x8\n\
+ ldr r4, _080EFCD0 @ =gUnknown_083DFEC4\n\
+ ldr r2, [r4]\n\
+ ldr r0, _080EFCD4 @ =0x0000bc9a\n\
+ adds r1, r2, r0\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0xF\n\
+ bhi _080EFD2C\n\
+ ldrb r1, [r1]\n\
+ mov r8, r1\n\
+ ldr r1, _080EFCD8 @ =0x0000bc9b\n\
+ adds r0, r2, r1\n\
+ ldrb r7, [r0]\n\
+ movs r2, 0\n\
+ ldr r0, _080EFCDC @ =gPokenavCityMaps\n\
+ mov r9, r0\n\
+ adds r3, r4, 0\n\
+_080EFC8E:\n\
+ lsls r0, r2, 2\n\
+ mov r4, r8\n\
+ lsls r1, r4, 3\n\
+ adds r6, r0, r1\n\
+ mov r1, r9\n\
+ adds r0, r6, r1\n\
+ ldr r1, [r0]\n\
+ cmp r1, 0\n\
+ beq _080EFCE8\n\
+ movs r0, 0xC8\n\
+ adds r5, r7, 0\n\
+ muls r5, r0\n\
+ ldr r4, _080EFCE0 @ =0x0000bc9c\n\
+ adds r5, r4\n\
+ ldr r4, [r3]\n\
+ adds r5, r4, r5\n\
+ adds r0, r1, 0\n\
+ adds r1, r5, 0\n\
+ str r2, [sp]\n\
+ str r3, [sp, 0x4]\n\
+ bl LZ77UnCompVram\n\
+ ldr r0, _080EFCE4 @ =0x0000cdcc\n\
+ adds r4, r0\n\
+ adds r4, r6\n\
+ str r5, [r4]\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ ldr r2, [sp]\n\
+ ldr r3, [sp, 0x4]\n\
+ b _080EFCF2\n\
+ .align 2, 0\n\
+_080EFCD0: .4byte gUnknown_083DFEC4\n\
+_080EFCD4: .4byte 0x0000bc9a\n\
+_080EFCD8: .4byte 0x0000bc9b\n\
+_080EFCDC: .4byte gPokenavCityMaps\n\
+_080EFCE0: .4byte 0x0000bc9c\n\
+_080EFCE4: .4byte 0x0000cdcc\n\
+_080EFCE8:\n\
+ ldr r0, [r3]\n\
+ ldr r4, _080EFD1C @ =0x0000cdcc\n\
+ adds r0, r4\n\
+ adds r0, r6\n\
+ str r1, [r0]\n\
+_080EFCF2:\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x1\n\
+ bls _080EFC8E\n\
+ ldr r0, _080EFD20 @ =gUnknown_083DFEC4\n\
+ ldr r2, [r0]\n\
+ ldr r0, _080EFD24 @ =0x0000bc9a\n\
+ adds r1, r2, r0\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0xF\n\
+ bhi _080EFD2C\n\
+ ldr r1, _080EFD28 @ =0x0000bc9b\n\
+ adds r0, r2, r1\n\
+ strb r7, [r0]\n\
+ movs r0, 0x1\n\
+ b _080EFD2E\n\
+ .align 2, 0\n\
+_080EFD1C: .4byte 0x0000cdcc\n\
+_080EFD20: .4byte gUnknown_083DFEC4\n\
+_080EFD24: .4byte 0x0000bc9a\n\
+_080EFD28: .4byte 0x0000bc9b\n\
+_080EFD2C:\n\
+ movs r0, 0\n\
+_080EFD2E:\n\
+ add sp, 0x8\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80EFD3C(void)
+{
+ gUnknown_083DFEC4->unk769E = 0;
+ gUnknown_083DFEC4->unk769C = 47;
+ gUnknown_083DFEC4->unk769D = 0;
+ gUnknown_083DFEC4->unk769A = 0;
+}
+
+void sub_80EFD74(void)
+{
+ gUnknown_083DFEC4->unk769E = 1;
+
+ if (gUnknown_083DFEC4->unk769D == 1)
+ {
+ gUnknown_083DFEC4->unk769D = 2;
+ }
+}
+
+void sub_80EFDA0(void)
+{
+ sub_8095C8C((void *)VRAM + 0xF800, 14, 16, gUnknown_08E9AC2C, 0, 0, 15, 1, 15);
+ gUnknown_083DFEC4->unk769E = 0;
+}
+
+void sub_80EFDE4(u8 param0)
+{
+ u16 var1 = 60 - gUnknown_083DFEC4->unk769C;
+
+ if (var1 > 15)
+ {
+ var1 = 15;
+ }
+
+ if (gUnknown_083DFEC4->unk769E != 0)
+ {
+ sub_8095C8C((void *)VRAM + 0xF800, 14, 16, gUnknown_08E9ABB4, gUnknown_083DFEC4->unk769C, 0, var1, 1, 60);
+
+ if (var1 < 15)
+ {
+ u16 var2 = var1 + 14;
+
+ sub_8095C8C((void *)VRAM + 0xF800, var2, 16, gUnknown_08E9ABB4, 0, 0, (u16)(15 - var1), 1, 60);
+ }
+ }
+}
+
+void sub_80EFE7C(void)
+{
+ u16 var1;
+ u8 var2 = gUnknown_083DFEC4->unk769D;
+
+ switch (var2)
+ {
+ case 0:
+ var1 = ++gUnknown_083DFEC4->unk769C;
+
+ if (var1 > 59)
+ {
+ gUnknown_083DFEC4->unk769C = var2;
+ }
+
+ sub_80EFDE4(gUnknown_083DFEC4->unk769E);
+
+ switch (gUnknown_083DFEC4->unk769C)
+ {
+ case 0:
+ case 15:
+ case 30:
+ case 45:
+ gUnknown_083DFEC4->unk769D = 1;
+ gUnknown_083DFEC4->unk769A = 0;
+ break;
+ }
+ break;
+ case 1:
+ var1 = ++gUnknown_083DFEC4->unk769A;
+ if (var1 > 120)
+ {
+ gUnknown_083DFEC4->unk769A = 0;
+ gUnknown_083DFEC4->unk769D = 0;
+ }
+ break;
+ case 2:
+ sub_80EFDE4(1);
+ gUnknown_083DFEC4->unk769D = 1;
+ break;
+ }
+}
+
+void sub_80EFF34(void)
+{
+ gUnknown_083DFEC4->unkD160 = 0;
+
+ if (gUnknown_083DFEC4->unk6DAC == 0)
+ {
+ while (sub_80EFF68());
+ }
+}
+
+bool8 sub_80EFF68(void)
+{
+ switch (gUnknown_083DFEC4->unkD160)
+ {
+ case 0:
+ sub_80EEDE8();
+ gUnknown_083DFEC4->unkD162[0] = 11;
+ break;
+ case 1:
+ SetUpWindowConfig(&gWindowConfig_81E7080);
+ break;
+ case 2:
+ MultistepInitMenuWindowBegin(&gWindowConfig_81E7080);
+ break;
+ case 3:
+ if (!MultistepInitMenuWindowContinue())
+ {
+ return TRUE;
+ }
+ break;
+ case 4:
+ MenuZeroFillScreen();
+ break;
+ case 5:
+ sub_80F1614();
+ break;
+ case 6:
+ if (sub_80F162C(0))
+ {
+ return TRUE;
+ }
+ break;
+ case 7:
+ LZ77UnCompVram(gPokenavConditionView_Gfx, (void *)VRAM + 0x5000);
+ break;
+ case 8:
+ LZ77UnCompVram(gUnknown_08E9AC4C, (void *)VRAM + 0xF000);
+ LoadPalette(gPokenavConditionMenu2_Pal, 0x20, 0x20);
+ break;
+ case 9:
+ if (gUnknown_083DFEC4->unk76AA == 1)
+ {
+ sub_8095C8C((void *)VRAM + 0xF000, 0, 5, gUnknown_083E01AC, 0, 0, 9, 4, 9);
+ }
+ break;
+ case 10:
+ LZ77UnCompVram(gUnknown_08E9FEB4, (void *)VRAM + 0xB800);
+ break;
+ case 11:
+ LoadPalette(gUnknown_083E0254, 0x30, 0x20);
+ LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
+ LoadPalette(&gPokenavConditionMenu2_Pal[2], 0xB1, 0x2);
+ LoadPalette(&gPokenavConditionMenu2_Pal[16], 0xB5, 0x2);
+ LoadPalette(&gPokenavConditionMenu2_Pal[30], 0xBF, 0x2);
+ sub_80F01A4();
+ break;
+ case 12:
+ sub_80F01E0((u16)gUnknown_083DFEC4->unk8fe9);
+ break;
+ case 13:
+ REG_BG3CNT = 0x1E03;
+ REG_BG2CNT = 0x1702;
+ REG_BLDCNT = 0x844;
+ REG_BLDALPHA = 0x40B;
+ break;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unkD160++;
+ return TRUE;
+}
+
+void sub_80F0174(bool8 a)
+{
+ if (a)
+ {
+ REG_DISPCNT |= DISPCNT_BG2_ON;
+ }
+ else
+ {
+ REG_DISPCNT &= ~DISPCNT_BG2_ON;
+ }
+}
+
+void sub_80F01A4(void)
+{
+ REG_WIN0H = WIN_RANGE(0, 240);
+ REG_WIN1H = WIN_RANGE(0, 155);
+ REG_WIN0V = WIN_RANGE(56, 121);
+ REG_WIN1V = WIN_RANGE(56, 121);
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x001B;
+}
+
+void sub_80F01E0(u16 a)
+{
+ MenuPrint(gUnknown_083DFEC4->unk8829[a], 13, 1);
+
+ if (gUnknown_083DFEC4->unk76AA == 1)
+ {
+ MenuPrint(gUnknown_083DFEC4->unk88E9[a], 13, 3);
+ sub_80F443C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk2);
+ MenuPrint(gUnknown_083DFEC4->unk8788, 1, 6);
+ }
+}
+
+void sub_80F0264(u8 a)
+{
+ gUnknown_083DFEC4->unk306 = 0;
+ gUnknown_083DFEC4->unk87CA = a;
+
+ if (gUnknown_083DFEC4->unk6DAC == 0)
+ {
+ while (sub_80F02A0());
+ }
+}
+
+#ifdef NONMATCHING // small nonmatching part is in the third else clause in case 7.
+bool8 sub_80F02A0(void)
+{
+ const u16 *pointer;
+
+ switch (gUnknown_083DFEC4->unk306)
+ {
+ case 0:
+ sub_80EEDE8();
+
+ gUnknown_083DFEC4->unk87C8 = gUnknown_083DFEC4->unk87CA == 1;
+ gUnknown_083DFEC4->unkD162[0] = 11;
+ break;
+ case 1:
+ SetUpWindowConfig(&gWindowConfig_81E70D4);
+ break;
+ case 2:
+ MultistepInitMenuWindowBegin(&gWindowConfig_81E70D4);
+ break;
+ case 3:
+ if (!MultistepInitMenuWindowContinue())
+ {
+ return TRUE;
+ }
+ break;
+ case 4:
+ MenuZeroFillScreen();
+ break;
+ case 5:
+ LZ77UnCompVram(gUnknown_08E9FC64, (void *)VRAM + 0xE800);
+ break;
+ case 6:
+ LZ77UnCompVram(gPokenavConditionSearch2_Gfx, (void *)VRAM + 0x8000);
+ break;
+ case 7:
+ LoadPalette(gUnknown_083E02B4, 0xB0, 0x20);
+ LoadPalette(gUnknown_083E02B4, 0xF0, 0x20);
+ LoadPalette(gUnknown_083E0334, 0x40, 0x20);
+
+ if (gUnknown_083DFEC4->unk87CA == 0)
+ {
+ LoadPalette(gPokenavConditionSearch2_Pal, 0x30, 0x20);
+ gPlttBufferUnfaded[0] = gPokenavConditionSearch2_Pal[5];
+ LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
+ LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2);
+ LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2);
+ LoadPalette(&gPokenavConditionSearch2_Pal[5], 0xBF, 0x2);
+ }
+ else if (gUnknown_083DFEC4->unk87CA == 1)
+ {
+ LoadPalette(gUnknown_083E0274, 0x30, 0x20);
+ gPlttBufferUnfaded[0] = gUnknown_083E0274[5];
+ LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
+ LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2);
+ LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2);
+ LoadPalette(&gUnknown_083E0274[5], 0xBF, 0x2);
+ }
+ else
+ {
+ LoadPalette(gUnknown_08E9F9E8, 0x30, 0x20);
+ pointer = &gUnknown_08E9F9E8[5];
+ gPlttBufferUnfaded[0] = gUnknown_08E9F9E8[5];
+ LoadPalette(gUnknown_083E0314, 0x50, 0x20);
+ LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2);
+ LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2);
+ LoadPalette(pointer, 0xBF, 0x2);
+ LoadPalette(pointer, 0x5F, 0x2);
+ }
+ break;
+ case 8:
+ if (gUnknown_083DFEC4->unk87CA != 2)
+ {
+ sub_8095C8C((void *)VRAM + 0xE800, 0, 5, gUnknown_08E9FD1C, 0, 0, 9, 4, 9);
+ }
+ else
+ {
+ sub_8095C8C((void *)VRAM + 0xE800, 0, 4, gUnknown_08E9FE54, 0, 0, 12, 10, 12);
+ sub_8095C8C((void *)VRAM + 0xE800, 0, 8, gUnknown_08E9FD64, 0, 0, 12, 10, 12);
+ }
+ break;
+ case 9:
+ LZ77UnCompVram(gUnknown_083E0354, (void *)VRAM + 0x5000);
+ break;
+ case 10:
+ DmaClear16(3, (void *)VRAM + 0xF800, 0x800);
+ break;
+ case 11:
+ sub_80F0900();
+ break;
+ case 12:
+ if (sub_80F0944())
+ {
+ return TRUE;
+ }
+ break;
+ case 13:
+ if (gUnknown_083DFEC4->unk87CA != 2)
+ {
+ ShowMapNamePopUpWindow();
+ }
+ else
+ {
+ sub_80F081C(0);
+ sub_80F0FFC(gUnknown_083DFEC4->unk876E);
+ }
+ break;
+ case 14:
+ REG_BG2CNT = 0x1D0A;
+ REG_BG3CNT = 0x1E03;
+ REG_BG0CNT = 0x1F01;
+ REG_BG3VOFS = 0xF8;
+
+ gUnknown_083DFEC4->unk8776 = 0xF8;
+ gUnknown_083DFEC4->unk8778 = 0;
+
+ REG_BLDCNT = 0;
+ gUnknown_083DFEC4->unkD160++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unk306++;
+ return TRUE;
+}
+#else
+__attribute__((naked))
+bool8 sub_80F02A0(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ mov r6, r8\n\
+ push {r6}\n\
+ sub sp, 0x18\n\
+ ldr r1, _080F02C4 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r1]\n\
+ ldr r2, _080F02C8 @ =0x00000306\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ adds r2, r1, 0\n\
+ cmp r0, 0xE\n\
+ bls _080F02BA\n\
+ b _080F05FA\n\
+_080F02BA:\n\
+ lsls r0, 2\n\
+ ldr r1, _080F02CC @ =_080F02D0\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_080F02C4: .4byte gUnknown_083DFEC4\n\
+_080F02C8: .4byte 0x00000306\n\
+_080F02CC: .4byte _080F02D0\n\
+ .align 2, 0\n\
+_080F02D0:\n\
+ .4byte _080F030C\n\
+ .4byte _080F0344\n\
+ .4byte _080F0350\n\
+ .4byte _080F035C\n\
+ .4byte _080F0368\n\
+ .4byte _080F036E\n\
+ .4byte _080F0380\n\
+ .4byte _080F0394\n\
+ .4byte _080F04BC\n\
+ .4byte _080F053C\n\
+ .4byte _080F0550\n\
+ .4byte _080F0574\n\
+ .4byte _080F057A\n\
+ .4byte _080F0586\n\
+ .4byte _080F05BC\n\
+_080F030C:\n\
+ bl sub_80EEDE8\n\
+ ldr r0, _080F0334 @ =gUnknown_083DFEC4\n\
+ ldr r1, [r0]\n\
+ movs r2, 0\n\
+ ldr r3, _080F0338 @ =0x000087ca\n\
+ adds r0, r1, r3\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _080F0322\n\
+ movs r2, 0x1\n\
+_080F0322:\n\
+ ldr r3, _080F033C @ =0x000087c8\n\
+ adds r0, r1, r3\n\
+ strb r2, [r0]\n\
+ ldr r0, _080F0340 @ =0x0000d162\n\
+ adds r1, r0\n\
+ movs r0, 0xB\n\
+ strb r0, [r1]\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F0334: .4byte gUnknown_083DFEC4\n\
+_080F0338: .4byte 0x000087ca\n\
+_080F033C: .4byte 0x000087c8\n\
+_080F0340: .4byte 0x0000d162\n\
+_080F0344:\n\
+ ldr r0, _080F034C @ =gWindowConfig_81E70D4\n\
+ bl SetUpWindowConfig\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F034C: .4byte gWindowConfig_81E70D4\n\
+_080F0350:\n\
+ ldr r0, _080F0358 @ =gWindowConfig_81E70D4\n\
+ bl MultistepInitMenuWindowBegin\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F0358: .4byte gWindowConfig_81E70D4\n\
+_080F035C:\n\
+ bl MultistepInitMenuWindowContinue\n\
+ cmp r0, 0\n\
+ beq _080F0366\n\
+ b _080F0618\n\
+_080F0366:\n\
+ b _080F0626\n\
+_080F0368:\n\
+ bl MenuZeroFillScreen\n\
+ b _080F0618\n\
+_080F036E:\n\
+ ldr r0, _080F0378 @ =gUnknown_08E9FC64\n\
+ ldr r1, _080F037C @ =0x0600e800\n\
+ bl LZ77UnCompVram\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F0378: .4byte gUnknown_08E9FC64\n\
+_080F037C: .4byte 0x0600e800\n\
+_080F0380:\n\
+ ldr r0, _080F038C @ =gPokenavConditionSearch2_Gfx\n\
+ ldr r1, _080F0390 @ =0x06008000\n\
+ bl LZ77UnCompVram\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F038C: .4byte gPokenavConditionSearch2_Gfx\n\
+_080F0390: .4byte 0x06008000\n\
+_080F0394:\n\
+ ldr r6, _080F03FC @ =gUnknown_083E02B4\n\
+ adds r0, r6, 0\n\
+ movs r1, 0xB0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ adds r0, r6, 0\n\
+ movs r1, 0xF0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ ldr r0, _080F0400 @ =gUnknown_083E0334\n\
+ movs r1, 0x40\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ ldr r0, _080F0404 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080F0408 @ =0x000087ca\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080F0418\n\
+ ldr r4, _080F040C @ =gPokenavConditionSearch2_Pal\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x30\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ ldr r1, _080F0410 @ =gPlttBufferUnfaded\n\
+ ldrh r0, [r4, 0xA]\n\
+ strh r0, [r1]\n\
+ ldr r0, _080F0414 @ =gUnknownPalette_81E6692\n\
+ movs r1, 0xB0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ adds r0, r6, 0x2\n\
+ movs r1, 0xB1\n\
+ movs r2, 0x2\n\
+ bl LoadPalette\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x10\n\
+ movs r1, 0xB5\n\
+ movs r2, 0x2\n\
+ bl LoadPalette\n\
+ adds r4, 0xA\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xBF\n\
+ b _080F04A8\n\
+ .align 2, 0\n\
+_080F03FC: .4byte gUnknown_083E02B4\n\
+_080F0400: .4byte gUnknown_083E0334\n\
+_080F0404: .4byte gUnknown_083DFEC4\n\
+_080F0408: .4byte 0x000087ca\n\
+_080F040C: .4byte gPokenavConditionSearch2_Pal\n\
+_080F0410: .4byte gPlttBufferUnfaded\n\
+_080F0414: .4byte gUnknownPalette_81E6692\n\
+_080F0418:\n\
+ cmp r0, 0x1\n\
+ bne _080F0464\n\
+ ldr r4, _080F0458 @ =gUnknown_083E0274\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x30\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ ldr r1, _080F045C @ =gPlttBufferUnfaded\n\
+ ldrh r0, [r4, 0xA]\n\
+ strh r0, [r1]\n\
+ ldr r0, _080F0460 @ =gUnknownPalette_81E6692\n\
+ movs r1, 0xB0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ adds r0, r6, 0x2\n\
+ movs r1, 0xB1\n\
+ movs r2, 0x2\n\
+ bl LoadPalette\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x10\n\
+ movs r1, 0xB5\n\
+ movs r2, 0x2\n\
+ bl LoadPalette\n\
+ adds r4, 0xA\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xBF\n\
+ b _080F04A8\n\
+ .align 2, 0\n\
+_080F0458: .4byte gUnknown_083E0274\n\
+_080F045C: .4byte gPlttBufferUnfaded\n\
+_080F0460: .4byte gUnknownPalette_81E6692\n\
+_080F0464:\n\
+ ldr r4, _080F04B0 @ =gUnknown_08E9F9E8\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x30\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ ldr r1, _080F04B4 @ =gPlttBufferUnfaded\n\
+ adds r5, r4, 0\n\
+ adds r5, 0xA\n\
+ ldrh r0, [r4, 0xA]\n\
+ strh r0, [r1]\n\
+ ldr r0, _080F04B8 @ =gUnknown_083E0314\n\
+ movs r1, 0x50\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ adds r0, r6, 0x2\n\
+ movs r1, 0xB1\n\
+ movs r2, 0x2\n\
+ bl LoadPalette\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x10\n\
+ movs r1, 0xB5\n\
+ movs r2, 0x2\n\
+ bl LoadPalette\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xBF\n\
+ movs r2, 0x2\n\
+ bl LoadPalette\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x5F\n\
+_080F04A8:\n\
+ movs r2, 0x2\n\
+ bl LoadPalette\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F04B0: .4byte gUnknown_08E9F9E8\n\
+_080F04B4: .4byte gPlttBufferUnfaded\n\
+_080F04B8: .4byte gUnknown_083E0314\n\
+_080F04BC:\n\
+ ldr r0, _080F04E8 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ ldr r2, _080F04EC @ =0x000087ca\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x2\n\
+ beq _080F04F8\n\
+ ldr r0, _080F04F0 @ =0x0600e800\n\
+ ldr r3, _080F04F4 @ =gUnknown_08E9FD1C\n\
+ movs r1, 0\n\
+ str r1, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ movs r2, 0x9\n\
+ str r2, [sp, 0x8]\n\
+ movs r1, 0x4\n\
+ str r1, [sp, 0xC]\n\
+ str r2, [sp, 0x10]\n\
+ movs r1, 0\n\
+ movs r2, 0x5\n\
+ bl sub_8095C8C\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F04E8: .4byte gUnknown_083DFEC4\n\
+_080F04EC: .4byte 0x000087ca\n\
+_080F04F0: .4byte 0x0600e800\n\
+_080F04F4: .4byte gUnknown_08E9FD1C\n\
+_080F04F8:\n\
+ ldr r3, _080F0530 @ =0x0600e800\n\
+ mov r8, r3\n\
+ ldr r3, _080F0534 @ =gUnknown_08E9FE54\n\
+ movs r4, 0\n\
+ str r4, [sp]\n\
+ str r4, [sp, 0x4]\n\
+ movs r5, 0xC\n\
+ str r5, [sp, 0x8]\n\
+ movs r6, 0xA\n\
+ str r6, [sp, 0xC]\n\
+ str r5, [sp, 0x10]\n\
+ mov r0, r8\n\
+ movs r1, 0\n\
+ movs r2, 0x4\n\
+ bl sub_8095C8C\n\
+ ldr r3, _080F0538 @ =gUnknown_08E9FD64\n\
+ str r4, [sp]\n\
+ str r4, [sp, 0x4]\n\
+ str r5, [sp, 0x8]\n\
+ str r6, [sp, 0xC]\n\
+ str r5, [sp, 0x10]\n\
+ mov r0, r8\n\
+ movs r1, 0\n\
+ movs r2, 0x8\n\
+ bl sub_8095C8C\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F0530: .4byte 0x0600e800\n\
+_080F0534: .4byte gUnknown_08E9FE54\n\
+_080F0538: .4byte gUnknown_08E9FD64\n\
+_080F053C:\n\
+ ldr r0, _080F0548 @ =gUnknown_083E0354\n\
+ ldr r1, _080F054C @ =0x06005000\n\
+ bl LZ77UnCompVram\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F0548: .4byte gUnknown_083E0354\n\
+_080F054C: .4byte 0x06005000\n\
+_080F0550:\n\
+ ldr r2, _080F0568 @ =0x0600f800\n\
+ add r1, sp, 0x14\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ ldr r0, _080F056C @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _080F0570 @ =0x81000400\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F0568: .4byte 0x0600f800\n\
+_080F056C: .4byte 0x040000d4\n\
+_080F0570: .4byte 0x81000400\n\
+_080F0574:\n\
+ bl sub_80F0900\n\
+ b _080F0618\n\
+_080F057A:\n\
+ bl sub_80F0944\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080F0618\n\
+ b _080F0626\n\
+_080F0586:\n\
+ ldr r0, _080F059C @ =gUnknown_083DFEC4\n\
+ ldr r4, [r0]\n\
+ ldr r1, _080F05A0 @ =0x000087ca\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x2\n\
+ beq _080F05A4\n\
+ bl ShowMapNamePopUpWindow\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F059C: .4byte gUnknown_083DFEC4\n\
+_080F05A0: .4byte 0x000087ca\n\
+_080F05A4:\n\
+ movs r0, 0\n\
+ bl sub_80F081C\n\
+ ldr r2, _080F05B8 @ =0x0000876e\n\
+ adds r0, r4, r2\n\
+ ldrb r0, [r0]\n\
+ bl sub_80F0FFC\n\
+ b _080F0618\n\
+ .align 2, 0\n\
+_080F05B8: .4byte 0x0000876e\n\
+_080F05BC:\n\
+ ldr r1, _080F0600 @ =REG_BG2CNT\n\
+ ldr r3, _080F0604 @ =0x00001d0a\n\
+ adds r0, r3, 0\n\
+ strh r0, [r1]\n\
+ adds r1, 0x2\n\
+ adds r3, 0xF9\n\
+ adds r0, r3, 0\n\
+ strh r0, [r1]\n\
+ subs r1, 0x6\n\
+ adds r3, 0xFE\n\
+ adds r0, r3, 0\n\
+ strh r0, [r1]\n\
+ adds r1, 0x16\n\
+ movs r0, 0xF8\n\
+ strh r0, [r1]\n\
+ ldr r1, [r2]\n\
+ ldr r0, _080F0608 @ =0x00008776\n\
+ adds r2, r1, r0\n\
+ movs r3, 0\n\
+ movs r0, 0xF8\n\
+ strh r0, [r2]\n\
+ ldr r2, _080F060C @ =0x00008778\n\
+ adds r0, r1, r2\n\
+ strh r3, [r0]\n\
+ ldr r0, _080F0610 @ =REG_BLDCNT\n\
+ strh r3, [r0]\n\
+ ldr r3, _080F0614 @ =0x0000d160\n\
+ adds r1, r3\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+_080F05FA:\n\
+ movs r0, 0\n\
+ b _080F0628\n\
+ .align 2, 0\n\
+_080F0600: .4byte REG_BG2CNT\n\
+_080F0604: .4byte 0x00001d0a\n\
+_080F0608: .4byte 0x00008776\n\
+_080F060C: .4byte 0x00008778\n\
+_080F0610: .4byte REG_BLDCNT\n\
+_080F0614: .4byte 0x0000d160\n\
+_080F0618:\n\
+ ldr r0, _080F0634 @ =gUnknown_083DFEC4\n\
+ ldr r1, [r0]\n\
+ ldr r0, _080F0638 @ =0x00000306\n\
+ adds r1, r0\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+_080F0626:\n\
+ movs r0, 0x1\n\
+_080F0628:\n\
+ add sp, 0x18\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r6}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080F0634: .4byte gUnknown_083DFEC4\n\
+_080F0638: .4byte 0x00000306\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING