summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-05 21:23:33 -0400
committerhuderlem <huderlem@gmail.com>2019-04-06 08:16:13 -0500
commita7db157bb39232397c8abaf0b7d9586b73bcd58d (patch)
treee9d2fa5d088d9bcce1b4995fa9451f7e65096495
parentfc14f378b24ecb8e16fe222e1059af767be25693 (diff)
Finish pokenav.s
-rw-r--r--asm/pokenav.s419
-rw-r--r--include/pokenav.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/pokenav.c334
4 files changed, 335 insertions, 421 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s
deleted file mode 100644
index c1cc37229..000000000
--- a/asm/pokenav.s
+++ /dev/null
@@ -1,419 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F68E8
-sub_80F68E8: @ 80F68E8
- push {r4-r7,lr}
- ldr r3, _080F6918 @ =gPokenavStructPtr
- ldr r0, [r3]
- ldr r2, _080F691C @ =0x0000bc90
- adds r1, r0, r2
- ldrb r5, [r1]
- ldr r6, _080F6920 @ =0x0000bc91
- adds r0, r6
- ldrb r4, [r0]
- movs r0, 0x1
- mov r12, r0
- ldr r2, _080F6924 @ =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- adds r6, r3, 0
- adds r7, r2, 0
- cmp r0, 0
- beq _080F692E
- lsls r0, r4, 24
- cmp r0, 0
- ble _080F692E
- b _080F69BC
- .align 2, 0
-_080F6918: .4byte gPokenavStructPtr
-_080F691C: .4byte 0x0000bc90
-_080F6920: .4byte 0x0000bc91
-_080F6924: .4byte gMain
-_080F6928:
- ldr r1, _080F69B0 @ =0x0000bc91
- adds r0, r2, r1
- ldrb r4, [r0]
-_080F692E:
- ldrh r1, [r7, 0x30]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080F6978
- lsls r0, r4, 24
- asrs r0, 24
- cmp r0, 0x2
- bgt _080F6978
- ldr r3, _080F69B4 @ =gPokenavStructPtr
- ldr r2, _080F69B8 @ =0x0000bc96
-_080F6944:
- lsls r0, r4, 24
- asrs r0, 24
- cmp r0, 0x2
- bgt _080F6960
- adds r0, 0x1
- lsls r0, 24
- ldr r1, [r3]
- lsrs r4, r0, 24
- asrs r0, 24
- adds r1, r2
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080F6944
-_080F6960:
- ldr r2, [r6]
- lsls r0, r4, 24
- asrs r0, 24
- ldr r3, _080F69B8 @ =0x0000bc96
- adds r1, r2, r3
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- bne _080F69EC
- ldr r1, _080F69B0 @ =0x0000bc91
- adds r0, r2, r1
- ldrb r4, [r0]
-_080F6978:
- ldrh r2, [r7, 0x30]
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- beq _080F698A
- lsls r0, r5, 24
- asrs r0, 24
- cmp r0, 0
- bgt _080F6A3C
-_080F698A:
- movs r0, 0x10
- ands r0, r2
- cmp r0, 0
- beq _080F69AA
- lsls r0, r5, 24
- asrs r2, r0, 24
- ldr r1, [r6]
- lsls r0, r4, 24
- asrs r0, 24
- ldr r3, _080F69B8 @ =0x0000bc96
- adds r1, r3
- adds r1, r0
- ldrb r0, [r1]
- subs r0, 0x1
- cmp r2, r0
- blt _080F6A38
-_080F69AA:
- movs r0, 0
- mov r12, r0
- b _080F69FC
- .align 2, 0
-_080F69B0: .4byte 0x0000bc91
-_080F69B4: .4byte gPokenavStructPtr
-_080F69B8: .4byte 0x0000bc96
-_080F69BC:
- lsls r0, r4, 24
- asrs r0, 24
- cmp r0, 0
- ble _080F69DA
- subs r0, 0x1
- lsls r0, 24
- ldr r1, [r6]
- lsrs r4, r0, 24
- asrs r0, 24
- ldr r2, _080F6A2C @ =0x0000bc96
- adds r1, r2
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080F69BC
-_080F69DA:
- ldr r2, [r6]
- lsls r0, r4, 24
- asrs r0, 24
- ldr r3, _080F6A2C @ =0x0000bc96
- adds r1, r2, r3
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080F6928
-_080F69EC:
- lsls r0, r5, 24
- asrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- blt _080F69FC
- subs r0, r1, 0x1
-_080F69F8:
- lsls r0, 24
- lsrs r5, r0, 24
-_080F69FC:
- mov r0, r12
- cmp r0, 0
- beq _080F6A44
- lsls r0, r5, 24
- asrs r0, 24
- ldr r3, [r6]
- ldr r1, _080F6A30 @ =0x0000bc90
- adds r2, r3, r1
- ldrb r6, [r2]
- cmp r0, r6
- bne _080F6A20
- lsls r0, r4, 24
- asrs r0, 24
- ldr r6, _080F6A34 @ =0x0000bc91
- adds r1, r3, r6
- ldrb r1, [r1]
- cmp r0, r1
- beq _080F6A40
-_080F6A20:
- strb r5, [r2]
- ldr r1, _080F6A34 @ =0x0000bc91
- adds r0, r3, r1
- strb r4, [r0]
- b _080F6A44
- .align 2, 0
-_080F6A2C: .4byte 0x0000bc96
-_080F6A30: .4byte 0x0000bc90
-_080F6A34: .4byte 0x0000bc91
-_080F6A38:
- adds r0, r2, 0x1
- b _080F69F8
-_080F6A3C:
- subs r0, 0x1
- b _080F69F8
-_080F6A40:
- movs r2, 0
- mov r12, r2
-_080F6A44:
- mov r0, r12
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F68E8
-
- thumb_func_start sub_80F6A4C
-sub_80F6A4C: @ 80F6A4C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r0, _080F6AC4 @ =gPokenavStructPtr
- ldr r3, [r0]
- ldr r0, _080F6AC8 @ =0x0000876e
- adds r2, r3, r0
- lsls r0, r4, 24
- asrs r0, 24
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- lsls r0, 16
- cmp r0, 0
- bge _080F6A74
- ldr r5, _080F6ACC @ =0x00008774
- adds r0, r3, r5
- ldrh r0, [r0]
- strh r0, [r2]
-_080F6A74:
- ldr r1, _080F6ACC @ =0x00008774
- adds r0, r3, r1
- movs r5, 0
- ldrsh r1, [r2, r5]
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r1, r0
- ble _080F6A88
- movs r0, 0
- strh r0, [r2]
-_080F6A88:
- ldr r1, _080F6AD0 @ =0x0000bc94
- adds r0, r3, r1
- strb r4, [r0]
- ldrh r1, [r2]
- ldr r2, _080F6AD4 @ =0x000087dc
- adds r0, r3, r2
- strh r1, [r0]
- ldr r1, _080F6AD8 @ =REG_WININ
- ldr r5, _080F6ADC @ =0x00003f37
- adds r0, r5, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _080F6AE0 @ =0x00003f3f
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- ldr r5, _080F6AE4 @ =0x000058f0
- adds r0, r5, 0
- strh r0, [r1]
- adds r1, 0x4
- ldr r2, _080F6AE8 @ =0x00002060
- adds r0, r2, 0
- strh r0, [r1]
- ldr r5, _080F6AEC @ =0x000087de
- adds r1, r3, r5
- movs r0, 0
- strb r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F6AC4: .4byte gPokenavStructPtr
-_080F6AC8: .4byte 0x0000876e
-_080F6ACC: .4byte 0x00008774
-_080F6AD0: .4byte 0x0000bc94
-_080F6AD4: .4byte 0x000087dc
-_080F6AD8: .4byte REG_WININ
-_080F6ADC: .4byte 0x00003f37
-_080F6AE0: .4byte 0x00003f3f
-_080F6AE4: .4byte 0x000058f0
-_080F6AE8: .4byte 0x00002060
-_080F6AEC: .4byte 0x000087de
- thumb_func_end sub_80F6A4C
-
- thumb_func_start sub_80F6AF0
-sub_80F6AF0: @ 80F6AF0
- push {r4,lr}
- ldr r1, _080F6B10 @ =gPokenavStructPtr
- ldr r0, [r1]
- ldr r2, _080F6B14 @ =0x000087de
- adds r0, r2
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x6
- bls _080F6B04
- b _080F6C08
-_080F6B04:
- lsls r0, 2
- ldr r1, _080F6B18 @ =_080F6B1C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F6B10: .4byte gPokenavStructPtr
-_080F6B14: .4byte 0x000087de
-_080F6B18: .4byte _080F6B1C
- .align 2, 0
-_080F6B1C:
- .4byte _080F6B38
- .4byte _080F6B54
- .4byte _080F6B6E
- .4byte _080F6B84
- .4byte _080F6B9C
- .4byte _080F6BC0
- .4byte _080F6BE0
-_080F6B38:
- bl sub_80F173C
- lsls r0, 24
- cmp r0, 0
- bne _080F6C18
- ldr r0, _080F6B4C @ =gPokenavStructPtr
- ldr r1, [r0]
- ldr r3, _080F6B50 @ =0x000087de
- adds r1, r3
- b _080F6BCE
- .align 2, 0
-_080F6B4C: .4byte gPokenavStructPtr
-_080F6B50: .4byte 0x000087de
-_080F6B54:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 6
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- bl sub_80F1480
- bl sub_80F66E0
- b _080F6BC6
-_080F6B6E:
- bl DrawMonRibbonIcons
- ldr r0, _080F6B7C @ =gPokenavStructPtr
- ldr r1, [r0]
- ldr r2, _080F6B80 @ =0x000087de
- adds r1, r2
- b _080F6BCE
- .align 2, 0
-_080F6B7C: .4byte gPokenavStructPtr
-_080F6B80: .4byte 0x000087de
-_080F6B84:
- bl sub_80F13FC
- ldr r0, _080F6B94 @ =gPokenavStructPtr
- ldr r1, [r0]
- ldr r3, _080F6B98 @ =0x000087de
- adds r1, r3
- b _080F6BCE
- .align 2, 0
-_080F6B94: .4byte gPokenavStructPtr
-_080F6B98: .4byte 0x000087de
-_080F6B9C:
- ldr r4, [r4]
- ldr r1, _080F6BB8 @ =0x0000876e
- adds r0, r4, r1
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0
- bl sub_80F4824
- ldr r3, _080F6BBC @ =0x000087de
- adds r4, r3
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _080F6C18
- .align 2, 0
-_080F6BB8: .4byte 0x0000876e
-_080F6BBC: .4byte 0x000087de
-_080F6BC0:
- movs r0, 0
- bl sub_80F2E18
-_080F6BC6:
- ldr r0, _080F6BD8 @ =gPokenavStructPtr
- ldr r1, [r0]
- ldr r0, _080F6BDC @ =0x000087de
- adds r1, r0
-_080F6BCE:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080F6C18
- .align 2, 0
-_080F6BD8: .4byte gPokenavStructPtr
-_080F6BDC: .4byte 0x000087de
-_080F6BE0:
- bl sub_80F170C
- lsls r0, 24
- cmp r0, 0
- bne _080F6C18
- bl sub_80F1438
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _080F6C0C @ =0x0000dfff
- ands r0, r1
- strh r0, [r2]
- ldr r0, _080F6C10 @ =gPokenavStructPtr
- ldr r1, [r0]
- ldr r2, _080F6C14 @ =0x000087de
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080F6C08:
- movs r0, 0
- b _080F6C1A
- .align 2, 0
-_080F6C0C: .4byte 0x0000dfff
-_080F6C10: .4byte gPokenavStructPtr
-_080F6C14: .4byte 0x000087de
-_080F6C18:
- movs r0, 0x1
-_080F6C1A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F6AF0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/pokenav.h b/include/pokenav.h
index 49ca7cb7a..654911593 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -434,7 +434,7 @@ bool8 sub_80F70FC();
void sub_80F708C(s8);
void sub_80F6F10();
void sub_80F15A8(void);
-void sub_80F6A4C();
+void sub_80F6A4C(s8);
bool8 sub_80F6AF0();
u8 sub_80F68E8();
void sub_80F66E0();
diff --git a/ld_script.txt b/ld_script.txt
index 01a273d26..9bed253db 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -296,7 +296,6 @@ SECTIONS {
src/easy_chat_2.o(.text);
src/pokenav_before.o(.text);
src/pokenav.o(.text);
- asm/pokenav.o(.text);
src/trainers_eye.o(.text);
src/mon_markings.o(.text);
src/mauville_man.o(.text);
diff --git a/src/pokenav.c b/src/pokenav.c
index 229e0a948..4f8aba7a0 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -6146,3 +6146,337 @@ 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)
+ {
+ while (r4 > 0)
+ {
+ r4--;
+ if (gPokenavStructPtr->unkBC96[r4] != 0)
+ {
+ break;
+ }
+ }
+ if (gPokenavStructPtr->unkBC96[r4] != 0)
+ {
+ goto check_r5;
+ }
+ r4 = gPokenavStructPtr->unkBC91;
+ }
+ if (({gMain.newAndRepeatedKeys & DPAD_DOWN;}) && r4 < 3)
+ {
+ while (r4 < 3)
+ {
+ r4++;
+ if (gPokenavStructPtr->unkBC96[r4] != 0)
+ {
+ break;
+ }
+ }
+ if (gPokenavStructPtr->unkBC96[r4] != 0)
+ {
+ goto check_r5;
+ }
+ 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:
+ if (r12)
+ {
+ if (r5 != gPokenavStructPtr->unkBC90 || r4 != gPokenavStructPtr->unkBC91)
+ {
+ gPokenavStructPtr->unkBC90 = r5;
+ gPokenavStructPtr->unkBC91 = r4;
+ }
+ else
+ {
+ r12 = 0;
+ }
+ }
+ 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)
+{
+ gPokenavStructPtr->unk876E += a0;
+ if (gPokenavStructPtr->unk876E < 0)
+ {
+ gPokenavStructPtr->unk876E = gPokenavStructPtr->unk8774;
+ }
+ if (gPokenavStructPtr->unk876E > gPokenavStructPtr->unk8774)
+ {
+ gPokenavStructPtr->unk876E = 0;
+ }
+ gPokenavStructPtr->unkBC94 = a0;
+ gPokenavStructPtr->unk87DC = gPokenavStructPtr->unk876E;
+ REG_WININ = 0x3F37;
+ REG_WINOUT = 0x3F3F;
+ REG_WIN0H = 0x58F0;
+ REG_WIN0V = 0x2060;
+ gPokenavStructPtr->unk87DE = 0;
+}
+
+bool8 sub_80F6AF0(void)
+{
+ switch (gPokenavStructPtr->unk87DE)
+ {
+ case 0:
+ if (!sub_80F173C())
+ {
+ gPokenavStructPtr->unk87DE++;
+ }
+ break;
+ case 1:
+ REG_DISPCNT |= DISPCNT_WIN0_ON;
+ sub_80F1480();
+ sub_80F66E0();
+ gPokenavStructPtr->unk87DE++;
+ break;
+ case 2:
+ DrawMonRibbonIcons();
+ gPokenavStructPtr->unk87DE++;
+ break;
+ case 3:
+ sub_80F13FC();
+ gPokenavStructPtr->unk87DE++;
+ break;
+ case 4:
+ sub_80F4824(gPokenavStructPtr->unk876E, 0);
+ gPokenavStructPtr->unk87DE++;
+ break;
+ case 5:
+ sub_80F2E18(0);
+ gPokenavStructPtr->unk87DE++;
+ break;
+ case 6:
+ if (!sub_80F170C())
+ {
+ sub_80F1438();
+ REG_DISPCNT &= ~DISPCNT_WIN0_ON;
+ gPokenavStructPtr->unk87DE++;
+ return FALSE;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}