summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokenav_unk_10.s1309
-rw-r--r--include/graphics.h3
-rw-r--r--include/pokenav.h2
-rw-r--r--include/strings.h3
-rw-r--r--ld_script.txt1
-rw-r--r--src/pokenav_unk_10.c733
6 files changed, 674 insertions, 1377 deletions
diff --git a/asm/pokenav_unk_10.s b/asm/pokenav_unk_10.s
deleted file mode 100644
index bf621e6a6..000000000
--- a/asm/pokenav_unk_10.s
+++ /dev/null
@@ -1,1309 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- thumb_func_start sub_81D0450
-sub_81D0450: @ 81D0450
- push {r4,lr}
- movs r0, 0xD
- movs r1, 0x9C
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081D0498
- movs r0, 0x12
- bl GetSubstructPtr
- str r0, [r4, 0x8]
- cmp r0, 0
- beq _081D0498
- adds r0, r4, 0
- bl sub_81D0814
- adds r1, r4, 0
- adds r1, 0x98
- ldr r0, =sub_81D04C4
- str r0, [r1]
- ldr r1, =gKeyRepeatContinueDelay
- movs r0, 0x3
- strh r0, [r1]
- ldr r1, =gKeyRepeatStartDelay
- movs r0, 0xA
- strh r0, [r1]
- movs r0, 0x1
- b _081D049A
- .pool
-_081D0498:
- movs r0, 0
-_081D049A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0450
-
- thumb_func_start sub_81D04A0
-sub_81D04A0: @ 81D04A0
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- adds r1, r0, 0
- adds r1, 0x98
- ldr r1, [r1]
- bl _call_via_r1
- pop {r1}
- bx r1
- thumb_func_end sub_81D04A0
-
- thumb_func_start sub_81D04B8
-sub_81D04B8: @ 81D04B8
- push {lr}
- movs r0, 0xD
- bl FreePokenavSubstruct
- pop {r0}
- bx r0
- thumb_func_end sub_81D04B8
-
- thumb_func_start sub_81D04C4
-sub_81D04C4: @ 81D04C4
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081D04E4
- ldr r3, [r4, 0x8]
- ldrh r0, [r3, 0x2]
- cmp r0, 0
- beq _081D04E4
- subs r0, 0x1
- b _081D04FC
- .pool
-_081D04E4:
- ldrh r1, [r2, 0x30]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081D050C
- ldr r3, [r4, 0x8]
- ldrh r1, [r3, 0x2]
- ldrh r0, [r3]
- subs r0, 0x1
- cmp r1, r0
- bge _081D050C
- adds r0, r1, 0x1
-_081D04FC:
- movs r1, 0
- strh r0, [r3, 0x2]
- strh r1, [r4, 0xC]
- adds r0, r4, 0
- bl sub_81D0814
- movs r0, 0x1
- b _081D053E
-_081D050C:
- ldrh r2, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _081D0528
- adds r1, r4, 0
- adds r1, 0x98
- ldr r0, =sub_81D0548
- str r0, [r1]
- movs r0, 0x2
- b _081D053E
- .pool
-_081D0528:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- bne _081D0534
- movs r0, 0
- b _081D053E
-_081D0534:
- adds r1, r4, 0
- adds r1, 0x98
- ldr r0, =sub_81D05D4
- str r0, [r1]
- movs r0, 0x5
-_081D053E:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D04C4
-
- thumb_func_start sub_81D0548
-sub_81D0548: @ 81D0548
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081D0562
- adds r0, r4, 0
- bl sub_81D05DC
- cmp r0, 0
- bne _081D05A4
-_081D0562:
- ldr r0, =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081D0578
- adds r0, r4, 0
- bl sub_81D061C
- cmp r0, 0
- bne _081D05A4
-_081D0578:
- ldr r0, =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081D058E
- adds r0, r4, 0
- bl sub_81D0664
- cmp r0, 0
- bne _081D05A4
-_081D058E:
- ldr r0, =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081D05AC
- adds r0, r4, 0
- bl sub_81D0688
- cmp r0, 0
- beq _081D05AC
-_081D05A4:
- movs r0, 0x3
- b _081D05CA
- .pool
-_081D05AC:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081D05C0
- movs r0, 0
- b _081D05CA
- .pool
-_081D05C0:
- adds r1, r4, 0
- adds r1, 0x98
- ldr r0, =sub_81D04C4
- str r0, [r1]
- movs r0, 0x4
-_081D05CA:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D0548
-
- thumb_func_start sub_81D05D4
-sub_81D05D4: @ 81D05D4
- ldr r0, =0x000186ae
- bx lr
- .pool
- thumb_func_end sub_81D05D4
-
- thumb_func_start sub_81D05DC
-sub_81D05DC: @ 81D05DC
- push {r4,lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0xC]
- adds r2, r0, 0
- cmp r2, 0x18
- bhi _081D05F0
- cmp r2, 0x8
- bls _081D0612
- subs r0, 0x9
- b _081D060C
-_081D05F0:
- ldrh r3, [r1, 0x10]
- adds r2, r3, 0
- cmp r2, 0
- beq _081D0612
- ldrh r0, [r1, 0xC]
- subs r0, 0x1B
- ldrh r4, [r1, 0xE]
- adds r0, r4
- strh r0, [r1, 0xC]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r2
- bcc _081D060E
- subs r0, r3, 0x1
-_081D060C:
- strh r0, [r1, 0xC]
-_081D060E:
- movs r0, 0x1
- b _081D0614
-_081D0612:
- movs r0, 0
-_081D0614:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D05DC
-
- thumb_func_start sub_81D061C
-sub_81D061C: @ 81D061C
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0xC]
- adds r1, r0, 0
- cmp r1, 0x18
- bhi _081D065C
- ldrh r3, [r2, 0xE]
- cmp r1, r3
- bcs _081D0640
- adds r0, 0x9
- strh r0, [r2, 0xC]
- ldrh r1, [r2, 0x10]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r1
- bcc _081D0658
- subs r0, r1, 0x1
- b _081D0656
-_081D0640:
- ldrh r0, [r2, 0x12]
- cmp r0, 0
- beq _081D065C
- ldrh r1, [r2, 0xC]
- ldrh r0, [r2, 0xE]
- subs r0, r1, r0
- ldrh r1, [r2, 0x12]
- cmp r0, r1
- blt _081D0654
- subs r0, r1, 0x1
-_081D0654:
- adds r0, 0x1B
-_081D0656:
- strh r0, [r2, 0xC]
-_081D0658:
- movs r0, 0x1
- b _081D065E
-_081D065C:
- movs r0, 0
-_081D065E:
- pop {r1}
- bx r1
- thumb_func_end sub_81D061C
-
- thumb_func_start sub_81D0664
-sub_81D0664: @ 81D0664
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r4, [r5, 0xC]
- adds r0, r4, 0
- movs r1, 0x9
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _081D067C
- movs r0, 0
- b _081D0682
-_081D067C:
- subs r0, r4, 0x1
- strh r0, [r5, 0xC]
- movs r0, 0x1
-_081D0682:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0664
-
- thumb_func_start sub_81D0688
-sub_81D0688: @ 81D0688
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r4, [r5, 0xC]
- adds r0, r4, 0
- movs r1, 0x9
- bl __umodsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x7
- bgt _081D06BC
- cmp r4, 0x1A
- bhi _081D06AC
- ldrh r0, [r5, 0x10]
- subs r0, 0x1
- cmp r4, r0
- bge _081D06BC
- b _081D06B4
-_081D06AC:
- ldrh r0, [r5, 0x12]
- subs r0, 0x1
- cmp r1, r0
- bge _081D06BC
-_081D06B4:
- adds r0, r4, 0x1
- strh r0, [r5, 0xC]
- movs r0, 0x1
- b _081D06BE
-_081D06BC:
- movs r0, 0
-_081D06BE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0688
-
- thumb_func_start sub_81D06C4
-sub_81D06C4: @ 81D06C4
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- ldr r0, [r0, 0x8]
- ldrh r0, [r0, 0x2]
- pop {r1}
- bx r1
- thumb_func_end sub_81D06C4
-
- thumb_func_start sub_81D06D4
-sub_81D06D4: @ 81D06D4
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- ldr r0, [r0, 0x8]
- ldrh r0, [r0]
- pop {r1}
- bx r1
- thumb_func_end sub_81D06D4
-
- thumb_func_start sub_81D06E4
-sub_81D06E4: @ 81D06E4
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r7, r1, 0
- adds r6, r2, 0
- movs r0, 0xD
- bl GetSubstructPtr
- ldr r1, [r0, 0x8]
- ldrh r0, [r1, 0x2]
- lsls r0, 2
- adds r0, 0x4
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0xE
- bne _081D0730
- ldrb r1, [r1, 0x1]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r5, 0
- bl GetMonData
- adds r0, r4, 0
- bl GetLevelFromMonExp
- strb r0, [r7]
- adds r0, r4, 0
- bl GetMonGender
- strb r0, [r6]
- b _081D0752
- .pool
-_081D0730:
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- bl GetBoxedMonPtr
- adds r4, r0, 0
- bl GetBoxMonGender
- strb r0, [r6]
- adds r0, r4, 0
- bl GetLevelFromBoxMonExp
- strb r0, [r7]
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r5, 0
- bl GetBoxMonData
-_081D0752:
- adds r0, r5, 0
- bl StringGetEnd10
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D06E4
-
- thumb_func_start sub_81D0760
-sub_81D0760: @ 81D0760
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- adds r7, r2, 0
- movs r0, 0xD
- bl GetSubstructPtr
- ldr r1, [r0, 0x8]
- ldrh r0, [r1, 0x2]
- lsls r0, 2
- adds r0, 0x4
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0xE
- bne _081D07AC
- ldrb r1, [r1, 0x1]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- str r0, [r6]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- b _081D07D0
- .pool
-_081D07AC:
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- bl GetBoxedMonPtr
- adds r4, r0, 0
- movs r1, 0xB
- bl GetBoxMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0
- bl GetBoxMonData
- str r0, [r6]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetBoxMonData
-_081D07D0:
- str r0, [r7]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D0760
-
- thumb_func_start sub_81D07D8
-sub_81D07D8: @ 81D07D8
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- ldr r1, [r0, 0x8]
- ldrh r0, [r1, 0x2]
- lsls r0, 2
- adds r0, 0x4
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0xE
- beq _081D07FA
- ldrb r1, [r1, 0x1]
- movs r2, 0x52
- bl GetBoxMonDataAt
- b _081D080A
-_081D07FA:
- ldrb r1, [r1, 0x1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x52
- bl GetMonData
-_081D080A:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D07D8
-
- thumb_func_start sub_81D0814
-sub_81D0814: @ 81D0814
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrh r1, [r0, 0x2]
- lsls r1, 2
- adds r1, 0x4
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0xE
- bne _081D0848
- ldrb r1, [r1, 0x1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x53
- bl GetMonData
- b _081D0852
- .pool
-_081D0848:
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- movs r2, 0x53
- bl GetBoxMonDataAt
-_081D0852:
- mov r12, r0
- movs r0, 0
- strh r0, [r5, 0x10]
- strh r0, [r5, 0x12]
- movs r6, 0
- ldr r0, =gUnknown_086237F8
- mov r9, r0
- mov r10, r9
-_081D0862:
- lsls r2, r6, 2
- mov r3, r9
- adds r1, r2, r3
- movs r0, 0x1
- ldrb r3, [r1]
- lsls r0, r3
- subs r4, r0, 0x1
- mov r0, r12
- ands r4, r0
- ldrb r0, [r1, 0x3]
- adds r7, r2, 0
- cmp r0, 0
- bne _081D08AC
- movs r3, 0
- adds r6, 0x1
- mov r8, r6
- cmp r3, r4
- bge _081D08D6
- adds r6, r5, 0
- adds r6, 0x14
- mov r1, r10
- adds r0, r7, r1
- ldrb r2, [r0, 0x2]
-_081D0890:
- ldrh r0, [r5, 0x10]
- adds r1, r0, 0x1
- strh r1, [r5, 0x10]
- lsls r0, 16
- lsrs r0, 14
- adds r0, r6, r0
- adds r1, r2, r3
- str r1, [r0]
- adds r3, 0x1
- cmp r3, r4
- blt _081D0890
- b _081D08D6
- .pool
-_081D08AC:
- movs r3, 0
- adds r6, 0x1
- mov r8, r6
- cmp r3, r4
- bge _081D08D6
- adds r6, r5, 0
- adds r6, 0x78
- mov r1, r10
- adds r0, r7, r1
- ldrb r2, [r0, 0x2]
-_081D08C0:
- ldrh r0, [r5, 0x12]
- adds r1, r0, 0x1
- strh r1, [r5, 0x12]
- lsls r0, 16
- lsrs r0, 14
- adds r0, r6, r0
- adds r1, r2, r3
- str r1, [r0]
- adds r3, 0x1
- cmp r3, r4
- blt _081D08C0
-_081D08D6:
- mov r3, r9
- adds r0, r7, r3
- mov r1, r12
- ldrb r0, [r0]
- lsrs r1, r0
- mov r12, r1
- mov r6, r8
- cmp r6, 0x10
- bls _081D0862
- ldrh r0, [r5, 0x10]
- cmp r0, 0
- beq _081D0900
- subs r0, 0x1
- movs r1, 0x9
- bl __divsi3
- lsls r1, r0, 3
- adds r1, r0
- movs r0, 0
- strh r1, [r5, 0xE]
- b _081D0904
-_081D0900:
- strh r0, [r5, 0xE]
- movs r0, 0x1B
-_081D0904:
- strh r0, [r5, 0xC]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D0814
-
- thumb_func_start sub_81D0914
-sub_81D0914: @ 81D0914
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0xD
- bl GetSubstructPtr
- ldrh r1, [r0, 0x10]
- str r1, [r4]
- adds r0, 0x14
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0914
-
- thumb_func_start sub_81D092C
-sub_81D092C: @ 81D092C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0xD
- bl GetSubstructPtr
- ldrh r1, [r0, 0x12]
- str r1, [r4]
- adds r0, 0x78
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D092C
-
- thumb_func_start sub_81D0944
-sub_81D0944: @ 81D0944
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- ldrh r0, [r0, 0xC]
- pop {r1}
- bx r1
- thumb_func_end sub_81D0944
-
- thumb_func_start sub_81D0954
-sub_81D0954: @ 81D0954
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- adds r1, r0, 0
- ldrh r0, [r1, 0xC]
- cmp r0, 0x18
- ble _081D096C
- subs r0, 0x1B
- lsls r0, 2
- adds r1, 0x78
- b _081D0970
-_081D096C:
- lsls r0, 2
- adds r1, 0x14
-_081D0970:
- adds r1, r0
- ldr r0, [r1]
- pop {r1}
- bx r1
- thumb_func_end sub_81D0954
-
- thumb_func_start sub_81D0978
-sub_81D0978: @ 81D0978
- push {r4,lr}
- ldr r1, =0x0000101c
- movs r0, 0xE
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081D09A8
- ldr r0, =sub_81D0A6C
- movs r1, 0x1
- bl CreateLoopedTask
- str r0, [r4, 0x4]
- ldr r0, =sub_81D0A58
- str r0, [r4]
- movs r0, 0x1
- b _081D09AA
- .pool
-_081D09A8:
- movs r0, 0
-_081D09AA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0978
-
- thumb_func_start sub_81D09B0
-sub_81D09B0: @ 81D09B0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r5, r0, 0
- ldr r0, =gUnknown_08624BA0
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0x1
- bl CreateLoopedTask
- str r0, [r5, 0x4]
- ldr r0, =sub_81D0A58
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D09B0
-
- thumb_func_start sub_81D09E0
-sub_81D09E0: @ 81D09E0
- push {lr}
- movs r0, 0xE
- bl GetSubstructPtr
- ldr r0, [r0]
- bl _call_via_r0
- pop {r1}
- bx r1
- thumb_func_end sub_81D09E0
-
- thumb_func_start sub_81D09F4
-sub_81D09F4: @ 81D09F4
- push {r4,lr}
- movs r0, 0xE
- bl GetSubstructPtr
- adds r4, r0, 0
- ldrb r0, [r4, 0xA]
- bl RemoveWindow
- ldrb r0, [r4, 0x8]
- bl RemoveWindow
- ldrb r0, [r4, 0xC]
- bl RemoveWindow
- ldrb r0, [r4, 0xE]
- bl RemoveWindow
- adds r0, r4, 0
- bl sub_81D1178
- movs r0, 0x9
- bl FreeSpriteTilesByTag
- movs r0, 0xF
- bl FreeSpritePaletteByTag
- movs r0, 0x10
- bl FreeSpritePaletteByTag
- movs r0, 0x11
- bl FreeSpritePaletteByTag
- movs r0, 0x12
- bl FreeSpritePaletteByTag
- movs r0, 0x13
- bl FreeSpritePaletteByTag
- ldr r0, [r4, 0x14]
- bl FreeSpriteOamMatrix
- ldr r0, [r4, 0x14]
- bl DestroySprite
- movs r0, 0xE
- bl FreePokenavSubstruct
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81D09F4
-
- thumb_func_start sub_81D0A58
-sub_81D0A58: @ 81D0A58
- push {lr}
- movs r0, 0xE
- bl GetSubstructPtr
- ldr r0, [r0, 0x4]
- bl IsLoopedTaskActive
- pop {r1}
- bx r1
- thumb_func_end sub_81D0A58
-
- thumb_func_start sub_81D0A6C
-sub_81D0A6C: @ 81D0A6C
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x9
- bls _081D0A80
- b _081D0C48
-_081D0A80:
- lsls r0, r4, 2
- ldr r1, =_081D0A90
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081D0A90:
- .4byte _081D0AB8
- .4byte _081D0B04
- .4byte _081D0B74
- .4byte _081D0B88
- .4byte _081D0B9C
- .4byte _081D0BB0
- .4byte _081D0BC4
- .4byte _081D0BD8
- .4byte _081D0BE8
- .4byte _081D0C3C
-_081D0AB8:
- ldr r0, =gUnknown_08624B98
- movs r1, 0x2
- bl InitBgTemplates
- ldr r1, =gUnknown_08DDE030
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- adds r1, r5, 0
- adds r1, 0x1C
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, =gUnknown_08DDE12C
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- ldr r0, =gUnknown_08DDE010
- movs r1, 0x10
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- b _081D0BBA
- .pool
-_081D0B04:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _081D0B12
- b _081D0C44
-_081D0B12:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_8199DF0
- ldr r1, =gUnknown_086240B8
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0x1
- bl decompress_and_copy_tile_data_to_vram
- ldr r0, =0x0000081c
- adds r1, r5, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- ldr r0, =gUnknown_08623FF8
- movs r1, 0x20
- movs r2, 0xA0
- bl CopyPaletteIntoBufferUnfaded
- ldr r0, =gUnknown_08624098
- movs r1, 0xA0
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- movs r0, 0x1
- b _081D0BBC
- .pool
-_081D0B74:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
- adds r0, r5, 0
- bl sub_81D0E60
- movs r0, 0
- b _081D0C4A
-_081D0B88:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
- adds r0, r5, 0
- bl sub_81D0FCC
- movs r0, 0
- b _081D0C4A
-_081D0B9C:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
- adds r0, r5, 0
- bl sub_81D10A4
- movs r0, 0
- b _081D0C4A
-_081D0BB0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
-_081D0BBA:
- movs r0, 0x2
-_081D0BBC:
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- b _081D0C4A
-_081D0BC4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
- adds r0, r5, 0
- bl sub_81D1148
- movs r0, 0x1
- b _081D0C4A
-_081D0BD8:
- adds r0, r5, 0
- bl sub_81D12D8
- movs r0, 0xA
- bl sub_81C7BA4
- movs r0, 0
- b _081D0C4A
-_081D0BE8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
- adds r0, r5, 0
- bl sub_81D13FC
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl HideBg
- movs r0, 0x1
- bl sub_81C7AC0
- movs r0, 0
- b _081D0C4A
-_081D0C3C:
- bl IsPaletteFadeActive
- cmp r0, 0
- beq _081D0C48
-_081D0C44:
- movs r0, 0x2
- b _081D0C4A
-_081D0C48:
- movs r0, 0x4
-_081D0C4A:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0A6C
-
- thumb_func_start sub_81D0C54
-sub_81D0C54: @ 81D0C54
- push {lr}
- cmp r0, 0
- beq _081D0C60
- cmp r0, 0x1
- beq _081D0C70
- b _081D0C7C
-_081D0C60:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_81C7AC0
- movs r0, 0
- b _081D0C7E
-_081D0C70:
- bl IsPaletteFadeActive
- cmp r0, 0
- beq _081D0C7C
- movs r0, 0x2
- b _081D0C7E
-_081D0C7C:
- movs r0, 0x4
-_081D0C7E:
- pop {r1}
- bx r1
- thumb_func_end sub_81D0C54
-
- thumb_func_start sub_81D0C84
-sub_81D0C84: @ 81D0C84
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r4, r0, 0
- cmp r5, 0x6
- bhi _081D0D24
- lsls r0, r5, 2
- ldr r1, =_081D0CA4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081D0CA4:
- .4byte _081D0CC0
- .4byte _081D0CD0
- .4byte _081D0CE4
- .4byte _081D0CEE
- .4byte _081D0CF8
- .4byte _081D0D02
- .4byte _081D0D16
-_081D0CC0:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81D11D8
- movs r0, 0
- b _081D0D26
-_081D0CD0:
- adds r0, r4, 0
- bl sub_81D1234
- cmp r0, 0
- bne _081D0D20
- adds r0, r4, 0
- bl sub_81D0FF0
- movs r0, 0x1
- b _081D0D26
-_081D0CE4:
- adds r0, r4, 0
- bl sub_81D12D8
- movs r0, 0x1
- b _081D0D26
-_081D0CEE:
- adds r0, r4, 0
- bl sub_81D10D0
- movs r0, 0x1
- b _081D0D26
-_081D0CF8:
- adds r0, r4, 0
- bl sub_81D0E84
- movs r0, 0x1
- b _081D0D26
-_081D0D02:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081D0D20
- adds r0, r4, 0
- bl sub_81D11FC
- movs r0, 0
- b _081D0D26
-_081D0D16:
- adds r0, r4, 0
- bl sub_81D1234
- cmp r0, 0
- beq _081D0D24
-_081D0D20:
- movs r0, 0x2
- b _081D0D26
-_081D0D24:
- movs r0, 0x4
-_081D0D26:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0C84
-
- thumb_func_start sub_81D0D2C
-sub_81D0D2C: @ 81D0D2C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081D0D5C
- cmp r4, 0x1
- bgt _081D0D46
- cmp r4, 0
- beq _081D0D4C
- b _081D0D84
-_081D0D46:
- cmp r4, 0x2
- beq _081D0D76
- b _081D0D84
-_081D0D4C:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81D1448
- movs r0, 0
- b _081D0D86
-_081D0D5C:
- adds r0, r5, 0
- bl sub_81D1524
- cmp r0, 0
- bne _081D0D80
- adds r0, r5, 0
- bl sub_81D0EFC
- movs r0, 0xB
- bl sub_81C7BA4
- movs r0, 0
- b _081D0D86
-_081D0D76:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081D0D84
-_081D0D80:
- movs r0, 0x2
- b _081D0D86
-_081D0D84:
- movs r0, 0x4
-_081D0D86:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0D2C
-
- thumb_func_start sub_81D0D8C
-sub_81D0D8C: @ 81D0D8C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081D0DC0
- cmp r4, 0x1
- bgt _081D0DA6
- cmp r4, 0
- beq _081D0DB0
- b _081D0DF6
-_081D0DA6:
- cmp r4, 0x2
- beq _081D0DD4
- cmp r4, 0x3
- beq _081D0DE8
- b _081D0DF6
-_081D0DB0:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81D1500
- movs r0, 0
- b _081D0DF8
-_081D0DC0:
- adds r0, r5, 0
- bl sub_81D1524
- cmp r0, 0
- bne _081D0DF2
- adds r0, r5, 0
- bl sub_81D1448
- movs r0, 0
- b _081D0DF8
-_081D0DD4:
- adds r0, r5, 0
- bl sub_81D1524
- cmp r0, 0
- bne _081D0DF2
- adds r0, r5, 0
- bl sub_81D0EFC
- movs r0, 0
- b _081D0DF8
-_081D0DE8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081D0DF6
-_081D0DF2:
- movs r0, 0x2
- b _081D0DF8
-_081D0DF6:
- movs r0, 0x4
-_081D0DF8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0D8C
-
- thumb_func_start sub_81D0E00
-sub_81D0E00: @ 81D0E00
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081D0E30
- cmp r4, 0x1
- bgt _081D0E1A
- cmp r4, 0
- beq _081D0E20
- b _081D0E58
-_081D0E1A:
- cmp r4, 0x2
- beq _081D0E4A
- b _081D0E58
-_081D0E20:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81D1500
- movs r0, 0
- b _081D0E5A
-_081D0E30:
- adds r0, r5, 0
- bl sub_81D1524
- cmp r0, 0
- bne _081D0E54
- adds r0, r5, 0
- bl sub_81D0E84
- movs r0, 0xA
- bl sub_81C7BA4
- movs r0, 0
- b _081D0E5A
-_081D0E4A:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081D0E58
-_081D0E54:
- movs r0, 0x2
- b _081D0E5A
-_081D0E58:
- movs r0, 0x4
-_081D0E5A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0E00
-
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/graphics.h b/include/graphics.h
index bbb70590d..82ad960fc 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4030,6 +4030,9 @@ extern const u32 gPokenavLeftHeaderBeauty_Gfx[];
extern const u32 gPokenavLeftHeaderCute_Gfx[];
extern const u32 gPokenavLeftHeaderSmart_Gfx[];
extern const u32 gPokenavLeftHeaderTough_Gfx[];
+extern const u16 gUnknown_08DDE010[];
+extern const u32 gUnknown_08DDE030[];
+extern const u32 gUnknown_08DDE12C[];
extern const u32 gPageInfoTilemap[];
extern const u32 gUnknown_08D98CC8[];
diff --git a/include/pokenav.h b/include/pokenav.h
index 69a9f1f58..380e61dda 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -11,7 +11,7 @@ struct PokenavSub18
{
u16 unk0;
u16 unk2;
- struct
+ struct PokenavMonList
{
u8 boxId;
u8 monId;
diff --git a/include/strings.h b/include/strings.h
index d1a90cfaa..b830bfa41 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -2766,6 +2766,9 @@ extern const u8 gUnknown_085EC017[];
extern const u8 gUnknown_085EC01C[];
extern const u8 gUnknown_085EC022[];
+// pokenav_unk_10
+extern const u8 gText_RibbonsF700[];
+
// use_pokeblock
extern const u8 gText_Coolness[];
extern const u8 gText_Toughness[];
diff --git a/ld_script.txt b/ld_script.txt
index 60f8892e6..261c08fbc 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -320,7 +320,6 @@ SECTIONS {
src/pokenav_unk_8.o(.text*);
asm/pokenav_unk_8.o(.text*);
asm/pokenav_unk_9.o(.text*);
- asm/pokenav_unk_10.o(.text*);
src/pokenav_unk_10.o(.text*);
src/pokenav_match_call_data.o(.text*);
src/menu_specialized.o(.text*);
diff --git a/src/pokenav_unk_10.c b/src/pokenav_unk_10.c
index 0ca0ea20d..51dcd3687 100644
--- a/src/pokenav_unk_10.c
+++ b/src/pokenav_unk_10.c
@@ -1,72 +1,98 @@
#include "global.h"
#include "decompress.h"
#include "dynamic_placeholder_text_util.h"
+#include "graphics.h"
#include "international_string_util.h"
#include "pokenav.h"
+#include "sound.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings.h"
#include "text.h"
#include "trainer_pokemon_sprites.h"
#include "window.h"
+#include "constants/songs.h"
-struct Pokenav10Struct
+struct PokenavSub13
{
- u32 field_0[5];
- struct Sprite *field_14;
+ u8 filler0[0x8];
+ struct PokenavSub18 *field_8;
+ u16 field_C;
+ u16 field_E;
+ u16 field_10;
+ u16 field_12;
+ u32 field_14[25];
+ u32 field_78[8];
+ u32 (*field_98)(struct PokenavSub13 *structPtr);
};
-struct Pokenav10Struct2
+struct PokenavSub14
{
- u32 filler0[2];
+ u32 (*field_0)(void);
+ u32 loopedTaskId;
u16 field_8;
u16 field_A;
u16 field_C;
- u8 filler[2];
+ u16 field_E;
u16 field_10;
+ struct Sprite *field_14;
+ u32 filler;
+ u8 tilemapBuffers[2][BG_SCREEN_SIZE];
};
-// To do: move to C.
-extern const u16 gUnknown_08623FF8[];
-extern const u16 gUnknown_08624038[];
-extern const u16 gUnknown_08624018[];
-extern const u16 gUnknown_08624078[];
-extern const u16 gUnknown_08624058[];
-extern const u32 gUnknown_08624280[];
-extern const u8 gText_RibbonsF700[];
-extern const u8 *const gRibbonDescriptionPointers[][2];
-extern const u8 *const gGiftRibbonDescriptionPointers[][2];
-
static u32 gUnknown_030012C0;
static u32 gUnknown_030012C4;
-void sub_81D0E84(struct Pokenav10Struct2 *structPtr);
-void sub_81D0FF0(struct Pokenav10Struct2 *structPtr);
-void sub_81D10D0(struct Pokenav10Struct2 *structPtr);
+void sub_81D0E84(struct PokenavSub14 *structPtr);
+void sub_81D0FF0(struct PokenavSub14 *structPtr);
+void sub_81D10D0(struct PokenavSub14 *structPtr);
+void sub_81D1500(struct PokenavSub14 *structPtr);
+void sub_81D0EFC(struct PokenavSub14 *structPtr);
+void sub_81D1148(struct PokenavSub14 *structPtr);
+void sub_81D10A4(struct PokenavSub14 *structPtr);
+void sub_81D1178(struct PokenavSub14 *structPtr);
+void sub_81D11D8(struct PokenavSub14 *structPtr);
+void sub_81D11FC(struct PokenavSub14 *structPtr);
+void sub_81D0E60(struct PokenavSub14 *structPtr);
+void sub_81D1448(struct PokenavSub14 *structPtr);
+void sub_81D13FC(struct PokenavSub14 *structPtr);
+void sub_81D0FCC(struct PokenavSub14 *structPtr);
+void sub_81D12D8(struct PokenavSub14 *structPtr);
+bool32 sub_81D1524(struct PokenavSub14 *structPtr);
+bool32 sub_81D1234(struct PokenavSub14 *structPtr);
+void sub_81D0814(struct PokenavSub13 *structPtr);
+u32 sub_81D0548(struct PokenavSub13 *structPtr);
+u32 sub_81D04C4(struct PokenavSub13 *structPtr);
+u32 sub_81D05D4(struct PokenavSub13 *structPtr);
+bool32 sub_81D05DC(struct PokenavSub13 *structPtr);
+bool32 sub_81D0688(struct PokenavSub13 *structPtr);
+bool32 sub_81D0664(struct PokenavSub13 *structPtr);
+bool32 sub_81D061C(struct PokenavSub13 *structPtr);
+bool32 sub_81D0688(struct PokenavSub13 *structPtr);
+bool32 sub_81D0A58(void);
u32 sub_81D06C4(void);
-u32 sub_81D07D8(void);
u32 sub_81D06D4(void);
-void sub_81D06E4(u8 *nick, u8 *level, u8 *gender);
-void sub_81D0760(u16 *species, u32 *personality, u32 *otId);
u16 sub_81D1184(s32 unused0, s32 unused1);
void sub_81D1258(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3);
void sub_81D1284(struct Sprite *sprite);
-u32 *sub_81D0914(u32 *arg0);
-u32 *sub_81D092C(u32 *arg0);
void sub_81D1350(void);
void sub_81D13BC(u16 *dst, u32 id);
void sub_81D1370(u32 arg0, u32 id);
-u16 sub_81D0944(void);
-u32 sub_81D0954(void);
-void sub_81D1500(struct Pokenav10Struct *structPtr);
-bool32 sub_81D1524(struct Pokenav10Struct *structPtr);
void sub_81D1538(struct Sprite *sprite);
-u32 sub_81D0C84(s32);
-u32 sub_81D0D2C(s32);
-u32 sub_81D0D8C(s32);
-u32 sub_81D0E00(s32);
-u32 sub_81D0C54(s32);
+u32 sub_81D0A6C(s32 state);
+u32 sub_81D0C84(s32 state);
+u32 sub_81D0D2C(s32 state);
+u32 sub_81D0D8C(s32 state);
+u32 sub_81D0E00(s32 state);
+u32 sub_81D0C54(s32 state);
-const u8 gUnknown_086237F8[][4] =
+struct
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+} static const gUnknown_086237F8[] =
{
{1, 1, 0, 0},
{3, 4, 1, 0},
@@ -90,16 +116,16 @@ const u8 gUnknown_086237F8[][4] =
#include "data/text/ribbon_descriptions.h"
#include "data/text/gift_ribbon_descriptions.h"
-const u16 gUnknown_08623FF8[] = INCBIN_U16("graphics/pokenav/ribbons_icon1.gbapal");
-const u16 gUnknown_08624018[] = INCBIN_U16("graphics/pokenav/ribbons_icon2.gbapal");
-const u16 gUnknown_08624038[] = INCBIN_U16("graphics/pokenav/ribbons_icon3.gbapal");
-const u16 gUnknown_08624058[] = INCBIN_U16("graphics/pokenav/ribbons_icon4.gbapal");
-const u16 gUnknown_08624078[] = INCBIN_U16("graphics/pokenav/ribbons_icon5.gbapal");
-const u16 gUnknown_08624098[] = INCBIN_U16("graphics/pokenav/8624098.gbapal");
-const u32 gUnknown_086240B8[] = INCBIN_U32("graphics/pokenav/ribbons_icon.4bpp.lz");
-const u32 gUnknown_08624280[] = INCBIN_U32("graphics/pokenav/ribbons_icon_big.4bpp.lz");
+static const u16 gUnknown_08623FF8[] = INCBIN_U16("graphics/pokenav/ribbons_icon1.gbapal");
+static const u16 gUnknown_08624018[] = INCBIN_U16("graphics/pokenav/ribbons_icon2.gbapal");
+static const u16 gUnknown_08624038[] = INCBIN_U16("graphics/pokenav/ribbons_icon3.gbapal");
+static const u16 gUnknown_08624058[] = INCBIN_U16("graphics/pokenav/ribbons_icon4.gbapal");
+static const u16 gUnknown_08624078[] = INCBIN_U16("graphics/pokenav/ribbons_icon5.gbapal");
+static const u16 gUnknown_08624098[] = INCBIN_U16("graphics/pokenav/8624098.gbapal");
+static const u32 gUnknown_086240B8[] = INCBIN_U32("graphics/pokenav/ribbons_icon.4bpp.lz");
+static const u32 gUnknown_08624280[] = INCBIN_U32("graphics/pokenav/ribbons_icon_big.4bpp.lz");
-const struct BgTemplate gUnknown_08624B98[2] =
+static const struct BgTemplate gUnknown_08624B98[] =
{
{
.bg = 1,
@@ -121,7 +147,7 @@ const struct BgTemplate gUnknown_08624B98[2] =
}
};
-const LoopedTask gUnknown_08624BA0[] =
+static const LoopedTask gUnknown_08624BA0[] =
{
NULL,
sub_81D0C84,
@@ -131,6 +157,581 @@ const LoopedTask gUnknown_08624BA0[] =
sub_81D0C54
};
+// code
+bool32 sub_81D0450(void)
+{
+ struct PokenavSub13 *structPtr = AllocSubstruct(13, sizeof(struct PokenavSub13));
+ if (structPtr == NULL)
+ return FALSE;
+
+ structPtr->field_8 = GetSubstructPtr(18);
+ if (structPtr->field_8 == NULL)
+ return FALSE;
+
+ sub_81D0814(structPtr);
+ structPtr->field_98 = sub_81D04C4;
+ gKeyRepeatContinueDelay = 3;
+ gKeyRepeatStartDelay = 10;
+ return TRUE;
+}
+
+u32 sub_81D04A0(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ return structPtr->field_98(structPtr);
+}
+
+void sub_81D04B8(void)
+{
+ FreePokenavSubstruct(13);
+}
+
+u32 sub_81D04C4(struct PokenavSub13 *structPtr)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP && structPtr->field_8->unk2 != 0)
+ {
+ structPtr->field_8->unk2--;
+ structPtr->field_C = 0;
+ sub_81D0814(structPtr);
+ return 1;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && structPtr->field_8->unk2 < structPtr->field_8->unk0 - 1)
+ {
+ structPtr->field_8->unk2++;
+ structPtr->field_C = 0;
+ sub_81D0814(structPtr);
+ return 1;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ structPtr->field_98 = sub_81D0548;
+ return 2;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ structPtr->field_98 = sub_81D05D4;
+ return 5;
+ }
+ return 0;
+}
+
+u32 sub_81D0548(struct PokenavSub13 *structPtr)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP && sub_81D05DC(structPtr))
+ return 3;
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && sub_81D061C(structPtr))
+ return 3;
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT && sub_81D0664(structPtr))
+ return 3;
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT && sub_81D0688(structPtr))
+ return 3;
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ structPtr->field_98 = sub_81D04C4;
+ return 4;
+ }
+ return 0;
+}
+
+u32 sub_81D05D4(struct PokenavSub13 *structPtr)
+{
+ return 0x186ae;
+}
+
+bool32 sub_81D05DC(struct PokenavSub13 *structPtr)
+{
+ if (structPtr->field_C < 25)
+ {
+ if (structPtr->field_C <= 8)
+ return FALSE;
+
+ structPtr->field_C -= 9;
+ return TRUE;
+ }
+ if (structPtr->field_10 != 0)
+ {
+ u32 var = structPtr->field_C - 27;
+ structPtr->field_C = var + structPtr->field_E;
+ if (structPtr->field_C >= structPtr->field_10)
+ structPtr->field_C = structPtr->field_10 - 1;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_81D061C(struct PokenavSub13 *structPtr)
+{
+ if (structPtr->field_C >= 25)
+ return FALSE;
+ if (structPtr->field_C < structPtr->field_E)
+ {
+ structPtr->field_C += 9;
+ if (structPtr->field_C >= structPtr->field_10)
+ structPtr->field_C = structPtr->field_10 - 1;
+ return TRUE;
+ }
+ if (structPtr->field_12 != 0)
+ {
+ int var = structPtr->field_C - structPtr->field_E;
+ if (var >= structPtr->field_12)
+ var = structPtr->field_12 - 1;
+
+ structPtr->field_C = var + 27;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_81D0664(struct PokenavSub13 *structPtr)
+{
+ u16 var = structPtr->field_C % 9;
+ if (var != 0)
+ {
+ structPtr->field_C--;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool32 sub_81D0688(struct PokenavSub13 *structPtr)
+{
+ int r1 = structPtr->field_C % 9;
+
+ if (r1 >= 8)
+ return FALSE;
+
+ if (structPtr->field_C <= 26)
+ {
+ if (structPtr->field_C < structPtr->field_10 - 1)
+ {
+ structPtr->field_C++;
+ return TRUE;
+ }
+ }
+ else
+ {
+ if (r1 < structPtr->field_12 - 1)
+ {
+ structPtr->field_C++;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+u32 sub_81D06C4(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ return structPtr->field_8->unk2;
+}
+
+u32 sub_81D06D4(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ return structPtr->field_8->unk0;
+}
+
+static void GetCurrMonInfo1(u8 *nick, u8 *level, u8 *gender)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ struct PokenavSub18 *mons = structPtr->field_8;
+ struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+
+ if (monInfo->boxId == TOTAL_BOXES_COUNT)
+ {
+ struct Pokemon *mon = &gPlayerParty[monInfo->monId];
+ GetMonData(mon, MON_DATA_NICKNAME, nick);
+ *level = GetLevelFromMonExp(mon);
+ *gender = GetMonGender(mon);
+ }
+ else
+ {
+ struct BoxPokemon *boxMon = GetBoxedMonPtr(monInfo->boxId, monInfo->monId);
+ *gender = GetBoxMonGender(boxMon);
+ *level = GetLevelFromBoxMonExp(boxMon);
+ GetBoxMonData(boxMon, MON_DATA_NICKNAME, nick);
+ }
+ StringGetEnd10(nick);
+}
+
+static void GetCurrMonInfo2(u16 *species, u32 *personality, u32 *otId)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ struct PokenavSub18 *mons = structPtr->field_8;
+ struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+
+ if (monInfo->boxId == TOTAL_BOXES_COUNT)
+ {
+ struct Pokemon *mon = &gPlayerParty[monInfo->monId];
+ *species = GetMonData(mon, MON_DATA_SPECIES);
+ *personality = GetMonData(mon, MON_DATA_PERSONALITY);
+ *otId = GetMonData(mon, MON_DATA_OT_ID);
+ }
+ else
+ {
+ struct BoxPokemon *boxMon = GetBoxedMonPtr(monInfo->boxId, monInfo->monId);
+ *species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
+ *personality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY);
+ *otId = GetBoxMonData(boxMon, MON_DATA_OT_ID);
+ }
+}
+
+static u32 GetCurrMonRibbonCount(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ struct PokenavSub18 *mons = structPtr->field_8;
+ struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+
+ if (monInfo->boxId == TOTAL_BOXES_COUNT)
+ return GetMonData(&gPlayerParty[monInfo->monId], MON_DATA_RIBBON_COUNT);
+ else
+ return GetBoxMonDataAt(monInfo->boxId, monInfo->monId, MON_DATA_RIBBON_COUNT);
+}
+
+void sub_81D0814(struct PokenavSub13 *structPtr)
+{
+ u32 ribbons;
+ s32 i, j;
+ struct PokenavSub18 *mons = structPtr->field_8;
+ struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+
+ if (monInfo->boxId == TOTAL_BOXES_COUNT)
+ ribbons = GetMonData(&gPlayerParty[monInfo->monId], MON_DATA_RIBBONS);
+ else
+ ribbons = GetBoxMonDataAt(monInfo->boxId, monInfo->monId, MON_DATA_RIBBONS);
+
+ structPtr->field_10 = 0;
+ structPtr->field_12 = 0;
+ for (i = 0; i < ARRAY_COUNT(gUnknown_086237F8); i++)
+ {
+ s32 r4 = ((1 << gUnknown_086237F8[i].unk0) - 1) & ribbons;
+ if (gUnknown_086237F8[i].unk3 == 0)
+ {
+ for (j = 0; j < r4; j++)
+ structPtr->field_14[structPtr->field_10++] = gUnknown_086237F8[i].unk2 + j;
+ }
+ else
+ {
+ for (j = 0; j < r4; j++)
+ structPtr->field_78[structPtr->field_12++] = gUnknown_086237F8[i].unk2 + j;
+ }
+ ribbons >>= gUnknown_086237F8[i].unk0;
+ }
+
+ if (structPtr->field_10 != 0)
+ {
+ structPtr->field_E = ((structPtr->field_10 - 1) / 9) * 9;
+ structPtr->field_C = 0;
+ }
+ else
+ {
+ structPtr->field_E = 0;
+ structPtr->field_C = 27;
+ }
+}
+
+u32 *sub_81D0914(u32 *arg0)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ *arg0 = structPtr->field_10;
+ return structPtr->field_14;
+}
+
+u32 *sub_81D092C(u32 *arg0)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ *arg0 = structPtr->field_12;
+ return structPtr->field_78;
+}
+
+u16 sub_81D0944(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ return structPtr->field_C;
+}
+
+u32 sub_81D0954(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ int var = structPtr->field_C;
+ if (var <= 24)
+ return structPtr->field_14[var];
+ else
+ return structPtr->field_78[var - 27];
+}
+
+bool32 sub_81D0978(void)
+{
+ struct PokenavSub14 *structPtr = AllocSubstruct(14, sizeof(struct PokenavSub14));
+ if (structPtr == NULL)
+ return FALSE;
+
+ structPtr->loopedTaskId = CreateLoopedTask(sub_81D0A6C, 1);
+ structPtr->field_0 = sub_81D0A58;
+ return TRUE;
+}
+
+void sub_81D09B0(int id)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ structPtr->loopedTaskId = CreateLoopedTask(gUnknown_08624BA0[id], 1);
+ structPtr->field_0 = sub_81D0A58;
+}
+
+u32 sub_81D09E0(void)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ return structPtr->field_0();
+}
+
+void sub_81D09F4(void)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ RemoveWindow(structPtr->field_A);
+ RemoveWindow(structPtr->field_8);
+ RemoveWindow(structPtr->field_C);
+ RemoveWindow(structPtr->field_E);
+ sub_81D1178(structPtr);
+ FreeSpriteTilesByTag(9);
+ FreeSpritePaletteByTag(0xF);
+ FreeSpritePaletteByTag(0x10);
+ FreeSpritePaletteByTag(0x11);
+ FreeSpritePaletteByTag(0x12);
+ FreeSpritePaletteByTag(0x13);
+ FreeSpriteOamMatrix(structPtr->field_14);
+ DestroySprite(structPtr->field_14);
+ FreePokenavSubstruct(14);
+}
+
+bool32 sub_81D0A58(void)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ return IsLoopedTaskActive(structPtr->loopedTaskId);
+}
+
+u32 sub_81D0A6C(s32 state)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ switch (state)
+ {
+ case 0:
+ InitBgTemplates(gUnknown_08624B98, ARRAY_COUNT(gUnknown_08624B98));
+ decompress_and_copy_tile_data_to_vram(2, gUnknown_08DDE030, 0, 0, 0);
+ SetBgTilemapBuffer(2, structPtr->tilemapBuffers[0]);
+ CopyToBgTilemapBuffer(2, gUnknown_08DDE12C, 0, 0);
+ CopyPaletteIntoBufferUnfaded(gUnknown_08DDE010, 0x10, 0x20);
+ CopyBgTilemapBufferToVram(2);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ sub_8199DF0(1, 0, 0, 1);
+ decompress_and_copy_tile_data_to_vram(1, gUnknown_086240B8, 0, 1, 0);
+ SetBgTilemapBuffer(1, structPtr->tilemapBuffers[1]);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20);
+ CopyPaletteIntoBufferUnfaded(gUnknown_08623FF8, 0x20, 0xA0);
+ CopyPaletteIntoBufferUnfaded(gUnknown_08624098, 0xA0, 0x20);
+ CopyBgTilemapBufferToVram(1);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 2:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ sub_81D0E60(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 3:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ sub_81D0FCC(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 4:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ sub_81D10A4(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 5:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ CopyBgTilemapBufferToVram(2);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 6:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81D1148(structPtr);
+ return LT_INC_AND_CONTINUE;
+ }
+ return LT_PAUSE;
+ case 7:
+ sub_81D12D8(structPtr);
+ sub_81C7BA4(10);
+ return LT_INC_AND_PAUSE;
+ case 8:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81D13FC(structPtr);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ShowBg(1);
+ ShowBg(2);
+ HideBg(3);
+ sub_81C7AC0(1);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 9:
+ if (IsPaletteFadeActive())
+ return LT_PAUSE;
+ return LT_FINISH;
+ }
+ return LT_FINISH;
+}
+
+u32 sub_81D0C54(s32 state)
+{
+ switch (state)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81C7AC0(0);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (IsPaletteFadeActive())
+ return LT_PAUSE;
+ return LT_FINISH;
+ }
+ return LT_FINISH;
+}
+
+u32 sub_81D0C84(s32 state)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ switch (state)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81D11D8(structPtr);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (!sub_81D1234(structPtr))
+ {
+ sub_81D0FF0(structPtr);
+ return LT_INC_AND_CONTINUE;
+ }
+ return LT_PAUSE;
+ case 2:
+ sub_81D12D8(structPtr);
+ return LT_INC_AND_CONTINUE;
+ case 3:
+ sub_81D10D0(structPtr);
+ return LT_INC_AND_CONTINUE;
+ case 4:
+ sub_81D0E84(structPtr);
+ return LT_INC_AND_CONTINUE;
+ case 5:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81D11FC(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 6:
+ if (sub_81D1234(structPtr))
+ return LT_PAUSE;
+ return LT_FINISH;
+ }
+ return LT_FINISH;
+}
+
+u32 sub_81D0D2C(s32 state)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ switch (state)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81D1448(structPtr);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (!sub_81D1524(structPtr))
+ {
+ sub_81D0EFC(structPtr);
+ sub_81C7BA4(11);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 2:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return LT_PAUSE;
+ }
+ return LT_FINISH;
+}
+
+u32 sub_81D0D8C(s32 state)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ switch (state)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81D1500(structPtr);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (!sub_81D1524(structPtr))
+ {
+ sub_81D1448(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 2:
+ if (!sub_81D1524(structPtr))
+ {
+ sub_81D0EFC(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return LT_PAUSE;
+ }
+ return LT_FINISH;
+}
+
+u32 sub_81D0E00(s32 state)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ switch (state)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81D1500(structPtr);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (!sub_81D1524(structPtr))
+ {
+ sub_81D0E84(structPtr);
+ sub_81C7BA4(10);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 2:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return LT_PAUSE;
+ }
+ return LT_FINISH;
+}
+
static const struct WindowTemplate gUnknown_08624BB8 =
{
.bg = 2,
@@ -142,18 +743,18 @@ static const struct WindowTemplate gUnknown_08624BB8 =
.baseBlock = 0x14,
};
-void sub_81D0E60(struct Pokenav10Struct2 *structPtr)
+void sub_81D0E60(struct PokenavSub14 *structPtr)
{
structPtr->field_A = AddWindow(&gUnknown_08624BB8);
PutWindowTilemap(structPtr->field_A);
sub_81D0E84(structPtr);
}
-void sub_81D0E84(struct Pokenav10Struct2 *structPtr)
+void sub_81D0E84(struct PokenavSub14 *structPtr)
{
u8 color[] = {4, 2, 3};
- ConvertIntToDecimalStringN(gStringVar1, sub_81D07D8(), STR_CONV_MODE_LEFT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar1, GetCurrMonRibbonCount(), STR_CONV_MODE_LEFT_ALIGN, 2);
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_RibbonsF700);
@@ -162,7 +763,7 @@ void sub_81D0E84(struct Pokenav10Struct2 *structPtr)
CopyWindowToVram(structPtr->field_A, 2);
}
-void sub_81D0EFC(struct Pokenav10Struct2 *structPtr)
+void sub_81D0EFC(struct PokenavSub14 *structPtr)
{
s32 i;
u32 ribbonId = sub_81D0954();
@@ -199,7 +800,7 @@ static const struct WindowTemplate gUnknown_08624BC4 =
.baseBlock = 0x54,
};
-void sub_81D0FCC(struct Pokenav10Struct2 *structPtr)
+void sub_81D0FCC(struct PokenavSub14 *structPtr)
{
structPtr->field_8 = AddWindow(&gUnknown_08624BC4);
PutWindowTilemap(structPtr->field_8);
@@ -210,7 +811,7 @@ static const u8 sMaleIconString[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE
static const u8 sFemaleIconString[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
static const u8 sGenderlessIconString[] = _("{UNK_SPACER}");
-void sub_81D0FF0(struct Pokenav10Struct2 *structPtr)
+void sub_81D0FF0(struct PokenavSub14 *structPtr)
{
const u8 *genderTxt;
u8 *txtPtr;
@@ -218,7 +819,7 @@ void sub_81D0FF0(struct Pokenav10Struct2 *structPtr)
u16 windowId = structPtr->field_8;
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
- sub_81D06E4(gStringVar3, &level, &gender);
+ GetCurrMonInfo1(gStringVar3, &level, &gender);
AddTextPrinterParameterized(windowId, 1, gStringVar3, 0, 1, TEXT_SPEED_FF, NULL);
switch (gender)
{
@@ -256,7 +857,7 @@ static const struct WindowTemplate gUnknown_08624BE8[] =
{},
};
-void sub_81D10A4(struct Pokenav10Struct2 *structPtr)
+void sub_81D10A4(struct PokenavSub14 *structPtr)
{
structPtr->field_C = AddWindow(gUnknown_08624BE8);
FillWindowPixelBuffer(structPtr->field_C, PIXEL_FILL(1));
@@ -264,7 +865,7 @@ void sub_81D10A4(struct Pokenav10Struct2 *structPtr)
sub_81D10D0(structPtr);
}
-void sub_81D10D0(struct Pokenav10Struct2 *structPtr)
+void sub_81D10D0(struct PokenavSub14 *structPtr)
{
s32 x;
u8 *txtPtr;
@@ -279,18 +880,18 @@ void sub_81D10D0(struct Pokenav10Struct2 *structPtr)
CopyWindowToVram(structPtr->field_C, 2);
}
-void sub_81D1148(struct Pokenav10Struct2 *structPtr)
+void sub_81D1148(struct PokenavSub14 *structPtr)
{
u16 species;
u32 personality, otId;
- sub_81D0760(&species, &personality, &otId);
+ GetCurrMonInfo2(&species, &personality, &otId);
ResetAllPicSprites();
structPtr->field_10 = sub_81D1184(40, 104);
sub_81C7990(15, 0);
}
-void sub_81D1178(struct Pokenav10Struct2 *structPtr)
+void sub_81D1178(struct PokenavSub14 *structPtr)
{
FreeAndDestroyMonPicSprite(structPtr->field_10);
}
@@ -300,25 +901,25 @@ u16 sub_81D1184(s32 unused0, s32 unused1)
u16 species, spriteId;
u32 personality, otId;
- sub_81D0760(&species, &personality, &otId);
+ GetCurrMonInfo2(&species, &personality, &otId);
spriteId = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 40, 104, 15, 0xFFFF);
gSprites[spriteId].oam.priority = 0;
return spriteId;
}
-void sub_81D11D8(struct Pokenav10Struct2 *structPtr)
+void sub_81D11D8(struct PokenavSub14 *structPtr)
{
sub_81D1258(&gSprites[structPtr->field_10], 40, -32, 6);
}
-void sub_81D11FC(struct Pokenav10Struct2 *structPtr)
+void sub_81D11FC(struct PokenavSub14 *structPtr)
{
FreeAndDestroyMonPicSprite(structPtr->field_10);
structPtr->field_10 = sub_81D1184(-32, 104);
sub_81D1258(&gSprites[structPtr->field_10], -32, 40, 6);
}
-bool32 sub_81D1234(struct Pokenav10Struct2 *structPtr)
+bool32 sub_81D1234(struct PokenavSub14 *structPtr)
{
return (gSprites[structPtr->field_10].callback != SpriteCallbackDummy);
}
@@ -355,7 +956,7 @@ void sub_81D1284(struct Sprite *sprite)
}
}
-void sub_81D12D8(void)
+void sub_81D12D8(struct PokenavSub14 *structPtr)
{
u32 *ptr;
@@ -508,7 +1109,7 @@ static const struct SpriteTemplate gUnknown_08624D04 =
.callback = SpriteCallbackDummy,
};
-void sub_81D13FC(struct Pokenav10Struct *structPtr)
+void sub_81D13FC(struct PokenavSub14 *structPtr)
{
u8 spriteId;
@@ -520,7 +1121,7 @@ void sub_81D13FC(struct Pokenav10Struct *structPtr)
structPtr->field_14->invisible = TRUE;
}
-void sub_81D1448(struct Pokenav10Struct *structPtr)
+void sub_81D1448(struct PokenavSub14 *structPtr)
{
u32 ribbonId;
s32 r4 = sub_81D0944();
@@ -540,14 +1141,14 @@ void sub_81D1448(struct Pokenav10Struct *structPtr)
structPtr->field_14->callback = sub_81D1538;
}
-void sub_81D1500(struct Pokenav10Struct *structPtr)
+void sub_81D1500(struct PokenavSub14 *structPtr)
{
structPtr->field_14->data[0] = 1;
StartSpriteAffineAnim(structPtr->field_14, 2);
structPtr->field_14->callback = sub_81D1538;
}
-bool32 sub_81D1524(struct Pokenav10Struct *structPtr)
+bool32 sub_81D1524(struct PokenavSub14 *structPtr)
{
return (structPtr->field_14->callback != SpriteCallbackDummy);
}