summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokenav.s712
-rw-r--r--include/pokenav.h8
-rw-r--r--src/pokenav_before.c243
3 files changed, 237 insertions, 726 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s
index d228ac443..f82d5507e 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -6,718 +6,6 @@
.text
- thumb_func_start sub_80EEFBC
-sub_80EEFBC: @ 80EEFBC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080EEFF4 @ =0x0600d800
- ldr r3, _080EEFF8 @ =gUnknown_08E9A100
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r1, 0x11
- str r1, [sp, 0x8]
- movs r1, 0x2
- str r1, [sp, 0xC]
- movs r1, 0
- movs r2, 0x16
- bl sub_809D104
- cmp r4, 0xB
- bls _080EEFE8
- b _080EF234
-_080EEFE8:
- lsls r0, r4, 2
- ldr r1, _080EEFFC @ =_080EF000
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080EEFF4: .4byte 0x0600d800
-_080EEFF8: .4byte gUnknown_08E9A100
-_080EEFFC: .4byte _080EF000
- .align 2, 0
-_080EF000:
- .4byte _080EF030
- .4byte _080EF234
- .4byte _080EF08C
- .4byte _080EF100
- .4byte _080EF13C
- .4byte _080EF1D4
- .4byte _080EF234
- .4byte _080EF178
- .4byte _080EF190
- .4byte _080EF1D4
- .4byte _080EF218
- .4byte _080EF06C
-_080EF030:
- ldr r6, _080EF064 @ =0x0600d800
- ldr r0, _080EF068 @ =gUnknown_08E9A100
- mov r8, r0
- movs r0, 0x11
- str r0, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- movs r0, 0xA
- str r0, [sp, 0x8]
- movs r5, 0x2
- str r5, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0x16
- mov r3, r8
- bl sub_809D104
- str r4, [sp]
- movs r0, 0x6
- str r0, [sp, 0x4]
- movs r0, 0x7
- str r0, [sp, 0x8]
- str r5, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0xA
- b _080EF204
- .align 2, 0
-_080EF064: .4byte 0x0600d800
-_080EF068: .4byte gUnknown_08E9A100
-_080EF06C:
- ldr r0, _080EF084 @ =0x0600d800
- ldr r3, _080EF088 @ =gUnknown_08E9A100
- movs r1, 0
- str r1, [sp]
- movs r1, 0x6
- str r1, [sp, 0x4]
- movs r1, 0x7
- str r1, [sp, 0x8]
- movs r1, 0x2
- str r1, [sp, 0xC]
- movs r1, 0x8
- b _080EF0EE
- .align 2, 0
-_080EF084: .4byte 0x0600d800
-_080EF088: .4byte gUnknown_08E9A100
-_080EF08C:
- ldr r0, _080EF0C8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EF0CC @ =0x00006dac
- adds r0, r1
- ldrb r7, [r0]
- cmp r7, 0
- bne _080EF0D8
- ldr r5, _080EF0D0 @ =0x0600d800
- ldr r6, _080EF0D4 @ =gUnknown_08E9A100
- movs r0, 0xA
- str r0, [sp]
- movs r4, 0x2
- str r4, [sp, 0x4]
- str r0, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x16
- adds r3, r6, 0
- bl sub_809D104
- str r7, [sp]
- movs r0, 0x6
- str r0, [sp, 0x4]
- movs r0, 0x7
- str r0, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0xA
- b _080EF1C2
- .align 2, 0
-_080EF0C8: .4byte gUnknown_083DFEC4
-_080EF0CC: .4byte 0x00006dac
-_080EF0D0: .4byte 0x0600d800
-_080EF0D4: .4byte gUnknown_08E9A100
-_080EF0D8:
- ldr r0, _080EF0F8 @ =0x0600d800
- ldr r3, _080EF0FC @ =gUnknown_08E9A100
- movs r1, 0
- str r1, [sp]
- movs r1, 0x6
- str r1, [sp, 0x4]
- movs r1, 0x7
- str r1, [sp, 0x8]
- movs r1, 0x2
- str r1, [sp, 0xC]
- movs r1, 0xA
-_080EF0EE:
- movs r2, 0x16
- bl sub_809D104
- b _080EF234
- .align 2, 0
-_080EF0F8: .4byte 0x0600d800
-_080EF0FC: .4byte gUnknown_08E9A100
-_080EF100:
- ldr r6, _080EF134 @ =0x0600d800
- ldr r0, _080EF138 @ =gUnknown_08E9A100
- mov r8, r0
- movs r5, 0
- str r5, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- movs r0, 0xA
- str r0, [sp, 0x8]
- movs r4, 0x2
- str r4, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0x16
- mov r3, r8
- bl sub_809D104
- str r5, [sp]
- movs r0, 0x6
- str r0, [sp, 0x4]
- movs r0, 0x7
- str r0, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0xA
- b _080EF204
- .align 2, 0
-_080EF134: .4byte 0x0600d800
-_080EF138: .4byte gUnknown_08E9A100
-_080EF13C:
- ldr r5, _080EF170 @ =0x0600d800
- ldr r6, _080EF174 @ =gUnknown_08E9A100
- movs r0, 0x14
- str r0, [sp]
- movs r4, 0x2
- str r4, [sp, 0x4]
- movs r0, 0xA
- str r0, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x16
- adds r3, r6, 0
- bl sub_809D104
- movs r0, 0
- str r0, [sp]
- movs r0, 0x6
- str r0, [sp, 0x4]
- movs r0, 0x7
- str r0, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0xA
- b _080EF1C2
- .align 2, 0
-_080EF170: .4byte 0x0600d800
-_080EF174: .4byte gUnknown_08E9A100
-_080EF178:
- ldr r5, _080EF188 @ =0x0600d800
- ldr r6, _080EF18C @ =gUnknown_08E9A100
- movs r1, 0xA
- str r1, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- b _080EF1A0
- .align 2, 0
-_080EF188: .4byte 0x0600d800
-_080EF18C: .4byte gUnknown_08E9A100
-_080EF190:
- ldr r5, _080EF1CC @ =0x0600d800
- ldr r6, _080EF1D0 @ =gUnknown_08E9A100
- movs r0, 0x14
- str r0, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- movs r0, 0xA
- str r0, [sp, 0x8]
-_080EF1A0:
- movs r4, 0x2
- str r4, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x16
- adds r3, r6, 0
- bl sub_809D104
- movs r0, 0
- str r0, [sp]
- movs r0, 0x6
- str r0, [sp, 0x4]
- movs r0, 0x7
- str r0, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0x7
-_080EF1C2:
- movs r2, 0x16
- adds r3, r6, 0
- bl sub_809D104
- b _080EF234
- .align 2, 0
-_080EF1CC: .4byte 0x0600d800
-_080EF1D0: .4byte gUnknown_08E9A100
-_080EF1D4:
- ldr r6, _080EF210 @ =0x0600d800
- ldr r1, _080EF214 @ =gUnknown_08E9A100
- mov r8, r1
- movs r5, 0
- str r5, [sp]
- movs r4, 0x2
- str r4, [sp, 0x4]
- movs r0, 0xA
- str r0, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0x16
- mov r3, r8
- bl sub_809D104
- str r5, [sp]
- movs r0, 0x6
- str r0, [sp, 0x4]
- movs r0, 0x7
- str r0, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0x8
-_080EF204:
- movs r2, 0x16
- mov r3, r8
- bl sub_809D104
- b _080EF234
- .align 2, 0
-_080EF210: .4byte 0x0600d800
-_080EF214: .4byte gUnknown_08E9A100
-_080EF218:
- ldr r0, _080EF240 @ =0x0600d800
- ldr r3, _080EF244 @ =gUnknown_08E9A100
- movs r1, 0
- str r1, [sp]
- movs r1, 0x6
- str r1, [sp, 0x4]
- movs r1, 0x7
- str r1, [sp, 0x8]
- movs r1, 0x2
- str r1, [sp, 0xC]
- movs r1, 0x8
- movs r2, 0x16
- bl sub_809D104
-_080EF234:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF240: .4byte 0x0600d800
-_080EF244: .4byte gUnknown_08E9A100
- thumb_func_end sub_80EEFBC
-
- thumb_func_start sub_80EF248
-sub_80EF248: @ 80EF248
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080EF278 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080EF27C @ =0x0000d160
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- ldr r1, _080EF280 @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EF270
-_080EF264:
- adds r0, r4, 0
- bl sub_80EF284
- lsls r0, 24
- cmp r0, 0
- bne _080EF264
-_080EF270:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF278: .4byte gUnknown_083DFEC4
-_080EF27C: .4byte 0x0000d160
-_080EF280: .4byte 0x00006dac
- thumb_func_end sub_80EF248
-
- thumb_func_start sub_80EF284
-sub_80EF284: @ 80EF284
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080EF2A8 @ =gUnknown_083DFEC4
- ldr r0, [r1]
- ldr r3, _080EF2AC @ =0x0000d160
- adds r0, r3
- ldrh r0, [r0]
- adds r3, r1, 0
- cmp r0, 0xB
- bls _080EF29C
- b _080EF3F6
-_080EF29C:
- lsls r0, 2
- ldr r1, _080EF2B0 @ =_080EF2B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080EF2A8: .4byte gUnknown_083DFEC4
-_080EF2AC: .4byte 0x0000d160
-_080EF2B0: .4byte _080EF2B4
- .align 2, 0
-_080EF2B4:
- .4byte _080EF2E4
- .4byte _080EF2EA
- .4byte _080EF2F8
- .4byte _080EF304
- .4byte _080EF310
- .4byte _080EF330
- .4byte _080EF344
- .4byte _080EF368
- .4byte _080EF37C
- .4byte _080EF390
- .4byte _080EF3A4
- .4byte _080EF3CC
-_080EF2E4:
- bl sub_80EEDE8
- b _080EF40C
-_080EF2EA:
- ldr r0, _080EF2F4 @ =gWindowConfig_81E7224
- bl SetUpWindowConfig
- b _080EF40C
- .align 2, 0
-_080EF2F4: .4byte gWindowConfig_81E7224
-_080EF2F8:
- ldr r0, _080EF300 @ =gWindowConfig_81E7224
- bl MultistepInitMenuWindowBegin
- b _080EF40C
- .align 2, 0
-_080EF300: .4byte gWindowConfig_81E7224
-_080EF304:
- bl MultistepInitMenuWindowContinue
- cmp r0, 0
- beq _080EF30E
- b _080EF40C
-_080EF30E:
- b _080EF41A
-_080EF310:
- ldr r1, _080EF320 @ =gUnknown_083DFEEC
- ldr r2, _080EF324 @ =0x06005000
- ldr r0, _080EF328 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _080EF32C @ =0x80000050
- b _080EF350
- .align 2, 0
-_080EF320: .4byte gUnknown_083DFEEC
-_080EF324: .4byte 0x06005000
-_080EF328: .4byte 0x040000d4
-_080EF32C: .4byte 0x80000050
-_080EF330:
- ldr r0, _080EF33C @ =gUnknown_083DFF8C
- ldr r1, _080EF340 @ =0x0600f800
- bl LZ77UnCompVram
- b _080EF40C
- .align 2, 0
-_080EF33C: .4byte gUnknown_083DFF8C
-_080EF340: .4byte 0x0600f800
-_080EF344:
- ldr r1, _080EF358 @ =gUnknown_083E005C
- ldr r2, _080EF35C @ =0x06008000
- ldr r0, _080EF360 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _080EF364 @ =0x80000010
-_080EF350:
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080EF40C
- .align 2, 0
-_080EF358: .4byte gUnknown_083E005C
-_080EF35C: .4byte 0x06008000
-_080EF360: .4byte 0x040000d4
-_080EF364: .4byte 0x80000010
-_080EF368:
- ldr r0, _080EF374 @ =gUnknown_083E007C
- ldr r1, _080EF378 @ =0x0600e000
- bl LZ77UnCompVram
- b _080EF40C
- .align 2, 0
-_080EF374: .4byte gUnknown_083E007C
-_080EF378: .4byte 0x0600e000
-_080EF37C:
- ldr r0, _080EF388 @ =gPokenavOutlineTilemap
- ldr r1, _080EF38C @ =0x0600e800
- bl LZ77UnCompVram
- b _080EF40C
- .align 2, 0
-_080EF388: .4byte gPokenavOutlineTilemap
-_080EF38C: .4byte 0x0600e800
-_080EF390:
- ldr r0, _080EF39C @ =gPokenavOutlineTiles
- ldr r1, _080EF3A0 @ =0x06008020
- bl LZ77UnCompVram
- b _080EF40C
- .align 2, 0
-_080EF39C: .4byte gPokenavOutlineTiles
-_080EF3A0: .4byte 0x06008020
-_080EF3A4:
- adds r0, r2, 0
- bl sub_80EF54C
- ldr r0, _080EF3C4 @ =gUnknown_083DFECC
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _080EF3C8 @ =gPokenavOutlinePalette
- movs r1, 0x40
- movs r2, 0x20
- bl LoadPalette
- bl sub_80EF7D4
- b _080EF40C
- .align 2, 0
-_080EF3C4: .4byte gUnknown_083DFECC
-_080EF3C8: .4byte gPokenavOutlinePalette
-_080EF3CC:
- ldr r1, _080EF3FC @ =REG_BG0CNT
- ldr r2, _080EF400 @ =0x00001f01
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x4
- ldr r2, _080EF404 @ =0x00001d0a
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- subs r2, 0xFF
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x42
- movs r0, 0
- strh r0, [r1]
- ldr r1, [r3]
- ldr r3, _080EF408 @ =0x0000d160
- adds r1, r3
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080EF3F6:
- movs r0, 0
- b _080EF41C
- .align 2, 0
-_080EF3FC: .4byte REG_BG0CNT
-_080EF400: .4byte 0x00001f01
-_080EF404: .4byte 0x00001d0a
-_080EF408: .4byte 0x0000d160
-_080EF40C:
- ldr r0, _080EF420 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080EF424 @ =0x0000d160
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080EF41A:
- movs r0, 0x1
-_080EF41C:
- pop {r1}
- bx r1
- .align 2, 0
-_080EF420: .4byte gUnknown_083DFEC4
-_080EF424: .4byte 0x0000d160
- thumb_func_end sub_80EF284
-
- thumb_func_start sub_80EF428
-sub_80EF428: @ 80EF428
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- lsls r1, 24
- lsrs r2, r1, 24
- movs r1, 0
- cmp r0, 0x1
- beq _080EF454
- cmp r0, 0x1
- bgt _080EF444
- cmp r0, 0
- beq _080EF44A
- b _080EF464
-_080EF444:
- cmp r3, 0x2
- beq _080EF45C
- b _080EF464
-_080EF44A:
- ldr r1, _080EF450 @ =gUnknown_083E31B0
- b _080EF45E
- .align 2, 0
-_080EF450: .4byte gUnknown_083E31B0
-_080EF454:
- ldr r1, _080EF458 @ =gUnknown_083E31CC
- b _080EF45E
- .align 2, 0
-_080EF458: .4byte gUnknown_083E31CC
-_080EF45C:
- ldr r1, _080EF488 @ =gUnknown_083E31D8
-_080EF45E:
- lsls r0, r2, 2
- adds r0, r1
- ldr r1, [r0]
-_080EF464:
- ldr r0, _080EF48C @ =gUnknown_083DFEC8
- ldr r4, [r0]
- movs r0, 0x80
- lsls r0, 4
- adds r4, r0
- adds r0, r4, 0
- movs r2, 0xC0
- movs r3, 0x2
- bl sub_8072C74
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0x11
- bl MenuPrint
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF488: .4byte gUnknown_083E31D8
-_080EF48C: .4byte gUnknown_083DFEC8
- thumb_func_end sub_80EF428
-
- thumb_func_start sub_80EF490
-sub_80EF490: @ 80EF490
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bne _080EF49C
- movs r2, 0x1
-_080EF49C:
- ldr r0, _080EF4C4 @ =gUnknown_083DFEC4
- ldr r3, [r0]
- lsls r1, r2, 4
- subs r1, r2
- lsls r2, r1, 1
- ldr r4, _080EF4C8 @ =0x0000ce4e
- adds r0, r3, r4
- strh r2, [r0]
- ldr r2, _080EF4CC @ =0x0000ce4c
- adds r0, r3, r2
- ldrh r2, [r0]
- lsls r1, 17
- lsrs r0, r1, 16
- cmp r2, r0
- bcs _080EF4D0
- adds r4, 0x2
- adds r1, r3, r4
- movs r0, 0x2
- b _080EF4EA
- .align 2, 0
-_080EF4C4: .4byte gUnknown_083DFEC4
-_080EF4C8: .4byte 0x0000ce4e
-_080EF4CC: .4byte 0x0000ce4c
-_080EF4D0:
- cmp r2, r0
- bls _080EF4E4
- ldr r0, _080EF4DC @ =0x0000ce50
- adds r1, r3, r0
- ldr r0, _080EF4E0 @ =0x0000fffe
- b _080EF4EA
- .align 2, 0
-_080EF4DC: .4byte 0x0000ce50
-_080EF4E0: .4byte 0x0000fffe
-_080EF4E4:
- ldr r2, _080EF4F4 @ =0x0000ce50
- adds r1, r3, r2
- movs r0, 0
-_080EF4EA:
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF4F4: .4byte 0x0000ce50
- thumb_func_end sub_80EF490
-
- thumb_func_start sub_80EF4F8
-sub_80EF4F8: @ 80EF4F8
- push {r4,lr}
- ldr r0, _080EF530 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080EF534 @ =0x0000ce4c
- adds r2, r1, r0
- ldr r3, _080EF538 @ =0x0000ce4e
- adds r0, r1, r3
- ldrh r3, [r2]
- ldrh r0, [r0]
- cmp r3, r0
- beq _080EF544
- ldr r4, _080EF53C @ =0x0000ce50
- adds r0, r1, r4
- ldrh r0, [r0]
- adds r0, r3, r0
- strh r0, [r2]
- ldr r3, _080EF540 @ =0x0000ce52
- adds r0, r1, r3
- ldrh r1, [r2]
- lsls r1, 1
- adds r0, r1
- movs r1, 0x31
- movs r2, 0x4
- bl LoadPalette
- movs r0, 0x1
- b _080EF546
- .align 2, 0
-_080EF530: .4byte gUnknown_083DFEC4
-_080EF534: .4byte 0x0000ce4c
-_080EF538: .4byte 0x0000ce4e
-_080EF53C: .4byte 0x0000ce50
-_080EF540: .4byte 0x0000ce52
-_080EF544:
- movs r0, 0
-_080EF546:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EF4F8
-
- thumb_func_start sub_80EF54C
-sub_80EF54C: @ 80EF54C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bne _080EF558
- movs r2, 0x1
-_080EF558:
- ldr r0, _080EF580 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- lsls r1, r2, 4
- subs r1, r2
- lsls r1, 1
- ldr r3, _080EF584 @ =0x0000ce4c
- adds r2, r0, r3
- strh r1, [r2]
- ldrh r1, [r2]
- lsls r1, 1
- ldr r2, _080EF588 @ =0x0000ce52
- adds r1, r2
- adds r0, r1
- movs r1, 0x31
- movs r2, 0x4
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_080EF580: .4byte gUnknown_083DFEC4
-_080EF584: .4byte 0x0000ce4c
-_080EF588: .4byte 0x0000ce52
- thumb_func_end sub_80EF54C
-
thumb_func_start sub_80EF58C
sub_80EF58C: @ 80EF58C
push {lr}
diff --git a/include/pokenav.h b/include/pokenav.h
index 98806983c..ab7b32d7c 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -68,11 +68,15 @@ struct UnkPokenavStruct {
/*0x9004*/ u8 unk9004[3][20];
/*0x9040*/ u8 unk9040[0x304];
/*0x9344*/ u8 unk9344;
- /*0x9345*/ u8 filler9345[0x3ba3];
+ /*0x9345*/ u8 filler9345[0x3b07];
+ /*0xCE4C*/ u16 unkCE4C;
+ /*0xCE4E*/ u16 unkCE4E;
+ /*0xCE50*/ u16 unkCE50;
+ /*0xCE52*/ u16 palettesCE52[0x4B];
/*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78];
/*0xD158*/ u16 unkD158;
/*0xD15A*/ u8 fillerD15A[6];
- /*0xD162*/ u16 unkD160;
+ /*0xD160*/ u16 unkD160;
/*0xD162*/ u8 unkD162[2];
/*0xD164*/ struct UnkPokenavStruct_Sub1 unkD164;
};
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index dfac1328b..67578f9a1 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -4,10 +4,12 @@
#include "battle.h"
#include "data2.h"
#include "de_rom_8040FE0.h"
+#include "menu.h"
#include "overworld.h"
#include "string_util.h"
#include "palette.h"
#include "task.h"
+#include "text.h"
#include "unknown_task.h"
#include "sound.h"
#include "region_map.h"
@@ -87,8 +89,21 @@ struct UnknownPokenav0_1 {
IWRAM_DATA void (*gUnknown_03000744)(void);
+extern const u8 *const gUnknown_083E31B0[];
+extern const u8 *const gUnknown_083E31CC[];
+extern const u8 *const gUnknown_083E31D8[];
+extern u8 *gUnknown_083DFEC8;
+extern const u8 gUnknown_083DFEEC[];
+extern const u8 gUnknown_083E005C[];
+extern const u8 gUnknown_083E007C[];
+extern const u8 gPokenavOutlineTilemap[];
+extern const u8 gPokenavOutlineTiles[];
+extern const u8 gPokenavOutlinePalette[];
+extern const u8 gUnknown_083DFECC[];
+extern const u8 gUnknown_083DFF8C[];
extern const u8 gPokenavHoennMapMisc_Gfx[];
extern const u8 gUnknown_08E99FB0[];
+extern const u8 gUnknown_08E9A100[];
extern const u16 gPokenavHoennMap1_Pal[];
static void sub_80EBCA8();
@@ -129,6 +144,9 @@ static void sub_80EE658();
static void sub_80EE8F4();
static void sub_80EEDC4();
+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_80F6FFC();
extern void sub_80F3294();
@@ -167,7 +185,6 @@ extern void sub_80F3B94();
extern bool8 sub_80F3BD4();
extern void sub_80F66E0();
extern bool8 sub_80F1080();
-extern void sub_80EEFBC();
extern void sub_80F38B8();
extern bool8 sub_80F38EC();
extern void sub_80F638C();
@@ -195,7 +212,7 @@ extern void sub_80EFBB0();
extern void sub_80F2DF4();
extern void sub_80F1E84();
extern bool8 sub_80F1F10();
-extern void sub_80EEFBC(u32);
+extern void sub_80EEFBC(u8);
extern void sub_80F2620();
extern void sub_80EF814();
extern void sub_80EF840();
@@ -208,13 +225,13 @@ extern void sub_80F6C20();
extern void sub_80F3FF0();
extern bool8 sub_80F4024();
extern void sub_80F2598();
-extern void sub_80EF248();
-extern bool8 sub_80EF284();
+extern void sub_80EF248(u8);
+extern bool8 sub_80EF284(u8);
extern void sub_80F1B8C();
extern bool8 sub_80F1BC8(u32 unk);
extern void sub_80F1DF0();
extern bool8 sub_80F1E50();
-extern void sub_80EF428();
+extern void sub_80EF428(u8, u8);
extern bool8 sub_80EEF78();
extern void sub_80F1A90();
extern void sub_80F2D04(u32);
@@ -2848,19 +2865,19 @@ void sub_80EED2C(u8 param1) {
}
}
-void sub_80EED9C() {
+void sub_80EED9C(void) {
gUnknown_03000744 = ewram0.var300;
ewram0.var300 = &sub_80EEDC4;
ewram0.var300();
}
-void sub_80EEDC4() {
+void sub_80EEDC4(void) {
if (sub_8055870() != 0x1) {
ewram0.var300 = gUnknown_03000744;
}
}
-void sub_80EEDE8() {
+void sub_80EEDE8(void) {
REG_BG0HOFS = 0;
REG_BG0VOFS = 0;
REG_BG2VOFS = 0;
@@ -2869,18 +2886,18 @@ void sub_80EEDE8() {
REG_BG3VOFS = 0;
}
-void sub_80EEE08() {
+void sub_80EEE08(void) {
gUnknown_083DFEC4->unkD160 = 0;
}
-void sub_80EEE20() {
+void sub_80EEE20(void) {
gUnknown_083DFEC4->unkD160 = 0;
if (!gUnknown_083DFEC4->unk6DAC) {
while (sub_80EEE54());
}
}
-bool8 sub_80EEE54() {
+bool8 sub_80EEE54(void) {
switch (gUnknown_083DFEC4->unkD160) {
case 0:
LZ77UnCompVram(gPokenavHoennMapMisc_Gfx, (void *)VRAM + 0xC000);
@@ -2909,7 +2926,7 @@ bool8 sub_80EEE54() {
return 1;
}
-bool8 sub_80EEF34() {
+bool8 sub_80EEF34(void) {
bool8 retVal = TRUE;
if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 32)
@@ -2947,3 +2964,205 @@ bool8 sub_80EEF78(void)
REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0;
return retVal;
}
+
+void sub_80EEFBC(u8 a)
+{
+ u8 var1;
+
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 0, 17, 2);
+
+ switch (a)
+ {
+ case 0:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 17, 0, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 11:
+ sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 2:
+ var1 = gUnknown_083DFEC4->unk6DAC;
+ if (!var1)
+ {
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 10, 2, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, var1, 6, 7, 2);
+ }
+ else
+ {
+ sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ }
+ break;
+ case 3:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 4, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 4:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 20, 2, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 7:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 10, 4, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 7, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 8:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 20, 4, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 7, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 5:
+ case 9:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 2, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 10:
+ sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ }
+}
+
+void sub_80EF248(u8 a)
+{
+ gUnknown_083DFEC4->unkD160 = 0;
+
+ if (!gUnknown_083DFEC4->unk6DAC)
+ {
+ while (sub_80EF284(a));
+ }
+}
+
+bool8 sub_80EF284(u8 a)
+{
+ 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:
+ DmaCopy16Defvars(3, gUnknown_083DFEEC, (void *)VRAM + 0x5000, 0xA0);
+ break;
+ case 5:
+ LZ77UnCompVram(gUnknown_083DFF8C, (void *)VRAM + 0xF800);
+ break;
+ case 6:
+ DmaCopy16Defvars(3, gUnknown_083E005C, (void *)VRAM + 0x8000, 0x20);
+ break;
+ case 7:
+ LZ77UnCompVram(gUnknown_083E007C, (void *)VRAM + 0xE000);
+ break;
+ case 8:
+ LZ77UnCompVram(gPokenavOutlineTilemap, (void *)VRAM + 0xE800);
+ break;
+ case 9:
+ LZ77UnCompVram(gPokenavOutlineTiles, (void *)VRAM + 0x8020);
+ break;
+ case 10:
+ sub_80EF54C(a);
+ LoadPalette(gUnknown_083DFECC, 0xF0, 0x20);
+ LoadPalette(gPokenavOutlinePalette, 0x40, 0x20);
+ sub_80EF7D4();
+ break;
+ case 11:
+ REG_BG0CNT = 0x1F01;
+ REG_BG2CNT = 0x1D0A;
+ REG_BG3CNT = 0x1C0B;
+ REG_BLDCNT = 0;
+
+ gUnknown_083DFEC4->unkD160++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unkD160++;
+ return TRUE;
+}
+
+void sub_80EF428(u8 a, u8 b)
+{
+ u8 *tileBuffer;
+ const u8 *pcText = 0;
+
+ switch (a)
+ {
+ case 0:
+ pcText = gUnknown_083E31B0[b];
+ break;
+ case 1:
+ pcText = gUnknown_083E31CC[b];
+ break;
+ case 2:
+ pcText = gUnknown_083E31D8[b];
+ break;
+ }
+
+ tileBuffer = gUnknown_083DFEC8;
+ sub_8072C74(&tileBuffer[0x800], pcText, 0xC0, 2);
+ MenuPrint(&tileBuffer[0x800], 3, 17);
+}
+
+void sub_80EF490(u8 a)
+{
+ u16 var1, var2;
+
+ if (a == 2)
+ {
+ a = 1;
+ }
+
+ gUnknown_083DFEC4->unkCE4E = a * 30;
+ var1 = gUnknown_083DFEC4->unkCE4C;
+ var2 = a * 30;
+ if (var1 < var2)
+ {
+ gUnknown_083DFEC4->unkCE50 = 2;
+ }
+ else if (var1 > var2)
+ {
+ gUnknown_083DFEC4->unkCE50 = -2;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unkCE50 = 0;
+ }
+}
+
+bool8 sub_80EF4F8(void)
+{
+ u16 *palettes;
+
+ if (gUnknown_083DFEC4->unkCE4C == gUnknown_083DFEC4->unkCE4E)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unkCE4C = gUnknown_083DFEC4->unkCE50 + gUnknown_083DFEC4->unkCE4C;
+
+ palettes = gUnknown_083DFEC4->palettesCE52;
+ LoadPalette(&palettes[gUnknown_083DFEC4->unkCE4C], 0x31, 4);
+ return TRUE;
+ }
+
+}
+
+void sub_80EF54C(u8 a)
+{
+ if (a == 2)
+ {
+ a = 1;
+ }
+
+ gUnknown_083DFEC4->unkCE4C = a * 30;
+ LoadPalette(&gUnknown_083DFEC4->palettesCE52[gUnknown_083DFEC4->unkCE4C], 0x31, 4);
+}