diff options
-rw-r--r-- | asm/pokenav.s | 712 | ||||
-rw-r--r-- | include/pokenav.h | 8 | ||||
-rw-r--r-- | src/pokenav_before.c | 243 |
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); +} |