summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-08-17 18:06:02 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-08-17 18:21:17 -0500
commitee775fea6d627f6f1652d0ff6c7e690a5a06fd69 (patch)
tree67ff596e9f2df086087640e0858d4ee980a41bfc
parent01d44429a35584b44d820a14751ba03734e63701 (diff)
Decompile more pokenav
-rw-r--r--asm/pokenav.s866
-rw-r--r--include/pokenav.h19
-rw-r--r--src/pokenav_before.c276
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());
+}