summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-08-20 18:29:25 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-08-20 18:36:44 -0500
commitbab65d32b60af89fa2d567ff963e7c253cfeb4b7 (patch)
treefc57701a3bd463b4d18bde13d09b1e3106c5c247
parentc2218920d57c883dc83078c2d1d7cf3af82babbb (diff)
Decompile even even more pokenav
-rw-r--r--asm/pokenav.s1918
-rw-r--r--include/pokenav.h46
-rw-r--r--src/pokenav_before.c603
-rw-r--r--src/use_pokeblock.c2
4 files changed, 630 insertions, 1939 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 331c2e8f1..562211a00 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -5,1924 +5,6 @@
.text
- thumb_func_start sub_80F468C
-sub_80F468C: @ 80F468C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r1, _080F475C @ =gUnknown_083DFEC4
- ldr r7, [r1]
- lsls r0, 16
- asrs r0, 14
- adds r1, r7, r0
- ldr r2, _080F4760 @ =0x0000893f
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- blt _080F46B2
- b _080F47C4
-_080F46B2:
- ldr r3, _080F4764 @ =0x0000893d
- adds r0, r1, r3
- ldrb r5, [r0]
- subs r2, 0x1
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r6, r0, 27
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x16
- movs r3, 0
- bl sub_80F44B0
- mov r3, r9
- lsls r3, 2
- mov r8, r3
- mov r4, r8
- add r4, r9
- ldr r2, _080F4768 @ =0x00008ff0
- adds r1, r7, r2
- adds r1, r4
- strb r0, [r1]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x2F
- movs r3, 0
- bl sub_80F44B0
- ldr r3, _080F476C @ =0x00008ff1
- adds r1, r7, r3
- adds r1, r4
- strb r0, [r1]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x21
- movs r3, 0
- bl sub_80F44B0
- ldr r2, _080F4770 @ =0x00008ff2
- adds r1, r7, r2
- adds r1, r4
- strb r0, [r1]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x18
- movs r3, 0
- bl sub_80F44B0
- ldr r3, _080F4774 @ =0x00008ff3
- adds r1, r7, r3
- adds r1, r4
- strb r0, [r1]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x17
- movs r3, 0
- bl sub_80F44B0
- ldr r2, _080F4778 @ =0x00008ff4
- adds r1, r7, r2
- adds r1, r4
- strb r0, [r1]
- ldr r3, _080F477C @ =0x00008931
- adds r0, r7, r3
- mov r7, r9
- adds r4, r0, r7
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x30
- movs r3, 0
- bl sub_80F44B0
- cmp r0, 0xFF
- beq _080F4780
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x30
- movs r3, 0
- bl sub_80F44B0
- movs r1, 0x1D
- bl __udivsi3
- b _080F4782
- .align 2, 0
-_080F475C: .4byte gUnknown_083DFEC4
-_080F4760: .4byte 0x0000893f
-_080F4764: .4byte 0x0000893d
-_080F4768: .4byte 0x00008ff0
-_080F476C: .4byte 0x00008ff1
-_080F4770: .4byte 0x00008ff2
-_080F4774: .4byte 0x00008ff3
-_080F4778: .4byte 0x00008ff4
-_080F477C: .4byte 0x00008931
-_080F4780:
- movs r0, 0x9
-_080F4782:
- strb r0, [r4]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x8
- movs r3, 0
- bl sub_80F44B0
- ldr r1, _080F47B4 @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r3, _080F47B8 @ =0x00008934
- adds r2, r1, r3
- add r2, r9
- strb r0, [r2]
- mov r2, r8
- add r2, r9
- ldr r7, _080F47BC @ =0x00008ff0
- adds r0, r2, r7
- adds r0, r1, r0
- lsls r2, 2
- ldr r3, _080F47C0 @ =0x00009004
- adds r2, r3
- adds r1, r2
- bl sub_80F55AC
- b _080F480A
- .align 2, 0
-_080F47B4: .4byte gUnknown_083DFEC4
-_080F47B8: .4byte 0x00008934
-_080F47BC: .4byte 0x00008ff0
-_080F47C0: .4byte 0x00009004
-_080F47C4:
- movs r3, 0
- mov r0, r9
- lsls r0, 2
- mov r8, r0
- adds r4, r7, 0
- mov r2, r8
- add r2, r9
- ldr r1, _080F4818 @ =0x00008ff0
- adds r6, r4, r1
- lsls r5, r2, 2
- mov r9, r3
- ldr r7, _080F481C @ =0x00009004
- mov r8, r7
- movs r0, 0x9B
- mov r12, r0
-_080F47E2:
- adds r0, r3, r2
- adds r0, r6, r0
- mov r1, r9
- strb r1, [r0]
- lsls r0, r3, 2
- adds r0, r5
- adds r0, r4, r0
- mov r7, r8
- adds r1, r0, r7
- mov r7, r12
- strh r7, [r1]
- ldr r1, _080F4820 @ =0x00009006
- adds r0, r1
- movs r1, 0x5B
- strh r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x4
- bls _080F47E2
-_080F480A:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4818: .4byte 0x00008ff0
-_080F481C: .4byte 0x00009004
-_080F4820: .4byte 0x00009006
- thumb_func_end sub_80F468C
-
- thumb_func_start sub_80F4824
-sub_80F4824: @ 80F4824
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r1, _080F48E0 @ =gUnknown_083DFEC4
- ldr r7, [r1]
- lsls r0, 16
- asrs r0, 14
- adds r1, r7, r0
- ldr r2, _080F48E4 @ =0x0000893f
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- bge _080F48D0
- ldr r6, _080F48E8 @ =0x0000893d
- adds r0, r1, r6
- ldrb r6, [r0]
- subs r2, 0x1
- adds r0, r1, r2
- ldrb r4, [r0]
- lsls r4, 27
- lsrs r4, 27
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x41
- movs r3, 0
- bl sub_80F44B0
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x1
- movs r3, 0
- bl sub_80F44B0
- mov r8, r0
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl sub_80F44B0
- adds r4, r0, 0
- lsls r0, r5, 3
- ldr r1, _080F48EC @ =gMonFrontPicTable
- adds r0, r1
- ldr r2, _080F48F0 @ =gMonFrontPicCoords
- lsls r1, r5, 2
- adds r1, r2
- ldrb r1, [r1]
- ldr r6, _080F48F4 @ =0x000131e4
- adds r3, r7, r6
- mov r6, r9
- lsls r2, r6, 13
- ldr r6, _080F48F8 @ =0x0000d1e4
- adds r2, r6
- adds r2, r7, r2
- str r2, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r2, 0x1
- bl HandleLoadSpecialPokePic
- adds r0, r5, 0
- mov r1, r8
- adds r2, r4, 0
- bl GetMonSpritePalFromOtIdPersonality
- mov r2, r9
- lsls r1, r2, 7
- adds r1, r7, r1
- bl LZ77UnCompWram
- mov r6, r9
- lsls r1, r6, 1
- ldr r2, _080F48FC @ =0x0000d1d6
- adds r0, r7, r2
- adds r0, r1
- strh r5, [r0]
-_080F48D0:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F48E0: .4byte gUnknown_083DFEC4
-_080F48E4: .4byte 0x0000893f
-_080F48E8: .4byte 0x0000893d
-_080F48EC: .4byte gMonFrontPicTable
-_080F48F0: .4byte gMonFrontPicCoords
-_080F48F4: .4byte 0x000131e4
-_080F48F8: .4byte 0x0000d1e4
-_080F48FC: .4byte 0x0000d1d6
- thumb_func_end sub_80F4824
-
- thumb_func_start sub_80F4900
-sub_80F4900: @ 80F4900
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80F45A0
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80F468C
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80F4824
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F4900
-
- thumb_func_start sub_80F492C
-sub_80F492C: @ 80F492C
- ldr r0, _080F493C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F4940 @ =0x00008fe4
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- bx lr
- .align 2, 0
-_080F493C: .4byte gUnknown_083DFEC4
-_080F4940: .4byte 0x00008fe4
- thumb_func_end sub_80F492C
-
- thumb_func_start sub_80F4944
-sub_80F4944: @ 80F4944
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r12, r0
- movs r2, 0
- ldr r1, _080F4978 @ =gUnknown_083DFEC4
- ldr r5, [r1]
- ldr r3, _080F497C @ =0x00008fe4
- adds r0, r5, r3
- ldrh r4, [r0]
- lsrs r3, r4, 1
- mov r8, r1
- cmp r4, r3
- beq _080F499C
- adds r6, r5, 0
- mov r0, r12
- ldrb r5, [r0]
- ldr r7, _080F4980 @ =0x0000893c
-_080F4968:
- lsls r0, r3, 2
- adds r0, r6, r0
- adds r0, r7
- ldrb r0, [r0]
- cmp r5, r0
- bls _080F4984
- adds r4, r3, 0
- b _080F498A
- .align 2, 0
-_080F4978: .4byte gUnknown_083DFEC4
-_080F497C: .4byte 0x00008fe4
-_080F4980: .4byte 0x0000893c
-_080F4984:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
-_080F498A:
- subs r0, r4, r2
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, r2, r0
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r4, r3
- bne _080F4968
-_080F499C:
- mov r1, r8
- ldr r2, [r1]
- ldr r1, _080F49EC @ =0x00008fe4
- adds r0, r2, r1
- ldrh r4, [r0]
- lsls r6, r3, 2
- cmp r4, r3
- bls _080F49C6
- ldr r0, _080F49F0 @ =0x0000893c
- adds r5, r2, r0
-_080F49B0:
- lsls r2, r4, 2
- adds r2, r5, r2
- subs r1, r4, 0x1
- lsls r0, r1, 2
- adds r0, r5, r0
- ldr r0, [r0]
- str r0, [r2]
- lsls r1, 16
- lsrs r4, r1, 16
- cmp r4, r3
- bhi _080F49B0
-_080F49C6:
- mov r1, r8
- ldr r2, [r1]
- ldr r3, _080F49F0 @ =0x0000893c
- adds r0, r2, r3
- adds r0, r6
- mov r3, r12
- ldr r1, [r3]
- str r1, [r0]
- ldr r0, _080F49EC @ =0x00008fe4
- adds r2, r0
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F49EC: .4byte 0x00008fe4
-_080F49F0: .4byte 0x0000893c
- thumb_func_end sub_80F4944
-
- thumb_func_start sub_80F49F4
-sub_80F49F4: @ 80F49F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r3, _080F4A64 @ =gUnknown_083DFEC4
- ldr r4, [r3]
- ldr r7, _080F4A68 @ =0x0000893e
- adds r2, r4, r7
- ldrh r1, [r2]
- ldr r0, _080F4A6C @ =0xffffc01f
- mov r12, r0
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strh r0, [r2]
- movs r5, 0x1
- ldr r1, _080F4A70 @ =0x00008fe4
- adds r0, r4, r1
- ldrh r3, [r0]
- cmp r5, r3
- bcs _080F4A9E
- adds r6, r4, 0
- ldr r1, _080F4A74 @ =0x0000893c
- mov r8, r1
- ldr r3, _080F4A78 @ =0x000001ff
- mov r10, r3
- mov r9, r0
-_080F4A2C:
- lsls r0, r5, 2
- adds r3, r6, r0
- mov r0, r8
- adds r2, r3, r0
- subs r0, r5, 0x1
- lsls r0, 2
- adds r4, r6, r0
- mov r0, r8
- adds r1, r4, r0
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F4A7C
- adds r0, r4, r7
- ldrh r0, [r0]
- lsls r0, 18
- lsrs r0, 23
- adds r3, r7
- ldr r1, _080F4A78 @ =0x000001ff
- ands r1, r0
- lsls r1, 5
- ldrh r2, [r3]
- mov r0, r12
- ands r0, r2
- orrs r0, r1
- strh r0, [r3]
- adds r4, r5, 0x1
- b _080F4A92
- .align 2, 0
-_080F4A64: .4byte gUnknown_083DFEC4
-_080F4A68: .4byte 0x0000893e
-_080F4A6C: .4byte 0xffffc01f
-_080F4A70: .4byte 0x00008fe4
-_080F4A74: .4byte 0x0000893c
-_080F4A78: .4byte 0x000001ff
-_080F4A7C:
- adds r4, r5, 0x1
- adds r3, r7
- adds r1, r4, 0
- mov r0, r10
- ands r1, r0
- lsls r1, 5
- ldrh r2, [r3]
- mov r0, r12
- ands r0, r2
- orrs r0, r1
- strh r0, [r3]
-_080F4A92:
- lsls r0, r4, 16
- lsrs r5, r0, 16
- mov r1, r9
- ldrh r1, [r1]
- cmp r5, r1
- bcc _080F4A2C
-_080F4A9E:
- ldr r3, _080F4AC4 @ =gUnknown_083DFEC4
- ldr r2, [r3]
- ldr r1, _080F4AC8 @ =0x0000876c
- adds r0, r2, r1
- movs r1, 0
- strh r1, [r0]
- ldr r3, _080F4ACC @ =0x00008770
- adds r0, r2, r3
- strh r1, [r0]
- subs r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- ldr r1, _080F4AD0 @ =0x00008fe4
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, 0x8
- bhi _080F4AD4
- subs r1, r0, 0x1
- b _080F4AD6
- .align 2, 0
-_080F4AC4: .4byte gUnknown_083DFEC4
-_080F4AC8: .4byte 0x0000876c
-_080F4ACC: .4byte 0x00008770
-_080F4AD0: .4byte 0x00008fe4
-_080F4AD4:
- movs r1, 0x7
-_080F4AD6:
- ldr r3, _080F4B10 @ =0x00008772
- adds r0, r2, r3
- strh r1, [r0]
- ldr r0, _080F4B14 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r1, _080F4B18 @ =0x00008fe4
- adds r0, r2, r1
- ldrh r0, [r0]
- subs r0, 0x1
- adds r3, 0x2
- adds r1, r2, r3
- strh r0, [r1]
- movs r1, 0
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080F4AFA
- movs r1, 0x1
-_080F4AFA:
- ldr r3, _080F4B1C @ =0x000087c9
- adds r0, r2, r3
- strb r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4B10: .4byte 0x00008772
-_080F4B14: .4byte gUnknown_083DFEC4
-_080F4B18: .4byte 0x00008fe4
-_080F4B1C: .4byte 0x000087c9
- thumb_func_end sub_80F49F4
-
- thumb_func_start sub_80F4B20
-sub_80F4B20: @ 80F4B20
- push {r4-r6,lr}
- ldr r0, _080F4B5C @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F4B60 @ =0x000087dc
- adds r5, r4, r0
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r1, 0
- bl sub_80F4900
- movs r0, 0
- bl sub_80F2E18
- ldr r0, _080F4B64 @ =0x000087da
- adds r2, r4, r0
- movs r1, 0
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _080F4B6C
- ldr r2, _080F4B68 @ =0x00008fe9
- adds r0, r4, r2
- movs r1, 0
- strb r1, [r0]
- adds r2, 0x1
- adds r0, r4, r2
- strb r1, [r0]
- adds r2, 0x1
- adds r0, r4, r2
- strb r1, [r0]
- b _080F4BBE
- .align 2, 0
-_080F4B5C: .4byte gUnknown_083DFEC4
-_080F4B60: .4byte 0x000087dc
-_080F4B64: .4byte 0x000087da
-_080F4B68: .4byte 0x00008fe9
-_080F4B6C:
- ldr r0, _080F4BC4 @ =0x00008fe9
- adds r1, r4, r0
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080F4BC8 @ =0x00008fea
- adds r1, r4, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, _080F4BCC @ =0x00008feb
- adds r1, r4, r0
- movs r0, 0x2
- strb r0, [r1]
- ldrh r3, [r5]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- ldrh r6, [r2]
- movs r4, 0
- ldrsh r1, [r2, r4]
- cmp r0, r1
- blt _080F4B9A
- movs r5, 0
-_080F4B9A:
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r0, 0
- bge _080F4BAA
- subs r0, r6, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_080F4BAA:
- lsls r0, r5, 16
- asrs r0, 16
- movs r1, 0x1
- bl sub_80F4900
- lsls r0, r4, 16
- asrs r0, 16
- movs r1, 0x2
- bl sub_80F4900
-_080F4BBE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4BC4: .4byte 0x00008fe9
-_080F4BC8: .4byte 0x00008fea
-_080F4BCC: .4byte 0x00008feb
- thumb_func_end sub_80F4B20
-
- thumb_func_start sub_80F4BD0
-sub_80F4BD0: @ 80F4BD0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- movs r7, 0
- ldr r0, _080F4CC4 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r3, _080F4CC8 @ =0x00008828
- adds r1, r2, r3
- mov r9, r0
- ldrb r1, [r1]
- cmp r7, r1
- bcs _080F4C66
- mov r10, r9
- adds r4, r3, 0
- adds r4, r2
- mov r8, r4
-_080F4BF6:
- movs r0, 0x64
- muls r0, r6
- ldr r1, _080F4CCC @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080F4C58
- mov r0, r10
- ldr r3, [r0]
- lsls r0, r7, 2
- adds r3, r0
- ldr r2, _080F4CD0 @ =0x0000893d
- adds r1, r3, r2
- movs r0, 0xE
- strb r0, [r1]
- ldr r4, _080F4CD4 @ =0x0000893e
- adds r5, r3, r4
- movs r0, 0x1F
- adds r2, r6, 0
- ands r2, r0
- ldrb r0, [r5]
- movs r4, 0x20
- negs r4, r4
- adds r1, r4, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5]
- adds r4, r7, 0x1
- ldr r7, _080F4CD8 @ =0x000001ff
- adds r0, r7, 0
- adds r2, r4, 0
- ands r2, r0
- lsls r2, 5
- ldrh r0, [r5]
- ldr r7, _080F4CDC @ =0xffffc01f
- adds r1, r7, 0
- ands r0, r1
- orrs r0, r2
- strh r0, [r5]
- ldr r0, _080F4CE0 @ =0x0000893f
- adds r3, r0
- ldrb r0, [r3]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r3]
- lsls r4, 16
- lsrs r7, r4, 16
-_080F4C58:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- mov r1, r8
- ldrb r1, [r1]
- cmp r6, r1
- bcc _080F4BF6
-_080F4C66:
- mov r2, r9
- ldr r4, [r2]
- lsls r1, r7, 2
- adds r1, r4, r1
- ldr r3, _080F4CD0 @ =0x0000893d
- adds r0, r1, r3
- movs r5, 0
- strb r5, [r0]
- ldr r0, _080F4CD4 @ =0x0000893e
- adds r2, r1, r0
- ldrb r3, [r2]
- movs r0, 0x20
- negs r0, r0
- ands r0, r3
- strb r0, [r2]
- ldrh r3, [r2]
- ldr r0, _080F4CDC @ =0xffffc01f
- ands r0, r3
- strh r0, [r2]
- ldr r2, _080F4CE0 @ =0x0000893f
- adds r1, r2
- ldrb r2, [r1]
- movs r0, 0x41
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r3, _080F4CE4 @ =0x000087dc
- adds r0, r4, r3
- strh r5, [r0]
- adds r1, r7, 0x1
- ldr r7, _080F4CE8 @ =0x000087da
- adds r0, r4, r7
- strh r1, [r0]
- bl sub_80F4B20
- ldr r0, _080F4CEC @ =0x000087cb
- adds r4, r0
- movs r0, 0x1
- strb r0, [r4]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4CC4: .4byte gUnknown_083DFEC4
-_080F4CC8: .4byte 0x00008828
-_080F4CCC: .4byte gPlayerParty
-_080F4CD0: .4byte 0x0000893d
-_080F4CD4: .4byte 0x0000893e
-_080F4CD8: .4byte 0x000001ff
-_080F4CDC: .4byte 0xffffc01f
-_080F4CE0: .4byte 0x0000893f
-_080F4CE4: .4byte 0x000087dc
-_080F4CE8: .4byte 0x000087da
-_080F4CEC: .4byte 0x000087cb
- thumb_func_end sub_80F4BD0
-
- thumb_func_start sub_80F4CF0
-sub_80F4CF0: @ 80F4CF0
- push {r4,lr}
- ldr r0, _080F4D1C @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F4D20 @ =0x0000876e
- adds r0, r4, r1
- ldrh r1, [r0]
- ldr r2, _080F4D24 @ =0x000087dc
- adds r0, r4, r2
- strh r1, [r0]
- bl sub_80F4B20
- ldr r1, _080F4D28 @ =0x00008774
- adds r0, r4, r1
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bne _080F4D30
- ldr r0, _080F4D2C @ =0x000087cb
- adds r1, r4, r0
- movs r0, 0
- b _080F4D36
- .align 2, 0
-_080F4D1C: .4byte gUnknown_083DFEC4
-_080F4D20: .4byte 0x0000876e
-_080F4D24: .4byte 0x000087dc
-_080F4D28: .4byte 0x00008774
-_080F4D2C: .4byte 0x000087cb
-_080F4D30:
- ldr r2, _080F4D40 @ =0x000087cb
- adds r1, r4, r2
- movs r0, 0x1
-_080F4D36:
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4D40: .4byte 0x000087cb
- thumb_func_end sub_80F4CF0
-
- thumb_func_start sub_80F4D44
-sub_80F4D44: @ 80F4D44
- push {r4,lr}
- ldr r0, _080F4D78 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F4D7C @ =0x00008fe6
- adds r0, r4, r1
- movs r1, 0
- strb r1, [r0]
- ldr r2, _080F4D80 @ =0x00008fe7
- adds r0, r4, r2
- strb r1, [r0]
- bl sub_80F492C
- ldr r0, _080F4D84 @ =0x00006dac
- adds r4, r0
- ldrb r0, [r4]
- cmp r0, 0
- bne _080F4D70
-_080F4D66:
- bl sub_80F4D88
- lsls r0, 24
- cmp r0, 0
- bne _080F4D66
-_080F4D70:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4D78: .4byte gUnknown_083DFEC4
-_080F4D7C: .4byte 0x00008fe6
-_080F4D80: .4byte 0x00008fe7
-_080F4D84: .4byte 0x00006dac
- thumb_func_end sub_80F4D44
-
- thumb_func_start sub_80F4D88
-sub_80F4D88: @ 80F4D88
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r6, _080F4E98 @ =gUnknown_083DFEC4
- ldr r4, [r6]
- ldr r1, _080F4E9C @ =0x00008fe6
- adds r0, r4, r1
- ldrb r3, [r0]
- cmp r3, 0xE
- bne _080F4DA4
- b _080F4EB8
-_080F4DA4:
- cmp r3, 0xF
- bne _080F4DAA
- b _080F4F60
-_080F4DAA:
- movs r1, 0x80
- lsls r1, 23
- ldr r0, [sp]
- orrs r0, r1
- str r0, [sp]
- movs r7, 0
- mov r10, r6
- ldr r2, _080F4E9C @ =0x00008fe6
- adds r6, r4, r2
- ldr r3, _080F4EA0 @ =0x00008fe7
- adds r5, r4, r3
- ldr r0, _080F4EA4 @ =0x000087d8
- adds r0, r4
- mov r9, r0
- ldr r1, _080F4EA8 @ =gPokemonStorage + 0x4
- mov r8, r1
-_080F4DCA:
- ldrb r0, [r6]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldrb r2, [r5]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- add r1, r8
- adds r0, r1
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _080F4E60
- ldrb r0, [r6]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldrb r2, [r5]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- add r1, r8
- adds r0, r1
- movs r1, 0x2D
- bl GetBoxMonData
- cmp r0, 0
- bne _080F4E60
- ldrb r1, [r6]
- lsls r1, 8
- ldr r2, _080F4EAC @ =0xffff00ff
- ldr r0, [sp]
- ands r0, r2
- orrs r0, r1
- str r0, [sp]
- ldrb r2, [r5]
- movs r1, 0x1F
- ands r2, r1
- lsls r2, 16
- ldr r1, _080F4EB0 @ =0xffe0ffff
- ands r0, r1
- orrs r0, r2
- str r0, [sp]
- ldrb r0, [r6]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldrb r2, [r5]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- add r1, r8
- adds r0, r1
- mov r2, r9
- ldrb r1, [r2]
- bl GetBoxMonData
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F4EB4 @ =0xffffff00
- ldr r1, [sp]
- ands r1, r2
- orrs r1, r0
- str r1, [sp]
- mov r0, sp
- bl sub_80F4944
-_080F4E60:
- mov r3, r10
- ldr r1, [r3]
- ldr r0, _080F4EA0 @ =0x00008fe7
- adds r2, r1, r0
- ldrb r0, [r2]
- adds r0, 0x1
- movs r4, 0
- strb r0, [r2]
- movs r3, 0xFF
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1E
- bne _080F4E8C
- strb r4, [r2]
- ldr r2, _080F4E9C @ =0x00008fe6
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ands r0, r3
- cmp r0, 0xE
- beq _080F4F64
-_080F4E8C:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0xE
- bls _080F4DCA
- b _080F4F64
- .align 2, 0
-_080F4E98: .4byte gUnknown_083DFEC4
-_080F4E9C: .4byte 0x00008fe6
-_080F4EA0: .4byte 0x00008fe7
-_080F4EA4: .4byte 0x000087d8
-_080F4EA8: .4byte gPokemonStorage + 0x4
-_080F4EAC: .4byte 0xffff00ff
-_080F4EB0: .4byte 0xffe0ffff
-_080F4EB4: .4byte 0xffffff00
-_080F4EB8:
- mov r2, sp
- ldrb r0, [r2, 0x3]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2, 0x3]
- strb r3, [r2, 0x1]
- movs r7, 0
- ldr r3, _080F4F44 @ =0x00008828
- adds r0, r4, r3
- ldrb r0, [r0]
- cmp r7, r0
- bcs _080F4F24
- mov r5, sp
- mov r8, r6
- adds r6, r4, r3
-_080F4ED6:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _080F4F48 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080F4F18
- movs r0, 0x1F
- adds r2, r7, 0
- ands r2, r0
- ldrb r0, [r5, 0x2]
- movs r3, 0x20
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x2]
- mov r1, r8
- ldr r0, [r1]
- ldr r2, _080F4F4C @ =0x000087d8
- adds r0, r2
- ldrb r1, [r0]
- adds r0, r4, 0
- bl GetMonData
- strb r0, [r5]
- mov r0, sp
- bl sub_80F4944
-_080F4F18:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- ldrb r3, [r6]
- cmp r7, r3
- bcc _080F4ED6
-_080F4F24:
- bl sub_80F49F4
- ldr r0, _080F4F50 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F4F54 @ =0x00008fe4
- adds r0, r1, r2
- ldrh r2, [r0]
- ldr r3, _080F4F58 @ =0x000087da
- adds r0, r1, r3
- strh r2, [r0]
- ldr r0, _080F4F5C @ =0x00008fe6
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080F4F64
- .align 2, 0
-_080F4F44: .4byte 0x00008828
-_080F4F48: .4byte gPlayerParty
-_080F4F4C: .4byte 0x000087d8
-_080F4F50: .4byte gUnknown_083DFEC4
-_080F4F54: .4byte 0x00008fe4
-_080F4F58: .4byte 0x000087da
-_080F4F5C: .4byte 0x00008fe6
-_080F4F60:
- movs r0, 0
- b _080F4F66
-_080F4F64:
- movs r0, 0x1
-_080F4F66:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F4D88
-
- thumb_func_start sub_80F4F78
-sub_80F4F78: @ 80F4F78
- push {lr}
- ldr r0, _080F4FA4 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F4FA8 @ =0x00009040
- adds r0, r1, r2
- ldr r3, _080F4FAC @ =0x00008fe9
- adds r2, r1, r3
- movs r3, 0
- ldrsb r3, [r2, r3]
- lsls r2, r3, 2
- adds r2, r3
- lsls r2, 2
- ldr r3, _080F4FB0 @ =0x00009004
- adds r2, r3
- adds r1, r2
- bl sub_80F53EC
- bl sub_80F5504
- pop {r0}
- bx r0
- .align 2, 0
-_080F4FA4: .4byte gUnknown_083DFEC4
-_080F4FA8: .4byte 0x00009040
-_080F4FAC: .4byte 0x00008fe9
-_080F4FB0: .4byte 0x00009004
- thumb_func_end sub_80F4F78
-
- thumb_func_start sub_80F4FB4
-sub_80F4FB4: @ 80F4FB4
- push {r4,lr}
- bl sub_80F5504
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80F170C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- cmp r4, 0
- bne _080F4FD2
- cmp r0, 0
- beq _080F4FD4
-_080F4FD2:
- movs r1, 0x1
-_080F4FD4:
- adds r0, r1, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F4FB4
-
- thumb_func_start sub_80F4FDC
-sub_80F4FDC: @ 80F4FDC
- push {lr}
- ldr r0, _080F5020 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r1, _080F5024 @ =0x000076aa
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F4FFE
- ldr r3, _080F5028 @ =0x000087dc
- adds r0, r2, r3
- movs r3, 0
- ldrsh r1, [r0, r3]
- ldr r3, _080F502C @ =0x00008828
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r1, r0
- beq _080F501A
-_080F4FFE:
- ldr r1, _080F5030 @ =0x00008fe9
- adds r0, r2, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- ldr r3, _080F5034 @ =0x00009004
- adds r0, r3
- adds r0, r2, r0
- adds r3, 0x3C
- adds r1, r2, r3
- bl sub_80F53EC
-_080F501A:
- pop {r0}
- bx r0
- .align 2, 0
-_080F5020: .4byte gUnknown_083DFEC4
-_080F5024: .4byte 0x000076aa
-_080F5028: .4byte 0x000087dc
-_080F502C: .4byte 0x00008828
-_080F5030: .4byte 0x00008fe9
-_080F5034: .4byte 0x00009004
- thumb_func_end sub_80F4FDC
-
- thumb_func_start sub_80F5038
-sub_80F5038: @ 80F5038
- push {r4,lr}
- bl sub_80F5504
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80F173C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- cmp r4, 0
- bne _080F5056
- cmp r0, 0
- beq _080F5058
-_080F5056:
- movs r1, 0x1
-_080F5058:
- adds r0, r1, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F5038
-
- thumb_func_start sub_80F5060
-sub_80F5060: @ 80F5060
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0
- beq _080F507C
- ldr r0, _080F5074 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F5078 @ =0x00008feb
- adds r0, r1
- b _080F5084
- .align 2, 0
-_080F5074: .4byte gUnknown_083DFEC4
-_080F5078: .4byte 0x00008feb
-_080F507C:
- ldr r0, _080F50FC @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F5100 @ =0x00008fea
- adds r0, r2
-_080F5084:
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _080F50FC @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r3, _080F5104 @ =0x00008fe9
- adds r5, r4, r3
- movs r1, 0
- ldrsb r1, [r5, r1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- ldr r2, _080F5108 @ =0x00009004
- adds r0, r2
- adds r0, r4, r0
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 2
- adds r1, r2
- adds r1, r4, r1
- bl sub_80F53EC
- ldr r0, _080F510C @ =0x000087dc
- adds r3, r4, r0
- movs r1, 0
- ldrsh r0, [r3, r1]
- lsls r0, 2
- adds r0, r4, r0
- ldr r2, _080F5110 @ =0x0000893f
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 25
- lsrs r0, 31
- mov r12, r0
- cmp r7, 0
- beq _080F5158
- ldr r7, _080F5100 @ =0x00008fea
- adds r1, r4, r7
- ldrb r0, [r1]
- adds r7, 0x1
- adds r2, r4, r7
- strb r0, [r2]
- ldrb r0, [r5]
- strb r0, [r1]
- strb r6, [r5]
- ldrb r1, [r2]
- ldr r2, _080F5114 @ =0x00008fec
- adds r0, r4, r2
- strb r1, [r0]
- adds r5, r4, 0
- ldrh r1, [r3]
- movs r7, 0
- ldrsh r0, [r3, r7]
- cmp r0, 0
- beq _080F5118
- subs r2, r1, 0x1
- b _080F5120
- .align 2, 0
-_080F50FC: .4byte gUnknown_083DFEC4
-_080F5100: .4byte 0x00008fea
-_080F5104: .4byte 0x00008fe9
-_080F5108: .4byte 0x00009004
-_080F510C: .4byte 0x000087dc
-_080F5110: .4byte 0x0000893f
-_080F5114: .4byte 0x00008fec
-_080F5118:
- ldr r1, _080F513C @ =0x000087da
- adds r0, r4, r1
- ldrh r0, [r0]
- subs r2, r0, 0x1
-_080F5120:
- ldr r1, _080F5140 @ =0x000087dc
- adds r0, r5, r1
- strh r2, [r0]
- ldr r2, _080F5144 @ =gUnknown_083DFEC4
- ldr r3, [r2]
- adds r1, r3, r1
- ldrh r4, [r1]
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r0, 0
- beq _080F5148
- subs r1, r4, 0x1
- b _080F51CE
- .align 2, 0
-_080F513C: .4byte 0x000087da
-_080F5140: .4byte 0x000087dc
-_080F5144: .4byte gUnknown_083DFEC4
-_080F5148:
- ldr r7, _080F5154 @ =0x000087da
- adds r0, r3, r7
- ldrh r0, [r0]
- subs r1, r0, 0x1
- b _080F51CE
- .align 2, 0
-_080F5154: .4byte 0x000087da
-_080F5158:
- ldr r7, _080F518C @ =0x00008feb
- adds r1, r4, r7
- ldrb r0, [r1]
- subs r7, 0x1
- adds r2, r4, r7
- strb r0, [r2]
- ldrb r0, [r5]
- strb r0, [r1]
- strb r6, [r5]
- ldrb r1, [r2]
- ldr r2, _080F5190 @ =0x00008fec
- adds r0, r4, r2
- strb r1, [r0]
- adds r2, r4, 0
- movs r4, 0
- ldrsh r1, [r3, r4]
- ldr r5, _080F5194 @ =0x000087da
- adds r0, r2, r5
- movs r7, 0
- ldrsh r0, [r0, r7]
- subs r0, 0x1
- cmp r1, r0
- bge _080F5198
- ldrh r0, [r3]
- adds r3, r0, 0x1
- b _080F519A
- .align 2, 0
-_080F518C: .4byte 0x00008feb
-_080F5190: .4byte 0x00008fec
-_080F5194: .4byte 0x000087da
-_080F5198:
- movs r3, 0
-_080F519A:
- ldr r1, _080F51C0 @ =0x000087dc
- adds r0, r2, r1
- strh r3, [r0]
- ldr r2, _080F51C4 @ =gUnknown_083DFEC4
- ldr r3, [r2]
- adds r4, r3, r1
- movs r0, 0
- ldrsh r1, [r4, r0]
- ldr r5, _080F51C8 @ =0x000087da
- adds r0, r3, r5
- movs r7, 0
- ldrsh r0, [r0, r7]
- subs r0, 0x1
- cmp r1, r0
- bge _080F51CC
- ldrh r0, [r4]
- adds r1, r0, 0x1
- b _080F51CE
- .align 2, 0
-_080F51C0: .4byte 0x000087dc
-_080F51C4: .4byte gUnknown_083DFEC4
-_080F51C8: .4byte 0x000087da
-_080F51CC:
- movs r1, 0
-_080F51CE:
- ldr r4, _080F51FC @ =0x00008fee
- adds r0, r3, r4
- strh r1, [r0]
- ldr r1, [r2]
- ldr r5, _080F5200 @ =0x000087dc
- adds r0, r1, r5
- movs r7, 0
- ldrsh r0, [r0, r7]
- lsls r0, 2
- adds r0, r1, r0
- ldr r3, _080F5204 @ =0x0000893f
- adds r0, r3
- ldrb r0, [r0]
- lsls r0, 25
- lsrs r0, 31
- mov r4, r12
- cmp r4, 0
- bne _080F520C
- adds r5, 0x4
- adds r1, r5
- ldr r0, _080F5208 @ =sub_80F5264
- b _080F5226
- .align 2, 0
-_080F51FC: .4byte 0x00008fee
-_080F5200: .4byte 0x000087dc
-_080F5204: .4byte 0x0000893f
-_080F5208: .4byte sub_80F5264
-_080F520C:
- cmp r0, 0
- bne _080F5220
- ldr r7, _080F5218 @ =0x000087e0
- adds r1, r7
- ldr r0, _080F521C @ =sub_80F52F8
- b _080F5226
- .align 2, 0
-_080F5218: .4byte 0x000087e0
-_080F521C: .4byte sub_80F52F8
-_080F5220:
- ldr r0, _080F5238 @ =0x000087e0
- adds r1, r0
- ldr r0, _080F523C @ =sub_80F5364
-_080F5226:
- str r0, [r1]
- ldr r0, [r2]
- ldr r1, _080F5240 @ =0x000087de
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F5238: .4byte 0x000087e0
-_080F523C: .4byte sub_80F5364
-_080F5240: .4byte 0x000087de
- thumb_func_end sub_80F5060
-
- thumb_func_start gpu_sync_bg_show
-gpu_sync_bg_show: @ 80F5244
- push {lr}
- ldr r0, _080F525C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F5260 @ =0x000087e0
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080F525C: .4byte gUnknown_083DFEC4
-_080F5260: .4byte 0x000087e0
- thumb_func_end gpu_sync_bg_show
-
- thumb_func_start sub_80F5264
-sub_80F5264: @ 80F5264
- push {r4,r5,lr}
- ldr r0, _080F5280 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F5284 @ =0x000087de
- adds r5, r0, r1
- ldrb r1, [r5]
- cmp r1, 0x1
- beq _080F52AA
- cmp r1, 0x1
- bgt _080F5288
- cmp r1, 0
- beq _080F528E
- b _080F52F0
- .align 2, 0
-_080F5280: .4byte gUnknown_083DFEC4
-_080F5284: .4byte 0x000087de
-_080F5288:
- cmp r1, 0x2
- beq _080F52EC
- b _080F52F0
-_080F528E:
- ldr r2, _080F52D8 @ =0x00008fe9
- adds r4, r0, r2
- ldrb r0, [r4]
- bl sub_80F2E18
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r0, 16
- lsrs r0, 16
- bl sub_80F01E0
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
-_080F52AA:
- bl sub_80F4FB4
- lsls r0, 24
- cmp r0, 0
- bne _080F52F0
- ldr r0, _080F52DC @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F52E0 @ =0x00008fee
- adds r0, r4, r1
- movs r2, 0
- ldrsh r0, [r0, r2]
- ldr r2, _080F52E4 @ =0x00008fec
- adds r1, r4, r2
- ldrb r1, [r1]
- bl sub_80F4900
- ldr r0, _080F52E8 @ =0x000087de
- adds r4, r0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _080F52F0
- .align 2, 0
-_080F52D8: .4byte 0x00008fe9
-_080F52DC: .4byte gUnknown_083DFEC4
-_080F52E0: .4byte 0x00008fee
-_080F52E4: .4byte 0x00008fec
-_080F52E8: .4byte 0x000087de
-_080F52EC:
- movs r0, 0
- b _080F52F2
-_080F52F0:
- movs r0, 0x1
-_080F52F2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F5264
-
- thumb_func_start sub_80F52F8
-sub_80F52F8: @ 80F52F8
- push {r4,r5,lr}
- ldr r0, _080F5310 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F5314 @ =0x000087de
- adds r5, r4, r0
- ldrb r0, [r5]
- cmp r0, 0
- beq _080F5318
- cmp r0, 0x1
- beq _080F5358
- b _080F535C
- .align 2, 0
-_080F5310: .4byte gUnknown_083DFEC4
-_080F5314: .4byte 0x000087de
-_080F5318:
- bl sub_80F5038
- lsls r0, 24
- cmp r0, 0
- bne _080F535C
- ldr r1, _080F5350 @ =0x00008fe9
- adds r0, r4, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- bl sub_80F01E0
- ldr r2, _080F5354 @ =0x00008fee
- adds r0, r4, r2
- movs r1, 0
- ldrsh r0, [r0, r1]
- subs r2, 0x2
- adds r1, r4, r2
- ldrb r1, [r1]
- bl sub_80F4900
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _080F535C
- .align 2, 0
-_080F5350: .4byte 0x00008fe9
-_080F5354: .4byte 0x00008fee
-_080F5358:
- movs r0, 0
- b _080F535E
-_080F535C:
- movs r0, 0x1
-_080F535E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F52F8
-
- thumb_func_start sub_80F5364
-sub_80F5364: @ 80F5364
- push {r4,r5,lr}
- ldr r0, _080F5380 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F5384 @ =0x000087de
- adds r5, r4, r0
- ldrb r0, [r5]
- cmp r0, 0x1
- beq _080F53B8
- cmp r0, 0x1
- bgt _080F5388
- cmp r0, 0
- beq _080F538E
- b _080F53E4
- .align 2, 0
-_080F5380: .4byte gUnknown_083DFEC4
-_080F5384: .4byte 0x000087de
-_080F5388:
- cmp r0, 0x2
- beq _080F53CA
- b _080F53E4
-_080F538E:
- bl sub_80F5504
- bl sub_80F173C
- lsls r0, 24
- cmp r0, 0
- bne _080F53E4
- ldr r1, _080F53B4 @ =0x00008fe9
- adds r4, r1
- ldrb r0, [r4]
- bl sub_80F2E18
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r0, 16
- lsrs r0, 16
- bl sub_80F01E0
- b _080F53C2
- .align 2, 0
-_080F53B4: .4byte 0x00008fe9
-_080F53B8:
- bl sub_80F4FB4
- lsls r0, 24
- cmp r0, 0
- bne _080F53E4
-_080F53C2:
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _080F53E4
-_080F53CA:
- ldr r2, _080F53E0 @ =0x00008fee
- adds r0, r4, r2
- movs r1, 0
- ldrsh r0, [r0, r1]
- subs r2, 0x2
- adds r1, r4, r2
- ldrb r1, [r1]
- bl sub_80F4900
- movs r0, 0
- b _080F53E6
- .align 2, 0
-_080F53E0: .4byte 0x00008fee
-_080F53E4:
- movs r0, 0x1
-_080F53E6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F5364
-
- thumb_func_start sub_80F53EC
-sub_80F53EC: @ 80F53EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- str r0, [sp]
- mov r9, r1
- movs r7, 0
- ldr r0, _080F54F4 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- str r0, [sp, 0x4]
-_080F5404:
- lsls r4, r7, 2
- ldr r1, [sp]
- adds r0, r4, r1
- ldrh r1, [r0]
- lsls r5, r1, 8
- mov r2, r9
- adds r0, r4, r2
- ldrh r0, [r0]
- subs r0, r1
- lsls r0, 8
- movs r1, 0xA
- bl __divsi3
- adds r6, r0, 0
- movs r3, 0
- adds r7, 0x1
- mov r10, r7
- mov r8, r4
-_080F5428:
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- add r0, r8
- ldr r7, [sp, 0x4]
- adds r0, r7, r0
- asrs r2, r5, 8
- asrs r1, r5, 7
- movs r7, 0x1
- ands r1, r7
- adds r2, r1
- ldr r1, _080F54F8 @ =0x00009054
- adds r0, r1
- strh r2, [r0]
- adds r5, r6
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x8
- bls _080F5428
- ldr r2, _080F54F4 @ =gUnknown_083DFEC4
- ldr r1, [r2]
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r4, r0
- adds r1, r0
- mov r3, r9
- adds r2, r4, r3
- ldrh r0, [r2]
- ldr r7, _080F54F8 @ =0x00009054
- adds r1, r7
- strh r0, [r1]
- ldr r1, [sp]
- adds r0, r4, r1
- ldrh r1, [r0, 0x2]
- lsls r5, r1, 8
- ldrh r0, [r2, 0x2]
- subs r0, r1
- lsls r0, 8
- movs r1, 0xA
- bl __divsi3
- adds r6, r0, 0
- movs r3, 0
- ldr r0, _080F54F4 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- mov r12, r0
- str r4, [sp, 0x8]
- movs r2, 0x1
- mov r8, r2
-_080F548E:
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- ldr r7, [sp, 0x8]
- adds r0, r7, r0
- add r0, r12
- asrs r2, r5, 8
- asrs r1, r5, 7
- mov r7, r8
- ands r1, r7
- adds r2, r1
- ldr r1, _080F54FC @ =0x00009056
- adds r0, r1
- strh r2, [r0]
- adds r5, r6
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x8
- bls _080F548E
- ldr r7, _080F54F4 @ =gUnknown_083DFEC4
- ldr r2, [r7]
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r4, r0
- adds r0, r2, r0
- mov r3, r9
- adds r1, r4, r3
- ldrh r1, [r1, 0x2]
- ldr r7, _080F54FC @ =0x00009056
- adds r0, r7
- strh r1, [r0]
- mov r1, r10
- lsls r0, r1, 16
- lsrs r7, r0, 16
- cmp r7, 0x4
- bls _080F5404
- ldr r3, _080F5500 @ =0x00009342
- adds r1, r2, r3
- movs r0, 0
- strh r0, [r1]
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F54F4: .4byte gUnknown_083DFEC4
-_080F54F8: .4byte 0x00009054
-_080F54FC: .4byte 0x00009056
-_080F5500: .4byte 0x00009342
- thumb_func_end sub_80F53EC
-
- thumb_func_start sub_80F5504
-sub_80F5504: @ 80F5504
- push {r4,lr}
- ldr r0, _080F551C @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r0, _080F5520 @ =0x00009342
- adds r4, r2, r0
- ldrh r0, [r4]
- adds r1, r0, 0
- cmp r1, 0x9
- bls _080F5524
- movs r0, 0
- b _080F5544
- .align 2, 0
-_080F551C: .4byte gUnknown_083DFEC4
-_080F5520: .4byte 0x00009342
-_080F5524:
- adds r0, 0x1
- strh r0, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F554C @ =0x00009054
- adds r0, r1
- adds r0, r2, r0
- bl sub_80F556C
- ldrh r1, [r4]
- movs r0, 0xA
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
-_080F5544:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F554C: .4byte 0x00009054
- thumb_func_end sub_80F5504
-
- thumb_func_start sub_80F5550
-sub_80F5550: @ 80F5550
- push {lr}
- bl sub_80F53EC
- pop {r0}
- bx r0
- thumb_func_end sub_80F5550
-
- thumb_func_start sub_80F555C
-sub_80F555C: @ 80F555C
- push {lr}
- bl sub_80F5504
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80F555C
-
- thumb_func_start sub_80F556C
-sub_80F556C: @ 80F556C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r2, 0
- ldr r5, _080F55A0 @ =gUnknown_083DFEC4
- ldr r0, [r5]
- ldr r1, _080F55A4 @ =0x0000911c
- adds r3, r0, r1
-_080F557A:
- lsls r0, r2, 2
- adds r1, r3, r0
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x4
- bls _080F557A
- ldr r0, [r5]
- ldr r1, _080F55A8 @ =0x00009344
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F55A0: .4byte gUnknown_083DFEC4
-_080F55A4: .4byte 0x0000911c
-_080F55A8: .4byte 0x00009344
- thumb_func_end sub_80F556C
-
thumb_func_start sub_80F55AC
sub_80F55AC: @ 80F55AC
push {r4-r7,lr}
diff --git a/include/pokenav.h b/include/pokenav.h
index 57cd1552e..a72cea9c4 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -42,6 +42,11 @@ struct UnkUsePokeblockSub {
/*0x3*/ u8 unk4:1;
};
+struct UnkPokenav11 {
+ u16 unk0;
+ u16 unk2;
+};
+
struct UnkPokenavStruct {
/*0x0000*/ u16 unk0[6][0x40];
/*0x0300*/ u8 filler0300[0x6];
@@ -115,13 +120,16 @@ struct UnkPokenavStruct {
/*0x87C8*/ u8 unk87C8;
/*0x87C9*/ u8 unk87C9;
/*0x87CA*/ u8 unk87CA;
+ /*0x87CB*/ u8 unk87CB;
/*0x87CC*/ struct Sprite *unk87CC;
/*0x87D0*/ struct Sprite *unk87D0[2];
- /*0x87D8*/ u8 filler87D8[0x2];
+ /*0x87D8*/ u8 unk87D8;
+ /*0x87D9*/ u8 filler87D9[0x1];
/*0x87DA*/ s16 unk87DA;
/*0x87DC*/ s16 unk87DC;
- /*0x87DE*/ s16 unk87DE;
- /*0x87E0*/ void *unk87E0;
+ /*0x87DE*/ u8 unk87DE;
+ /*0x87DF*/ u8 filler87DF[0x1];
+ /*0x87E0*/ bool8 (*unk87E0)(void);
/*0x87E4*/ struct Sprite *unk87E4[7];
/*0x8800*/ struct Sprite *unk8800[10];
/*0x8828*/ u8 unk8828;
@@ -130,14 +138,25 @@ struct UnkPokenavStruct {
/*0x8931*/ u8 unk8931[3];
/*0x8934*/ u8 unk8934[3];
/*0x8937*/ u8 unk8937[5];
- /*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1ab];
- /*0x8fe8*/ u8 fil8fe8[1];
+ /*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1AA];
+ /*0x8FE4*/ u16 unk8FE4;
+ /*0x8FE6*/ u8 unk8FE6;
+ /*0x8FE7*/ u8 unk8FE7;
+ /*0x8FE8*/ u8 filler8FE8[0x1];
/*0x8fe9*/ s8 unk8fe9;
- /*0x8fea*/ u8 fil8fea[6];
- /*0x8ff0*/ u8 unk8ff0;
- /*0x8ff1*/ u8 filler8ff1[0x13];
- /*0x9004*/ u8 unk9004[3][20];
- /*0x9040*/ u8 unk9040[0x304];
+ /*0x8fea*/ s8 unk8FEA;
+ /*0x8feb*/ s8 unk8FEB;
+ /*0x8fec*/ s8 unk8FEC;
+ /*0x8FED*/ u8 filler8FED[0x1];
+ /*0x8fee*/ u16 unk8FEE;
+ /*0x8ff0*/ u8 unk8ff0[4][5];
+ /*0x9004*/ struct UnkPokenav11 unk9004[3][5];
+ /*0x9040*/ struct UnkPokenav11 unk9040[5];
+ /*0x9054*/ struct UnkPokenav11 unk9054[9][5];
+ /*0x9108*/ u8 unk9108[0x14];
+ /*0x911C*/ struct UnkPokenav11 unk911C[5];
+ /*0x9130*/ u8 filler9130[0x212];
+ /*0x9342*/ u16 unk9342;
/*0x9344*/ u8 unk9344;
/*0x9345*/ u8 filler9345[3];
/*0x9348*/ struct Sprite *unk9348;
@@ -174,7 +193,8 @@ struct UnkPokenavStruct {
/*0xD160*/ u16 unkD160;
/*0xD162*/ u8 unkD162;
/*0xD164*/ struct UnkPokenavStruct_Sub1 unkD164;
- /*0xD1D4*/ u8 fillerD1D4[0x8];
+ /*0xD1D4*/ u8 fillerD1D6[0x2];
+ /*0xD1D6*/ u16 unkD1D6[3];
/*0xD1DC*/ u16 unkD1DC;
/*0xD1DE*/ u16 unkD1DE;
/*0xD1E0*/ u8 *unkD1E0;
@@ -196,7 +216,7 @@ void sub_80F33A8(void);
void sub_80F3C94(void);
void sub_80F3D00(void);
void sub_80F4BD0(void);
-void sub_80F556C(void *);
+void sub_80F556C(struct UnkPokenav11*);
void sub_80F567C(void *, void *);
void sub_80F5B38(void);
bool8 sub_80F5B50(void);
@@ -205,7 +225,7 @@ void sub_80EBA5C(void);
void sub_80F5060(bool8);
void move_anim_execute(void);
bool8 gpu_sync_bg_show(void);
-void sub_80F5550(void *, void *);
+void sub_80F5550(struct UnkPokenav11*, struct UnkPokenav11*);
bool8 sub_80F555C(void);
void sub_80F7224(u8);
void sub_80F5BDC(void);
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index 8ae582222..710756c11 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -5,6 +5,7 @@
#include "battle.h"
#include "data2.h"
#include "de_rom_8040FE0.h"
+#include "decompress.h"
#include "event_data.h"
#include "constants/flags.h"
#include "landmark.h"
@@ -281,7 +282,7 @@ void sub_80F13FC(void);
void sub_80F1438(void);
static void sub_80F1494(void);
bool8 sub_80F162C(u8);
-void sub_80F01E0(u16);
+static void sub_80F01E0(u16);
static void sub_80F19FC(void);
static void sub_80F1A74(void);
static void sub_80F1A80(void);
@@ -347,6 +348,15 @@ static void sub_80F42C4(u8*);
static void sub_80F4394(void);
u8 *sub_80F6514(u8*, u16, u8);
static u8 *sub_80F443C(u8 *, u16);
+void sub_80F55AC(u8*, struct UnkPokenav11 *);
+static void sub_80F4CF0(void);
+static void sub_80F4D44(void);
+static bool8 sub_80F4D88(void);
+static void sub_80F53EC(struct UnkPokenav11*, struct UnkPokenav11*);
+static bool8 sub_80F5504(void);
+static bool8 sub_80F5264(void);
+static bool8 sub_80F52F8(void);
+static bool8 sub_80F5364(void);
extern void sub_80F0900(void);
extern void sub_80F01A4(void);
@@ -375,13 +385,10 @@ extern u8 sub_80F68E8();
extern void sub_80F66E0();
extern void sub_80F638C();
extern bool8 sub_80F63D0();
-extern void sub_80F4CF0();
extern void sub_80EFF34();
extern bool8 sub_80EFF68();
extern void sub_80F6134();
extern u8 sub_80F5DD4();
-extern void sub_80F4D44();
-extern bool8 sub_80F4D88();
extern void sub_80F0264(u8);
extern bool8 sub_80F02A0();
extern void sub_80EF9F8(void);
@@ -4676,7 +4683,7 @@ void sub_80F01A4(void)
REG_WINOUT = 0x001B;
}
-void sub_80F01E0(u16 a)
+static void sub_80F01E0(u16 a)
{
Menu_PrintText(gUnknown_083DFEC4->unk8829[a], 13, 1);
@@ -8100,7 +8107,7 @@ static u8 *sub_80F445C(u8 *arg0, u16 arg1)
return buffer;
}
-int sub_80F44B0(u16 box, u16 monIndex, int monDataField, int *text)
+u32 sub_80F44B0(u16 box, u16 monIndex, int monDataField, int *text)
{
if (box == 14)
{
@@ -8126,7 +8133,7 @@ static void SetMonMarkings(u16 box, u16 monIndex, u8 markings)
SetBoxMonData(&gPokemonStorage.boxes[box][monIndex], MON_DATA_MARKINGS, &markings);
}
-void sub_80F45A0(s16 arg0, u8 arg1)
+static void sub_80F45A0(s16 arg0, u8 arg1)
{
u8 box;
u8 var0 = gUnknown_083DFEC4->unk893c[arg0].unk4;
@@ -8148,3 +8155,585 @@ void sub_80F45A0(s16 arg0, u8 arg1)
gUnknown_083DFEC4->unk8937[arg1] = var0;
}
}
+
+static void sub_80F468C(s16 arg0, u8 arg1)
+{
+ u16 i;
+ u16 box;
+ u16 monIndex;
+
+ if (gUnknown_083DFEC4->unk893c[arg0].unk4)
+ {
+ box = gUnknown_083DFEC4->unk893c[arg0].unk1;
+ monIndex = gUnknown_083DFEC4->unk893c[arg0].partyIdx;
+ gUnknown_083DFEC4->unk8ff0[arg1][0] = sub_80F44B0(box, monIndex, MON_DATA_COOL, NULL);
+ gUnknown_083DFEC4->unk8ff0[arg1][1] = sub_80F44B0(box, monIndex, MON_DATA_TOUGH, NULL);
+ gUnknown_083DFEC4->unk8ff0[arg1][2] = sub_80F44B0(box, monIndex, MON_DATA_SMART, NULL);
+ gUnknown_083DFEC4->unk8ff0[arg1][3] = sub_80F44B0(box, monIndex, MON_DATA_CUTE, NULL);
+ gUnknown_083DFEC4->unk8ff0[arg1][4] = sub_80F44B0(box, monIndex, MON_DATA_BEAUTY, NULL);
+
+ gUnknown_083DFEC4->unk8931[arg1] = sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) != 255
+ ? sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) / 29
+ : 9;
+
+ gUnknown_083DFEC4->unk8934[arg1] = sub_80F44B0(box, monIndex, MON_DATA_MARKINGS, NULL);
+ sub_80F55AC(gUnknown_083DFEC4->unk8ff0[arg1], gUnknown_083DFEC4->unk9004[arg1]);
+ }
+ else
+ {
+ for (i = 0; i < 5; i++)
+ {
+ gUnknown_083DFEC4->unk8ff0[arg1][i] = 0;
+ gUnknown_083DFEC4->unk9004[arg1][i].unk0 = 0x9B;
+ gUnknown_083DFEC4->unk9004[arg1][i].unk2 = 0x5B;
+ }
+ }
+}
+
+static void sub_80F4824(s16 arg0, u8 arg1)
+{
+ u16 species;
+ u32 otId;
+ u32 personality;
+ u16 box;
+ u16 monIndex;
+
+ if (gUnknown_083DFEC4->unk893c[arg0].unk4)
+ {
+ box = gUnknown_083DFEC4->unk893c[arg0].unk1;
+ monIndex = gUnknown_083DFEC4->unk893c[arg0].partyIdx;
+ species = sub_80F44B0(box, monIndex, MON_DATA_SPECIES2, NULL);
+ otId = sub_80F44B0(box, monIndex, MON_DATA_OT_ID, NULL);
+ personality = sub_80F44B0(box, monIndex, MON_DATA_PERSONALITY, NULL);
+
+ HandleLoadSpecialPokePic(
+ &gMonFrontPicTable[species],
+ gMonFrontPicCoords[species].coords,
+ 1,
+ (intptr_t)gUnknown_083DFEC4->unk131E4,
+ gUnknown_083DFEC4->unkD1E4[arg1],
+ species,
+ personality);
+
+ LZ77UnCompWram(GetMonSpritePalFromOtIdPersonality(species, otId, personality), gUnknown_083DFEC4->unk0[arg1]);
+ gUnknown_083DFEC4->unkD1D6[arg1] = species;
+ }
+}
+
+void sub_80F4900(s16 arg0, u8 arg1)
+{
+ sub_80F45A0(arg0, arg1);
+ sub_80F468C(arg0, arg1);
+ sub_80F4824(arg0, arg1);
+}
+
+void sub_80F492C(void)
+{
+ gUnknown_083DFEC4->unk8FE4 = 0;
+}
+
+#ifdef NONMATCHING
+// registers r3/r4 are swapped
+void sub_80F4944(struct UnkUsePokeblockSub *arg0)
+{
+ u16 i;
+ u16 r3;
+ u16 r4;
+
+ i = 0;
+ r4 = gUnknown_083DFEC4->unk8FE4;
+ r3 = r4 / 2;
+ while (r3 != r4)
+ {
+ if (arg0->unk0 > gUnknown_083DFEC4->unk893c[r3].unk0)
+ r4 = r3;
+ else
+ i = r3 + 1;
+
+ r3 = ((r4 - i) / 2) + i;
+ }
+
+ r4 = gUnknown_083DFEC4->unk8FE4;
+ while (r4 > r3)
+ {
+ gUnknown_083DFEC4->unk893c[r4] = gUnknown_083DFEC4->unk893c[r4 - 1];
+ r4--;
+ }
+
+ gUnknown_083DFEC4->unk893c[r3] = *arg0;
+ gUnknown_083DFEC4->unk8FE4++;
+}
+#else
+NAKED
+void sub_80F4944(struct UnkUsePokeblockSub *arg0)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ mov r12, r0\n\
+ movs r2, 0\n\
+ ldr r1, _080F4978 @ =gUnknown_083DFEC4\n\
+ ldr r5, [r1]\n\
+ ldr r3, _080F497C @ =0x00008fe4\n\
+ adds r0, r5, r3\n\
+ ldrh r4, [r0]\n\
+ lsrs r3, r4, 1\n\
+ mov r8, r1\n\
+ cmp r4, r3\n\
+ beq _080F499C\n\
+ adds r6, r5, 0\n\
+ mov r0, r12\n\
+ ldrb r5, [r0]\n\
+ ldr r7, _080F4980 @ =0x0000893c\n\
+_080F4968:\n\
+ lsls r0, r3, 2\n\
+ adds r0, r6, r0\n\
+ adds r0, r7\n\
+ ldrb r0, [r0]\n\
+ cmp r5, r0\n\
+ bls _080F4984\n\
+ adds r4, r3, 0\n\
+ b _080F498A\n\
+ .align 2, 0\n\
+_080F4978: .4byte gUnknown_083DFEC4\n\
+_080F497C: .4byte 0x00008fe4\n\
+_080F4980: .4byte 0x0000893c\n\
+_080F4984:\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+_080F498A:\n\
+ subs r0, r4, r2\n\
+ lsrs r1, r0, 31\n\
+ adds r0, r1\n\
+ asrs r0, 1\n\
+ adds r0, r2, r0\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r4, r3\n\
+ bne _080F4968\n\
+_080F499C:\n\
+ mov r1, r8\n\
+ ldr r2, [r1]\n\
+ ldr r1, _080F49EC @ =0x00008fe4\n\
+ adds r0, r2, r1\n\
+ ldrh r4, [r0]\n\
+ lsls r6, r3, 2\n\
+ cmp r4, r3\n\
+ bls _080F49C6\n\
+ ldr r0, _080F49F0 @ =0x0000893c\n\
+ adds r5, r2, r0\n\
+_080F49B0:\n\
+ lsls r2, r4, 2\n\
+ adds r2, r5, r2\n\
+ subs r1, r4, 0x1\n\
+ lsls r0, r1, 2\n\
+ adds r0, r5, r0\n\
+ ldr r0, [r0]\n\
+ str r0, [r2]\n\
+ lsls r1, 16\n\
+ lsrs r4, r1, 16\n\
+ cmp r4, r3\n\
+ bhi _080F49B0\n\
+_080F49C6:\n\
+ mov r1, r8\n\
+ ldr r2, [r1]\n\
+ ldr r3, _080F49F0 @ =0x0000893c\n\
+ adds r0, r2, r3\n\
+ adds r0, r6\n\
+ mov r3, r12\n\
+ ldr r1, [r3]\n\
+ str r1, [r0]\n\
+ ldr r0, _080F49EC @ =0x00008fe4\n\
+ adds r2, r0\n\
+ ldrh r0, [r2]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080F49EC: .4byte 0x00008fe4\n\
+_080F49F0: .4byte 0x0000893c\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80F49F4(void)
+{
+ u16 i;
+
+ gUnknown_083DFEC4->unk893c[0].unk2 = 1;
+ for (i = 1; i < gUnknown_083DFEC4->unk8FE4; i++)
+ {
+ if (gUnknown_083DFEC4->unk893c[i].unk0 == gUnknown_083DFEC4->unk893c[i - 1].unk0)
+ gUnknown_083DFEC4->unk893c[i].unk2 = gUnknown_083DFEC4->unk893c[i - 1].unk2;
+ else
+ gUnknown_083DFEC4->unk893c[i].unk2 = i + 1;
+ }
+
+ gUnknown_083DFEC4->unk876C = 0;
+ gUnknown_083DFEC4->unk8770 = 0;
+ gUnknown_083DFEC4->unk876E = 0;
+ gUnknown_083DFEC4->unk8772 = gUnknown_083DFEC4->unk8FE4 < 9 ? (gUnknown_083DFEC4->unk8FE4 - 1) : 7;
+ gUnknown_083DFEC4->unk8774 = gUnknown_083DFEC4->unk8FE4 - 1;
+ gUnknown_083DFEC4->unk87C9 = gUnknown_083DFEC4->unk8774 > 7;
+}
+
+void sub_80F4B20(void)
+{
+ s16 var0;
+ s16 var1;
+
+ sub_80F4900(gUnknown_083DFEC4->unk87DC, 0);
+ sub_80F2E18(0);
+ if (gUnknown_083DFEC4->unk87DA == 1)
+ {
+ gUnknown_083DFEC4->unk8fe9 = 0;
+ gUnknown_083DFEC4->unk8FEA = 0;
+ gUnknown_083DFEC4->unk8FEB = 0;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk8fe9 = 0;
+ gUnknown_083DFEC4->unk8FEA = 1;
+ gUnknown_083DFEC4->unk8FEB = 2;
+
+ var0 = gUnknown_083DFEC4->unk87DC + 1;
+ if (var0 >= gUnknown_083DFEC4->unk87DA)
+ var0 = 0;
+
+ var1 = gUnknown_083DFEC4->unk87DC - 1;
+ if (var1 < 0)
+ var1 = gUnknown_083DFEC4->unk87DA - 1;
+
+ sub_80F4900(var0, 1);
+ sub_80F4900(var1, 2);
+ }
+}
+
+void sub_80F4BD0(void)
+{
+ u16 i, j;
+
+ for (i = 0, j = 0; i < gUnknown_083DFEC4->unk8828; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ gUnknown_083DFEC4->unk893c[j].unk1 = 14;
+ gUnknown_083DFEC4->unk893c[j].partyIdx = i;
+ gUnknown_083DFEC4->unk893c[j].unk2 = j + 1;
+ gUnknown_083DFEC4->unk893c[j].unk4 = 1;
+ j++;
+ }
+ }
+
+ gUnknown_083DFEC4->unk893c[j].unk1 = 0;
+ gUnknown_083DFEC4->unk893c[j].partyIdx = 0;
+ gUnknown_083DFEC4->unk893c[j].unk2 = 0;
+ gUnknown_083DFEC4->unk893c[j].unk4 = 0;
+ gUnknown_083DFEC4->unk87DC = 0;
+ gUnknown_083DFEC4->unk87DA = j + 1;
+ sub_80F4B20();
+ gUnknown_083DFEC4->unk87CB = 1;
+}
+
+static void sub_80F4CF0(void)
+{
+ gUnknown_083DFEC4->unk87DC = gUnknown_083DFEC4->unk876E;
+ sub_80F4B20();
+
+ if (gUnknown_083DFEC4->unk8774 == 0)
+ gUnknown_083DFEC4->unk87CB = 0;
+ else
+ gUnknown_083DFEC4->unk87CB = 1;
+}
+
+static void sub_80F4D44(void)
+{
+ gUnknown_083DFEC4->unk8FE6 = 0;
+ gUnknown_083DFEC4->unk8FE7 = 0;
+ sub_80F492C();
+
+ if (!gUnknown_083DFEC4->unk6DAC)
+ while (sub_80F4D88());
+}
+
+static bool8 sub_80F4D88(void)
+{
+ u16 i;
+ register int mask asm("r3"); // FIXME
+ int nextValue;
+ struct UnkUsePokeblockSub var0;
+
+ switch (gUnknown_083DFEC4->unk8FE6)
+ {
+ default:
+ var0.unk4 = 1;
+ for (i = 0; i < 15; i++)
+ {
+
+ if (GetBoxMonData(&gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7], MON_DATA_SPECIES)
+ && !GetBoxMonData(&gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7], MON_DATA_IS_EGG))
+ {
+ var0.unk1 = gUnknown_083DFEC4->unk8FE6;
+ var0.partyIdx = gUnknown_083DFEC4->unk8FE7;
+ var0.unk0 = GetBoxMonData(
+ &gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7],
+ gUnknown_083DFEC4->unk87D8);
+ sub_80F4944(&var0);
+ }
+
+ gUnknown_083DFEC4->unk8FE7++;
+ mask = 0xFF;
+ if (gUnknown_083DFEC4->unk8FE7 == 30)
+ {
+ gUnknown_083DFEC4->unk8FE7 = 0;
+ nextValue = gUnknown_083DFEC4->unk8FE6 + 1;
+ gUnknown_083DFEC4->unk8FE6 = nextValue;
+ if ((nextValue & mask) == 14)
+ break;
+ }
+ }
+ break;
+ case 14:
+ var0.unk4 = 1;
+ var0.unk1 = 14;
+ for (i = 0; i < gUnknown_083DFEC4->unk8828; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ var0.partyIdx = i;
+ var0.unk0 = GetMonData(&gPlayerParty[i], gUnknown_083DFEC4->unk87D8);
+ sub_80F4944(&var0);
+ }
+ }
+
+ sub_80F49F4();
+ gUnknown_083DFEC4->unk87DA = gUnknown_083DFEC4->unk8FE4;
+ gUnknown_083DFEC4->unk8FE6++;
+ break;
+ case 15:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_80F4F78(void)
+{
+ sub_80F53EC(gUnknown_083DFEC4->unk9040, gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9]);
+ sub_80F5504();
+}
+
+bool8 sub_80F4FB4(void)
+{
+ bool8 var0 = sub_80F5504();
+ bool8 var1 = sub_80F170C();
+ return var0 || var1;
+}
+
+void sub_80F4FDC(void)
+{
+ if (gUnknown_083DFEC4->unk76AA || gUnknown_083DFEC4->unk87DC != gUnknown_083DFEC4->unk8828)
+ sub_80F53EC(gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9], gUnknown_083DFEC4->unk9040);
+}
+
+bool8 sub_80F5038(void)
+{
+ bool8 var0 = sub_80F5504();
+ bool8 var1 = sub_80F173C();
+ return var0 || var1;
+}
+
+void sub_80F5060(u8 arg0)
+{
+ u16 var0;
+ u8 var1;
+ u8 var2;
+
+ if (arg0)
+ var0 = gUnknown_083DFEC4->unk8FEB;
+ else
+ var0 = gUnknown_083DFEC4->unk8FEA;
+
+ sub_80F53EC(gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9], gUnknown_083DFEC4->unk9004[var0]);
+ var1 = gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk4;
+ if (arg0)
+ {
+ gUnknown_083DFEC4->unk8FEB = gUnknown_083DFEC4->unk8FEA;
+ gUnknown_083DFEC4->unk8FEA = gUnknown_083DFEC4->unk8fe9;
+ gUnknown_083DFEC4->unk8fe9 = var0;
+ gUnknown_083DFEC4->unk8FEC = gUnknown_083DFEC4->unk8FEB;
+
+ gUnknown_083DFEC4->unk87DC = gUnknown_083DFEC4->unk87DC
+ ? gUnknown_083DFEC4->unk87DC - 1
+ : gUnknown_083DFEC4->unk87DA - 1;
+ gUnknown_083DFEC4->unk8FEE = gUnknown_083DFEC4->unk87DC
+ ? gUnknown_083DFEC4->unk87DC - 1
+ : gUnknown_083DFEC4->unk87DA - 1;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk8FEA = gUnknown_083DFEC4->unk8FEB;
+ gUnknown_083DFEC4->unk8FEB = gUnknown_083DFEC4->unk8fe9;
+ gUnknown_083DFEC4->unk8fe9 = var0;
+ gUnknown_083DFEC4->unk8FEC = gUnknown_083DFEC4->unk8FEA;
+
+ gUnknown_083DFEC4->unk87DC = (gUnknown_083DFEC4->unk87DC < gUnknown_083DFEC4->unk87DA - 1)
+ ? gUnknown_083DFEC4->unk87DC + 1
+ : 0;
+ gUnknown_083DFEC4->unk8FEE = (gUnknown_083DFEC4->unk87DC < gUnknown_083DFEC4->unk87DA - 1)
+ ? gUnknown_083DFEC4->unk87DC + 1
+ : 0;
+ }
+
+ var2 = gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk4;
+ if (!var1)
+ gUnknown_083DFEC4->unk87E0 = sub_80F5264;
+ else if (!var2)
+ gUnknown_083DFEC4->unk87E0 = sub_80F52F8;
+ else
+ gUnknown_083DFEC4->unk87E0 = sub_80F5364;
+
+ gUnknown_083DFEC4->unk87DE = 0;
+}
+
+bool8 gpu_sync_bg_show(void)
+{
+ return gUnknown_083DFEC4->unk87E0();
+}
+
+static bool8 sub_80F5264(void)
+{
+ switch (gUnknown_083DFEC4->unk87DE)
+ {
+ case 0:
+ sub_80F2E18(gUnknown_083DFEC4->unk8fe9);
+ sub_80F01E0(gUnknown_083DFEC4->unk8fe9);
+ gUnknown_083DFEC4->unk87DE++;
+ // fall through
+ case 1:
+ if (!sub_80F4FB4())
+ {
+ sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC);
+ gUnknown_083DFEC4->unk87DE++;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_80F52F8(void)
+{
+ switch (gUnknown_083DFEC4->unk87DE)
+ {
+ case 0:
+ if (!sub_80F5038())
+ {
+ sub_80F01E0(gUnknown_083DFEC4->unk8fe9);
+ sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC);
+ gUnknown_083DFEC4->unk87DE++;
+ }
+ break;
+ case 1:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_80F5364(void)
+{
+ switch (gUnknown_083DFEC4->unk87DE)
+ {
+ case 0:
+ sub_80F5504();
+ if (!sub_80F173C())
+ {
+ sub_80F2E18(gUnknown_083DFEC4->unk8fe9);
+ sub_80F01E0(gUnknown_083DFEC4->unk8fe9);
+ gUnknown_083DFEC4->unk87DE++;
+ }
+ break;
+ case 1:
+ if (!sub_80F4FB4())
+ gUnknown_083DFEC4->unk87DE++;
+ break;
+ case 2:
+ sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_80F53EC(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1)
+{
+ u16 i, j;
+ int r5;
+ int r6;
+
+ for (i = 0; i < 5; i++)
+ {
+ r5 = arg0[i].unk0 << 8;
+ r6 = ((arg1[i].unk0 - arg0[i].unk0) << 8) / 10;
+ for (j = 0; j < 9; j++)
+ {
+ gUnknown_083DFEC4->unk9054[j][i].unk0 = (r5 >> 8) + ((r5 >> 7) & 1);
+ r5 += r6;
+ }
+
+ gUnknown_083DFEC4->unk9054[j][i].unk0 = arg1[i].unk0;
+ r5 = arg0[i].unk2 << 8;
+ r6 = ((arg1[i].unk2 - arg0[i].unk2) << 8) / 10;
+ for (j = 0; j < 9; j++)
+ {
+ gUnknown_083DFEC4->unk9054[j][i].unk2 = (r5 >> 8) + ((r5 >> 7) & 1);
+ r5 += r6;
+ }
+
+ gUnknown_083DFEC4->unk9054[j][i].unk2 = arg1[i].unk2;
+ }
+
+ gUnknown_083DFEC4->unk9342 = 0;
+}
+
+static bool8 sub_80F5504(void)
+{
+ if (gUnknown_083DFEC4->unk9342 < 10)
+ {
+ sub_80F556C(gUnknown_083DFEC4->unk9054[gUnknown_083DFEC4->unk9342++]);
+ return gUnknown_083DFEC4->unk9342 != 10;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void sub_80F5550(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1)
+{
+ sub_80F53EC(arg0, arg1);
+}
+
+bool8 sub_80F555C(void)
+{
+ return sub_80F5504();
+}
+
+void sub_80F556C(struct UnkPokenav11 *arg0)
+{
+ u16 i;
+
+ for (i = 0; i < 5; i++)
+ gUnknown_083DFEC4->unk911C[i] = arg0[i];
+
+ gUnknown_083DFEC4->unk9344 = 1;
+}
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index dd28bd148..c8506fbcf 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -317,7 +317,7 @@ static void sub_8136294(void)
}
break;
case 19:
- sub_80F556C(gUnknown_083DFEC4->unk9004);
+ sub_80F556C(gUnknown_083DFEC4->unk9004[0]);
gUnknown_02039304->unk50++;
break;
case 20: