diff options
-rw-r--r-- | asm/pokenav.s | 2053 | ||||
-rw-r--r-- | include/pokenav.h | 47 | ||||
-rw-r--r-- | include/region_map.h | 8 | ||||
-rw-r--r-- | src/field/region_map.c | 168 | ||||
-rw-r--r-- | src/pokenav_before.c | 1857 |
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 |