summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pokenav.c274
1 files changed, 44 insertions, 230 deletions
diff --git a/src/pokenav.c b/src/pokenav.c
index fa057f480..84f040c27 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -4952,65 +4952,71 @@ void sub_80F66E0(void)
gPokenavStructPtr->unkBC96[i] = gPokenavStructPtr->unkBC8F;
}
-// FIXME: wtf is this control flow
-#ifdef NONMATCHING
u8 sub_80F68E8(void)
{
s8 r5 = gPokenavStructPtr->unkBC90;
s8 r4 = gPokenavStructPtr->unkBC91;
- u8 r12 = 1;
- if (({gMain.newAndRepeatedKeys & DPAD_UP;}) && r4 > 0)
+ s8 r12 = 1;
+ do
{
- while (r4 > 0)
+ if (({gMain.newAndRepeatedKeys & DPAD_UP;}) && r4 > 0)
{
- r4--;
+ while (r4 > 0)
+ {
+ r4--;
+ if (gPokenavStructPtr->unkBC96[r4] != 0)
+ {
+ break;
+ }
+ }
if (gPokenavStructPtr->unkBC96[r4] != 0)
{
+ if (r5 >= gPokenavStructPtr->unkBC96[r4])
+ {
+ r5 = gPokenavStructPtr->unkBC96[r4] - 1;
+ }
break;
}
+ r4 = gPokenavStructPtr->unkBC91;
}
- if (gPokenavStructPtr->unkBC96[r4] != 0)
+ if (({gMain.newAndRepeatedKeys & DPAD_DOWN;}) && r4 < 3)
{
- goto check_r5;
+ while (r4 < 3)
+ {
+ r4++;
+ if (gPokenavStructPtr->unkBC96[r4] != 0)
+ {
+ break;
+ }
+ }
+ if (gPokenavStructPtr->unkBC96[r4] != 0)
+ {
+ if (r5 >= gPokenavStructPtr->unkBC96[r4])
+ {
+ r5 = gPokenavStructPtr->unkBC96[r4] - 1;
+ }
+ break;
+ }
+ r4 = gPokenavStructPtr->unkBC91;
}
- r4 = gPokenavStructPtr->unkBC91;
- }
- if (({gMain.newAndRepeatedKeys & DPAD_DOWN;}) && r4 < 3)
- {
- while (r4 < 3)
+ if (({gMain.newAndRepeatedKeys & DPAD_LEFT;}))
{
- r4++;
- if (gPokenavStructPtr->unkBC96[r4] != 0)
+ if (r5 > 0)
{
+ r5--;
break;
}
}
- if (gPokenavStructPtr->unkBC96[r4] != 0)
+ if (({gMain.newAndRepeatedKeys & DPAD_RIGHT;}))
{
- goto check_r5;
+ if (r5 < gPokenavStructPtr->unkBC96[r4] - 1)
+ {
+ r5++;
+ break;
+ }
}
- r4 = gPokenavStructPtr->unkBC91;
- }
- if (({gMain.newAndRepeatedKeys & DPAD_LEFT;}) && r5 > 0)
- {
- r5--;
- }
- else if (({gMain.newAndRepeatedKeys & DPAD_RIGHT;}) && r5 < gPokenavStructPtr->unkBC96[r4] - 1)
- {
- r5++;
- }
- else
- {
r12 = 0;
- }
- goto end;
-
- check_r5:
- if (r5 >= gPokenavStructPtr->unkBC96[r4])
- {
- r5--;
- }
- end:
+ } while (0);
if (r12)
{
if (r5 != gPokenavStructPtr->unkBC90 || r4 != gPokenavStructPtr->unkBC91)
@@ -5025,198 +5031,6 @@ u8 sub_80F68E8(void)
}
return r12;
}
-#else
-NAKED
-bool8 sub_80F68E8(void)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tldr r3, _080F6918 @ =gPokenavStructPtr\n"
- "\tldr r0, [r3]\n"
- "\tldr r2, _080F691C @ =0x0000bc90\n"
- "\tadds r1, r0, r2\n"
- "\tldrb r5, [r1]\n"
- "\tldr r6, _080F6920 @ =0x0000bc91\n"
- "\tadds r0, r6\n"
- "\tldrb r4, [r0]\n"
- "\tmovs r0, 0x1\n"
- "\tmov r12, r0\n"
- "\tldr r2, _080F6924 @ =gMain\n"
- "\tldrh r1, [r2, 0x30]\n"
- "\tmovs r0, 0x40\n"
- "\tands r0, r1\n"
- "\tadds r6, r3, 0\n"
- "\tadds r7, r2, 0\n"
- "\tcmp r0, 0\n"
- "\tbeq _080F692E\n"
- "\tlsls r0, r4, 24\n"
- "\tcmp r0, 0\n"
- "\tble _080F692E\n"
- "\tb _080F69BC\n"
- "\t.align 2, 0\n"
- "_080F6918: .4byte gPokenavStructPtr\n"
- "_080F691C: .4byte 0x0000bc90\n"
- "_080F6920: .4byte 0x0000bc91\n"
- "_080F6924: .4byte gMain\n"
- "_080F6928:\n"
- "\tldr r1, _080F69B0 @ =0x0000bc91\n"
- "\tadds r0, r2, r1\n"
- "\tldrb r4, [r0]\n"
- "_080F692E:\n"
- "\tldrh r1, [r7, 0x30]\n"
- "\tmovs r0, 0x80\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbeq _080F6978\n"
- "\tlsls r0, r4, 24\n"
- "\tasrs r0, 24\n"
- "\tcmp r0, 0x2\n"
- "\tbgt _080F6978\n"
- "\tldr r3, _080F69B4 @ =gPokenavStructPtr\n"
- "\tldr r2, _080F69B8 @ =0x0000bc96\n"
- "_080F6944:\n"
- "\tlsls r0, r4, 24\n"
- "\tasrs r0, 24\n"
- "\tcmp r0, 0x2\n"
- "\tbgt _080F6960\n"
- "\tadds r0, 0x1\n"
- "\tlsls r0, 24\n"
- "\tldr r1, [r3]\n"
- "\tlsrs r4, r0, 24\n"
- "\tasrs r0, 24\n"
- "\tadds r1, r2\n"
- "\tadds r1, r0\n"
- "\tldrb r0, [r1]\n"
- "\tcmp r0, 0\n"
- "\tbeq _080F6944\n"
- "_080F6960:\n"
- "\tldr r2, [r6]\n"
- "\tlsls r0, r4, 24\n"
- "\tasrs r0, 24\n"
- "\tldr r3, _080F69B8 @ =0x0000bc96\n"
- "\tadds r1, r2, r3\n"
- "\tadds r1, r0\n"
- "\tldrb r0, [r1]\n"
- "\tcmp r0, 0\n"
- "\tbne _080F69EC\n"
- "\tldr r1, _080F69B0 @ =0x0000bc91\n"
- "\tadds r0, r2, r1\n"
- "\tldrb r4, [r0]\n"
- "_080F6978:\n"
- "\tldrh r2, [r7, 0x30]\n"
- "\tmovs r0, 0x20\n"
- "\tands r0, r2\n"
- "\tcmp r0, 0\n"
- "\tbeq _080F698A\n"
- "\tlsls r0, r5, 24\n"
- "\tasrs r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbgt _080F6A3C\n"
- "_080F698A:\n"
- "\tmovs r0, 0x10\n"
- "\tands r0, r2\n"
- "\tcmp r0, 0\n"
- "\tbeq _080F69AA\n"
- "\tlsls r0, r5, 24\n"
- "\tasrs r2, r0, 24\n"
- "\tldr r1, [r6]\n"
- "\tlsls r0, r4, 24\n"
- "\tasrs r0, 24\n"
- "\tldr r3, _080F69B8 @ =0x0000bc96\n"
- "\tadds r1, r3\n"
- "\tadds r1, r0\n"
- "\tldrb r0, [r1]\n"
- "\tsubs r0, 0x1\n"
- "\tcmp r2, r0\n"
- "\tblt _080F6A38\n"
- "_080F69AA:\n"
- "\tmovs r0, 0\n"
- "\tmov r12, r0\n"
- "\tb _080F69FC\n"
- "\t.align 2, 0\n"
- "_080F69B0: .4byte 0x0000bc91\n"
- "_080F69B4: .4byte gPokenavStructPtr\n"
- "_080F69B8: .4byte 0x0000bc96\n"
- "_080F69BC:\n"
- "\tlsls r0, r4, 24\n"
- "\tasrs r0, 24\n"
- "\tcmp r0, 0\n"
- "\tble _080F69DA\n"
- "\tsubs r0, 0x1\n"
- "\tlsls r0, 24\n"
- "\tldr r1, [r6]\n"
- "\tlsrs r4, r0, 24\n"
- "\tasrs r0, 24\n"
- "\tldr r2, _080F6A2C @ =0x0000bc96\n"
- "\tadds r1, r2\n"
- "\tadds r1, r0\n"
- "\tldrb r0, [r1]\n"
- "\tcmp r0, 0\n"
- "\tbeq _080F69BC\n"
- "_080F69DA:\n"
- "\tldr r2, [r6]\n"
- "\tlsls r0, r4, 24\n"
- "\tasrs r0, 24\n"
- "\tldr r3, _080F6A2C @ =0x0000bc96\n"
- "\tadds r1, r2, r3\n"
- "\tadds r1, r0\n"
- "\tldrb r0, [r1]\n"
- "\tcmp r0, 0\n"
- "\tbeq _080F6928\n"
- "_080F69EC:\n"
- "\tlsls r0, r5, 24\n"
- "\tasrs r0, 24\n"
- "\tldrb r1, [r1]\n"
- "\tcmp r0, r1\n"
- "\tblt _080F69FC\n"
- "\tsubs r0, r1, 0x1\n"
- "_080F69F8:\n"
- "\tlsls r0, 24\n"
- "\tlsrs r5, r0, 24\n"
- "_080F69FC:\n"
- "\tmov r0, r12\n"
- "\tcmp r0, 0\n"
- "\tbeq _080F6A44\n"
- "\tlsls r0, r5, 24\n"
- "\tasrs r0, 24\n"
- "\tldr r3, [r6]\n"
- "\tldr r1, _080F6A30 @ =0x0000bc90\n"
- "\tadds r2, r3, r1\n"
- "\tldrb r6, [r2]\n"
- "\tcmp r0, r6\n"
- "\tbne _080F6A20\n"
- "\tlsls r0, r4, 24\n"
- "\tasrs r0, 24\n"
- "\tldr r6, _080F6A34 @ =0x0000bc91\n"
- "\tadds r1, r3, r6\n"
- "\tldrb r1, [r1]\n"
- "\tcmp r0, r1\n"
- "\tbeq _080F6A40\n"
- "_080F6A20:\n"
- "\tstrb r5, [r2]\n"
- "\tldr r1, _080F6A34 @ =0x0000bc91\n"
- "\tadds r0, r3, r1\n"
- "\tstrb r4, [r0]\n"
- "\tb _080F6A44\n"
- "\t.align 2, 0\n"
- "_080F6A2C: .4byte 0x0000bc96\n"
- "_080F6A30: .4byte 0x0000bc90\n"
- "_080F6A34: .4byte 0x0000bc91\n"
- "_080F6A38:\n"
- "\tadds r0, r2, 0x1\n"
- "\tb _080F69F8\n"
- "_080F6A3C:\n"
- "\tsubs r0, 0x1\n"
- "\tb _080F69F8\n"
- "_080F6A40:\n"
- "\tmovs r2, 0\n"
- "\tmov r12, r2\n"
- "_080F6A44:\n"
- "\tmov r0, r12\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1");
-}
-#endif //NONMATCHING
void sub_80F6A4C(s8 a0)
{