summaryrefslogtreecommitdiff
path: root/src/pokenav.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pokenav.c')
-rw-r--r--src/pokenav.c130
1 files changed, 13 insertions, 117 deletions
diff --git a/src/pokenav.c b/src/pokenav.c
index 82b9a0f01..c0ac3356f 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -4648,135 +4648,31 @@ void sub_80F492C(void)
gPokenavStructPtr->unk8FE4 = 0;
}
-#ifdef NONMATCHING
-// registers r3/r4 are swapped
-void sub_80F4944(struct UnkUsePokeblockSub *arg0)
+void sub_80F4944(struct UnkUsePokeblockSub *arg0) // This looks like a sorting algorithm. Proposal: Make local variables min, max, and currPos
{
- u16 i;
- u16 r3;
- u16 r4;
+ u16 min, max, currPos;
- i = 0;
- r4 = gPokenavStructPtr->unk8FE4;
- r3 = r4 / 2;
- while (r3 != r4)
+ min = 0;
+ max = gPokenavStructPtr->unk8FE4;
+ currPos = min + (max - min)/ 2;
+ while (max != currPos)
{
- if (arg0->unk0 > gPokenavStructPtr->unk893c[r3].unk0)
- r4 = r3;
+ if (arg0->unk0 > gPokenavStructPtr->unk893c[currPos].unk0)
+ max = currPos;
else
- i = r3 + 1;
+ min = currPos + 1;
- r3 = ((r4 - i) / 2) + i;
+ currPos = min + (max - min) / 2;
}
- r4 = gPokenavStructPtr->unk8FE4;
- while (r4 > r3)
+ for ( max = gPokenavStructPtr->unk8FE4; max > currPos; max--)
{
- gPokenavStructPtr->unk893c[r4] = gPokenavStructPtr->unk893c[r4 - 1];
- r4--;
+ gPokenavStructPtr->unk893c[max] = gPokenavStructPtr->unk893c[max - 1];
}
- gPokenavStructPtr->unk893c[r3] = *arg0;
+ gPokenavStructPtr->unk893c[currPos] = *arg0;
gPokenavStructPtr->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 @ =gPokenavStructPtr\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 gPokenavStructPtr\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)
{