summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-05 19:08:00 -0400
committerhuderlem <huderlem@gmail.com>2019-04-06 08:16:13 -0500
commitfc14f378b24ecb8e16fe222e1059af767be25693 (patch)
treec68a03e7dd4f5621241a9ee5c11cca0209f0fd0d
parenta4ad6edc79e6ed6c895bcfe9e323310b5c97f4a4 (diff)
sub_80F66E0
-rw-r--r--asm/pokenav.s249
-rw-r--r--include/pokenav.h2
-rw-r--r--src/pokenav.c73
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;
+}