diff options
-rw-r--r-- | asm/pokenav.s | 1918 | ||||
-rw-r--r-- | include/pokenav.h | 46 | ||||
-rw-r--r-- | src/pokenav_before.c | 603 | ||||
-rw-r--r-- | src/use_pokeblock.c | 2 |
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: |