diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-04-05 19:08:00 -0400 |
---|---|---|
committer | huderlem <huderlem@gmail.com> | 2019-04-06 08:16:13 -0500 |
commit | fc14f378b24ecb8e16fe222e1059af767be25693 (patch) | |
tree | c68a03e7dd4f5621241a9ee5c11cca0209f0fd0d | |
parent | a4ad6edc79e6ed6c895bcfe9e323310b5c97f4a4 (diff) |
sub_80F66E0
-rw-r--r-- | asm/pokenav.s | 249 | ||||
-rw-r--r-- | include/pokenav.h | 2 | ||||
-rw-r--r-- | src/pokenav.c | 73 |
3 files changed, 74 insertions, 250 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index fe5e2dc99..c1cc37229 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -5,255 +5,6 @@ .text - thumb_func_start sub_80F66E0 -sub_80F66E0: @ 80F66E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080F676C @ =gPokenavStructPtr - mov r8, r0 - ldr r4, [r0] - ldr r1, _080F6770 @ =0x00008829 - adds r0, r4, r1 - ldr r2, _080F6774 @ =0x0000876e - adds r5, r4, r2 - ldrh r1, [r5] - movs r2, 0 - bl sub_80F6514 - movs r3, 0 - ldrsh r0, [r5, r3] - movs r1, 0 - bl sub_80F4824 - ldrh r1, [r5] - ldr r6, _080F6778 @ =0x000087dc - adds r0, r4, r6 - movs r6, 0 - strh r1, [r0] - ldr r1, _080F677C @ =0x0000bc8e - adds r0, r4, r1 - strb r6, [r0] - movs r2, 0 - mov r9, r2 - movs r3, 0 - ldrsh r1, [r5, r3] - lsls r1, 2 - adds r1, r4, r1 - ldr r5, _080F6780 @ =0x0000893d - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _080F6784 @ =0x0000893e - adds r1, r2 - ldrb r1, [r1] - lsls r1, 27 - lsrs r1, 27 - movs r2, 0x52 - movs r3, 0 - bl sub_80F44B0 - adds r7, r0, 0 - ldr r3, _080F6788 @ =0x0000bc8f - adds r4, r3 - strb r6, [r4] - movs r5, 0 - mov r12, r5 - mov r10, r8 -_080F674E: - ldr r1, _080F678C @ =gUnknown_083E499C - mov r6, r12 - lsls r0, r6, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x36 - bgt _080F6790 - cmp r0, 0x32 - blt _080F6790 - movs r0, 0x7 - adds r2, r7, 0 - ands r2, r0 - lsrs r7, 3 - movs r0, 0x4 - b _080F679A - .align 2, 0 -_080F676C: .4byte gPokenavStructPtr -_080F6770: .4byte 0x00008829 -_080F6774: .4byte 0x0000876e -_080F6778: .4byte 0x000087dc -_080F677C: .4byte 0x0000bc8e -_080F6780: .4byte 0x0000893d -_080F6784: .4byte 0x0000893e -_080F6788: .4byte 0x0000bc8f -_080F678C: .4byte gUnknown_083E499C -_080F6790: - movs r0, 0x1 - adds r2, r7, 0 - ands r2, r0 - lsrs r7, 1 - movs r0, 0x1 -_080F679A: - movs r4, 0 - adds r1, r2, 0 - add r0, r9 - mov r8, r0 - cmp r4, r1 - bcs _080F67D4 - mov r3, r10 - ldr r0, [r3] - ldr r5, _080F6828 @ =0x0000bc8e - adds r3, r0, r5 - ldr r6, _080F682C @ =0x0000bc4c - adds r6, r0, r6 - str r6, [sp] - adds r5, r1, 0 -_080F67B6: - ldrb r0, [r3] - adds r1, r0, 0x1 - strb r1, [r3] - lsls r0, 24 - lsrs r0, 24 - ldr r1, [sp] - adds r0, r1, r0 - mov r6, r9 - adds r1, r6, r4 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r5 - bcc _080F67B6 -_080F67D4: - cmp r2, 0 - beq _080F67EC - mov r0, r9 - cmp r0, 0x18 - bls _080F67EC - mov r2, r10 - ldr r1, [r2] - ldr r3, _080F6830 @ =0x0000bc8f - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080F67EC: - mov r5, r8 - lsls r0, r5, 24 - lsrs r0, 24 - mov r9, r0 - mov r0, r12 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - cmp r0, 0x10 - bls _080F674E - ldr r6, _080F6834 @ =gPokenavStructPtr - ldr r2, [r6] - ldr r1, _080F6828 @ =0x0000bc8e - adds r0, r2, r1 - ldr r3, _080F6830 @ =0x0000bc8f - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - beq _080F6840 - ldr r5, _080F6838 @ =0x0000bc90 - adds r0, r2, r5 - movs r1, 0 - strb r1, [r0] - ldr r6, _080F683C @ =0x0000bc91 - adds r0, r2, r6 - strb r1, [r0] - b _080F6850 - .align 2, 0 -_080F6828: .4byte 0x0000bc8e -_080F682C: .4byte 0x0000bc4c -_080F6830: .4byte 0x0000bc8f -_080F6834: .4byte gPokenavStructPtr -_080F6838: .4byte 0x0000bc90 -_080F683C: .4byte 0x0000bc91 -_080F6840: - ldr r0, _080F6888 @ =0x0000bc90 - adds r1, r2, r0 - movs r0, 0 - strb r0, [r1] - ldr r3, _080F688C @ =0x0000bc91 - adds r1, r2, r3 - movs r0, 0x3 - strb r0, [r1] -_080F6850: - ldr r5, _080F6890 @ =gPokenavStructPtr - ldr r1, [r5] - ldr r6, _080F6894 @ =0x0000bc8e - adds r0, r1, r6 - ldr r2, _080F6898 @ =0x0000bc8f - adds r1, r2 - ldrb r0, [r0] - ldrb r1, [r1] - subs r0, r1 - lsls r0, 24 - lsrs r2, r0, 24 - movs r3, 0 - mov r12, r3 - adds r3, r5, 0 - ldr r1, _080F689C @ =0x0000bc96 - movs r4, 0x9 -_080F6870: - cmp r2, 0x8 - bls _080F68A0 - ldr r0, [r3] - adds r0, r1 - add r0, r12 - strb r4, [r0] - adds r0, r2, 0 - subs r0, 0x9 - lsls r0, 24 - lsrs r2, r0, 24 - b _080F68AA - .align 2, 0 -_080F6888: .4byte 0x0000bc90 -_080F688C: .4byte 0x0000bc91 -_080F6890: .4byte gPokenavStructPtr -_080F6894: .4byte 0x0000bc8e -_080F6898: .4byte 0x0000bc8f -_080F689C: .4byte 0x0000bc96 -_080F68A0: - ldr r0, [r3] - adds r0, r1 - add r0, r12 - strb r2, [r0] - movs r2, 0 -_080F68AA: - mov r0, r12 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - cmp r0, 0x2 - bls _080F6870 - ldr r5, _080F68DC @ =gPokenavStructPtr - ldr r0, [r5] - ldr r6, _080F68E0 @ =0x0000bc96 - adds r1, r0, r6 - add r1, r12 - ldr r2, _080F68E4 @ =0x0000bc8f - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F68DC: .4byte gPokenavStructPtr -_080F68E0: .4byte 0x0000bc96 -_080F68E4: .4byte 0x0000bc8f - thumb_func_end sub_80F66E0 - thumb_func_start sub_80F68E8 sub_80F68E8: @ 80F68E8 push {r4-r7,lr} diff --git a/include/pokenav.h b/include/pokenav.h index b96337c00..49ca7cb7a 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -198,7 +198,7 @@ struct UnkPokenavStruct { /*0xBC93*/ u8 unkBC93; /*0xBC94*/ u8 unkBC94; /*0xBC95*/ u8 unkBC95; - /*0xBC96*/ u8 fillerBC96[0x4]; + /*0xBC96*/ u8 unkBC96[0x4]; /*0xBC9A*/ u8 unkBC9A; /*0xBC9B*/ u8 unkBC9B; /*0xBC9C*/ u8 unkBC9C[22][200]; diff --git a/src/pokenav.c b/src/pokenav.c index b995903dc..229e0a948 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -6073,3 +6073,76 @@ u8 * sub_80F6514(u8 * r10, u16 sp0, u8 sp4) } return dest; } + +extern const u16 gUnknown_083E499C[]; + +void sub_80F66E0(void) +{ + u8 r9; + u32 r7; + u16 i, j; + u8 r2; + u8 r0; + + sub_80F6514(gPokenavStructPtr->unk8829[0], gPokenavStructPtr->unk876E, 0); + sub_80F4824(gPokenavStructPtr->unk876E, 0); + gPokenavStructPtr->unk87DC = gPokenavStructPtr->unk876E; + gPokenavStructPtr->unkBC8E = 0; + r9 = 0; + r7 = sub_80F44B0(gPokenavStructPtr->unk893c[gPokenavStructPtr->unk876E].unk1, gPokenavStructPtr->unk893c[gPokenavStructPtr->unk876E].partyIdx, MON_DATA_RIBBONS, NULL); + gPokenavStructPtr->unkBC8F = 0; + for (i = 0; i < 17; i++) + { + switch (gUnknown_083E499C[i]) + { + case MON_DATA_COOL_RIBBON: + case MON_DATA_BEAUTY_RIBBON: + case MON_DATA_CUTE_RIBBON: + case MON_DATA_SMART_RIBBON: + case MON_DATA_TOUGH_RIBBON: + r2 = r7 & 7; + r7 >>= 3; + r0 = 4; + break; + default: + r2 = r7 & 1; + r7 >>= 1; + r0 = 1; + break; + }; + for (j = 0; j < r2; j++) + { + gPokenavStructPtr->unkBC4C[gPokenavStructPtr->unkBC8E++] = r9 + j; + } + if (r2 && r9 > 24) + { + gPokenavStructPtr->unkBC8F++; + } + r9 += r0; + } + if (gPokenavStructPtr->unkBC8E != gPokenavStructPtr->unkBC8F) + { + gPokenavStructPtr->unkBC90 = 0; + gPokenavStructPtr->unkBC91 = 0; + } + else + { + gPokenavStructPtr->unkBC90 = 0; + gPokenavStructPtr->unkBC91 = 3; + } + r2 = gPokenavStructPtr->unkBC8E - gPokenavStructPtr->unkBC8F; + for (i = 0; i < 3; i++) + { + if (r2 > 8) + { + gPokenavStructPtr->unkBC96[i] = 9; + r2 -= 9; + } + else + { + gPokenavStructPtr->unkBC96[i] = r2; + r2 = 0; + } + } + gPokenavStructPtr->unkBC96[i] = gPokenavStructPtr->unkBC8F; +} |