summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-05 17:39:38 -0400
committerhuderlem <huderlem@gmail.com>2019-04-06 08:16:13 -0500
commit0ab30dbcd559fd5c53fc52166a46eff60d2a0e86 (patch)
tree7973b7eb74f0e3d18be839e08283760192ffca4f
parent5ad5b69050697a1acf2a9ab668475ae775014e00 (diff)
sub_80F6250
-rw-r--r--asm/pokenav.s160
-rw-r--r--src/pokenav.c50
2 files changed, 50 insertions, 160 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s
index b78d462b1..67ec8f510 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -5,166 +5,6 @@
.text
- thumb_func_start sub_80F6250
-sub_80F6250: @ 80F6250
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _080F6270 @ =gPokenavStructPtr
- ldr r2, [r0]
- ldr r0, _080F6274 @ =0x00008fe8
- adds r3, r2, r0
- movs r1, 0
- ldrsb r1, [r3, r1]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080F6278
-_080F626C:
- movs r0, 0
- b _080F637E
- .align 2, 0
-_080F6270: .4byte gPokenavStructPtr
-_080F6274: .4byte 0x00008fe8
-_080F6278:
- ldr r1, _080F630C @ =0x00008fe6
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _080F631C
- cmp r0, 0x8
- beq _080F626C
- movs r6, 0
- adds r7, r2, 0
- adds r5, r7, r1
- ldr r0, _080F6310 @ =0x00008fe7
- adds r4, r7, r0
- ldr r1, _080F6314 @ =gPokemonStorage + 0x4
- mov r8, r1
- ldr r0, _080F6318 @ =0x000041a0
- add r0, r8
- mov r9, r0
-_080F629A:
- ldrb r0, [r5]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldrb r2, [r4]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- add r1, r8
- adds r0, r1
- movs r1, 0x51
- bl GetBoxMonData
- cmp r0, 0
- bne _080F636C
- ldrb r0, [r5]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldrb r2, [r4]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- add r1, r9
- adds r0, r1
- movs r1, 0x51
- bl GetBoxMonData
- adds r1, r0, 0
- cmp r1, 0
- bne _080F636C
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r2, 0xFF
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1D
- bls _080F62FE
- strb r1, [r4]
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ands r0, r2
- cmp r0, 0x6
- bhi _080F637C
-_080F62FE:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x9
- bls _080F629A
- b _080F637C
- .align 2, 0
-_080F630C: .4byte 0x00008fe6
-_080F6310: .4byte 0x00008fe7
-_080F6314: .4byte gPokemonStorage + 0x4
-_080F6318: .4byte 0x000041a0
-_080F631C:
- movs r0, 0
- strb r0, [r3]
- movs r6, 0
- b _080F632A
-_080F6324:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080F632A:
- cmp r6, 0x5
- bhi _080F634C
- movs r0, 0x64
- muls r0, r6
- ldr r1, _080F635C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x51
- bl GetMonData
- cmp r0, 0
- beq _080F6324
- ldr r0, _080F6360 @ =gPokenavStructPtr
- ldr r0, [r0]
- ldr r1, _080F6364 @ =0x00008fe8
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
-_080F634C:
- ldr r0, _080F6360 @ =gPokenavStructPtr
- ldr r1, [r0]
- ldr r0, _080F6368 @ =0x00008fe6
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- b _080F6372
- .align 2, 0
-_080F635C: .4byte gPlayerParty
-_080F6360: .4byte gPokenavStructPtr
-_080F6364: .4byte 0x00008fe8
-_080F6368: .4byte 0x00008fe6
-_080F636C:
- ldr r0, _080F6378 @ =0x00008fe8
- adds r1, r7, r0
- movs r0, 0x1
-_080F6372:
- strb r0, [r1]
- b _080F626C
- .align 2, 0
-_080F6378: .4byte 0x00008fe8
-_080F637C:
- movs r0, 0x1
-_080F637E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F6250
-
thumb_func_start sub_80F638C
sub_80F638C: @ 80F638C
push {r4,lr}
diff --git a/src/pokenav.c b/src/pokenav.c
index 0992cef90..e074b83e8 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -5862,3 +5862,53 @@ void sub_80F6208(void)
;
}
}
+
+bool8 sub_80F6250(void)
+{
+ u16 i;
+
+ if (gPokenavStructPtr->unk8FE8 != -1)
+ return FALSE;
+
+ switch (gPokenavStructPtr->unk8FE6)
+ {
+ default:
+ for (i = 0; i < 10; i++)
+ {
+ if (GetBoxMonData(&gPokemonStorage.boxes[gPokenavStructPtr->unk8FE6 + 0][gPokenavStructPtr->unk8FE7], MON_DATA_RIBBON_COUNT) != 0)
+ {
+ gPokenavStructPtr->unk8FE8 = 1;
+ return FALSE;
+ }
+ if (GetBoxMonData(&gPokemonStorage.boxes[gPokenavStructPtr->unk8FE6 + 7][gPokenavStructPtr->unk8FE7], MON_DATA_RIBBON_COUNT) != 0)
+ {
+ gPokenavStructPtr->unk8FE8 = 1;
+ return FALSE;
+ }
+ if (++gPokenavStructPtr->unk8FE7 >= 30)
+ {
+ gPokenavStructPtr->unk8FE7 = 0;
+ if (++gPokenavStructPtr->unk8FE6 >= 7)
+ {
+ break;
+ }
+ }
+ }
+ break;
+ case 8:
+ return FALSE;
+ case 7:
+ gPokenavStructPtr->unk8FE8 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_RIBBON_COUNT) != 0)
+ {
+ gPokenavStructPtr->unk8FE8 = 1;
+ break;
+ }
+ }
+ gPokenavStructPtr->unk8FE6++;
+ return FALSE;
+ }
+ return TRUE;
+}