summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-08-18 13:49:01 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-08-18 13:57:09 -0500
commit8e79b6961dd0294c34e68eef7768411110589ec1 (patch)
treed23f93da8b7b4d37ed0a53f60b1a031cf5f165ee
parentee775fea6d627f6f1652d0ff6c7e690a5a06fd69 (diff)
Decompile more pokenav
-rw-r--r--asm/pokenav.s906
-rw-r--r--include/pokenav.h10
-rw-r--r--src/pokenav_before.c344
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;
+ }
+}