diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-08-18 13:49:01 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-08-18 13:57:09 -0500 |
commit | 8e79b6961dd0294c34e68eef7768411110589ec1 (patch) | |
tree | d23f93da8b7b4d37ed0a53f60b1a031cf5f165ee | |
parent | ee775fea6d627f6f1652d0ff6c7e690a5a06fd69 (diff) |
Decompile more pokenav
-rw-r--r-- | asm/pokenav.s | 906 | ||||
-rw-r--r-- | include/pokenav.h | 10 | ||||
-rw-r--r-- | src/pokenav_before.c | 344 |
3 files changed, 340 insertions, 920 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index a0f60c553..de906a926 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -5,912 +5,6 @@ .text - thumb_func_start sub_80F37D0 -sub_80F37D0: @ 80F37D0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _080F3898 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F389C @ =0x0000bc93 - adds r1, r2 - ldrb r1, [r1] - adds r2, r0, 0 - cmp r1, 0xB - bhi _080F38A8 - movs r3, 0 - mov r8, r3 - movs r7, 0xF - mov r9, r7 -_080F37F0: - ldr r2, [r2] - ldr r1, _080F389C @ =0x0000bc93 - adds r0, r2, r1 - ldrb r1, [r0] - lsls r0, r1, 8 - ldr r3, _080F38A0 @ =0x0000984c - adds r0, r3 - adds r4, r2, r0 - lsls r1, 9 - ldr r7, _080F38A4 @ =0x0000a44c - adds r1, r7 - adds r5, r2, r1 - movs r6, 0 -_080F380A: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x10 - bl CpuFastSet - adds r5, 0x40 - adds r4, 0x20 - movs r1, 0 - adds r6, 0x1 - mov r12, r6 -_080F381E: - movs r0, 0 - adds r6, r1, 0x1 -_080F3822: - adds r4, 0x4 - movs r2, 0 - adds r3, r0, 0x1 -_080F3828: - subs r4, 0x1 - ldrb r0, [r4] - lsls r1, r0, 4 - lsrs r0, 4 - mov r7, r9 - ands r0, r7 - orrs r1, r0 - strb r1, [r5] - adds r5, 0x1 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080F3828 - adds r4, 0x4 - lsls r0, r3, 24 - lsrs r0, 24 - cmp r0, 0x7 - bls _080F3822 - subs r4, 0x40 - lsls r0, r6, 24 - lsrs r1, r0, 24 - cmp r1, 0x1 - bls _080F381E - adds r4, 0x60 - mov r1, r12 - lsls r0, r1, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _080F380A - ldr r2, _080F3898 @ =gUnknown_083DFEC4 - ldr r3, [r2] - ldr r7, _080F389C @ =0x0000bc93 - adds r1, r3, r7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB - bhi _080F38A8 - mov r0, r8 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r0, 0x1 - bls _080F37F0 - adds r1, r7, 0 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0xB - bhi _080F38A8 - movs r0, 0x1 - b _080F38AA - .align 2, 0 -_080F3898: .4byte gUnknown_083DFEC4 -_080F389C: .4byte 0x0000bc93 -_080F38A0: .4byte 0x0000984c -_080F38A4: .4byte 0x0000a44c -_080F38A8: - movs r0, 0 -_080F38AA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F37D0 - - thumb_func_start sub_80F38B8 -sub_80F38B8: @ 80F38B8 - push {lr} - ldr r0, _080F38E0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F38E4 @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F38E8 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F38DA -_080F38D0: - bl sub_80F38EC - lsls r0, 24 - cmp r0, 0 - bne _080F38D0 -_080F38DA: - pop {r0} - bx r0 - .align 2, 0 -_080F38E0: .4byte gUnknown_083DFEC4 -_080F38E4: .4byte 0x00000306 -_080F38E8: .4byte 0x00006dac - thumb_func_end sub_80F38B8 - - thumb_func_start sub_80F38EC -sub_80F38EC: @ 80F38EC - push {r4,lr} - ldr r0, _080F3908 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r0, _080F390C @ =0x00000306 - adds r4, r2, r0 - ldrh r1, [r4] - cmp r1, 0x1 - beq _080F3930 - cmp r1, 0x1 - bgt _080F3910 - cmp r1, 0 - beq _080F391A - b _080F394E - .align 2, 0 -_080F3908: .4byte gUnknown_083DFEC4 -_080F390C: .4byte 0x00000306 -_080F3910: - cmp r1, 0x2 - beq _080F3938 - cmp r1, 0x3 - beq _080F3942 - b _080F394E -_080F391A: - ldr r3, _080F3928 @ =0x00009348 - adds r0, r2, r3 - str r1, [r0] - ldr r3, _080F392C @ =0x0000bc92 - adds r0, r2, r3 - strb r1, [r0] - b _080F3952 - .align 2, 0 -_080F3928: .4byte 0x00009348 -_080F392C: .4byte 0x0000bc92 -_080F3930: - movs r0, 0 - bl sub_80F2E18 - b _080F3952 -_080F3938: - bl sub_80F3970 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_080F3942: - bl sub_80F39A4 - lsls r0, 24 - cmp r0, 0 - beq _080F3952 - b _080F3960 -_080F394E: - movs r0, 0 - b _080F3962 -_080F3952: - ldr r0, _080F3968 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F396C @ =0x00000306 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F3960: - movs r0, 0x1 -_080F3962: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F3968: .4byte gUnknown_083DFEC4 -_080F396C: .4byte 0x00000306 - thumb_func_end sub_80F38EC - - thumb_func_start sub_80F3970 -sub_80F3970: @ 80F3970 - push {lr} - ldr r0, _080F3998 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F399C @ =0x0000bc93 - adds r2, r0, r1 - movs r1, 0 - strb r1, [r2] - ldr r1, _080F39A0 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F3992 -_080F3988: - bl sub_80F39A4 - lsls r0, 24 - cmp r0, 0 - bne _080F3988 -_080F3992: - pop {r0} - bx r0 - .align 2, 0 -_080F3998: .4byte gUnknown_083DFEC4 -_080F399C: .4byte 0x0000bc93 -_080F39A0: .4byte 0x00006dac - thumb_func_end sub_80F3970 - - thumb_func_start sub_80F39A4 -sub_80F39A4: @ 80F39A4 - push {r4,r5,lr} - sub sp, 0x10 - ldr r0, _080F3A18 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F3A1C @ =0x0000bc93 - adds r4, r1, r0 - ldrb r0, [r4] - cmp r0, 0xB - bhi _080F3A30 - ldrb r0, [r4] - lsls r0, 9 - ldr r2, _080F3A20 @ =0x0000a44c - adds r0, r2 - adds r0, r1, r0 - str r0, [sp] - ldr r5, _080F3A24 @ =0xffff0000 - ldr r2, [sp, 0x4] - ands r2, r5 - movs r0, 0x80 - lsls r0, 2 - orrs r2, r0 - str r2, [sp, 0x4] - ldrb r1, [r4] - adds r1, 0xB - lsls r1, 16 - ldr r0, _080F3A28 @ =0x0000ffff - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet - ldrb r0, [r4] - cmp r0, 0x4 - bhi _080F3A04 - lsls r0, 5 - ldr r1, _080F3A2C @ =gUnknown_083E3C60 - adds r0, r1 - str r0, [sp, 0x8] - ldrb r2, [r4] - adds r2, 0xA - add r0, sp, 0x8 - ldr r1, [r0, 0x4] - ands r1, r5 - orrs r1, r2 - str r1, [r0, 0x4] - bl LoadSpritePalette -_080F3A04: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB - bhi _080F3A30 - movs r0, 0x1 - b _080F3A32 - .align 2, 0 -_080F3A18: .4byte gUnknown_083DFEC4 -_080F3A1C: .4byte 0x0000bc93 -_080F3A20: .4byte 0x0000a44c -_080F3A24: .4byte 0xffff0000 -_080F3A28: .4byte 0x0000ffff -_080F3A2C: .4byte gUnknown_083E3C60 -_080F3A30: - movs r0, 0 -_080F3A32: - add sp, 0x10 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F39A4 - - thumb_func_start sub_80F3A3C -sub_80F3A3C: @ 80F3A3C - push {r4-r7,lr} - sub sp, 0x18 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - cmp r4, 0x2 - bhi _080F3A60 - lsls r0, r4, 3 - adds r0, r4 - adds r0, r5, r0 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r2, _080F3A5C @ =gUnknown_083DFEC4 - b _080F3A78 - .align 2, 0 -_080F3A5C: .4byte gUnknown_083DFEC4 -_080F3A60: - ldr r2, _080F3AD0 @ =gUnknown_083DFEC4 - ldr r1, [r2] - ldr r3, _080F3AD4 @ =0x0000bc8e - adds r0, r1, r3 - ldrb r0, [r0] - ldr r6, _080F3AD8 @ =0x0000bc8f - adds r1, r6 - ldrb r1, [r1] - subs r0, r1 - adds r0, r5, r0 - lsls r0, 16 - lsrs r1, r0, 16 -_080F3A78: - ldr r0, [r2] - ldr r7, _080F3ADC @ =0x0000bc4c - adds r0, r7 - adds r0, r1 - ldrb r2, [r0] - mov r1, sp - ldr r0, _080F3AE0 @ =gSpriteTemplate_83E476C - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - mov r3, sp - ldr r1, _080F3AE4 @ =gPokenavRibbonsIconGfx - lsls r2, 2 - adds r0, r2, r1 - ldrh r0, [r0] - adds r0, 0xB - strh r0, [r3] - adds r1, 0x2 - adds r2, r1 - ldrh r0, [r2] - adds r0, 0xA - strh r0, [r3, 0x2] - lsls r1, r5, 20 - movs r0, 0xC0 - lsls r0, 15 - adds r1, r0 - asrs r1, 16 - lsls r2, r4, 20 - movs r3, 0xA0 - lsls r3, 14 - adds r2, r3 - asrs r2, 16 - mov r0, sp - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - bne _080F3AE8 - movs r0, 0 - b _080F3AF2 - .align 2, 0 -_080F3AD0: .4byte gUnknown_083DFEC4 -_080F3AD4: .4byte 0x0000bc8e -_080F3AD8: .4byte 0x0000bc8f -_080F3ADC: .4byte 0x0000bc4c -_080F3AE0: .4byte gSpriteTemplate_83E476C -_080F3AE4: .4byte gPokenavRibbonsIconGfx -_080F3AE8: - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F3AFC @ =gSprites - adds r0, r1 -_080F3AF2: - add sp, 0x18 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F3AFC: .4byte gSprites - thumb_func_end sub_80F3A3C - - thumb_func_start sub_80F3B00 -sub_80F3B00: @ 80F3B00 - push {r4,lr} - ldr r0, _080F3B34 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F3B38 @ =0x0000bc90 - adds r0, r4, r1 - ldrb r0, [r0] - ldr r2, _080F3B3C @ =0x0000bc91 - adds r1, r4, r2 - ldrb r1, [r1] - bl sub_80F3A3C - adds r2, r0, 0 - ldr r1, _080F3B40 @ =0x00009348 - adds r0, r4, r1 - str r2, [r0] - cmp r2, 0 - beq _080F3B48 - adds r0, r2, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r2, _080F3B44 @ =0x0000bc92 - adds r1, r4, r2 - movs r0, 0x1 - strb r0, [r1] - b _080F3B4E - .align 2, 0 -_080F3B34: .4byte gUnknown_083DFEC4 -_080F3B38: .4byte 0x0000bc90 -_080F3B3C: .4byte 0x0000bc91 -_080F3B40: .4byte 0x00009348 -_080F3B44: .4byte 0x0000bc92 -_080F3B48: - ldr r1, _080F3B54 @ =0x0000bc92 - adds r0, r4, r1 - strb r2, [r0] -_080F3B4E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F3B54: .4byte 0x0000bc92 - thumb_func_end sub_80F3B00 - - thumb_func_start sub_80F3B58 -sub_80F3B58: @ 80F3B58 - push {lr} - ldr r0, _080F3B6C @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F3B70 @ =0x0000bc92 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, 0 - bne _080F3B74 - movs r0, 0 - b _080F3B8A - .align 2, 0 -_080F3B6C: .4byte gUnknown_083DFEC4 -_080F3B70: .4byte 0x0000bc92 -_080F3B74: - ldr r3, _080F3B90 @ =0x00009348 - adds r0, r1, r3 - ldr r0, [r0] - adds r0, 0x3F - ldrb r0, [r0] - lsrs r0, 5 - movs r1, 0x1 - eors r0, r1 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r2] -_080F3B8A: - pop {r1} - bx r1 - .align 2, 0 -_080F3B90: .4byte 0x00009348 - thumb_func_end sub_80F3B58 - - thumb_func_start sub_80F3B94 -sub_80F3B94: @ 80F3B94 - push {r4,lr} - ldr r0, _080F3BB8 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F3BBC @ =0x00009348 - adds r0, r4, r1 - ldr r2, [r0] - cmp r2, 0 - beq _080F3BC4 - adds r0, r2, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, _080F3BC0 @ =0x0000bc92 - adds r1, r4, r0 - movs r0, 0x1 - strb r0, [r1] - b _080F3BCA - .align 2, 0 -_080F3BB8: .4byte gUnknown_083DFEC4 -_080F3BBC: .4byte 0x00009348 -_080F3BC0: .4byte 0x0000bc92 -_080F3BC4: - ldr r1, _080F3BD0 @ =0x0000bc92 - adds r0, r4, r1 - strb r2, [r0] -_080F3BCA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F3BD0: .4byte 0x0000bc92 - thumb_func_end sub_80F3B94 - - thumb_func_start sub_80F3BD4 -sub_80F3BD4: @ 80F3BD4 - push {r4-r6,lr} - ldr r0, _080F3C18 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F3C1C @ =0x0000bc92 - adds r5, r1, r0 - ldrb r0, [r5] - cmp r0, 0 - beq _080F3C24 - ldr r0, _080F3C20 @ =0x00009348 - adds r4, r1, r0 - ldr r0, [r4] - adds r0, 0x3F - ldrb r0, [r0] - lsrs r0, 5 - movs r1, 0x1 - eors r0, r1 - ands r0, r1 - strb r0, [r5] - adds r6, r0, 0 - cmp r6, 0 - bne _080F3C12 - ldr r0, [r4] - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldr r0, [r4] - bl DestroySprite - str r6, [r4] -_080F3C12: - ldrb r0, [r5] - b _080F3C26 - .align 2, 0 -_080F3C18: .4byte gUnknown_083DFEC4 -_080F3C1C: .4byte 0x0000bc92 -_080F3C20: .4byte 0x00009348 -_080F3C24: - movs r0, 0 -_080F3C26: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F3BD4 - - thumb_func_start sub_80F3C2C -sub_80F3C2C: @ 80F3C2C - push {r4,lr} - ldr r0, _080F3C8C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3C90 @ =0x00009348 - adds r4, r0, r1 - ldr r0, [r4] - cmp r0, 0 - beq _080F3C50 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldr r0, [r4] - bl DestroySprite - movs r0, 0 - str r0, [r4] -_080F3C50: - movs r4, 0 -_080F3C52: - adds r0, r4, 0 - adds r0, 0xB - lsls r0, 16 - lsrs r0, 16 - bl FreeSpriteTilesByTag - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xB - bls _080F3C52 - movs r4, 0 -_080F3C6A: - adds r0, r4, 0 - adds r0, 0xA - lsls r0, 16 - lsrs r0, 16 - bl FreeSpritePaletteByTag - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _080F3C6A - bl sub_80F2F48 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F3C8C: .4byte gUnknown_083DFEC4 -_080F3C90: .4byte 0x00009348 - thumb_func_end sub_80F3C2C - - thumb_func_start sub_80F3C94 -sub_80F3C94: @ 80F3C94 - push {lr} - sub sp, 0x10 - ldr r0, _080F3CDC @ =gUnknown_083E4784 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - ldr r0, _080F3CE0 @ =gUnknown_083E478C - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x8] - str r1, [sp, 0xC] - mov r0, sp - bl LoadSpriteSheet - add r0, sp, 0x8 - bl LoadSpritePalette - movs r1, 0 - ldr r0, _080F3CE4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - movs r3, 0x88 - lsls r3, 8 - adds r2, r0, r3 - movs r3, 0 -_080F3CC6: - lsls r0, r1, 2 - adds r0, r2, r0 - str r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9 - bls _080F3CC6 - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_080F3CDC: .4byte gUnknown_083E4784 -_080F3CE0: .4byte gUnknown_083E478C -_080F3CE4: .4byte gUnknown_083DFEC4 - thumb_func_end sub_80F3C94 - - thumb_func_start sub_80F3CE8 -sub_80F3CE8: @ 80F3CE8 - push {lr} - bl move_anim_execute - movs r0, 0x17 - bl FreeSpriteTilesByTag - movs r0, 0xF - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - thumb_func_end sub_80F3CE8 - - thumb_func_start sub_80F3D00 -sub_80F3D00: @ 80F3D00 - push {r4,r5,lr} - ldr r0, _080F3D34 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r1, _080F3D38 @ =0x000087dc - adds r0, r2, r1 - movs r3, 0 - ldrsh r0, [r0, r3] - lsls r0, 2 - ldr r1, _080F3D3C @ =0x0000893c - adds r0, r1 - adds r0, r2, r0 - ldrb r1, [r0, 0x3] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080F3D94 - ldr r3, _080F3D40 @ =0x00008fe9 - adds r0, r2, r3 - movs r1, 0 - ldrsb r1, [r0, r1] - ldr r3, _080F3D44 @ =0x00008931 - adds r0, r2, r3 - adds r0, r1 - ldrb r5, [r0] - movs r4, 0 - b _080F3D86 - .align 2, 0 -_080F3D34: .4byte gUnknown_083DFEC4 -_080F3D38: .4byte 0x000087dc -_080F3D3C: .4byte 0x0000893c -_080F3D40: .4byte 0x00008fe9 -_080F3D44: .4byte 0x00008931 -_080F3D48: - ldr r0, _080F3D9C @ =gSpriteTemplate_83E4800 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080F3D8C - ldr r0, _080F3DA0 @ =gUnknown_083DFEC4 - ldr r2, [r0] - lsls r0, r4, 2 - movs r3, 0x88 - lsls r3, 8 - adds r2, r3 - adds r2, r0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F3DA4 @ =gSprites - adds r0, r1 - str r0, [r2] - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_080F3D86: - adds r0, r5, 0x1 - cmp r4, r0 - blt _080F3D48 -_080F3D8C: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80F3F20 -_080F3D94: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F3D9C: .4byte gSpriteTemplate_83E4800 -_080F3DA0: .4byte gUnknown_083DFEC4 -_080F3DA4: .4byte gSprites - thumb_func_end sub_80F3D00 - - thumb_func_start move_anim_execute -move_anim_execute: @ 80F3DA8 - push {r4-r6,lr} - movs r5, 0 - ldr r0, _080F3DD8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - movs r1, 0x88 - lsls r1, 8 - adds r6, r0, r1 -_080F3DB6: - lsls r0, r5, 2 - adds r4, r6, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F3DD2 - bl DestroySprite - movs r0, 0 - str r0, [r4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x9 - bls _080F3DB6 -_080F3DD2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F3DD8: .4byte gUnknown_083DFEC4 - thumb_func_end move_anim_execute - - thumb_func_start sub_80F3DDC -sub_80F3DDC: @ 80F3DDC - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080F3DFE - movs r0, 0 - strh r0, [r1, 0x30] - ldrh r0, [r1, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_80F3F20 -_080F3DFE: - pop {r0} - bx r0 - thumb_func_end sub_80F3DDC - - thumb_func_start sub_80F3E04 -sub_80F3E04: @ 80F3E04 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080F3E1C - movs r0, 0 - strh r0, [r2, 0x30] - ldr r0, _080F3E20 @ =sub_80F3DDC - str r0, [r2, 0x1C] -_080F3E1C: - pop {r0} - bx r0 - .align 2, 0 -_080F3E20: .4byte sub_80F3DDC - thumb_func_end sub_80F3E04 - - thumb_func_start sub_80F3E24 -sub_80F3E24: @ 80F3E24 - push {r4,r5,lr} - adds r3, r0, 0 - ldr r0, _080F3E64 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3E68 @ =0x00008768 - adds r4, r0, r1 - ldr r0, [r4] - cmp r0, 0 - beq _080F3E70 - ldrh r1, [r0, 0x24] - ldrh r0, [r0, 0x20] - adds r1, r0 - ldr r2, _080F3E6C @ =gUnknown_083E4794 - movs r5, 0x2E - ldrsh r0, [r3, r5] - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - adds r0, r1 - strh r0, [r3, 0x20] - ldr r0, [r4] - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - movs r4, 0x2E - ldrsh r0, [r3, r4] - lsls r0, 2 - adds r2, 0x2 - adds r0, r2 - ldrh r0, [r0] - adds r0, r1 - b _080F3E8E - .align 2, 0 -_080F3E64: .4byte gUnknown_083DFEC4 -_080F3E68: .4byte 0x00008768 -_080F3E6C: .4byte gUnknown_083E4794 -_080F3E70: - ldr r1, _080F3E98 @ =gUnknown_083E4794 - movs r5, 0x2E - ldrsh r0, [r3, r5] - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0] - adds r0, 0x28 - strh r0, [r3, 0x20] - movs r2, 0x2E - ldrsh r0, [r3, r2] - lsls r0, 2 - adds r1, 0x2 - adds r0, r1 - ldrh r0, [r0] - adds r0, 0x68 -_080F3E8E: - strh r0, [r3, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F3E98: .4byte gUnknown_083E4794 - thumb_func_end sub_80F3E24 - thumb_func_start sub_80F3E9C sub_80F3E9C: @ 80F3E9C push {r4,lr} diff --git a/include/pokenav.h b/include/pokenav.h index 22bda9104..cf7b3f679 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -123,7 +123,7 @@ struct UnkPokenavStruct { /*0x87DE*/ s16 unk87DE; /*0x87E0*/ void *unk87E0; /*0x87E4*/ struct Sprite *unk87E4[7]; - /*0x8800*/ u8 filler8800[0x28]; + /*0x8800*/ struct Sprite *unk8800[10]; /*0x8828*/ u8 unk8828; /*0x8829*/ u8 unk8829[3][64]; /*0x88E9*/ u8 unk88E9[3][24]; @@ -138,15 +138,17 @@ struct UnkPokenavStruct { /*0x9004*/ u8 unk9004[3][20]; /*0x9040*/ u8 unk9040[0x304]; /*0x9344*/ u8 unk9344; - /*0x9345*/ u8 filler9345[7]; + /*0x9345*/ u8 filler9345[3]; + /*0x9348*/ struct Sprite *unk9348; /*0x934C*/ u16 unk934C[0x280]; - /*0x984C*/ u8 unk984C[0x2400]; + /*0x984C*/ u8 unk984C[0xC][0x100]; + /*0xA44C*/ u8 unkA44C[0xC][0x200]; /*0xBC4C*/ u8 unkBC4C[0x42]; /*0xBC8E*/ u8 unkBC8E; /*0xBC8F*/ u8 unkBC8F; /*0xBC90*/ u8 unkBC90; /*0xBC91*/ u8 unkBC91; - /*0xBC92*/ u8 fillerBC92[0x1]; + /*0xBC92*/ u8 unkBC92; /*0xBC93*/ u8 unkBC93; /*0xBC94*/ u8 fillerBC94[0x6]; /*0xBC9A*/ u8 unkBC9A; diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 28b3c685f..882177a5b 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -149,7 +149,7 @@ extern const u8 gPokenavRibbonView_Gfx[]; extern const u8 gUnknown_083E040C[]; extern const u16 gPokenavRibbonView_Pal[]; extern const u16 gUnknown_083E03A8[]; -extern const u16 gUnknown_083E3C60[]; +extern const u16 gUnknown_083E3C60[][16]; extern const u16 gPokenavRibbonsIconGfx[][2]; extern const u8 *const gRibbonDescriptions[][2]; extern const u8 *const gGiftRibbonDescriptions[][2]; @@ -196,6 +196,12 @@ extern const struct SpritePalette gUnknown_083E4648[3]; extern const struct SpriteTemplate gSpriteTemplate_83E4660; extern const u16 gUnknown_083E4678[]; extern const u8 gUnknown_083E3D00[]; +extern const struct SpriteTemplate gSpriteTemplate_83E476C; +extern const struct SpriteSheet gUnknown_083E4784; +extern const struct SpritePalette gUnknown_083E478C; +extern const struct SpriteTemplate gSpriteTemplate_83E4800; +extern const s16 gUnknown_083E4794[][2]; + extern u16 gUnknown_020388B4; extern u8 gUnknown_020388B0[]; @@ -319,7 +325,17 @@ 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); +static bool8 sub_80F37D0(void); +static void sub_80F38B8(void); +static bool8 sub_80F38EC(void); +static void sub_80F3970(void); +static bool8 sub_80F39A4(void); +static void sub_80F3B00(void); +static bool8 sub_80F3B58(void); +static void sub_80F3B94(void); +static bool8 sub_80F3BD4(void); +static void sub_80F3C2C(void); +void sub_80F3F20(u8, u8); extern void sub_80F0900(void); extern void sub_80F443C(u8 *, u16); @@ -344,18 +360,11 @@ extern void sub_80F708C(u32); extern void sub_80F4394(); extern void sub_80F42C4(); extern void sub_80F6F10(); -extern void sub_80F3C2C(); static extern void sub_80F15A8(void); extern void sub_80F6A4C(); extern bool8 sub_80F6AF0(); -extern void sub_80F3B00(); -extern bool8 sub_80F3B58(); extern u8 sub_80F68E8(); -extern void sub_80F3B94(); -extern bool8 sub_80F3BD4(); extern void sub_80F66E0(); -extern void sub_80F38B8(); -extern bool8 sub_80F38EC(); extern void sub_80F638C(); extern bool8 sub_80F63D0(); extern void sub_80F4CF0(); @@ -5519,7 +5528,7 @@ static bool8 sub_80F1080(void) case 12: LoadPalette(gPokenavRibbonView_Pal, 0x20, 0x20); LoadPalette(gUnknown_083E03A8, 0xF0, 0x20); - LoadPalette(gUnknown_083E3C60, 0x30, 0xA0); + LoadPalette(gUnknown_083E3C60[0], 0x30, 0xA0); LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20); LoadPalette(gUnknown_083E03A8 + 0xF, 0xBF, 0x2); break; @@ -7337,3 +7346,318 @@ static void sub_80F379C(void) if (!gUnknown_083DFEC4->unk6DAC) while (sub_80F37D0()); } + +static bool8 sub_80F37D0(void) +{ + u16 i; + u8 j, k, l, m; + + if (gUnknown_083DFEC4->unkBC93 > 11) + return FALSE; + + for (i = 0; i < 2; i++) + { + u8 *r4 = &gUnknown_083DFEC4->unk984C[gUnknown_083DFEC4->unkBC93][0]; + u8 *r5 = &gUnknown_083DFEC4->unkA44C[gUnknown_083DFEC4->unkBC93][0]; + for (j = 0; j < 4; j++) + { + CpuFastSet(r4, r5, 0x10); + r5 += 0x40; + r4 += 0x20; + for (k = 0; k < 2; k++) + { + for (l = 0; l < 8; l++) + { + r4 += 4; + for (m = 0; m < 4; m++) + { + r4 -= 1; + *r5 = (*r4 << 4) | ((*r4 >> 4) & 0xF); + r5++; + } + + r4 += 4; + } + + r4 -= 0x40; + } + + r4 += 0x60; + } + + if (++gUnknown_083DFEC4->unkBC93 > 11) + return FALSE; + } + + if (gUnknown_083DFEC4->unkBC93 > 11) + return FALSE; + + return TRUE; +} + +static void sub_80F38B8(void) +{ + gUnknown_083DFEC4->unk306 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F38EC()); +} + +static bool8 sub_80F38EC(void) +{ + switch (gUnknown_083DFEC4->unk306) + { + case 0: + gUnknown_083DFEC4->unk9348 = NULL; + gUnknown_083DFEC4->unkBC92 = 0; + break; + case 1: + sub_80F2E18(0); + break; + case 2: + sub_80F3970(); + gUnknown_083DFEC4->unk306++; + // fall through + case 3: + if (sub_80F39A4()) + return TRUE; + break; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} + +static void sub_80F3970(void) +{ + gUnknown_083DFEC4->unkBC93 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F39A4()); +} + +static bool8 sub_80F39A4(void) +{ + struct SpriteSheet spriteSheet; + struct SpritePalette spritePalette; + if (gUnknown_083DFEC4->unkBC93 > 11) + return FALSE; + + spriteSheet.data = &gUnknown_083DFEC4->unkA44C[gUnknown_083DFEC4->unkBC93][0]; + spriteSheet.size = 0x200; + spriteSheet.tag = gUnknown_083DFEC4->unkBC93 + 11; + LoadSpriteSheet(&spriteSheet); + if (gUnknown_083DFEC4->unkBC93 < 5) + { + spritePalette.data = gUnknown_083E3C60[gUnknown_083DFEC4->unkBC93]; + spritePalette.tag = gUnknown_083DFEC4->unkBC93 + 10; + LoadSpritePalette(&spritePalette); + } + + if (++gUnknown_083DFEC4->unkBC93 > 11) + return FALSE; + + return TRUE; +} + +static struct Sprite *sub_80F3A3C(u16 arg0, u16 arg1) +{ + struct SpriteTemplate spriteTemplate; + u16 var0; + u8 ribbon; + u8 spriteId; + + if (arg1 < 3) + var0 = arg0 + arg1 * 9; + else + var0 = arg0 + (gUnknown_083DFEC4->unkBC8E - gUnknown_083DFEC4->unkBC8F); + + ribbon = gUnknown_083DFEC4->unkBC4C[var0]; + spriteTemplate = gSpriteTemplate_83E476C; + spriteTemplate.tileTag = gPokenavRibbonsIconGfx[ribbon][0] + 11; + spriteTemplate.paletteTag = gPokenavRibbonsIconGfx[ribbon][1] + 10; + spriteId = CreateSprite(&spriteTemplate, arg0 * 16 + 96, arg1 * 16 + 40, 2); + if (spriteId != MAX_SPRITES) + return &gSprites[spriteId]; + else + return NULL; +} + +static void sub_80F3B00(void) +{ + gUnknown_083DFEC4->unk9348 = sub_80F3A3C(gUnknown_083DFEC4->unkBC90, gUnknown_083DFEC4->unkBC91); + if (gUnknown_083DFEC4->unk9348) + { + StartSpriteAffineAnim(gUnknown_083DFEC4->unk9348, 1); + gUnknown_083DFEC4->unkBC92 = 1; + } + else + { + gUnknown_083DFEC4->unkBC92 = 0; + } +} + +static bool8 sub_80F3B58(void) +{ + if (gUnknown_083DFEC4->unkBC92) + { + gUnknown_083DFEC4->unkBC92 = !gUnknown_083DFEC4->unk9348->affineAnimEnded; + return gUnknown_083DFEC4->unkBC92; + } + else + { + return FALSE; + } +} + +static void sub_80F3B94(void) +{ + if (gUnknown_083DFEC4->unk9348) + { + StartSpriteAffineAnim(gUnknown_083DFEC4->unk9348, 2); + gUnknown_083DFEC4->unkBC92 = 1; + } + else + { + gUnknown_083DFEC4->unkBC92 = 0; + } +} + +static bool8 sub_80F3BD4(void) +{ + if (gUnknown_083DFEC4->unkBC92) + { + gUnknown_083DFEC4->unkBC92 = !gUnknown_083DFEC4->unk9348->affineAnimEnded; + if (!gUnknown_083DFEC4->unkBC92) + { + FreeOamMatrix(gUnknown_083DFEC4->unk9348->oam.matrixNum); + DestroySprite(gUnknown_083DFEC4->unk9348); + gUnknown_083DFEC4->unk9348 = NULL; + } + + return gUnknown_083DFEC4->unkBC92; + } + else + { + return FALSE; + } +} + +static void sub_80F3C2C(void) +{ + u16 i; + + if (gUnknown_083DFEC4->unk9348) + { + FreeOamMatrix(gUnknown_083DFEC4->unk9348->oam.matrixNum); + DestroySprite(gUnknown_083DFEC4->unk9348); + gUnknown_083DFEC4->unk9348 = NULL; + } + + for (i = 0; i < 12; i++) + FreeSpriteTilesByTag(i + 0xB); + + for (i = 0; i < 5; i++) + FreeSpritePaletteByTag(i + 0xA); + + sub_80F2F48(); +} + +void sub_80F3C94(void) +{ + u16 i; + struct SpriteSheet spriteSheet; + struct SpritePalette spritePalette; + + spriteSheet = gUnknown_083E4784; + spritePalette = gUnknown_083E478C; + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&spritePalette); + for (i = 0; i < 10; i++) + gUnknown_083DFEC4->unk8800[i] = NULL; +} + +void sub_80F3CE8(void) +{ + move_anim_execute(); + FreeSpriteTilesByTag(0x17); + FreeSpritePaletteByTag(0xF); +} + +void sub_80F3D00(void) +{ + u8 spriteId; + u16 i; + u8 var1; + struct UnkUsePokeblockSub *var0 = &gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC]; + + if (!var0->unk4) + return; + + var1 = gUnknown_083DFEC4->unk8931[gUnknown_083DFEC4->unk8fe9]; + for (i = 0; i < var1 + 1; i++) + { + spriteId = CreateSprite(&gSpriteTemplate_83E4800, 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk8800[i] = &gSprites[spriteId]; + gUnknown_083DFEC4->unk8800[i]->invisible = 1; + } + else + { + break; + } + } + + sub_80F3F20(var1, 1); +} + +void move_anim_execute(void) +{ + u16 i; + + for (i = 0; i < 10; i++) + { + if (!gUnknown_083DFEC4->unk8800[i]) + return; + + DestroySprite(gUnknown_083DFEC4->unk8800[i]); + gUnknown_083DFEC4->unk8800[i] = NULL; + } +} + +void sub_80F3DDC(struct Sprite *sprite) +{ + if (++sprite->data[1] > 60) + { + sprite->data[1] = 0; + sub_80F3F20(sprite->data[2], 0); + } +} + +void sub_80F3E04(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + sprite->data[1] = 0; + sprite->callback = sub_80F3DDC; + } +} + +void sub_80F3E24(struct Sprite *sprite) +{ + if (gUnknown_083DFEC4->unk8768) + { + sprite->pos1.x = gUnknown_083DFEC4->unk8768->pos1.x + + gUnknown_083DFEC4->unk8768->pos2.x + + gUnknown_083E4794[sprite->data[0]][0]; + sprite->pos1.y = gUnknown_083DFEC4->unk8768->pos1.y + + gUnknown_083DFEC4->unk8768->pos2.y + + gUnknown_083E4794[sprite->data[0]][1]; + } + else + { + sprite->pos1.x = gUnknown_083E4794[sprite->data[0]][0] + 40; + sprite->pos1.y = gUnknown_083E4794[sprite->data[0]][1] + 104; + } +} |