diff options
-rw-r--r-- | asm/pokenav.s | 866 | ||||
-rw-r--r-- | include/pokenav.h | 19 | ||||
-rw-r--r-- | src/pokenav_before.c | 276 |
3 files changed, 283 insertions, 878 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index cac79bbcb..a0f60c553 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -5,872 +5,6 @@ .text - thumb_func_start sub_80F3130 -sub_80F3130: @ 80F3130 - push {r4-r6,lr} - ldr r0, _080F3184 @ =gUnknown_083DFEC4 - ldr r6, [r0] - ldr r0, _080F3188 @ =0x000087cc - adds r4, r6, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F3154 - bl DestroySprite - movs r0, 0x9 - bl FreeSpriteTilesByTag - movs r0, 0x9 - bl FreeSpritePaletteByTag - movs r0, 0 - str r0, [r4] -_080F3154: - movs r5, 0 - ldr r0, _080F318C @ =0x000087d0 - adds r6, r0 -_080F315A: - lsls r0, r5, 2 - adds r4, r6, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F316C - bl DestroySprite - movs r0, 0 - str r0, [r4] -_080F316C: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x1 - bls _080F315A - movs r0, 0xA - bl FreeSpriteTilesByTag - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F3184: .4byte gUnknown_083DFEC4 -_080F3188: .4byte 0x000087cc -_080F318C: .4byte 0x000087d0 - thumb_func_end sub_80F3130 - - thumb_func_start sub_80F3190 -sub_80F3190: @ 80F3190 - ldr r1, _080F31A4 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F31A8 @ =0x0000876c - adds r1, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - lsls r1, 4 - adds r1, 0x10 - strh r1, [r0, 0x22] - bx lr - .align 2, 0 -_080F31A4: .4byte gUnknown_083DFEC4 -_080F31A8: .4byte 0x0000876c - thumb_func_end sub_80F3190 - - thumb_func_start sub_80F31AC -sub_80F31AC: @ 80F31AC - push {r4,r5,lr} - adds r3, r0, 0 - ldr r0, _080F31E8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F31EC @ =0x000087c9 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080F325C - movs r4, 0x36 - ldrsh r0, [r3, r4] - cmp r0, 0 - beq _080F3226 - movs r5, 0x34 - ldrsh r0, [r3, r5] - cmp r0, 0 - bne _080F31F4 - movs r2, 0 - ldr r4, _080F31F0 @ =0x00008770 - adds r0, r1, r4 - movs r5, 0 - ldrsh r0, [r0, r5] - cmp r0, 0 - bne _080F31DE - movs r2, 0x1 -_080F31DE: - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - lsls r2, 2 - b _080F3214 - .align 2, 0 -_080F31E8: .4byte gUnknown_083DFEC4 -_080F31EC: .4byte 0x000087c9 -_080F31F0: .4byte 0x00008770 -_080F31F4: - movs r4, 0 - ldr r2, _080F3250 @ =0x00008772 - adds r0, r1, r2 - ldr r5, _080F3254 @ =0x00008774 - adds r1, r5 - movs r5, 0 - ldrsh r2, [r0, r5] - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r2, r0 - bne _080F320C - movs r4, 0x1 -_080F320C: - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - lsls r2, r4, 2 -_080F3214: - ldrb r1, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - orrs r0, r2 - mov r1, r12 - strb r0, [r1] - movs r0, 0 - strh r0, [r3, 0x36] -_080F3226: - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - movs r1, 0 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080F325C - strh r1, [r3, 0x2E] - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bgt _080F3258 - ldrh r0, [r3, 0x32] - ldrh r2, [r3, 0x26] - adds r0, r2 - strh r0, [r3, 0x26] - b _080F325C - .align 2, 0 -_080F3250: .4byte 0x00008772 -_080F3254: .4byte 0x00008774 -_080F3258: - strh r1, [r3, 0x30] - strh r1, [r3, 0x26] -_080F325C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F31AC - - thumb_func_start sub_80F3264 -sub_80F3264: @ 80F3264 - push {lr} - movs r1, 0 - ldr r0, _080F328C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r3, _080F3290 @ =0x000087d0 - adds r2, r0, r3 - movs r3, 0x1 -_080F3272: - lsls r0, r1, 2 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F327E - strh r3, [r0, 0x36] -_080F327E: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x1 - bls _080F3272 - pop {r0} - bx r0 - .align 2, 0 -_080F328C: .4byte gUnknown_083DFEC4 -_080F3290: .4byte 0x000087d0 - thumb_func_end sub_80F3264 - - thumb_func_start sub_80F3294 -sub_80F3294: @ 80F3294 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080F32F4 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F32F8 @ =0x000087cc - adds r0, r4, r1 - ldr r2, [r0] - adds r2, 0x3E - movs r0, 0x1 - adds r1, r6, 0 - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r5, 0x5 - negs r5, r5 - adds r0, r5, 0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldr r2, _080F32FC @ =0x000087c9 - adds r0, r4, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080F331A - cmp r6, 0x1 - bne _080F3308 - ldr r1, _080F3300 @ =0x000087d0 - adds r0, r4, r1 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r5, 0 - ands r0, r2 - movs r3, 0x4 - orrs r0, r3 - strb r0, [r1] - ldr r2, _080F3304 @ =0x000087d4 - adds r0, r4, r2 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r5, 0 - ands r0, r2 - orrs r0, r3 - strb r0, [r1] - b _080F331A - .align 2, 0 -_080F32F4: .4byte gUnknown_083DFEC4 -_080F32F8: .4byte 0x000087cc -_080F32FC: .4byte 0x000087c9 -_080F3300: .4byte 0x000087d0 -_080F3304: .4byte 0x000087d4 -_080F3308: - ldr r1, _080F3320 @ =0x000087d0 - adds r0, r4, r1 - ldr r0, [r0] - movs r1, 0x1 - strh r1, [r0, 0x36] - ldr r2, _080F3324 @ =0x000087d4 - adds r0, r4, r2 - ldr r0, [r0] - strh r1, [r0, 0x36] -_080F331A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F3320: .4byte 0x000087d0 -_080F3324: .4byte 0x000087d4 - thumb_func_end sub_80F3294 - - thumb_func_start sub_80F3328 -sub_80F3328: @ 80F3328 - push {lr} - adds r2, r0, 0 - ldr r0, _080F334C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3350 @ =0x000087dc - adds r0, r1 - movs r3, 0x2E - ldrsh r1, [r2, r3] - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r1, r0 - bne _080F3354 - adds r0, r2, 0 - movs r1, 0 - bl StartSpriteAnim - b _080F335C - .align 2, 0 -_080F334C: .4byte gUnknown_083DFEC4 -_080F3350: .4byte 0x000087dc -_080F3354: - adds r0, r2, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080F335C: - pop {r0} - bx r0 - thumb_func_end sub_80F3328 - - thumb_func_start sub_80F3360 -sub_80F3360: @ 80F3360 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080F3384 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F3388 @ =0x000087dc - adds r1, r0, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - ldr r2, _080F338C @ =0x000087da - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - subs r0, 0x1 - cmp r1, r0 - bne _080F3390 - movs r0, 0x4 - b _080F3392 - .align 2, 0 -_080F3384: .4byte gUnknown_083DFEC4 -_080F3388: .4byte 0x000087dc -_080F338C: .4byte 0x000087da -_080F3390: - movs r0, 0x5 -_080F3392: - bl IndexOfSpritePaletteTag - lsls r0, 4 - ldrb r2, [r4, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x5] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F3360 - - thumb_func_start sub_80F33A8 -sub_80F33A8: @ 80F33A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x50 - mov r1, sp - ldr r0, _080F3440 @ =gUnknown_083E4628 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldm r0!, {r3,r4} - stm r1!, {r3,r4} - add r4, sp, 0x20 - adds r1, r4, 0 - ldr r0, _080F3444 @ =gUnknown_083E4648 - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - add r5, sp, 0x38 - adds r1, r5, 0 - ldr r0, _080F3448 @ =gSpriteTemplate_83E4660 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - mov r0, sp - bl LoadSpriteSheets - adds r0, r4, 0 - bl LoadSpritePalettes - movs r6, 0 - ldr r2, _080F344C @ =gUnknown_083DFEC4 - ldr r1, [r2] - ldr r3, _080F3450 @ =0x000087da - adds r0, r1, r3 - movs r4, 0 - ldrsh r0, [r0, r4] - subs r0, 0x1 - adds r7, r5, 0 - cmp r6, r0 - bge _080F347A - adds r5, r2, 0 - adds r0, r3, 0 - adds r0, r1 - mov r8, r0 -_080F3406: - lsls r4, r6, 2 - adds r2, r4, r6 - lsls r2, 18 - movs r1, 0x80 - lsls r1, 12 - adds r2, r1 - asrs r2, 16 - adds r0, r7, 0 - movs r1, 0xE2 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080F345C - ldr r0, [r5] - ldr r2, _080F3454 @ =0x000087e4 - adds r0, r2 - adds r0, r4 - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - ldr r2, _080F3458 @ =gSprites - adds r1, r2 - str r1, [r0] - strh r6, [r1, 0x2E] - b _080F3468 - .align 2, 0 -_080F3440: .4byte gUnknown_083E4628 -_080F3444: .4byte gUnknown_083E4648 -_080F3448: .4byte gSpriteTemplate_83E4660 -_080F344C: .4byte gUnknown_083DFEC4 -_080F3450: .4byte 0x000087da -_080F3454: .4byte 0x000087e4 -_080F3458: .4byte gSprites -_080F345C: - ldr r0, [r5] - ldr r3, _080F34C8 @ =0x000087e4 - adds r0, r3 - adds r0, r4 - movs r1, 0 - str r1, [r0] -_080F3468: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - mov r4, r8 - movs r1, 0 - ldrsh r0, [r4, r1] - subs r0, 0x1 - cmp r6, r0 - blt _080F3406 -_080F347A: - movs r0, 0x4 - strh r0, [r7] - ldr r0, _080F34CC @ =SpriteCallbackDummy - str r0, [r7, 0x14] - cmp r6, 0x5 - bhi _080F34EE - ldr r5, _080F34D0 @ =gUnknown_083DFEC4 -_080F3488: - lsls r4, r6, 2 - adds r2, r4, r6 - lsls r2, 18 - movs r3, 0x80 - lsls r3, 12 - adds r2, r3 - asrs r2, 16 - adds r0, r7, 0 - movs r1, 0xE6 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080F34D8 - ldr r2, [r5] - ldr r0, _080F34C8 @ =0x000087e4 - adds r2, r0 - adds r2, r4 - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - ldr r0, _080F34D4 @ =gSprites - adds r1, r0 - str r1, [r2] - ldrb r2, [r1, 0x3] - movs r0, 0x3F - ands r0, r2 - strb r0, [r1, 0x3] - b _080F34E4 - .align 2, 0 -_080F34C8: .4byte 0x000087e4 -_080F34CC: .4byte SpriteCallbackDummy -_080F34D0: .4byte gUnknown_083DFEC4 -_080F34D4: .4byte gSprites -_080F34D8: - ldr r0, [r5] - ldr r1, _080F3548 @ =0x000087e4 - adds r0, r1 - adds r0, r4 - movs r1, 0 - str r1, [r0] -_080F34E4: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _080F3488 -_080F34EE: - movs r0, 0x5 - strh r0, [r7] - ldr r0, _080F354C @ =sub_80F3360 - str r0, [r7, 0x14] - lsls r5, r6, 2 - adds r2, r5, r6 - lsls r2, 18 - movs r3, 0x80 - lsls r3, 12 - adds r2, r3 - asrs r2, 16 - adds r0, r7, 0 - movs r1, 0xDE - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080F3558 - ldr r0, _080F3550 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r6, _080F3548 @ =0x000087e4 - adds r4, r6 - adds r4, r5 - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - ldr r0, _080F3554 @ =gSprites - adds r1, r0 - str r1, [r4] - ldrb r3, [r1, 0x1] - movs r2, 0x3F - adds r0, r2, 0 - ands r0, r3 - movs r3, 0x40 - orrs r0, r3 - strb r0, [r1, 0x1] - ldr r1, [r4] - ldrb r0, [r1, 0x3] - ands r2, r0 - movs r0, 0x80 - orrs r2, r0 - strb r2, [r1, 0x3] - b _080F3566 - .align 2, 0 -_080F3548: .4byte 0x000087e4 -_080F354C: .4byte sub_80F3360 -_080F3550: .4byte gUnknown_083DFEC4 -_080F3554: .4byte gSprites -_080F3558: - ldr r0, _080F3574 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3578 @ =0x000087e4 - adds r0, r1 - adds r0, r5 - movs r1, 0 - str r1, [r0] -_080F3566: - add sp, 0x50 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F3574: .4byte gUnknown_083DFEC4 -_080F3578: .4byte 0x000087e4 - thumb_func_end sub_80F33A8 - - thumb_func_start sub_80F357C -sub_80F357C: @ 80F357C - push {r4-r6,lr} - movs r5, 0 - ldr r0, _080F35AC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F35B0 @ =0x000087e4 - adds r6, r0, r1 -_080F3588: - lsls r0, r5, 2 - adds r4, r6, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F359A - bl DestroySprite - movs r0, 0 - str r0, [r4] -_080F359A: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x6 - bls _080F3588 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F35AC: .4byte gUnknown_083DFEC4 -_080F35B0: .4byte 0x000087e4 - thumb_func_end sub_80F357C - - thumb_func_start sub_80F35B4 -sub_80F35B4: @ 80F35B4 - push {r4,lr} - ldr r0, _080F35FC @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F3600 @ =0x000076b0 - adds r0, r4, r1 - movs r1, 0x1C - strh r1, [r0] - ldr r1, _080F3604 @ =0x000076b2 - adds r2, r4, r1 - movs r1, 0x13 - strh r1, [r2] - bl sub_80F727C - bl sub_80F7404 - ldr r2, _080F3608 @ =gUnknown_083E4678 - movs r0, 0x1B - movs r1, 0x15 - bl sub_80F7920 - ldrb r1, [r0, 0x5] - movs r2, 0xC - orrs r1, r2 - strb r1, [r0, 0x5] - movs r1, 0xC0 - strh r1, [r0, 0x20] - movs r1, 0x20 - strh r1, [r0, 0x22] - ldr r1, _080F360C @ =sub_80F363C - str r1, [r0, 0x1C] - ldr r1, _080F3610 @ =0x000076ac - adds r4, r1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F35FC: .4byte gUnknown_083DFEC4 -_080F3600: .4byte 0x000076b0 -_080F3604: .4byte 0x000076b2 -_080F3608: .4byte gUnknown_083E4678 -_080F360C: .4byte sub_80F363C -_080F3610: .4byte 0x000076ac - thumb_func_end sub_80F35B4 - - thumb_func_start sub_80F3614 -sub_80F3614: @ 80F3614 - push {lr} - ldr r0, _080F3634 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3638 @ =0x000076ac - adds r0, r1 - ldr r0, [r0] - bl DestroySprite - movs r0, 0x1B - bl FreeSpriteTilesByTag - movs r0, 0x15 - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - .align 2, 0 -_080F3634: .4byte gUnknown_083DFEC4 -_080F3638: .4byte 0x000076ac - thumb_func_end sub_80F3614 - - thumb_func_start sub_80F363C -sub_80F363C: @ 80F363C - push {lr} - ldr r1, _080F365C @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r3, _080F3660 @ =0x00008fe9 - adds r2, r1, r3 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - ldr r3, _080F3664 @ =0x00008934 - adds r1, r3 - adds r1, r2 - ldrb r1, [r1] - bl StartSpriteAnim - pop {r0} - bx r0 - .align 2, 0 -_080F365C: .4byte gUnknown_083DFEC4 -_080F3660: .4byte 0x00008fe9 -_080F3664: .4byte 0x00008934 - thumb_func_end sub_80F363C - - thumb_func_start sub_80F3668 -sub_80F3668: @ 80F3668 - push {lr} - ldr r0, _080F368C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F3690 @ =0x00008fe9 - adds r1, r0, r2 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - ldr r2, _080F3694 @ =0x00008934 - adds r0, r2 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0xB0 - movs r2, 0x20 - bl sub_80F7418 - pop {r0} - bx r0 - .align 2, 0 -_080F368C: .4byte gUnknown_083DFEC4 -_080F3690: .4byte 0x00008fe9 -_080F3694: .4byte 0x00008934 - thumb_func_end sub_80F3668 - - thumb_func_start sub_80F3698 -sub_80F3698: @ 80F3698 - push {r4,lr} - ldr r0, _080F36DC @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r1, _080F36E0 @ =0x000087dc - adds r0, r3, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r1, 2 - ldr r4, _080F36E4 @ =0x0000893c - adds r1, r4 - adds r1, r3, r1 - ldr r2, _080F36E8 @ =0x00008fe9 - adds r0, r3, r2 - movs r2, 0 - ldrsb r2, [r0, r2] - subs r4, 0x8 - adds r0, r3, r4 - adds r0, r2 - ldr r2, _080F36EC @ =0x000076b4 - adds r3, r2 - ldrb r2, [r3] - strb r2, [r0] - ldrb r0, [r1, 0x1] - ldr r1, [r1] - lsls r1, 11 - lsrs r1, 27 - ldrb r2, [r3] - bl sub_80F4548 - bl sub_80F7470 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F36DC: .4byte gUnknown_083DFEC4 -_080F36E0: .4byte 0x000087dc -_080F36E4: .4byte 0x0000893c -_080F36E8: .4byte 0x00008fe9 -_080F36EC: .4byte 0x000076b4 - thumb_func_end sub_80F3698 - - thumb_func_start sub_80F36F0 -sub_80F36F0: @ 80F36F0 - push {lr} - ldr r0, _080F3718 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F371C @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F3720 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F3712 -_080F3708: - bl sub_80F3724 - lsls r0, 24 - cmp r0, 0 - bne _080F3708 -_080F3712: - pop {r0} - bx r0 - .align 2, 0 -_080F3718: .4byte gUnknown_083DFEC4 -_080F371C: .4byte 0x00000306 -_080F3720: .4byte 0x00006dac - thumb_func_end sub_80F36F0 - - thumb_func_start sub_80F3724 -sub_80F3724: @ 80F3724 - push {r4,lr} - ldr r0, _080F3740 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F3744 @ =0x00000306 - adds r4, r1, r0 - ldrh r0, [r4] - cmp r0, 0x1 - beq _080F3764 - cmp r0, 0x1 - bgt _080F3748 - cmp r0, 0 - beq _080F374E - b _080F377A - .align 2, 0 -_080F3740: .4byte gUnknown_083DFEC4 -_080F3744: .4byte 0x00000306 -_080F3748: - cmp r0, 0x2 - beq _080F376E - b _080F377A -_080F374E: - ldr r0, _080F375C @ =gUnknown_083E3D00 - ldr r2, _080F3760 @ =0x0000984c - adds r1, r2 - bl LZ77UnCompWram - b _080F377E - .align 2, 0 -_080F375C: .4byte gUnknown_083E3D00 -_080F3760: .4byte 0x0000984c -_080F3764: - bl sub_80F379C - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_080F376E: - bl sub_80F37D0 - lsls r0, 24 - cmp r0, 0 - beq _080F377E - b _080F378C -_080F377A: - movs r0, 0 - b _080F378E -_080F377E: - ldr r0, _080F3794 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F3798 @ =0x00000306 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F378C: - movs r0, 0x1 -_080F378E: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F3794: .4byte gUnknown_083DFEC4 -_080F3798: .4byte 0x00000306 - thumb_func_end sub_80F3724 - - thumb_func_start sub_80F379C -sub_80F379C: @ 80F379C - push {lr} - ldr r0, _080F37C4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F37C8 @ =0x0000bc93 - adds r2, r0, r1 - movs r1, 0 - strb r1, [r2] - ldr r1, _080F37CC @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F37BE -_080F37B4: - bl sub_80F37D0 - lsls r0, 24 - cmp r0, 0 - bne _080F37B4 -_080F37BE: - pop {r0} - bx r0 - .align 2, 0 -_080F37C4: .4byte gUnknown_083DFEC4 -_080F37C8: .4byte 0x0000bc93 -_080F37CC: .4byte 0x00006dac - thumb_func_end sub_80F379C - thumb_func_start sub_80F37D0 sub_80F37D0: @ 80F37D0 push {r4-r7,lr} diff --git a/include/pokenav.h b/include/pokenav.h index 22fa0ac0c..22bda9104 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -2,6 +2,7 @@ #define GUARD_POKENAV_H #include "region_map.h" +#include "mon_markings.h" struct UnkPokenavStruct_Sub { /*0x0*/ u16 unk0; @@ -91,7 +92,8 @@ struct UnkPokenavStruct { /*0x769E*/ u8 unk769E; /*0x769F*/ u8 filler769F[0xB]; /*0x76AA*/ u8 unk76AA; - /*0x76AB*/ u8 filler76AB[0x10b9]; + /*0x76AC*/ struct Sprite *unk76AC; + /*0x76B0*/ struct PokemonMarkMenu unk76B0; /*0x8764*/ u16 unk8764; /*0x8766*/ s16 unk8766; /*0x8768*/ struct Sprite *unk8768; @@ -111,7 +113,7 @@ struct UnkPokenavStruct { /*0x8786*/ u16 unk8786; /*0x8788*/ u8 unk8788[0x40]; /*0x87C8*/ u8 unk87C8; - /*0x87C9*/ u8 filler87C9; + /*0x87C9*/ u8 unk87C9; /*0x87CA*/ u8 unk87CA; /*0x87CC*/ struct Sprite *unk87CC; /*0x87D0*/ struct Sprite *unk87D0[2]; @@ -120,11 +122,13 @@ struct UnkPokenavStruct { /*0x87DC*/ s16 unk87DC; /*0x87DE*/ s16 unk87DE; /*0x87E0*/ void *unk87E0; - /*0x87E4*/ u8 filler87E4[0x44]; + /*0x87E4*/ struct Sprite *unk87E4[7]; + /*0x8800*/ u8 filler8800[0x28]; /*0x8828*/ u8 unk8828; /*0x8829*/ u8 unk8829[3][64]; /*0x88E9*/ u8 unk88E9[3][24]; - /*0x8931*/ u8 unk8931[11]; + /*0x8931*/ u8 unk8931[3]; + /*0x8934*/ u8 unk8934[8]; /*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1ab]; /*0x8fe8*/ u8 fil8fe8[1]; /*0x8fe9*/ s8 unk8fe9; @@ -135,13 +139,16 @@ struct UnkPokenavStruct { /*0x9040*/ u8 unk9040[0x304]; /*0x9344*/ u8 unk9344; /*0x9345*/ u8 filler9345[7]; - /*0x934C*/ u16 unk934C[0x1480]; + /*0x934C*/ u16 unk934C[0x280]; + /*0x984C*/ u8 unk984C[0x2400]; /*0xBC4C*/ u8 unkBC4C[0x42]; /*0xBC8E*/ u8 unkBC8E; /*0xBC8F*/ u8 unkBC8F; /*0xBC90*/ u8 unkBC90; /*0xBC91*/ u8 unkBC91; - /*0xBC92*/ u8 fillerBC92[0x8]; + /*0xBC92*/ u8 fillerBC92[0x1]; + /*0xBC93*/ u8 unkBC93; + /*0xBC94*/ u8 fillerBC94[0x6]; /*0xBC9A*/ u8 unkBC9A; /*0xBC9B*/ u8 unkBC9B; /*0xBC9C*/ u8 unkBC9C[22][200]; diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 0ce246ebd..28b3c685f 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -191,6 +191,11 @@ extern const struct SpritePalette gUnknown_083E45A8; extern const u16 gUnknown_08E9F988[]; extern const struct SpriteTemplate gSpriteTemplate_83E45B8; extern const struct SpriteTemplate gSpriteTemplate_83E45F0; +extern const struct SpriteSheet gUnknown_083E4628[4]; +extern const struct SpritePalette gUnknown_083E4648[3]; +extern const struct SpriteTemplate gSpriteTemplate_83E4660; +extern const u16 gUnknown_083E4678[]; +extern const u8 gUnknown_083E3D00[]; extern u16 gUnknown_020388B4; extern u8 gUnknown_020388B0[]; @@ -305,6 +310,16 @@ static void sub_80F2DF4(void); static void sub_80F2FEC(struct Sprite *sprite); static void sub_80F2FB0(void); static void sub_80F3008(u8); +static void sub_80F3130(void); +static void sub_80F3264(void); +static void sub_80F3294(u8); +static void sub_80F35B4(void); +static void sub_80F363C(struct Sprite *sprite); +void sub_80F4548(u16, u16, u8); +static void sub_80F36F0(void); +static bool8 sub_80F3724(void); +static void sub_80F379C(void); +bool8 sub_80F37D0(void); extern void sub_80F0900(void); extern void sub_80F443C(u8 *, u16); @@ -320,7 +335,6 @@ extern void sub_80EF7D4(void); extern void sub_80EF54C(u8); extern void sub_80EF58C(u8); extern void sub_80F6FFC(); -extern void sub_80F3294(); extern void sub_80F6FB8(); extern void sub_80F6DB8(); extern bool8 sub_80F6E9C(); @@ -347,15 +361,12 @@ extern bool8 sub_80F63D0(); extern void sub_80F4CF0(); extern void sub_80EFF34(); extern bool8 sub_80EFF68(); -extern void sub_80F35B4(); extern void sub_80F6134(); extern u8 sub_80F5DD4(); -extern bool8 sub_80F3264(); extern void sub_80F4D44(); extern bool8 sub_80F4D88(); extern void sub_80F0264(u8); extern bool8 sub_80F02A0(); -extern void sub_80F3130(); extern void sub_80EF9F8(void); extern bool8 sub_80EFBDC(bool8); extern void sub_80EFBB0(void); @@ -372,8 +383,6 @@ extern void sub_80EF248(u8); extern bool8 sub_80EF284(u8); extern void sub_80EF428(u8, u8); extern bool8 sub_80EEF78(); -extern void sub_80F36F0(); -extern bool8 sub_80F3724(); extern void sub_80EBC10(); extern void sub_80EBDBC(void (*func)(void)); extern void sub_80EBBE8(); @@ -7073,3 +7082,258 @@ static void sub_80F3008(u8 arg0) } } } + +static void sub_80F3130(void) +{ + u16 i; + + if (gUnknown_083DFEC4->unk87CC) + { + DestroySprite(gUnknown_083DFEC4->unk87CC); + FreeSpriteTilesByTag(0x9); + FreeSpritePaletteByTag(0x9); + gUnknown_083DFEC4->unk87CC = NULL; + } + + for (i = 0; i < 2; i++) + { + if (gUnknown_083DFEC4->unk87D0[i]) + { + DestroySprite(gUnknown_083DFEC4->unk87D0[i]); + gUnknown_083DFEC4->unk87D0[i] = NULL; + } + } + + FreeSpriteTilesByTag(0xA); +} + +void sub_80F3190(struct Sprite *sprite) +{ + sprite->pos1.y = gUnknown_083DFEC4->unk876C * 16 + 16; +} + +void sub_80F31AC(struct Sprite *sprite) +{ + if (gUnknown_083DFEC4->unk87C9) + { + if (sprite->data[4]) + { + if (!sprite->data[3]) + sprite->invisible = gUnknown_083DFEC4->unk8770 == 0; + else + sprite->invisible = gUnknown_083DFEC4->unk8772 == gUnknown_083DFEC4->unk8774; + + sprite->data[4] = 0; + } + + if (++sprite->data[0] > 4) + { + sprite->data[0] = 0; + if (++sprite->data[1] < 5) + { + sprite->pos2.y += sprite->data[2]; + } + else + { + sprite->data[1] = 0; + sprite->pos2.y = 0; + } + } + } +} + +static void sub_80F3264(void) +{ + u16 i; + + for (i = 0; i < 2; i++) + { + if (gUnknown_083DFEC4->unk87D0[i]) + gUnknown_083DFEC4->unk87D0[i]->data[4] = 1; + } +} + +static void sub_80F3294(u8 arg0) +{ + gUnknown_083DFEC4->unk87CC->invisible = arg0; + if (gUnknown_083DFEC4->unk87C9) + { + if (arg0 == 1) + { + gUnknown_083DFEC4->unk87D0[0]->invisible = arg0; + gUnknown_083DFEC4->unk87D0[1]->invisible = arg0; + } + else + { + gUnknown_083DFEC4->unk87D0[0]->data[4] = 1; + gUnknown_083DFEC4->unk87D0[1]->data[4] = 1; + } + } +} + +void sub_80F3328(struct Sprite *sprite) +{ + if (sprite->data[0] == gUnknown_083DFEC4->unk87DC) + StartSpriteAnim(sprite, 0); + else + StartSpriteAnim(sprite, 1); +} + +static void sub_80F3360(struct Sprite *sprite) +{ + if (gUnknown_083DFEC4->unk87DC == gUnknown_083DFEC4->unk87DA - 1) + sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x4); + else + sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x5); +} + +void sub_80F33A8(void) +{ + u16 i; + u8 spriteId; + struct SpriteSheet spriteSheets[4]; + struct SpritePalette spritePalettes[3]; + struct SpriteTemplate spriteTemplate; + + memcpy(spriteSheets, gUnknown_083E4628, sizeof(gUnknown_083E4628)); + memcpy(spritePalettes, gUnknown_083E4648, sizeof(gUnknown_083E4648)); + spriteTemplate = gSpriteTemplate_83E4660; + LoadSpriteSheets(spriteSheets); + LoadSpritePalettes(spritePalettes); + + for (i = 0; i < gUnknown_083DFEC4->unk87DA - 1; i++) + { + spriteId = CreateSprite(&spriteTemplate, 226, i * 20 + 8, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk87E4[i] = &gSprites[spriteId]; + gUnknown_083DFEC4->unk87E4[i]->data[0] = i; + } + else + { + gUnknown_083DFEC4->unk87E4[i] = NULL; + } + } + + spriteTemplate.tileTag = 0x4; + spriteTemplate.callback = SpriteCallbackDummy; + for (; i < 6; i++) + { + spriteId = CreateSprite(&spriteTemplate, 230, i * 20 + 8, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk87E4[i] = &gSprites[spriteId]; + gUnknown_083DFEC4->unk87E4[i]->oam.size = 0; + } + else + { + gUnknown_083DFEC4->unk87E4[i] = NULL; + } + } + + spriteTemplate.tileTag = 0x5; + spriteTemplate.callback = sub_80F3360; + spriteId = CreateSprite(&spriteTemplate, 222, i * 20 + 8, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk87E4[i] = &gSprites[spriteId]; + gUnknown_083DFEC4->unk87E4[i]->oam.shape = ST_OAM_H_RECTANGLE; + gUnknown_083DFEC4->unk87E4[i]->oam.size = 2; + } + else + { + gUnknown_083DFEC4->unk87E4[i] = NULL; + } +} + +void sub_80F357C(void) +{ + u16 i; + + for (i = 0; i < 7; i++) + { + if (gUnknown_083DFEC4->unk87E4[i]) + { + DestroySprite(gUnknown_083DFEC4->unk87E4[i]); + gUnknown_083DFEC4->unk87E4[i] = NULL; + } + } +} + +static void sub_80F35B4(void) +{ + struct Sprite *sprite; + + gUnknown_083DFEC4->unk76B0.baseTileTag = 0x1C; + gUnknown_083DFEC4->unk76B0.basePaletteTag = 0x13; + sub_80F727C(&gUnknown_083DFEC4->unk76B0); + sub_80F7404(); + sprite = sub_80F7920(27, 21, gUnknown_083E4678); + sprite->oam.priority = 3; + sprite->pos1.x = 192; + sprite->pos1.y = 32; + sprite->callback = sub_80F363C; + gUnknown_083DFEC4->unk76AC = sprite; +} + +void sub_80F3614(void) +{ + DestroySprite(gUnknown_083DFEC4->unk76AC); + FreeSpriteTilesByTag(0x1B); + FreeSpritePaletteByTag(0x15); +} + +static void sub_80F363C(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, gUnknown_083DFEC4->unk8934[gUnknown_083DFEC4->unk8fe9]); +} + +void sub_80F3668(void) +{ + sub_80F7418(gUnknown_083DFEC4->unk8934[gUnknown_083DFEC4->unk8fe9], 176, 32); +} + +void sub_80F3698(void) +{ + struct UnkUsePokeblockSub *var0 = &gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC]; + gUnknown_083DFEC4->unk8934[gUnknown_083DFEC4->unk8fe9] = gUnknown_083DFEC4->unk76B0.markings; + sub_80F4548(var0->unk1, var0->partyIdx, gUnknown_083DFEC4->unk76B0.markings); + sub_80F7470(); +} + +static void sub_80F36F0(void) +{ + gUnknown_083DFEC4->unk306 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F3724()); +} + +static bool8 sub_80F3724(void) +{ + switch (gUnknown_083DFEC4->unk306) + { + case 0: + LZ77UnCompWram(gUnknown_083E3D00, gUnknown_083DFEC4->unk984C); + break; + case 1: + sub_80F379C(); + gUnknown_083DFEC4->unk306++; + // fall through + case 2: + if (sub_80F37D0()) + return TRUE; + break; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} + +static void sub_80F379C(void) +{ + gUnknown_083DFEC4->unkBC93 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F37D0()); +} |