summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-05 16:12:48 -0400
committerhuderlem <huderlem@gmail.com>2019-04-06 08:16:13 -0500
commit5ad5b69050697a1acf2a9ab668475ae775014e00 (patch)
tree4628392b8abfc09b4c81df0452ce4904f13d88f3 /src
parent9b78b1d88e2fea38fec4e12e7bfabd8b8dfd9904 (diff)
Major refactor to remove pokenav ewram macros
Diffstat (limited to 'src')
-rw-r--r--src/menu_specialized.c611
-rw-r--r--src/pokenav.c5811
-rw-r--r--src/pokenav_before.c6190
-rw-r--r--src/trainers_eye.c1
4 files changed, 6246 insertions, 6367 deletions
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
deleted file mode 100644
index d92648ff0..000000000
--- a/src/menu_specialized.c
+++ /dev/null
@@ -1,611 +0,0 @@
-#include "global.h"
-#include "scanline_effect.h"
-#include "pokenav.h"
-
-u8 sub_80F5E20(void);
-u8 sub_80F5EE4(void);
-u8 sub_80F5FB4(void);
-u8 sub_80F6010(void);
-
-/* TODO
-// emerald: sub_81D2278
-void sub_80F5688(u16 * r6, u16 * r5, u16 * sp0, u8 r9, u16 * r7)
-{
- u16 sp04;
- u16 r0;
- u16 r4;
- u16 r10;
- if (r5[1] < sp0[1])
- {
- sp04 = r5[1];
- r4 = r5[0] << 10;
- r0 = sp0[1];
- r10 = sp0[0];
- }
-}
-*/
-
-NAKED
-void sub_80F5688(u16 r6[66][2], struct UnkPokenav11 * r5, struct UnkPokenav11 * sp0, u8 r9, u16 r7[66][2])
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tsub sp, 0x14\n"
- "\tadds r6, r0, 0\n"
- "\tadds r5, r1, 0\n"
- "\tstr r2, [sp]\n"
- "\tldr r7, [sp, 0x34]\n"
- "\tlsls r3, 24\n"
- "\tlsrs r3, 24\n"
- "\tmov r9, r3\n"
- "\tmovs r0, 0\n"
- "\tstr r0, [sp, 0x8]\n"
- "\tldrh r0, [r5, 0x2]\n"
- "\tldrh r1, [r2, 0x2]\n"
- "\tcmp r0, r1\n"
- "\tbcs _080F56D0\n"
- "\tadds r2, r0, 0\n"
- "\tstr r2, [sp, 0x4]\n"
- "\tldr r3, [sp]\n"
- "\tldrh r0, [r3, 0x2]\n"
- "\tldrh r1, [r5]\n"
- "\tlsls r4, r1, 10\n"
- "\tldrh r2, [r3]\n"
- "\tmov r10, r2\n"
- "\tldr r3, [sp, 0x4]\n"
- "\tsubs r0, r3\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tmov r8, r0\n"
- "\tcmp r0, 0\n"
- "\tbeq _080F56FC\n"
- "\tsubs r0, r2, r1\n"
- "\tb _080F56F2\n"
- "_080F56D0:\n"
- "\tldrh r0, [r5, 0x2]\n"
- "\tldr r1, [sp]\n"
- "\tldrh r1, [r1, 0x2]\n"
- "\tstr r1, [sp, 0x4]\n"
- "\tldr r2, [sp]\n"
- "\tldrh r1, [r2]\n"
- "\tlsls r4, r1, 10\n"
- "\tldrh r3, [r5]\n"
- "\tmov r10, r3\n"
- "\tldr r2, [sp, 0x4]\n"
- "\tsubs r0, r2\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tmov r8, r0\n"
- "\tcmp r0, 0\n"
- "\tbeq _080F56FC\n"
- "\tsubs r0, r3, r1\n"
- "_080F56F2:\n"
- "\tlsls r0, 10\n"
- "\tmov r1, r8\n"
- "\tbl __divsi3\n"
- "\tstr r0, [sp, 0x8]\n"
- "_080F56FC:\n"
- "\tmov r0, r8\n"
- "\tadds r0, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tmov r8, r0\n"
- "\tcmp r7, 0\n"
- "\tbne _080F5746\n"
- "\tldr r0, [sp, 0x4]\n"
- "\tsubs r0, 0x38\n"
- "\tlsls r0, 2\n"
- "\tadds r6, r0\n"
- "\tmovs r5, 0\n"
- "\tmov r3, r9\n"
- "\tlsls r3, 1\n"
- "\tmov r12, r3\n"
- "\tmov r0, r10\n"
- "\tadd r0, r9\n"
- "\tstr r0, [sp, 0xC]\n"
- "\tcmp r7, r8\n"
- "\tbcs _080F57D4\n"
- "\tmovs r7, 0x1\n"
- "_080F5726:\n"
- "\tadds r2, r3, r6\n"
- "\tasrs r1, r4, 10\n"
- "\tasrs r0, r4, 9\n"
- "\tands r0, r7\n"
- "\tadds r1, r0\n"
- "\tadd r1, r9\n"
- "\tstrh r1, [r2]\n"
- "\tldr r1, [sp, 0x8]\n"
- "\tadds r4, r1\n"
- "\tadds r6, 0x4\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tcmp r5, r8\n"
- "\tbcc _080F5726\n"
- "\tb _080F57D4\n"
- "_080F5746:\n"
- "\tldr r2, [sp, 0x8]\n"
- "\tcmp r2, 0\n"
- "\tble _080F57E4\n"
- "\tldr r0, [sp, 0x4]\n"
- "\tsubs r0, 0x38\n"
- "\tlsls r0, 2\n"
- "\tadds r7, r0\n"
- "\tmovs r5, 0\n"
- "\tmov r3, r9\n"
- "\tlsls r3, 1\n"
- "\tmov r12, r3\n"
- "\tmov r0, r10\n"
- "\tadd r0, r9\n"
- "\tstr r0, [sp, 0xC]\n"
- "\tcmp r5, r8\n"
- "\tbcs _080F5798\n"
- "\tldr r0, _080F57D8 @ =0x00026bff\n"
- "\tcmp r4, r0\n"
- "\tbgt _080F5798\n"
- "\tmov r1, r12\n"
- "\tstr r1, [sp, 0x10]\n"
- "\tmov r10, r0\n"
- "_080F5772:\n"
- "\tldr r3, [sp, 0x10]\n"
- "\tadds r2, r3, r7\n"
- "\tasrs r1, r4, 10\n"
- "\tasrs r0, r4, 9\n"
- "\tmovs r3, 0x1\n"
- "\tands r0, r3\n"
- "\tadds r1, r0\n"
- "\tadd r1, r9\n"
- "\tstrh r1, [r2]\n"
- "\tldr r0, [sp, 0x8]\n"
- "\tadds r4, r0\n"
- "\tadds r7, 0x4\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tcmp r5, r8\n"
- "\tbcs _080F5798\n"
- "\tcmp r4, r10\n"
- "\tble _080F5772\n"
- "_080F5798:\n"
- "\tldr r1, _080F57DC @ =gPokenavStructPtr\n"
- "\tldr r0, [r1]\n"
- "\tldr r2, [sp, 0x4]\n"
- "\tadds r1, r2, r5\n"
- "\tldr r3, _080F57E0 @ =0x00009340\n"
- "\tadds r0, r3\n"
- "\tstrh r1, [r0]\n"
- "\tldrh r0, [r0]\n"
- "\tsubs r0, 0x38\n"
- "\tlsls r0, 2\n"
- "\tadds r6, r0\n"
- "\tcmp r5, r8\n"
- "\tbcs _080F57D4\n"
- "\tmov r3, r12\n"
- "\tmovs r7, 0x1\n"
- "_080F57B6:\n"
- "\tadds r2, r3, r6\n"
- "\tasrs r1, r4, 10\n"
- "\tasrs r0, r4, 9\n"
- "\tands r0, r7\n"
- "\tadds r1, r0\n"
- "\tadd r1, r9\n"
- "\tstrh r1, [r2]\n"
- "\tldr r0, [sp, 0x8]\n"
- "\tadds r4, r0\n"
- "\tadds r6, 0x4\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tcmp r5, r8\n"
- "\tbcc _080F57B6\n"
- "_080F57D4:\n"
- "\tsubs r0, r6, 0x4\n"
- "\tb _080F58C4\n"
- "\t.align 2, 0\n"
- "_080F57D8: .4byte 0x00026bff\n"
- "_080F57DC: .4byte gPokenavStructPtr\n"
- "_080F57E0: .4byte 0x00009340\n"
- "_080F57E4:\n"
- "\tldr r1, [sp, 0x8]\n"
- "\tcmp r1, 0\n"
- "\tbge _080F5890\n"
- "\tldr r0, [sp, 0x4]\n"
- "\tsubs r0, 0x38\n"
- "\tlsls r0, 2\n"
- "\tadds r6, r0\n"
- "\tmovs r5, 0\n"
- "\tmov r2, r9\n"
- "\tlsls r2, 1\n"
- "\tmov r12, r2\n"
- "\tmov r3, r10\n"
- "\tadd r3, r9\n"
- "\tstr r3, [sp, 0xC]\n"
- "\tcmp r5, r8\n"
- "\tbcs _080F5842\n"
- "\tadds r3, r2, r6\n"
- "\tasrs r1, r4, 10\n"
- "\tasrs r0, r4, 9\n"
- "\tmovs r2, 0x1\n"
- "\tands r0, r2\n"
- "\tadds r1, r0\n"
- "\tadd r1, r9\n"
- "\tstrh r1, [r3]\n"
- "\tb _080F5838\n"
- "_080F5816:\n"
- "\tldr r0, [sp, 0x8]\n"
- "\tadds r4, r0\n"
- "\tadds r6, 0x4\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tcmp r5, r8\n"
- "\tbcs _080F5842\n"
- "\tmov r1, r12\n"
- "\tadds r3, r1, r6\n"
- "\tasrs r2, r4, 10\n"
- "\tasrs r0, r4, 9\n"
- "\tmovs r1, 0x1\n"
- "\tands r0, r1\n"
- "\tadds r2, r0\n"
- "\tadd r2, r9\n"
- "\tstrh r2, [r3]\n"
- "_080F5838:\n"
- "\tldr r0, _080F5884 @ =0x00026bff\n"
- "\tcmp r4, r0\n"
- "\tbgt _080F5816\n"
- "\tmovs r0, 0x9B\n"
- "\tstrh r0, [r3]\n"
- "_080F5842:\n"
- "\tldr r2, _080F5888 @ =gPokenavStructPtr\n"
- "\tldr r0, [r2]\n"
- "\tldr r3, [sp, 0x4]\n"
- "\tadds r1, r3, r5\n"
- "\tldr r2, _080F588C @ =0x00009340\n"
- "\tadds r0, r2\n"
- "\tstrh r1, [r0]\n"
- "\tldrh r0, [r0]\n"
- "\tsubs r0, 0x38\n"
- "\tlsls r0, 2\n"
- "\tadds r7, r0\n"
- "\tcmp r5, r8\n"
- "\tbcs _080F587E\n"
- "\tmov r3, r12\n"
- "\tmovs r6, 0x1\n"
- "_080F5860:\n"
- "\tadds r2, r3, r7\n"
- "\tasrs r1, r4, 10\n"
- "\tasrs r0, r4, 9\n"
- "\tands r0, r6\n"
- "\tadds r1, r0\n"
- "\tadd r1, r9\n"
- "\tstrh r1, [r2]\n"
- "\tldr r0, [sp, 0x8]\n"
- "\tadds r4, r0\n"
- "\tadds r7, 0x4\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tcmp r5, r8\n"
- "\tbcc _080F5860\n"
- "_080F587E:\n"
- "\tsubs r0, r7, 0x4\n"
- "\tb _080F58C4\n"
- "\t.align 2, 0\n"
- "_080F5884: .4byte 0x00026bff\n"
- "_080F5888: .4byte gPokenavStructPtr\n"
- "_080F588C: .4byte 0x00009340\n"
- "_080F5890:\n"
- "\tldr r0, _080F58BC @ =gPokenavStructPtr\n"
- "\tldr r0, [r0]\n"
- "\tldr r1, _080F58C0 @ =0x00009340\n"
- "\tadds r0, r1\n"
- "\tmov r2, sp\n"
- "\tldrh r2, [r2, 0x4]\n"
- "\tstrh r2, [r0]\n"
- "\tldr r0, [sp, 0x4]\n"
- "\tsubs r0, 0x38\n"
- "\tlsls r0, 2\n"
- "\tadds r6, r0\n"
- "\tadds r7, r0\n"
- "\tldrh r0, [r5]\n"
- "\tadds r0, 0x1\n"
- "\tstrh r0, [r6, 0x2]\n"
- "\tldr r3, [sp]\n"
- "\tldrh r0, [r3]\n"
- "\tstrh r0, [r7]\n"
- "\tmovs r0, 0x9B\n"
- "\tstrh r0, [r7, 0x2]\n"
- "\tb _080F58CC\n"
- "\t.align 2, 0\n"
- "_080F58BC: .4byte gPokenavStructPtr\n"
- "_080F58C0: .4byte 0x00009340\n"
- "_080F58C4:\n"
- "\tadd r0, r12\n"
- "\tmov r1, sp\n"
- "\tldrh r1, [r1, 0xC]\n"
- "\tstrh r1, [r0]\n"
- "_080F58CC:\n"
- "\tadd sp, 0x14\n"
- "\tpop {r3-r5}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tmov r10, r5\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0");
-}
-
-void sub_80F58DC(struct UnkPokenav11 * a0)
-{
- u16 i, r6, varMax;
-
- if (a0[0].unk2 < a0[1].unk2)
- {
- r6 = a0[0].unk2;
- sub_80F5688(gPokenavStructPtr->unk9130, &a0[0], &a0[1], 1, NULL);
- }
- else
- {
- r6 = a0[1].unk2;
- sub_80F5688(gPokenavStructPtr->unk9130, &a0[1], &a0[0], 0, NULL);
- }
- sub_80F5688(gPokenavStructPtr->unk9130, &a0[1], &a0[2], 1, NULL);
-
- i = a0[2].unk2 <= a0[3].unk2;
- sub_80F5688(gPokenavStructPtr->unk9130, &a0[2], &a0[3], i, gPokenavStructPtr->unk9238);
- for (i = 56; i < r6; i++)
- {
- gPokenavStructPtr->unk9130[i - 56][0] = 0;
- gPokenavStructPtr->unk9130[i - 56][1] = 0;
- }
-
- for (i = a0[0].unk2; i <= gPokenavStructPtr->unk9340; i++)
- gPokenavStructPtr->unk9130[i - 56][0] = 155;
-
- varMax = max(gPokenavStructPtr->unk9340, a0[2].unk2);
- for (i = varMax + 1; i < 122; i++)
- {
- gPokenavStructPtr->unk9130[i - 56][0] = 0;
- gPokenavStructPtr->unk9130[i - 56][1] = 0;
- }
-
-// for (i = 56; i < 122; i++)
-// {
-// if (gPokenavStructPtr->unk9130[i - 56][0] == 0 && gPokenavStructPtr->unk9130[i - 56][1] != 0)
-// gPokenavStructPtr->unk9130[i - 56][0] = 155;
-// }
-}
-
-void sub_80F5A1C(struct UnkPokenav11 *arg0)
-{
- u16 i, r6, varMax;
-
- if (arg0[0].unk2 < arg0[4].unk2)
- {
- r6 = arg0[0].unk2;
- sub_80F5688(gPokenavStructPtr->unk9238, &arg0[0], &arg0[4], 0, NULL);
- }
- else
- {
- r6 = arg0[4].unk2;
- sub_80F5688(gPokenavStructPtr->unk9238, &arg0[4], &arg0[0], 1, NULL);
- }
-
- sub_80F5688(gPokenavStructPtr->unk9238, &arg0[4], &arg0[3], 0, NULL);
-
- for (i = 56; i < r6; i++)
- {
- gPokenavStructPtr->unk9238[i - 56][0] = 0;
- gPokenavStructPtr->unk9238[i - 56][1] = 0;
- }
-
- for (i = arg0[0].unk2; i <= gPokenavStructPtr->unk9340; i++)
- gPokenavStructPtr->unk9238[i - 56][1] = 155;
-
- varMax = max(gPokenavStructPtr->unk9340, arg0[3].unk2 + 1);
- for (i = varMax; i < 122; i++)
- {
- gPokenavStructPtr->unk9238[i - 56][0] = 0;
- gPokenavStructPtr->unk9238[i - 56][1] = 0;
- }
-
-// for (i = 0; i < 66; i++)
-// {
-// if (gPokenavStructPtr->unk9238[i][0] >= gPokenavStructPtr->unk9238[i][1])
-// {
-// gPokenavStructPtr->unk9238[i][1] = 0;
-// gPokenavStructPtr->unk9238[i][0] = 0;
-// }
-// }
-}
-
-void sub_80F5B38(void)
-{
- gPokenavStructPtr->unk9345 = 0;
-}
-
-extern const struct ScanlineEffectParams gUnknown_083E4990;
-
-bool8 sub_80F5B50(void)
-{
- s32 i;
- struct ScanlineEffectParams params;
-
- switch (gPokenavStructPtr->unk9345)
- {
- case 0:
- ScanlineEffect_Clear();
- for (i = 0; i < 16; i++)
- {
- gScanlineEffectRegBuffers[0][16 + 2 * i] = 0xEF;
- gScanlineEffectRegBuffers[0][17 + 2 * i] = 0xEF;
- gScanlineEffectRegBuffers[1][16 + 2 * i] = 0xEF;
- gScanlineEffectRegBuffers[1][17 + 2 * i] = 0xEF;
- }
- gPokenavStructPtr->unk9345++;
- return TRUE;
- case 1:
- params = gUnknown_083E4990;
- ScanlineEffect_SetParams(params);
- gPokenavStructPtr->unk9345++;
- break;
- }
- return FALSE;
-}
-
-void sub_80F5BDC(void)
-{
- gScanlineEffect.state = 3;
- ScanlineEffect_InitHBlankDmaTransfer();
-}
-
-void sub_80F5BF0(void)
-{
- u16 i;
-
- if (gPokenavStructPtr->unk9344)
- {
- sub_80F58DC(gPokenavStructPtr->unk911C);
- sub_80F5A1C(gPokenavStructPtr->unk911C);
- for (i = 0; i < 66; i++)
- {
- gScanlineEffectRegBuffers[1][(i + 55) * 2 + 0] = gScanlineEffectRegBuffers[0][(i + 55) * 2 + 0] = (gPokenavStructPtr->unk9130[i][0] << 8) | (gPokenavStructPtr->unk9130[i][1]);
- gScanlineEffectRegBuffers[1][(i + 55) * 2 + 1] = gScanlineEffectRegBuffers[0][(i + 55) * 2 + 1] = (gPokenavStructPtr->unk9238[i][0] << 8) | (gPokenavStructPtr->unk9238[i][1]);
- }
- gPokenavStructPtr->unk9344 = 0;
- }
-}
-
-void sub_80F5CDC(u8 a0)
-{
- u16 i, r5;
-
- if (gPokenavStructPtr->unk9344)
- {
- sub_80F58DC(gPokenavStructPtr->unk911C);
- sub_80F5A1C(gPokenavStructPtr->unk911C);
- r5 = 2 * (55 - a0);
- for (i = 0; i < 66; i ++)
- {
- gScanlineEffectRegBuffers[1][r5 + 0] = gScanlineEffectRegBuffers[0][r5 + 0] = (gPokenavStructPtr->unk9130[i][0] << 8) | (gPokenavStructPtr->unk9130[i][1]);
- gScanlineEffectRegBuffers[1][r5 + 1] = gScanlineEffectRegBuffers[0][r5 + 1] = (gPokenavStructPtr->unk9238[i][0] << 8) | (gPokenavStructPtr->unk9238[i][1]);
- r5 += 2;
- }
- gPokenavStructPtr->unk9344 = 0;
- }
-}
-
-u8 sub_80F5DD4(void)
-{
- if (({gMain.newAndRepeatedKeys & DPAD_UP;}))
- {
- return sub_80F5E20();
- }
- else if (({gMain.newAndRepeatedKeys & DPAD_DOWN;}))
- {
- return sub_80F5EE4();
- }
- else if (({gMain.newAndRepeatedKeys & DPAD_LEFT;}))
- {
- return sub_80F5FB4();
- }
- else if (({gMain.newAndRepeatedKeys & DPAD_RIGHT;}))
- {
- return sub_80F6010();
- }
- else
- {
- return 0;
- }
-}
-
-u8 sub_80F5E20(void)
-{
- if (gPokenavStructPtr->unk876E == 0)
- {
- return 0;
- }
- if (gPokenavStructPtr->unk87C9 != 0 && gPokenavStructPtr->unk876C == 0)
- {
- sub_80F063C(-1);
- sub_80F6074(-1);
- return 2;
- }
- gPokenavStructPtr->unk876C--;
- if (gPokenavStructPtr->unk87C9 == 0 && gPokenavStructPtr->unk876C < 0)
- {
- gPokenavStructPtr->unk876C = gPokenavStructPtr->unk8772;
- }
- gPokenavStructPtr->unk876E = gPokenavStructPtr->unk8770 + gPokenavStructPtr->unk876C;
- if (gPokenavStructPtr->unk876E > gPokenavStructPtr->unk8774)
- {
- gPokenavStructPtr->unk876E -= gPokenavStructPtr->unk8774 + 1;
- }
- return 1;
-}
-
-u8 sub_80F5EE4(void)
-{
- if (gPokenavStructPtr->unk876E == gPokenavStructPtr->unk8774)
- {
- return 0;
- }
- if (gPokenavStructPtr->unk87C9 != 0 && gPokenavStructPtr->unk876C == 7)
- {
- sub_80F063C(1);
- sub_80F6074(1);
- return 2;
- }
- gPokenavStructPtr->unk876C++;
- if (gPokenavStructPtr->unk87C9 == 0 && gPokenavStructPtr->unk876C > gPokenavStructPtr->unk8772)
- {
- gPokenavStructPtr->unk876C = 0;
- }
- gPokenavStructPtr->unk876E = gPokenavStructPtr->unk8770 + gPokenavStructPtr->unk876C;
- if (gPokenavStructPtr->unk876E > gPokenavStructPtr->unk8774)
- {
- gPokenavStructPtr->unk876E -= gPokenavStructPtr->unk8774 + 1;
- }
- return 1;
-}
-
-u8 sub_80F5FB4(void)
-{
- s16 r4;
- if (gPokenavStructPtr->unk8770 == 0 || gPokenavStructPtr->unk87C9 == 0)
- {
- return 0;
- }
- if (gPokenavStructPtr->unk8770 < 8)
- {
- r4 = -gPokenavStructPtr->unk8770;
- }
- else
- {
- r4 = -8;
- }
- sub_80F063C(r4);
- sub_80F6074(r4);
- return 2;
-}
-
-u8 sub_80F6010(void)
-{
- s16 r4;
- if (gPokenavStructPtr->unk8772 == gPokenavStructPtr->unk8774 || gPokenavStructPtr->unk87C9 == 0)
- {
- return 0;
- }
- r4 = gPokenavStructPtr->unk8774 - gPokenavStructPtr->unk8772;
- if (r4 > 8)
- {
- r4 = 8;
- }
- sub_80F063C(r4);
- sub_80F6074(r4);
- return 2;
-}
-
diff --git a/src/pokenav.c b/src/pokenav.c
index 9a43a1727..0992cef90 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -2,7 +2,28 @@
// Includes
#include "global.h"
#include "ewram.h"
+#include "main.h"
+#include "palette.h"
+#include "decompress.h"
#include "trig.h"
+#include "data2.h"
+#include "scanline_effect.h"
+#include "pokemon_storage_system.h"
+#include "text.h"
+#include "menu.h"
+#include "landmark.h"
+#include "strings.h"
+#include "string_util.h"
+#include "event_data.h"
+#include "use_pokeblock.h"
+#include "overworld.h"
+#include "pokemon_summary_screen.h"
+#include "link.h"
+#include "sound.h"
+#include "battle_setup.h"
+#include "constants/songs.h"
+#include "constants/flags.h"
+#include "constants/game_stat.h"
#include "pokenav.h"
// Static type declarations
@@ -12,16 +33,5127 @@
EWRAM_DATA u8 gUnknown_020388B0[4] = {};
EWRAM_DATA u16 gUnknown_020388B4 = 0;
+extern const u8 gUnknown_083E0314[];
+extern const u16 gUnknown_08E9F9E8[];
+extern const u16 gUnknown_083E0274[];
+extern const u8 gUnknown_08E9FC64[];
+extern const u8 gUnknown_083E0354[];
+extern const u8 gUnknown_08E9FD64[];
+extern const u8 gUnknown_08E9FE54[];
+extern const u8 gUnknown_08E9FD1C[];
+extern const u16 gPokenavConditionSearch2_Pal[];
+extern const u8 gUnknown_083E0334[];
+extern const u16 gUnknown_083E02B4[];
+extern const u8 gPokenavConditionSearch2_Gfx[];
+extern const u8 gUnknown_083E0254[];
+extern const u8 gUnknown_08E9FEB4[];
+extern const u8 gUnknown_083E01AC[];
+extern const u8 gUnknown_08E9AC4C[];
+extern const u8 gPokenavConditionMenu2_Pal[];
+extern const u8 gPokenavConditionView_Gfx[];
+extern const u8 gUnknown_08E9ABB4[];
+extern const u8 gUnknown_08E9AC2C[];
+extern const u8 *const gPokenavCityMaps[][2];
+extern const u8 gPokenavHoennMapSquares_Pal[];
+extern const u8 gPokenavHoennMapSquares_Gfx[];
+extern const u16 gUnknown_083E003C[];
+extern const u8 *const gUnknown_083E31B0[];
+extern const u8 *const gUnknown_083E31CC[];
+extern const u8 *const gUnknown_083E31D8[];
+extern u8 *gUnknown_083DFEC8;
+extern const u8 gUnknown_083DFEEC[];
+extern const u8 gUnknown_083E005C[];
+extern const u8 gUnknown_083E007C[];
+extern const u8 gPokenavOutlineTilemap[];
+extern const u8 gPokenavOutlineTiles[];
+extern const u8 gPokenavOutlinePalette[];
+extern const u8 gUnknown_083DFECC[];
+extern const u8 gUnknown_083DFF8C[];
+extern const u8 gPokenavHoennMapMisc_Gfx[];
+extern const u8 gUnknown_08E99FB0[];
+extern const u8 gUnknown_08E9A100[];
+extern const u16 gPokenavHoennMap1_Pal[];
+extern void (*const gUnknown_083E3270[])(u16, u16);
+extern const u8 gUnknown_083E039C[];
+extern const u8 gUnknown_083E03A0[];
+extern const u8 gUnknown_083E01F4[];
+extern const u8 *const gTrainerEyeDescriptions[];
+extern const u8 gUnknown_08E9FBA0[];
+extern const u8 gPokenavRibbonView_Gfx[];
+extern const u8 gUnknown_083E040C[];
+extern const u16 gPokenavRibbonView_Pal[];
+extern const u16 gUnknown_083E03A8[];
+extern const u16 gUnknown_083E3C60[][16];
+extern const u16 gPokenavRibbonsIconGfx[][2];
+extern const u8 *const gRibbonDescriptions[][2];
+extern const u8 *const gGiftRibbonDescriptions[][2];
+extern const u8 gUnknown_08E9FF58[];
+extern const u8 gPokenavRibbonPokeView_Gfx[];
+extern const u16 gUnknown_083E0124[];
+extern const u16 gUnknown_083E0144[];
+extern const u8 gPokenavMenuOptions_Gfx[];
+extern const u8 gPokenavConditionMenu_Gfx[];
+extern const u8 gPokenavConditionSearch_Gfx[];
+extern const struct SpriteTemplate gSpriteTemplate_83E4454;
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83E4450[];
+extern const u16 gUnknown_083E42F8[];
+extern const u16 gPokenavMenuOptions1_Pal[];
+extern const u16 gPokenavMenuOptions2_Pal[];
+extern const u16 gPokenavConditionMenu_Pal[];
+extern const u16 gPokenavCondition6_Pal[];
+extern const u16 gPokenavCondition7_Pal[];
+extern const struct SpriteSheet gSpriteSheet_PokenavBlueLight;
+extern const struct SpritePalette gSpritePalette_PokenavBlueLight;
+extern const struct SpriteTemplate gSpriteTemplate_83E4484;
+extern const u8 gPokenavMainMenu_Gfx[];
+extern const u8 gPokenavConditionMenuHeader_Gfx[];
+extern const u8 gPokenavRibbonsHeader_Gfx[];
+extern const u8 gPokenavHoennMapHeader_Gfx[];
+extern const u8 gPokenavConditionMenuOptions_Gfx[];
+extern const u8 gPokenavConditionMenuOptions2_Gfx[];
+extern const u8 gPokenavTrainersEyesHeader_Gfx[];
+extern const struct SpritePalette gUnknown_083E449C[];
+extern const struct SpriteTemplate gSpriteTemplate_83E4530;
+extern const struct SpriteTemplate gSpriteTemplate_83E4548;
+extern const struct SpriteTemplate gSpriteTemplate_83E44E0;
+extern const struct SpriteTemplate gSpriteTemplate_83E44F8;
+extern const struct SpriteSheet gUnknown_083E4568;
+extern const struct SpriteTemplate gSpriteTemplate_83E4570;
+extern const struct SpritePalette gUnknown_083E4588;
+extern const struct SpriteSheet gUnknown_083E4590[3];
+extern const struct SpritePalette gUnknown_083E45A8;
+extern const u16 gUnknown_08E9F988[];
+extern const struct SpriteTemplate gSpriteTemplate_83E45B8;
+extern const struct SpriteTemplate gSpriteTemplate_83E45F0;
+extern const struct SpriteSheet gUnknown_083E4628[4];
+extern const struct SpritePalette gUnknown_083E4648[3];
+extern const struct SpriteTemplate gSpriteTemplate_83E4660;
+extern const u16 gUnknown_083E4678[];
+extern const u8 gUnknown_083E3D00[];
+extern const struct SpriteTemplate gSpriteTemplate_83E476C;
+extern const struct SpriteSheet gUnknown_083E4784;
+extern const struct SpritePalette gUnknown_083E478C;
+extern const struct SpriteTemplate gSpriteTemplate_83E4800;
+extern const s16 gUnknown_083E4794[][2];
+extern const u8 gUnknown_083E329C[];
+extern const struct SpritePalette gUnknown_083E4818;
+extern const struct SpriteTemplate gSpriteTemplate_83E4850;
+extern const struct SpritePalette gUnknown_083E4868;
+extern const struct SpriteTemplate gSpriteTemplate_83E4878;
+
// Static ROM declarations
-// .rodata
+u8 sub_80F5E20(void);
+u8 sub_80F5EE4(void);
+u8 sub_80F5FB4(void);
+u8 sub_80F6010(void);
-struct UnkPokenavStruct *const gPokenavStructPtr = (struct UnkPokenavStruct *)gSharedMem;
+// .rodata
extern const u8 gUnknown_083E4890[];
// .text
+void sub_80EEDE8(void)
+{
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+}
+
+void sub_80EEE08(void)
+{
+ gPokenavStructPtr->unkD160 = 0;
+}
+
+void sub_80EEE20(void)
+{
+ gPokenavStructPtr->unkD160 = 0;
+ if (!gPokenavStructPtr->unk6DAC)
+ {
+ while (sub_80EEE54())
+ ;
+ }
+}
+
+bool8 sub_80EEE54(void)
+{
+ switch (gPokenavStructPtr->unkD160)
+ {
+ case 0:
+ LZ77UnCompVram(gPokenavHoennMapMisc_Gfx, (void *)VRAM + 0xC000);
+ break;
+ case 1:
+ LZ77UnCompVram(gUnknown_08E99FB0, (void *)VRAM + 0xD800);
+ break;
+ case 2:
+ LoadPalette(gPokenavHoennMap1_Pal, 0x10, 0x20);
+ break;
+ case 3:
+ sub_80EF58C(0);
+ sub_80EF58C(1);
+ sub_80EF58C(2);
+ break;
+ case 4:
+ gPokenavStructPtr->unk030C = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG1CNT = 0x1B0C;
+ gPokenavStructPtr->unkD160++;
+ default:
+ return FALSE;
+ }
+ gPokenavStructPtr->unkD160++;
+ return TRUE;
+}
+
+bool8 sub_80EEF34(void)
+{
+ bool8 retVal = TRUE;
+
+ if (gPokenavStructPtr->unk030C == 32)
+ return FALSE;
+
+ gPokenavStructPtr->unk030C += 2;
+ if (gPokenavStructPtr->unk030C > 31)
+ {
+ gPokenavStructPtr->unk030C = 32;
+ retVal = FALSE;
+ }
+
+ REG_BG1VOFS = gPokenavStructPtr->unk030C;
+ return retVal;
+}
+
+bool8 sub_80EEF78(void)
+{
+ bool8 retVal = TRUE;
+
+ if (gPokenavStructPtr->unk030C == 0)
+ return FALSE;
+
+ gPokenavStructPtr->unk030C -= 2;
+ if (gPokenavStructPtr->unk030C <= 0)
+ {
+ gPokenavStructPtr->unk030C = 0;
+ retVal = FALSE;
+ }
+
+ REG_BG1VOFS = gPokenavStructPtr->unk030C;
+ return retVal;
+}
+
+void sub_80EEFBC(u8 a)
+{
+ u8 var1;
+
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 0, 17, 2);
+
+ switch (a)
+ {
+ case 0:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 17, 0, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 11:
+ sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 2:
+ var1 = gPokenavStructPtr->unk6DAC;
+ if (!var1)
+ {
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 10, 2, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, var1, 6, 7, 2);
+ }
+ else
+ {
+ sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ }
+ break;
+ case 3:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 4, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 4:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 20, 2, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 7:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 10, 4, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 7, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 8:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 20, 4, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 7, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 5:
+ case 9:
+ sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 2, 10, 2);
+ sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ case 10:
+ sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2);
+ break;
+ }
+}
+
+void sub_80EF248(u8 a)
+{
+ gPokenavStructPtr->unkD160 = 0;
+
+ if (!gPokenavStructPtr->unk6DAC)
+ {
+ while (sub_80EF284(a))
+ ;
+ }
+}
+
+bool8 sub_80EF284(u8 a)
+{
+ switch (gPokenavStructPtr->unkD160)
+ {
+ case 0:
+ sub_80EEDE8();
+ break;
+ case 1:
+ Text_LoadWindowTemplate(&gWindowTemplate_81E7224);
+ break;
+ case 2:
+ MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224);
+ break;
+ case 3:
+ if (!MultistepInitMenuWindowContinue())
+ return TRUE;
+ break;
+ case 4:
+ DmaCopy16Defvars(3, gUnknown_083DFEEC, (void *)VRAM + 0x5000, 0xA0);
+ break;
+ case 5:
+ LZ77UnCompVram(gUnknown_083DFF8C, (void *)VRAM + 0xF800);
+ break;
+ case 6:
+ DmaCopy16Defvars(3, gUnknown_083E005C, (void *)VRAM + 0x8000, 0x20);
+ break;
+ case 7:
+ LZ77UnCompVram(gUnknown_083E007C, (void *)VRAM + 0xE000);
+ break;
+ case 8:
+ LZ77UnCompVram(gPokenavOutlineTilemap, (void *)VRAM + 0xE800);
+ break;
+ case 9:
+ LZ77UnCompVram(gPokenavOutlineTiles, (void *)VRAM + 0x8020);
+ break;
+ case 10:
+ sub_80EF54C(a);
+ LoadPalette(gUnknown_083DFECC, 0xF0, 0x20);
+ LoadPalette(gPokenavOutlinePalette, 0x40, 0x20);
+ sub_80EF7D4();
+ break;
+ case 11:
+ REG_BG0CNT = 0x1F01;
+ REG_BG2CNT = 0x1D0A;
+ REG_BG3CNT = 0x1C0B;
+ REG_BLDCNT = 0;
+
+ gPokenavStructPtr->unkD160++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unkD160++;
+ return TRUE;
+}
+
+void sub_80EF428(u8 a, u8 b)
+{
+ u8 *tileBuffer;
+ const u8 *pcText = 0;
+
+ switch (a)
+ {
+ case 0:
+ pcText = gUnknown_083E31B0[b];
+ break;
+ case 1:
+ pcText = gUnknown_083E31CC[b];
+ break;
+ case 2:
+ pcText = gUnknown_083E31D8[b];
+ break;
+ }
+
+ tileBuffer = gUnknown_083DFEC8;
+ AlignStringInMenuWindow(&tileBuffer[0x800], pcText, 0xC0, 2);
+ Menu_PrintText(&tileBuffer[0x800], 3, 17);
+}
+
+void sub_80EF490(u8 a)
+{
+ u16 var1, var2;
+
+ if (a == 2)
+ a = 1;
+
+ gPokenavStructPtr->unkCE4E = a * 30;
+ var1 = gPokenavStructPtr->unkCE4C;
+ var2 = a * 30;
+ if (var1 < var2)
+ gPokenavStructPtr->unkCE50 = 2;
+ else if (var1 > var2)
+ gPokenavStructPtr->unkCE50 = -2;
+ else
+ gPokenavStructPtr->unkCE50 = 0;
+}
+
+bool8 sub_80EF4F8(void)
+{
+ u16 *palettes;
+
+ if (gPokenavStructPtr->unkCE4C == gPokenavStructPtr->unkCE4E)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gPokenavStructPtr->unkCE4C = gPokenavStructPtr->unkCE50 + gPokenavStructPtr->unkCE4C;
+
+ palettes = gPokenavStructPtr->palettesCE52;
+ LoadPalette(&palettes[gPokenavStructPtr->unkCE4C], 0x31, 4);
+ return TRUE;
+ }
+
+}
+
+void sub_80EF54C(u8 a)
+{
+ if (a == 2)
+ a = 1;
+
+ gPokenavStructPtr->unkCE4C = a * 30;
+ LoadPalette(&gPokenavStructPtr->palettesCE52[gPokenavStructPtr->unkCE4C], 0x31, 4);
+}
+
+void sub_80EF58C(u8 a)
+{
+ u16 i;
+ u16 * palettes;
+ const u16 *var1;
+
+ switch (a)
+ {
+ case 0:
+ for (i = 0; i < 62; i++)
+ gPokenavStructPtr->palettesCE52[i] = 0;
+ break;
+ case 1:
+ palettes = gPokenavStructPtr->palettesCE52;
+ var1 = gUnknown_083E003C;
+ sub_80EF624(&var1[1], &var1[3], 16, 2, palettes);
+ break;
+ case 2:
+ palettes = gPokenavStructPtr->palettesCE8E;
+ var1 = gUnknown_083E003C;
+ sub_80EF624(&var1[3], &var1[7], 16, 2, palettes);
+ break;
+ }
+}
+
+#ifdef NONMATCHING
+void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes)
+{
+ u16 red1, green1, blue1;
+ u16 red2, green2, blue2;
+ s32 redDiv, greenDiv, blueDiv;
+ u16 *palettes2;
+ u16 i, j;
+
+ i = 0;
+ while (i < d)
+ {
+ red1 = (*a & 0x1F) << 8;
+ green1 = ((*a >> 5) & 0x1F) << 8;
+ blue1 = ((*a >> 10) & 0x1F) << 8;
+
+ red2 = (*b & 0x1F) << 8;
+ green2 = ((*b >> 5) & 0x1F) << 8;
+ blue2 = ((*b >> 10) & 0x1F) << 8;
+
+ redDiv = (red2 - red1) / c;
+ greenDiv = (green2 - green1) / c;
+ blueDiv = (blue2 - blue1) / c;
+
+ palettes2 = palettes;
+ for (j = 0; j < c - 1; j++)
+ {
+ *palettes2 = (((blue1 << 8) >> 16) << 10) | (((green1 << 8) >> 16) << 5) | ((red1 << 8) >> 16);
+ palettes2 += d;
+ red1 += redDiv;
+ green1 += greenDiv;
+ blue1 += blueDiv;
+ }
+
+ *palettes2 = (red2 >> 8) | (blue2 << 2) | (green2 >> 3);
+ palettes++;
+
+ a++;
+ b++;
+ i++;
+ }
+}
+#else
+NAKED
+void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x38\n\
+ str r0, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ ldr r4, [sp, 0x58]\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x8]\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ str r3, [sp, 0xC]\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x10]\n\
+ lsls r0, r3, 16\n\
+ ldr r1, [sp, 0x10]\n\
+ cmp r1, r3\n\
+ bcs _080EF72E\n\
+ subs r2, 0x1\n\
+ str r2, [sp, 0x20]\n\
+ str r0, [sp, 0x2C]\n\
+_080EF654:\n\
+ ldr r2, [sp]\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x1F\n\
+ ands r0, r1\n\
+ lsls r7, r0, 8\n\
+ lsls r1, 16\n\
+ lsrs r0, r1, 21\n\
+ movs r2, 0x1F\n\
+ ands r0, r2\n\
+ lsls r6, r0, 8\n\
+ lsrs r1, 26\n\
+ ands r1, r2\n\
+ lsls r5, r1, 8\n\
+ ldr r0, [sp, 0x4]\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1F\n\
+ ands r0, r1\n\
+ lsls r0, 8\n\
+ str r0, [sp, 0x14]\n\
+ lsls r1, 16\n\
+ lsrs r0, r1, 21\n\
+ ands r0, r2\n\
+ lsls r0, 8\n\
+ str r0, [sp, 0x18]\n\
+ lsrs r1, 26\n\
+ ands r1, r2\n\
+ lsls r1, 8\n\
+ str r1, [sp, 0x1C]\n\
+ ldr r1, [sp, 0x14]\n\
+ subs r0, r1, r7\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ mov r10, r0\n\
+ ldr r2, [sp, 0x18]\n\
+ subs r0, r2, r6\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ mov r9, r0\n\
+ ldr r1, [sp, 0x1C]\n\
+ subs r0, r1, r5\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ mov r8, r0\n\
+ adds r3, r4, 0\n\
+ movs r4, 0\n\
+ ldr r2, [sp]\n\
+ adds r2, 0x2\n\
+ str r2, [sp, 0x30]\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, 0x2\n\
+ str r0, [sp, 0x34]\n\
+ adds r1, r3, 0x2\n\
+ str r1, [sp, 0x24]\n\
+ ldr r2, [sp, 0x10]\n\
+ adds r2, 0x1\n\
+ str r2, [sp, 0x28]\n\
+ ldr r0, [sp, 0x20]\n\
+ cmp r4, r0\n\
+ bge _080EF700\n\
+ ldr r1, [sp, 0xC]\n\
+ lsls r1, 1\n\
+ mov r12, r1\n\
+_080EF6D6:\n\
+ lsls r0, r7, 8\n\
+ lsrs r2, r0, 16\n\
+ lsls r0, r6, 8\n\
+ lsrs r1, r0, 16\n\
+ lsls r0, r5, 8\n\
+ lsrs r0, 16\n\
+ lsls r0, 10\n\
+ lsls r1, 5\n\
+ orrs r0, r1\n\
+ orrs r2, r0\n\
+ strh r2, [r3]\n\
+ add r3, r12\n\
+ add r7, r10\n\
+ add r6, r9\n\
+ add r5, r8\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ ldr r2, [sp, 0x20]\n\
+ cmp r4, r2\n\
+ blt _080EF6D6\n\
+_080EF700:\n\
+ ldr r4, [sp, 0x14]\n\
+ lsrs r2, r4, 8\n\
+ ldr r1, [sp, 0x1C]\n\
+ lsls r0, r1, 2\n\
+ ldr r4, [sp, 0x18]\n\
+ lsrs r1, r4, 3\n\
+ orrs r0, r1\n\
+ orrs r2, r0\n\
+ strh r2, [r3]\n\
+ ldr r0, [sp, 0x30]\n\
+ str r0, [sp]\n\
+ ldr r1, [sp, 0x34]\n\
+ str r1, [sp, 0x4]\n\
+ ldr r4, [sp, 0x24]\n\
+ ldr r2, [sp, 0x28]\n\
+ lsls r0, r2, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x10]\n\
+ ldr r1, [sp, 0x2C]\n\
+ lsrs r0, r1, 16\n\
+ ldr r2, [sp, 0x10]\n\
+ cmp r2, r0\n\
+ bcc _080EF654\n\
+_080EF72E:\n\
+ add sp, 0x38\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80EF740(void)
+{
+ gPokenavStructPtr->unk6DA0 = (gPokenavStructPtr->unk6DA0 + 1) & 1;
+ if (gPokenavStructPtr->unk6DA0)
+ gPokenavStructPtr->unk6DA2++;
+
+ REG_BG3HOFS = gPokenavStructPtr->unk6DA2;
+}
+
+void sub_80EF780(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0 || (gPokenavStructPtr->unk6DA2 & 0x7) != 0)
+ {
+ sub_80EF740();
+ }
+ else
+ {
+ u16 value = gPokenavStructPtr->unk6DA2 & 0x7;
+ gPokenavStructPtr->unk6DA2 = value;
+ gPokenavStructPtr->unk6DA0 = value;
+ REG_BG3HOFS = value;
+ }
+}
+
+void sub_80EF7D4(void)
+{
+ gPokenavStructPtr->unk6DA2 = 0;
+ gPokenavStructPtr->unk6DA0 = 0;
+ gPokenavStructPtr->taskId6DA4 = CreateTask(sub_80EF780, 80);
+}
+
+void sub_80EF814(void)
+{
+ if (FuncIsActiveTask(sub_80EF780))
+ DestroyTask(gPokenavStructPtr->taskId6DA4);
+}
+
+void sub_80EF840(void)
+{
+ gPokenavStructPtr->unkD160 = 0;
+
+ if (gPokenavStructPtr->unk6DAC == 0)
+ {
+ while (sub_80EF874() != 0)
+ ;
+ }
+}
+
+bool8 sub_80EF874(void)
+{
+ switch (gPokenavStructPtr->unkD160)
+ {
+ case 0:
+ sub_80EEDE8();
+ break;
+ case 1:
+ Text_LoadWindowTemplate(&gWindowTemplate_81E7224);
+ break;
+ case 2:
+ MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224);
+ break;
+ case 3:
+ if (!MultistepInitMenuWindowContinue())
+ return TRUE;
+ break;
+ case 4:
+ Menu_EraseScreen();
+ break;
+ case 5:
+ sub_80FA904(&gPokenavStructPtr->regionMap, gSaveBlock2.regionMapZoom ? TRUE : FALSE);
+ break;
+ case 6:
+ if (sub_80FA940())
+ return TRUE;
+ break;
+ case 7:
+ LZ77UnCompVram(gPokenavHoennMapSquares_Gfx, (void *)VRAM + 0x5000);
+ break;
+ case 8:
+ LoadPalette(gPokenavHoennMapSquares_Pal, 0x30, 0x20);
+ sub_80EFC3C();
+ break;
+ case 9:
+ if (sub_80EFC64())
+ return TRUE;
+ break;
+ case 10:
+ Menu_DrawStdWindowFrame(13, 3, 29, 17);
+ sub_80EF9F8();
+ break;
+ case 11:
+ if (!gPokenavStructPtr->regionMap.zoomed)
+ {
+ gPokenavStructPtr->unk7698 = 160;
+ REG_BG0VOFS = 160;
+ }
+ else
+ {
+ gPokenavStructPtr->unk7698 = 256;
+ REG_BG0VOFS = 0;
+ }
+
+ REG_BG0CNT = REG_BG0CNT;
+ REG_BG0CNT |= 1;
+ REG_BLDCNT = 0;
+ break;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unkD160++;
+ return TRUE;
+}
+
+asm(".include \"constants/gba_constants.inc\"\n");
+
+void sub_80EF9F8(void)
+{
+ bool8 someBool = FALSE;
+ u16 top = 4;
+ u16 mapSectionId;
+ u8 b;
+
+ switch (gPokenavStructPtr->regionMap.unk16)
+ {
+ case 0:
+ break;
+ case 1:
+ case 4:
+ sub_8072A18(gPokenavStructPtr->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
+ top += 2;
+ if (gLinkOpen == TRUE)
+ {
+ sub_80F1A80();
+ someBool = TRUE;
+ }
+ else
+ {
+ u16 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ const u8 *secName = GetLandmarkName(
+ gPokenavStructPtr->regionMap.mapSectionId,
+ gPokenavStructPtr->regionMap.everGrandeCityArea,
+ i);
+
+ if (secName == NULL)
+ break;
+ sub_8072A18(secName, 0x70, top * 8, 0x78, 1);
+ top += 2;
+ }
+ }
+ break;
+ case 2:
+ sub_8072A18(gPokenavStructPtr->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
+ top += 2;
+ mapSectionId = gPokenavStructPtr->regionMap.mapSectionId;
+ b = gPokenavStructPtr->regionMap.everGrandeCityArea;
+ if (gPokenavStructPtr->unkCDCC[mapSectionId][b] != NULL)
+ {
+ Menu_BlankWindowRect(14, top, 15, 15);
+ Menu_BlankWindowRect(26, top, 28, 15);
+ sub_8095C8C((void *)(VRAM + 0xF800), 16, 6, gPokenavStructPtr->unkCDCC[mapSectionId][b], 0, 0, 10, 10, 10);
+ top += 11;
+ }
+ break;
+ case 3:
+ sub_8072A18(gPokenavStructPtr->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
+ top += 2;
+ break;
+ }
+
+ // Epic fail by the compiler at optimizing this.
+ if (!someBool && top < 16)
+ Menu_BlankWindowRect(14, top, 28, 15);
+
+ if (gPokenavStructPtr->regionMap.unk16 == 2)
+ sub_80EFD74();
+ else
+ sub_80EFDA0();
+}
+
+void sub_80EFBB0(void)
+{
+ if (!gPokenavStructPtr->regionMap.zoomed)
+ sub_80EEFBC(8);
+ else
+ sub_80EEFBC(7);
+}
+
+bool8 sub_80EFBDC(bool8 a)
+{
+ bool8 retVal = TRUE;
+ u16 var1 = gPokenavStructPtr->unk7698;
+
+ if (a)
+ {
+ if (var1 > 168)
+ {
+ var1 = var1 - 8;
+ }
+ else
+ {
+ var1 = 160;
+ retVal = FALSE;
+ }
+ }
+ else
+ {
+ if (var1 < 248)
+ {
+ var1 = var1 + 8;
+ }
+ else
+ {
+ var1 = 256;
+ retVal = FALSE;
+ }
+ }
+
+ gPokenavStructPtr->unk7698 = var1;
+ REG_BG0VOFS = var1 & 0xFF;
+
+ return retVal;
+}
+
+void sub_80EFC3C(void)
+{
+ gPokenavStructPtr->unkBC9A = 0;
+ gPokenavStructPtr->unkBC9B = 0;
+ sub_80EFD3C();
+}
+
+bool8 sub_80EFC64(void)
+{
+ u16 i;
+ u8 var1;
+ u16 var2;
+
+ if (gPokenavStructPtr->unkBC9A >= 16)
+ return FALSE;
+
+ var1 = gPokenavStructPtr->unkBC9A;
+ var2 = gPokenavStructPtr->unkBC9B;
+ for (i = 0; i < 2; i++)
+ {
+ if (gPokenavCityMaps[var1][i] != 0)
+ {
+ LZ77UnCompVram(gPokenavCityMaps[var1][i], gPokenavStructPtr->unkBC9C[var2]);
+ gPokenavStructPtr->unkCDCC[var1][i] = gPokenavStructPtr->unkBC9C[var2];
+ var2++;
+ }
+ else
+ {
+ gPokenavStructPtr->unkCDCC[var1][i] = NULL;
+ }
+ }
+
+ if (++gPokenavStructPtr->unkBC9A >= 16)
+ return FALSE;
+
+ gPokenavStructPtr->unkBC9B = var2;
+ return TRUE;
+}
+
+void sub_80EFD3C(void)
+{
+ gPokenavStructPtr->unk769E = 0;
+ gPokenavStructPtr->unk769C = 47;
+ gPokenavStructPtr->unk769D = 0;
+ gPokenavStructPtr->unk769A = 0;
+}
+
+void sub_80EFD74(void)
+{
+ gPokenavStructPtr->unk769E = 1;
+ if (gPokenavStructPtr->unk769D == 1)
+ gPokenavStructPtr->unk769D = 2;
+}
+
+void sub_80EFDA0(void)
+{
+ sub_8095C8C((void *)VRAM + 0xF800, 14, 16, gUnknown_08E9AC2C, 0, 0, 15, 1, 15);
+ gPokenavStructPtr->unk769E = 0;
+}
+
+void sub_80EFDE4(u8 param0)
+{
+ u16 var1 = 60 - gPokenavStructPtr->unk769C;
+
+ if (var1 > 15)
+ var1 = 15;
+
+ if (gPokenavStructPtr->unk769E != 0)
+ {
+ sub_8095C8C((void *)VRAM + 0xF800, 14, 16, gUnknown_08E9ABB4, gPokenavStructPtr->unk769C, 0, var1, 1, 60);
+
+ if (var1 < 15)
+ {
+ u16 var2 = var1 + 14;
+
+ sub_8095C8C((void *)VRAM + 0xF800, var2, 16, gUnknown_08E9ABB4, 0, 0, (u16)(15 - var1), 1, 60);
+ }
+ }
+}
+
+void sub_80EFE7C(void)
+{
+ u16 var1;
+ u8 var2 = gPokenavStructPtr->unk769D;
+
+ switch (var2)
+ {
+ case 0:
+ var1 = ++gPokenavStructPtr->unk769C;
+
+ if (var1 > 59)
+ gPokenavStructPtr->unk769C = var2;
+
+ sub_80EFDE4(gPokenavStructPtr->unk769E);
+
+ switch (gPokenavStructPtr->unk769C)
+ {
+ case 0:
+ case 15:
+ case 30:
+ case 45:
+ gPokenavStructPtr->unk769D = 1;
+ gPokenavStructPtr->unk769A = 0;
+ break;
+ }
+ break;
+ case 1:
+ var1 = ++gPokenavStructPtr->unk769A;
+ if (var1 > 120)
+ {
+ gPokenavStructPtr->unk769A = 0;
+ gPokenavStructPtr->unk769D = 0;
+ }
+ break;
+ case 2:
+ sub_80EFDE4(1);
+ gPokenavStructPtr->unk769D = 1;
+ break;
+ }
+}
+
+void sub_80EFF34(void)
+{
+ gPokenavStructPtr->unkD160 = 0;
+
+ if (gPokenavStructPtr->unk6DAC == 0)
+ {
+ while (sub_80EFF68())
+ ;
+ }
+}
+
+bool8 sub_80EFF68(void)
+{
+ switch (gPokenavStructPtr->unkD160)
+ {
+ case 0:
+ sub_80EEDE8();
+ gPokenavStructPtr->unkD162 = 11;
+ break;
+ case 1:
+ Text_LoadWindowTemplate(&gWindowTemplate_81E7080);
+ break;
+ case 2:
+ MultistepInitMenuWindowBegin(&gWindowTemplate_81E7080);
+ break;
+ case 3:
+ if (!MultistepInitMenuWindowContinue())
+ return TRUE;
+ break;
+ case 4:
+ Menu_EraseScreen();
+ break;
+ case 5:
+ sub_80F1614();
+ break;
+ case 6:
+ if (sub_80F162C(0))
+ return TRUE;
+ break;
+ case 7:
+ LZ77UnCompVram(gPokenavConditionView_Gfx, (void *)VRAM + 0x5000);
+ break;
+ case 8:
+ LZ77UnCompVram(gUnknown_08E9AC4C, (void *)VRAM + 0xF000);
+ LoadPalette(gPokenavConditionMenu2_Pal, 0x20, 0x20);
+ break;
+ case 9:
+ if (gPokenavStructPtr->unk76AA == 1)
+ sub_8095C8C((void *)VRAM + 0xF000, 0, 5, gUnknown_083E01AC, 0, 0, 9, 4, 9);
+ break;
+ case 10:
+ LZ77UnCompVram(gUnknown_08E9FEB4, (void *)VRAM + 0xB800);
+ break;
+ case 11:
+ LoadPalette(gUnknown_083E0254, 0x30, 0x20);
+ LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
+ LoadPalette(&gPokenavConditionMenu2_Pal[2], 0xB1, 0x2);
+ LoadPalette(&gPokenavConditionMenu2_Pal[16], 0xB5, 0x2);
+ LoadPalette(&gPokenavConditionMenu2_Pal[30], 0xBF, 0x2);
+ sub_80F01A4();
+ break;
+ case 12:
+ sub_80F01E0(gPokenavStructPtr->unk8fe9);
+ break;
+ case 13:
+ REG_BG3CNT = 0x1E03;
+ REG_BG2CNT = 0x1702;
+ REG_BLDCNT = 0x844;
+ REG_BLDALPHA = 0x40B;
+ break;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unkD160++;
+ return TRUE;
+}
+
+void sub_80F0174(bool8 bg2on)
+{
+ if (bg2on)
+ REG_DISPCNT |= DISPCNT_BG2_ON;
+ else
+ REG_DISPCNT &= ~DISPCNT_BG2_ON;
+}
+
+void sub_80F01A4(void)
+{
+ REG_WIN0H = WIN_RANGE(0, 240);
+ REG_WIN1H = WIN_RANGE(0, 155);
+ REG_WIN0V = WIN_RANGE(56, 121);
+ REG_WIN1V = WIN_RANGE(56, 121);
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x001B;
+}
+
+void sub_80F01E0(u16 a)
+{
+ Menu_PrintText(gPokenavStructPtr->unk8829[a], 13, 1);
+
+ if (gPokenavStructPtr->unk76AA == 1)
+ {
+ Menu_PrintText(gPokenavStructPtr->unk88E9[a], 13, 3);
+ sub_80F443C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk2);
+ Menu_PrintText(gPokenavStructPtr->unk8788, 1, 6);
+ }
+}
+
+void sub_80F0264(u8 a)
+{
+ gPokenavStructPtr->unk306 = 0;
+ gPokenavStructPtr->unk87CA = a;
+
+ if (gPokenavStructPtr->unk6DAC == 0)
+ {
+ while (sub_80F02A0())
+ ;
+ }
+}
+
+bool8 sub_80F02A0(void)
+{
+ const u16 *pointer;
+
+ switch (gPokenavStructPtr->unk306)
+ {
+ case 0:
+ sub_80EEDE8();
+
+ gPokenavStructPtr->unk87C8 = gPokenavStructPtr->unk87CA == 1;
+ gPokenavStructPtr->unkD162 = 11;
+ break;
+ case 1:
+ Text_LoadWindowTemplate(&gWindowTemplate_81E70D4);
+ break;
+ case 2:
+ MultistepInitMenuWindowBegin(&gWindowTemplate_81E70D4);
+ break;
+ case 3:
+ if (!MultistepInitMenuWindowContinue())
+ {
+ return TRUE;
+ }
+ break;
+ case 4:
+ Menu_EraseScreen();
+ break;
+ case 5:
+ LZ77UnCompVram(gUnknown_08E9FC64, (void *)VRAM + 0xE800);
+ break;
+ case 6:
+ LZ77UnCompVram(gPokenavConditionSearch2_Gfx, (void *)VRAM + 0x8000);
+ break;
+ case 7:
+ LoadPalette(gUnknown_083E02B4, 0xB0, 0x20);
+ LoadPalette(gUnknown_083E02B4, 0xF0, 0x20);
+ LoadPalette(gUnknown_083E0334, 0x40, 0x20);
+
+ if (gPokenavStructPtr->unk87CA == 0)
+ {
+ LoadPalette(gPokenavConditionSearch2_Pal, 0x30, 0x20);
+ gPlttBufferUnfaded[0] = gPokenavConditionSearch2_Pal[5];
+ LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
+ LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2);
+ LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2);
+ LoadPalette(&gPokenavConditionSearch2_Pal[5], 0xBF, 0x2);
+ }
+ else if (gPokenavStructPtr->unk87CA == 1)
+ {
+ LoadPalette(gUnknown_083E0274, 0x30, 0x20);
+ gPlttBufferUnfaded[0] = gUnknown_083E0274[5];
+ LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
+ LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2);
+ LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2);
+ LoadPalette(&gUnknown_083E0274[5], 0xBF, 0x2);
+ }
+ else
+ {
+ LoadPalette(gUnknown_08E9F9E8, 0x30, 0x20);
+ gPlttBufferUnfaded[0] = *(pointer = &gUnknown_08E9F9E8[5]);
+ LoadPalette(gUnknown_083E0314, 0x50, 0x20);
+ LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2);
+ LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2);
+ LoadPalette(pointer, 0xBF, 0x2);
+ LoadPalette(pointer, 0x5F, 0x2);
+ }
+ break;
+ case 8:
+ if (gPokenavStructPtr->unk87CA != 2)
+ {
+ sub_8095C8C((void *)VRAM + 0xE800, 0, 5, gUnknown_08E9FD1C, 0, 0, 9, 4, 9);
+ }
+ else
+ {
+ sub_8095C8C((void *)VRAM + 0xE800, 0, 4, gUnknown_08E9FE54, 0, 0, 12, 10, 12);
+ sub_8095C8C((void *)VRAM + 0xE800, 0, 8, gUnknown_08E9FD64, 0, 0, 12, 10, 12);
+ }
+ break;
+ case 9:
+ LZ77UnCompVram(gUnknown_083E0354, (void *)VRAM + 0x5000);
+ break;
+ case 10:
+ DmaClear16(3, (void *)VRAM + 0xF800, 0x800);
+ break;
+ case 11:
+ sub_80F0900();
+ break;
+ case 12:
+ if (sub_80F0944())
+ {
+ return TRUE;
+ }
+ break;
+ case 13:
+ if (gPokenavStructPtr->unk87CA != 2)
+ {
+ ShowMapNamePopUpWindow();
+ }
+ else
+ {
+ sub_80F081C(0);
+ sub_80F0FFC((u8)gPokenavStructPtr->unk876E);
+ }
+ break;
+ case 14:
+ REG_BG2CNT = 0x1D0A;
+ REG_BG3CNT = 0x1E03;
+ REG_BG0CNT = 0x1F01;
+ REG_BG3VOFS = 0xF8;
+
+ gPokenavStructPtr->unk8776 = 0xF8;
+ gPokenavStructPtr->unk8778 = 0;
+
+ REG_BLDCNT = 0;
+ gPokenavStructPtr->unkD160++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unk306++;
+ return TRUE;
+}
+
+void sub_80F063C(s16 arg0)
+{
+ s16 var0;
+ s16 var1;
+ s16 var2;
+
+ gPokenavStructPtr->unk877C = arg0 * 16;
+ gPokenavStructPtr->unk877A = (arg0 == 1 || arg0 == -1) ? 4 : 8;
+ if (arg0 < 0)
+ {
+ gPokenavStructPtr->unk877A *= -1;
+ var0 = arg0 * 2 + gPokenavStructPtr->unk8778;
+ var1 = arg0 + gPokenavStructPtr->unk8770;
+ if (var1 < 0)
+ var1 += gPokenavStructPtr->unk8774 + 1;
+
+ arg0 *= -1;
+ }
+ else
+ {
+ var0 = gPokenavStructPtr->unk8778 + 16;
+ var1 = gPokenavStructPtr->unk8772 + 1;
+ }
+
+ if (var1 > gPokenavStructPtr->unk8774)
+ var1 = 0;
+
+ var2 = var0 & 0x1F;
+ sub_80F0954(var1, var2, arg0);
+}
+
+bool8 sub_80F0718(void)
+{
+ if (!sub_80F098C())
+ {
+ if (gPokenavStructPtr->unk877C == 0)
+ return FALSE;
+
+ gPokenavStructPtr->unk877C -= gPokenavStructPtr->unk877A;
+ gPokenavStructPtr->unk8776 += gPokenavStructPtr->unk877A;
+ gPokenavStructPtr->unk8776 &= 0xFF;
+ REG_BG3VOFS = gPokenavStructPtr->unk8776;
+ if (gPokenavStructPtr->unk877C == 0)
+ {
+ gPokenavStructPtr->unk8778 = ((8 + gPokenavStructPtr->unk8776) & 0xFF) / 8;
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+void ShowMapNamePopUpWindow(void)
+{
+ switch (gPokenavStructPtr->unk87CA)
+ {
+ case 0:
+ sub_80F443C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk893c[gPokenavStructPtr->unk876E].unk2);
+ break;
+ case 1:
+ sub_80F445C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk876E + 1);
+ break;
+ default:
+ return;
+ }
+
+ BasicInitMenuWindow(&gWindowTemplate_81E710C);
+ Menu_PrintText(gPokenavStructPtr->unk8788, 1, 6);
+}
+
+void sub_80F081C(u8 arg0)
+{
+ u32 numTrainerBattles;
+
+ BasicInitMenuWindow(&gWindowTemplate_81E710C);
+ switch (arg0)
+ {
+ case 0:
+ case 1:
+ MenuPrint_RightAligned(gOtherText_NumberRegistered, 10, 9);
+ if (arg0 != 0)
+ break;
+ // fall through
+ case 2:
+ ConvertIntToDecimalStringN(
+ gPokenavStructPtr->unk8788,
+ gPokenavStructPtr->unk8774 + 1,
+ STR_CONV_MODE_RIGHT_ALIGN,
+ 5);
+ MenuPrint_RightAligned(gPokenavStructPtr->unk8788, 10, 11);
+ if (arg0 != 0)
+ break;
+ // fall through
+ case 3:
+ MenuPrint_RightAligned(gOtherText_NumberBattles, 10, 13);
+ if (arg0 != 0)
+ break;
+ // fall through
+ case 4:
+ numTrainerBattles = GetGameStat(GAME_STAT_TRAINER_BATTLES);
+ if (numTrainerBattles > 99999)
+ numTrainerBattles = 99999;
+
+ ConvertIntToDecimalStringN(
+ gPokenavStructPtr->unk8788,
+ numTrainerBattles,
+ STR_CONV_MODE_RIGHT_ALIGN,
+ 5);
+ MenuPrint_RightAligned(gPokenavStructPtr->unk8788, 10, 15);
+ break;
+ }
+}
+
+void sub_80F08E4(void)
+{
+ BasicInitMenuWindow(&gWindowTemplate_81E710C);
+ Menu_EraseWindowRect(0, 9, 11, 16);
+}
+
+void sub_80F0900(void)
+{
+ s16 var0 = (gPokenavStructPtr->unk8772 - gPokenavStructPtr->unk8770) + 1;
+ if (var0 < 8)
+ Menu_EraseWindowRect(12, 1, 31, 15);
+
+ sub_80F0954(gPokenavStructPtr->unk8770, 0, var0);
+}
+
+bool8 sub_80F0944(void)
+{
+ return sub_80F098C();
+}
+
+void sub_80F0954(u16 arg0, u16 arg1, u16 arg2)
+{
+ gPokenavStructPtr->unk877E = arg0;
+ gPokenavStructPtr->unk8780 = arg1;
+ gPokenavStructPtr->unk8784 = arg2;
+ gPokenavStructPtr->unk8786 = 0;
+}
+
+#ifdef NONMATCHING
+bool8 sub_80F098C(void)
+{
+ register u16 zero asm("r8");
+ if (!gPokenavStructPtr->unk8784)
+ {
+ DONE:
+ return FALSE;
+ }
+
+ zero = 0;
+ gUnknown_083E3270[gPokenavStructPtr->unk87CA](gPokenavStructPtr->unk877E, gPokenavStructPtr->unk8780);
+ if (!--gPokenavStructPtr->unk8784)
+ goto DONE;
+
+ if ((++gPokenavStructPtr->unk877E & 0xFFFF) > gPokenavStructPtr->unk8774)
+ gPokenavStructPtr->unk877E = zero;
+
+ gPokenavStructPtr->unk8780 += 2;
+ gPokenavStructPtr->unk8780 &= 0x1F;
+ return TRUE;
+}
+#else
+NAKED
+bool8 sub_80F098C(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ ldr r0, _080F09A4 @ =gPokenavStructPtr\n\
+ ldr r6, [r0]\n\
+ ldr r0, _080F09A8 @ =0x00008784\n\
+ adds r7, r6, r0\n\
+ ldrh r0, [r7]\n\
+ cmp r0, 0\n\
+ bne _080F09AC\n\
+_080F09A0:\n\
+ movs r0, 0\n\
+ b _080F0A02\n\
+ .align 2, 0\n\
+_080F09A4: .4byte gPokenavStructPtr\n\
+_080F09A8: .4byte 0x00008784\n\
+_080F09AC:\n\
+ movs r1, 0\n\
+ mov r8, r1\n\
+ ldr r1, _080F0A0C @ =gUnknown_083E3270\n\
+ ldr r2, _080F0A10 @ =0x000087ca\n\
+ adds r0, r6, r2\n\
+ ldrb r2, [r0]\n\
+ lsls r2, 2\n\
+ adds r2, r1\n\
+ ldr r0, _080F0A14 @ =0x0000877e\n\
+ adds r4, r6, r0\n\
+ ldrh r0, [r4]\n\
+ ldr r1, _080F0A18 @ =0x00008780\n\
+ adds r5, r6, r1\n\
+ ldrh r1, [r5]\n\
+ ldr r2, [r2]\n\
+ bl _call_via_r2\n\
+ ldrh r0, [r7]\n\
+ subs r0, 0x1\n\
+ strh r0, [r7]\n\
+ ldr r2, _080F0A1C @ =0x0000ffff\n\
+ adds r1, r2, 0\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _080F09A0\n\
+ ldrh r0, [r4]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4]\n\
+ ands r0, r1\n\
+ ldr r2, _080F0A20 @ =0x00008774\n\
+ adds r1, r6, r2\n\
+ movs r2, 0\n\
+ ldrsh r1, [r1, r2]\n\
+ cmp r0, r1\n\
+ ble _080F09F6\n\
+ mov r0, r8\n\
+ strh r0, [r4]\n\
+_080F09F6:\n\
+ ldrh r0, [r5]\n\
+ adds r0, 0x2\n\
+ movs r1, 0x1F\n\
+ ands r0, r1\n\
+ strh r0, [r5]\n\
+ movs r0, 0x1\n\
+_080F0A02:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080F0A0C: .4byte gUnknown_083E3270\n\
+_080F0A10: .4byte 0x000087ca\n\
+_080F0A14: .4byte 0x0000877e\n\
+_080F0A18: .4byte 0x00008780\n\
+_080F0A1C: .4byte 0x0000ffff\n\
+_080F0A20: .4byte 0x00008774\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80F0A24(u16 arg0, u16 arg1)
+{
+ u8 var0 = gPokenavStructPtr->unk87C8 == 0 ? 2 : 1;
+ sub_80F4428(gPokenavStructPtr->unk8788, arg0, var0);
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ Menu_PrintText(gPokenavStructPtr->unk8788, 13, arg1);
+}
+
+void sub_80F0A74(u16 arg0, u16 arg1)
+{
+ sub_80F700C(gPokenavStructPtr->unk8788, arg0);
+ arg1 &= 0x1F;
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, arg1 * 8, 0);
+ if (arg0 < gPokenavStructPtr->unkD158 && gPokenavStructPtr->trainersEye[arg0].rematchNo != 0)
+ sub_8095C8C((void *)VRAM + 0xF000, 29, arg1, gUnknown_083E039C, 0, 0, 1, 2, 1);
+ else
+ sub_8095C8C((void *)VRAM + 0xF000, 29, arg1, gUnknown_083E03A0, 0, 0, 1, 2, 1);
+}
+
+void sub_80F0B24(void)
+{
+ gPokenavStructPtr->unkD15C = 0;
+ gPokenavStructPtr->unk306 = 0;
+}
+
+bool8 sub_80F0B44(void)
+{
+ int top;
+ if (gPokenavStructPtr->unkD15C > 8)
+ {
+ return FALSE;
+ }
+
+ if (++gPokenavStructPtr->unk306 > 1)
+ {
+ gPokenavStructPtr->unk306 = 0;
+ if (gPokenavStructPtr->unkD15C < 8)
+ {
+ top = (gPokenavStructPtr->unk8778 + (gPokenavStructPtr->unkD15C * 2)) & 0x1F;
+ if (gPokenavStructPtr->unkD15C != gPokenavStructPtr->unk876C)
+ {
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ Menu_EraseWindowRect(12, top, 31, top + 1);
+ }
+
+ if (!gPokenavStructPtr->unkD15C)
+ sub_80F08E4();
+
+ gPokenavStructPtr->unkD15C++;
+ return TRUE;
+ }
+ else
+ {
+ u16 i;
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ top = (gPokenavStructPtr->unk8778 + 16) & 0x1F;
+ for (i = 0; i < 8; i++)
+ {
+ Menu_EraseWindowRect(12, top, 31, top + 1);
+ top = (top + 2) & 0x1F;
+ }
+
+ gPokenavStructPtr->unkD15C++;
+ return FALSE;
+ }
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+void sub_80F0C28(void)
+{
+ gPokenavStructPtr->unkD15C = 0;
+ gPokenavStructPtr->unk306 = 0;
+}
+
+bool8 sub_80F0C48(void)
+{
+ if (gPokenavStructPtr->unkD15C > 7)
+ return FALSE;
+
+ if (++gPokenavStructPtr->unk306 > 1)
+ {
+ gPokenavStructPtr->unk306 = 0;
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ sub_80F0A74(gPokenavStructPtr->unk8770 + gPokenavStructPtr->unkD15C,
+ gPokenavStructPtr->unk8778 + gPokenavStructPtr->unkD15C * 2);
+
+ if ((++gPokenavStructPtr->unkD15C) > 7)
+ {
+ sub_80F081C(0);
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+void LoadTrainerEyesDescriptionLines(void)
+{
+ u16 i;
+ int trainerEyesId;
+ const u8 *curChar;
+
+ gPokenavStructPtr->unk306 = 0;
+ gPokenavStructPtr->unkD15C = 0;
+ trainerEyesId = gPokenavStructPtr->trainersEye[gPokenavStructPtr->unk876E].rematchTableIdx;
+ gPokenavStructPtr->trainerEyeDescriptionLines[0] = gTrainerEyeDescriptions[trainerEyesId];
+
+ // Find the start of the 3 other lines in the Trainer's Eyes description.
+ curChar = gPokenavStructPtr->trainerEyeDescriptionLines[0];
+ for (i = 0; i < 3; i++)
+ {
+ while (*curChar != EOS)
+ curChar++;
+ gPokenavStructPtr->trainerEyeDescriptionLines[i + 1] = ++curChar;
+ }
+}
+
+#ifdef NONMATCHING
+// small register mismatch (r2/r3) on the line where var0 is set.
+bool8 sub_80F0D5C(void)
+{
+ int var0;
+ if (gPokenavStructPtr->unkD15C == 7)
+ return FALSE;
+
+ if (++gPokenavStructPtr->unk306 > 1)
+ {
+ gPokenavStructPtr->unk306 = 0;
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ var0 = (gPokenavStructPtr->unk8778 + 2 + gPokenavStructPtr->unkD15C * 2) & 0x1F;
+ switch (gPokenavStructPtr->unkD15C)
+ {
+ case 0:
+ Menu_PrintTextPixelCoords(gOtherText_Strategy, 97, var0 * 8, 0);
+ break;
+ case 1:
+ AlignStringInMenuWindow(
+ gPokenavStructPtr->unk8788,
+ gPokenavStructPtr->trainerEyeDescriptionLines[0],
+ 136,
+ 0);
+ Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0);
+ break;
+ case 2:
+ Menu_PrintTextPixelCoords(gOtherText_TrainersPokemon, 97, var0 * 8, 0);
+ break;
+ case 3:
+ AlignStringInMenuWindow(
+ gPokenavStructPtr->unk8788,
+ gPokenavStructPtr->trainerEyeDescriptionLines[1],
+ 136,
+ 0);
+ Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0);
+ break;
+ case 4:
+ Menu_PrintTextPixelCoords(gOtherText_SelfIntroduction, 97, var0 * 8, 0);
+ break;
+ case 5:
+ AlignStringInMenuWindow(
+ gPokenavStructPtr->unk8788,
+ gPokenavStructPtr->trainerEyeDescriptionLines[2],
+ 136,
+ 0);
+ Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0);
+ break;
+ case 6:
+ AlignStringInMenuWindow(
+ gPokenavStructPtr->unk8788,
+ gPokenavStructPtr->trainerEyeDescriptionLines[3],
+ 136,
+ 0);
+ Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0);
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unkD15C++;
+ return TRUE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+#else
+NAKED
+bool8 sub_80F0D5C(void)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ ldr r0, _080F0D70 @ =gPokenavStructPtr\n\
+ ldr r4, [r0]\n\
+ ldr r0, _080F0D74 @ =0x0000d15c\n\
+ adds r5, r4, r0\n\
+ ldrh r0, [r5]\n\
+ cmp r0, 0x7\n\
+ bne _080F0D78\n\
+_080F0D6C:\n\
+ movs r0, 0\n\
+ b _080F0EB0\n\
+ .align 2, 0\n\
+_080F0D70: .4byte gPokenavStructPtr\n\
+_080F0D74: .4byte 0x0000d15c\n\
+_080F0D78:\n\
+ ldr r0, _080F0DB8 @ =0x00000306\n\
+ adds r1, r4, r0\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _080F0D8C\n\
+ b _080F0EAE\n\
+_080F0D8C:\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ ldr r0, _080F0DBC @ =gWindowTemplate_81E70D4\n\
+ bl BasicInitMenuWindow\n\
+ ldr r0, _080F0DC0 @ =0x00008778\n\
+ adds r1, r4, r0\n\
+ ldrh r3, [r5]\n\
+ lsls r0, r3, 1\n\
+ adds r0, 0x2\n\
+ ldrh r1, [r1]\n\
+ adds r5, r0, r1\n\
+ movs r0, 0x1F\n\
+ ands r5, r0\n\
+ cmp r3, 0x6\n\
+ bhi _080F0D6C\n\
+ lsls r0, r3, 2\n\
+ ldr r1, _080F0DC4 @ =_080F0DC8\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_080F0DB8: .4byte 0x00000306\n\
+_080F0DBC: .4byte gWindowTemplate_81E70D4\n\
+_080F0DC0: .4byte 0x00008778\n\
+_080F0DC4: .4byte _080F0DC8\n\
+ .align 2, 0\n\
+_080F0DC8:\n\
+ .4byte _080F0DE4\n\
+ .4byte _080F0DF0\n\
+ .4byte _080F0E08\n\
+ .4byte _080F0E14\n\
+ .4byte _080F0E2C\n\
+ .4byte _080F0E38\n\
+ .4byte _080F0E6C\n\
+_080F0DE4:\n\
+ ldr r0, _080F0DEC @ =gOtherText_Strategy\n\
+ lsls r2, r5, 3\n\
+ b _080F0E54\n\
+ .align 2, 0\n\
+_080F0DEC: .4byte gOtherText_Strategy\n\
+_080F0DF0:\n\
+ ldr r0, _080F0DFC @ =gPokenavStructPtr\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080F0E00 @ =0x00008788\n\
+ adds r4, r0, r1\n\
+ ldr r1, _080F0E04 @ =0x0000d110\n\
+ b _080F0E42\n\
+ .align 2, 0\n\
+_080F0DFC: .4byte gPokenavStructPtr\n\
+_080F0E00: .4byte 0x00008788\n\
+_080F0E04: .4byte 0x0000d110\n\
+_080F0E08:\n\
+ ldr r0, _080F0E10 @ =gOtherText_TrainersPokemon\n\
+ lsls r2, r5, 3\n\
+ b _080F0E54\n\
+ .align 2, 0\n\
+_080F0E10: .4byte gOtherText_TrainersPokemon\n\
+_080F0E14:\n\
+ ldr r0, _080F0E20 @ =gPokenavStructPtr\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080F0E24 @ =0x00008788\n\
+ adds r4, r0, r1\n\
+ ldr r1, _080F0E28 @ =0x0000d114\n\
+ b _080F0E42\n\
+ .align 2, 0\n\
+_080F0E20: .4byte gPokenavStructPtr\n\
+_080F0E24: .4byte 0x00008788\n\
+_080F0E28: .4byte 0x0000d114\n\
+_080F0E2C:\n\
+ ldr r0, _080F0E34 @ =gOtherText_SelfIntroduction\n\
+ lsls r2, r5, 3\n\
+ b _080F0E54\n\
+ .align 2, 0\n\
+_080F0E34: .4byte gOtherText_SelfIntroduction\n\
+_080F0E38:\n\
+ ldr r0, _080F0E60 @ =gPokenavStructPtr\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080F0E64 @ =0x00008788\n\
+ adds r4, r0, r1\n\
+ ldr r1, _080F0E68 @ =0x0000d118\n\
+_080F0E42:\n\
+ adds r0, r1\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ movs r2, 0x88\n\
+ movs r3, 0\n\
+ bl AlignStringInMenuWindow\n\
+ lsls r2, r5, 3\n\
+ adds r0, r4, 0\n\
+_080F0E54:\n\
+ movs r1, 0x61\n\
+ movs r3, 0\n\
+ bl Menu_PrintTextPixelCoords\n\
+ b _080F0EA0\n\
+ .align 2, 0\n\
+_080F0E60: .4byte gPokenavStructPtr\n\
+_080F0E64: .4byte 0x00008788\n\
+_080F0E68: .4byte 0x0000d118\n\
+_080F0E6C:\n\
+ ldr r0, _080F0E94 @ =gPokenavStructPtr\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080F0E98 @ =0x00008788\n\
+ adds r4, r0, r1\n\
+ ldr r1, _080F0E9C @ =0x0000d11c\n\
+ adds r0, r1\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ movs r2, 0x88\n\
+ movs r3, 0\n\
+ bl AlignStringInMenuWindow\n\
+ lsls r2, r5, 3\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x61\n\
+ movs r3, 0\n\
+ bl Menu_PrintTextPixelCoords\n\
+ b _080F0D6C\n\
+ .align 2, 0\n\
+_080F0E94: .4byte gPokenavStructPtr\n\
+_080F0E98: .4byte 0x00008788\n\
+_080F0E9C: .4byte 0x0000d11c\n\
+_080F0EA0:\n\
+ ldr r0, _080F0EB8 @ =gPokenavStructPtr\n\
+ ldr r1, [r0]\n\
+ ldr r0, _080F0EBC @ =0x0000d15c\n\
+ adds r1, r0\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+_080F0EAE:\n\
+ movs r0, 0x1\n\
+_080F0EB0:\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080F0EB8: .4byte gPokenavStructPtr\n\
+_080F0EBC: .4byte 0x0000d15c\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_80F0EC0(void)
+{
+ gPokenavStructPtr->unk306 = 0;
+ gPokenavStructPtr->unkD15C = 0;
+ StringFill(gPokenavStructPtr->unk8788, CHAR_SPACE, 16);
+}
+
+bool8 sub_80F0EF4(void)
+{
+ int top;
+ if (gPokenavStructPtr->unkD15C > 6)
+ return FALSE;
+
+ if (++gPokenavStructPtr->unk306 > 1)
+ {
+ gPokenavStructPtr->unk306 = 0;
+ top = (gPokenavStructPtr->unk8778 + 2 + gPokenavStructPtr->unkD15C * 2) & 0x1F;
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ Menu_EraseWindowRect(12, top, 31, top + 1);
+ gPokenavStructPtr->unkD15C++;
+ }
+
+ return TRUE;
+}
+
+void sub_80F0F64(void)
+{
+ s16 var0 = gPokenavStructPtr->unk876C;
+ gPokenavStructPtr->unk877C = var0 * 16;
+ gPokenavStructPtr->unk877A = var0 == 1 ? 4 : 8;
+}
+
+void sub_80F0FA0(void)
+{
+ s16 var0 = gPokenavStructPtr->unk876C * -1;
+ gPokenavStructPtr->unk877C = var0 * 16;
+ gPokenavStructPtr->unk877A = var0 == -1 ? -4 : -8;
+}
+
+bool8 sub_80F0FEC(void)
+{
+ return sub_80F0718();
+}
+
+void sub_80F0FFC(u8 arg0)
+{
+ GetMapSectionName(gPokenavStructPtr->unk8788, gPokenavStructPtr->trainersEye[arg0].regionMapSectionId, 0);
+ BasicInitMenuWindow(&gWindowTemplate_81E710C);
+ sub_80F19DC(gPokenavStructPtr->unk8788);
+ AlignStringInMenuWindow(gPokenavStructPtr->unkD138, gPokenavStructPtr->unk8788, 88, 2);
+ Menu_PrintText(gPokenavStructPtr->unkD138, 0, 5);
+}
+
+void sub_80F105C(void)
+{
+ sub_80F0A74(gPokenavStructPtr->unk876E, gPokenavStructPtr->unk8778);
+}
+
+bool8 sub_80F1080(void)
+{
+ switch (gPokenavStructPtr->unkD160)
+ {
+ case 0:
+ sub_80EEDE8();
+ gPokenavStructPtr->unkD162 = 11;
+ break;
+ case 1:
+ Text_LoadWindowTemplate(&gWindowTemplate_81E70B8);
+ break;
+ case 2:
+ MultistepInitMenuWindowBegin(&gWindowTemplate_81E70B8);
+ break;
+ case 3:
+ if (!MultistepInitMenuWindowContinue())
+ return TRUE;
+ break;
+ case 4:
+ Menu_EraseScreen();
+ break;
+ case 5:
+ sub_80F1614();
+ break;
+ case 6:
+ if (sub_80F162C(1))
+ return TRUE;
+ break;
+ case 7:
+ LZ77UnCompWram(gUnknown_08E9FBA0, gPokenavStructPtr->unk934C);
+ break;
+ case 8:
+ DrawMonRibbonIcons();
+ break;
+ case 9:
+ sub_80F13FC();
+ break;
+ case 10:
+ LZ77UnCompVram(gPokenavRibbonView_Gfx, (void *)(VRAM + 0x8000));
+ break;
+ case 11:
+ LZ77UnCompVram(gUnknown_083E040C, (void *)(VRAM + 0x8200));
+ break;
+ case 12:
+ LoadPalette(gPokenavRibbonView_Pal, 0x20, 0x20);
+ LoadPalette(gUnknown_083E03A8, 0xF0, 0x20);
+ LoadPalette(gUnknown_083E3C60[0], 0x30, 0xA0);
+ LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
+ LoadPalette(gUnknown_083E03A8 + 0xF, 0xBF, 0x2);
+ break;
+ case 13:
+ sub_80F1438();
+ break;
+ case 14:
+ REG_BG2CNT = 0x1E02;
+ REG_BG3CNT = 0x170B;
+ REG_BLDCNT = 0;
+ gPokenavStructPtr->unkD160++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unkD160++;
+ return TRUE;
+}
+
+void DrawMonRibbonIcons(void)
+{
+ u16 i;
+ u16 offset;
+ u8 index, palette, tile;
+ u8 var0;
+
+ offset = 0x8B;
+ var0 = gPokenavStructPtr->unkBC8E - gPokenavStructPtr->unkBC8F;
+
+ for (i = 0; i < 8; i++)
+ CpuFill16(0x2000, &gPokenavStructPtr->unk934C[offset + i * 32], 0x24);
+
+ for (i = 0; i < var0; i++)
+ {
+ index = gPokenavStructPtr->unkBC4C[i];
+ palette = gPokenavRibbonsIconGfx[index][1] + 3;
+ tile = gPokenavRibbonsIconGfx[index][0] * 2 + 0x10;
+ gPokenavStructPtr->unk934C[offset] = (palette << 12) | tile;
+ gPokenavStructPtr->unk934C[offset + 1] = ((palette << 12) | 0x400) | tile;
+ gPokenavStructPtr->unk934C[offset + 0x20] = (palette << 12) | (tile + 1);
+ gPokenavStructPtr->unk934C[offset + 0x21] = (palette << 12) | 0x400 | (tile + 1);
+
+ if ((i + 1) % 9 == 0)
+ offset += 0x30;
+ else
+ offset += 2;
+ }
+
+ offset = 0x14B;
+ for (i = 0; i < gPokenavStructPtr->unkBC8F; i++)
+ {
+ index = gPokenavStructPtr->unkBC4C[var0 + i];
+ palette = gPokenavRibbonsIconGfx[index][1] + 3;
+ tile = gPokenavRibbonsIconGfx[index][0] * 2 + 0x10;
+ gPokenavStructPtr->unk934C[offset] = (palette << 12) | tile;
+ gPokenavStructPtr->unk934C[offset + 1] = ((palette << 12) | 0x400) | tile;
+ gPokenavStructPtr->unk934C[offset + 0x20] = (palette << 12) | (tile + 1);
+ gPokenavStructPtr->unk934C[offset + 0x21] = (palette << 12) | 0x400 | (tile + 1);
+
+ offset += 2;
+ }
+}
+
+void sub_80F13FC(void)
+{
+ u16 *src = gPokenavStructPtr->unk934C;
+ u16 *dest = (u16 *)(VRAM + 0xB800);
+ DmaCopy32(3, src, dest, 0x500);
+ gPlttBufferUnfaded[0] = *(gPokenavRibbonView_Pal + 14);
+}
+
+void sub_80F1438(void)
+{
+ Menu_PrintText(gPokenavStructPtr->unk8829[0], 13, 1);
+ sub_80F445C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk876E + 1);
+ Menu_PrintText(gPokenavStructPtr->unk8788, 1, 5);
+}
+
+void sub_80F1480(void)
+{
+ Menu_EraseWindowRect(12, 13, 27, 16);
+}
+
+// This is a fakematching function, due to a hardcoded access of gSaveBlock1.
+// Due to this hardcoded address access, gift ribbons do not properly display
+// their descriptions, since the hardcoded access is inside of the LinkBattleRecords
+// save data, rather than the giftRibbons array, which is almost certainly what the
+// intended access is.
+void sub_80F1494(void)
+{
+ u8 *arr;
+ u8 *tileBuffer1 = &gUnknown_083DFEC8[0x800];
+ u8 *tileBuffer2 = &gUnknown_083DFEC8[0xA98];
+
+ if (gPokenavStructPtr->unkBC91 < 3)
+ {
+ gUnknown_020388B4 = gPokenavStructPtr->unkBC91 * 9 + gPokenavStructPtr->unkBC90;
+ gUnknown_020388B4 = gPokenavStructPtr->unkBC4C[gUnknown_020388B4];
+ AlignStringInMenuWindow(tileBuffer1, gRibbonDescriptions[gUnknown_020388B4][0], 128, 0);
+ AlignStringInMenuWindow(tileBuffer2, gRibbonDescriptions[gUnknown_020388B4][1], 128, 0);
+ }
+ else
+ {
+ gUnknown_020388B4 = gPokenavStructPtr->unkBC8E - gPokenavStructPtr->unkBC8F;
+ gUnknown_020388B4 = gPokenavStructPtr->unkBC4C[gUnknown_020388B4 + gPokenavStructPtr->unkBC90];
+
+ // FIXME!
+ arr = ((u8*)&gSaveBlock1);
+ asm("ldrh r1, [r5]\n\
+ add r0, r0, r1");
+ gUnknown_020388B4 = arr[0x30F7];
+ // The bug fix for this code is the following:
+ // gUnknown_020388B4 = gSaveBlock1.externalReservedData.giftRibbons[gUnknown_020388B4];
+ if (gUnknown_020388B4)
+ {
+ gUnknown_020388B4--;
+ AlignStringInMenuWindow(tileBuffer1, gGiftRibbonDescriptions[gUnknown_020388B4][0], 128, 0);
+ AlignStringInMenuWindow(tileBuffer2, gGiftRibbonDescriptions[gUnknown_020388B4][1], 128, 0);
+ }
+ else
+ {
+ AlignStringInMenuWindow(tileBuffer1, gEmptyString_81E72B0, 128, 0);
+ AlignStringInMenuWindow(tileBuffer2, gEmptyString_81E72B0, 128, 0);
+ }
+ }
+
+ Menu_PrintText(tileBuffer1, 12, 13);
+ Menu_PrintText(tileBuffer2, 12, 15);
+}
+
+void sub_80F15A8(void)
+{
+ u8 *buffer;
+ Menu_EraseWindowRect(12, 13, 27, 16);
+ buffer = StringCopy(gPokenavStructPtr->unk8788, gOtherText_Ribbons);
+ buffer[0] = CHAR_SPACE;
+ buffer++;
+ buffer = ConvertIntToDecimalStringN(
+ buffer,
+ gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk0,
+ STR_CONV_MODE_LEFT_ALIGN,
+ 2);
+ buffer[0] = EOS;
+ Menu_PrintText(gPokenavStructPtr->unk8788, 12, 13);
+}
+
+void sub_80F1614(void)
+{
+ gPokenavStructPtr->unk8764 = 0;
+}
+
+bool8 sub_80F162C(u8 arg0)
+{
+ switch (gPokenavStructPtr->unk8764)
+ {
+ case 0:
+ break;
+ case 1:
+ LZ77UnCompVram(gUnknown_08E9FF58, (void *)(VRAM + 0xE800));
+ break;
+ case 2:
+ DmaCopy16Defvars(3, gPokenavRibbonPokeView_Gfx, (void *)(VRAM + 0xE000), 0xE0);
+ break;
+ case 3:
+ if (!arg0)
+ LoadPalette(gUnknown_083E0124, 0xD0, 0x20);
+ else
+ LoadPalette(gUnknown_083E0144, 0xD0, 0x20);
+
+ gPokenavStructPtr->unk8766 = -80;
+ REG_BG0CNT = 0x1D0D;
+ gPokenavStructPtr->unk8764++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unk8764++;
+ return TRUE;
+}
+
+bool8 sub_80F170C(void)
+{
+ gPokenavStructPtr->unk8766 += 0x10;
+ if (gPokenavStructPtr->unk8766 > 0)
+ gPokenavStructPtr->unk8766 = 0;
+
+ return gPokenavStructPtr->unk8766 != 0;
+}
+
+bool8 sub_80F173C(void)
+{
+ gPokenavStructPtr->unk8766 -= 0x10;
+ if (gPokenavStructPtr->unk8766 < -0x50)
+ gPokenavStructPtr->unk8766 = -0x50;
+
+ return gPokenavStructPtr->unk8766 != -0x50;
+}
+
+bool8 sub_80F1778(void)
+{
+ switch (gPokenavStructPtr->unkD160)
+ {
+ case 0:
+ sub_80EEDE8();
+ gPokenavStructPtr->unkD162 = 2;
+ break;
+ case 1:
+ sub_80F1614();
+ break;
+ case 2:
+ if (sub_80F162C(0))
+ return TRUE;
+ break;
+ case 3:
+ LZ77UnCompVram(gPokenavConditionView_Gfx, (void *)(VRAM + 0x5000));
+ break;
+ case 4:
+ LZ77UnCompVram(gUnknown_08E9AC4C, (void *)(VRAM + 0xF000));
+ LoadPalette(gPokenavConditionMenu2_Pal, 0x20, 0x20);
+ break;
+ case 5:
+ sub_8095C8C((void *)VRAM + 0xF000, 0, 13, gUnknown_083E01F4, 0, 0, 12, 4, 12);
+ break;
+ case 6:
+ LZ77UnCompVram(gUnknown_08E9FEB4, (void *)(VRAM + 0xB800));
+ break;
+ case 7:
+ LoadPalette(gUnknown_083E0254, 0x30, 0x20);
+ LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
+ LoadPalette(&gPokenavConditionMenu2_Pal[2], 0xB1, 0x2);
+ LoadPalette(&gPokenavConditionMenu2_Pal[16], 0xB5, 0x2);
+ LoadPalette(&gPokenavConditionMenu2_Pal[30], 0xBF, 0x2);
+ sub_80F01A4();
+ break;
+ case 8:
+ sub_80F01E0(gPokenavStructPtr->unk8fe9);
+ break;
+ case 9:
+ REG_BG3CNT = 0x1E03;
+ REG_BG2CNT = 0x1702;
+ REG_BLDCNT = 0x844;
+ REG_BLDALPHA = 0x40B;
+ break;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unkD160++;
+ return TRUE;
+}
+
+void sub_80F1934(void)
+{
+ u8 *buffer = gPokenavStructPtr->unk8788;
+ if (gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk4)
+ {
+ u8 nature = GetNature(&gPlayerParty[sub_8137124(gPokenavStructPtr->unk87DC)]);
+ buffer = StringCopy(buffer, gOtherText_Nature2);
+ AlignStringInMenuWindow(buffer, gNatureNames[nature], 87, 0);
+ }
+ else
+ {
+ AlignStringInMenuWindow(buffer, gEmptyString_81E72B0, 87, 0);
+ }
+
+ Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 1, 112, 1);
+}
+
+void sub_80F19DC(u8 *text)
+{
+ while (text[0] != EOS)
+ {
+ if (text[0] == EXT_CTRL_CODE_BEGIN && text[1] == CHAR_SPACE)
+ {
+ text[0] = EOS;
+ break;
+ }
+
+ text++;
+ }
+}
+
+void sub_80F19FC(void)
+{
+ // FIXME r4/r5 swapped
+ register u8 *ptr asm("r5") = gUnknown_020388B0;
+ if (ptr[0] == 1)
+ {
+ const u8 *landmarkName = GetLandmarkName(
+ gPokenavStructPtr->regionMap.mapSectionId,
+ gPokenavStructPtr->regionMap.everGrandeCityArea,
+ ptr[1]);
+
+ if (landmarkName)
+ {
+ sub_8072A18(landmarkName, 0x70, 4 * (ptr[1] * 4 + 12), 0x78, 1);
+ if (++ptr[1] != 4)
+ return;
+ }
+
+ Menu_BlankWindowRect(14, ptr[1] * 2 + 6, 28, 15);
+ ptr[0] = 0;
+ }
+}
+
+void sub_80F1A74(void)
+{
+ gUnknown_020388B0[0] = 0;
+}
+
+void sub_80F1A80(void)
+{
+ gUnknown_020388B0[0] = 1;
+ gUnknown_020388B0[1] = 0;
+}
+
+void sub_80F1A90(void)
+{
+ gPokenavStructPtr->unk306 = 0;
+ if (gPokenavStructPtr->unk6DAC == 0)
+ while (sub_80F1AC4());
+}
+
+bool8 sub_80F1AC4(void)
+{
+ u16 i, j;
+
+ switch (gPokenavStructPtr->unk306)
+ {
+ case 0:
+ for (i = 0; i < 6; i++)
+ {
+ for (j = 0; j < 4; j++)
+ gPokenavStructPtr->unk320[i][j] = NULL;
+ }
+
+ gPokenavStructPtr->unk311 = 0;
+ break;
+ case 1:
+ LZ77UnCompWram(gPokenavMenuOptions_Gfx, gPokenavStructPtr->unk388);
+ break;
+ case 2:
+ LZ77UnCompWram(gPokenavConditionMenu_Gfx, gPokenavStructPtr->unk1788);
+ break;
+ case 3:
+ LZ77UnCompWram(gPokenavConditionSearch_Gfx, gPokenavStructPtr->unk2388);
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unk306++;
+ return TRUE;
+}
+
+void sub_80F1B8C(u8 arg0)
+{
+ gPokenavStructPtr->unk306 = 0;
+ if (gPokenavStructPtr->unk6DAC == 0)
+ while (sub_80F1BC8(arg0));
+}
+
+#ifdef NONMATCHING
+// very close, but for some reason, (i + 1) is being stored in sp[0x10]
+bool8 sub_80F1BC8(u8 arg0)
+{
+ u16 i, j;
+ u16 animNum;
+ u16 topOffset;
+ u16 height;
+ u16 middle;
+ u8 spriteId;
+
+ switch (gPokenavStructPtr->unk306)
+ {
+ case 0:
+ sub_80F2458(arg0);
+ break;
+ case 1:
+ sub_80F2514(arg0);
+ break;
+ case 2:
+ switch (arg0)
+ {
+ case 0:
+ topOffset = 42;
+ height = 20;
+ gPokenavStructPtr->unk30E = 5;
+ break;
+ case 1:
+ topOffset = 56;
+ height = 20;
+ gPokenavStructPtr->unk30E = 3;
+ break;
+ case 2:
+ topOffset = 40;
+ height = 16;
+ gPokenavStructPtr->unk30E = 6;
+ break;
+ default:
+ return FALSE;
+ }
+
+ animNum = 0;
+ for (i = 0; i < gPokenavStructPtr->unk30E; i++)
+ {
+ middle = (height * i) + topOffset - 8;
+ gPokenavStructPtr->unk314[i] = (middle << 8) | (middle + 0x11);
+ if (!arg0)
+ {
+ if (gPokenavStructPtr->unk6DB2[i] == 0)
+ {
+ for (j = 0; j < 4; j++)
+ gPokenavStructPtr->unk320[i][j] = NULL;
+ continue;
+ }
+ else
+ {
+ animNum = (gPokenavStructPtr->unk6DB2[i] - 1) * 4;
+ }
+ }
+
+ for (j = 0; j < 4; j++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83E4454, j * 32 + 256, (height * i) + topOffset, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gPokenavStructPtr->unk320[i][j] = &gSprites[spriteId];
+ gPokenavStructPtr->unk320[i][j]->data[0] = i;
+ gPokenavStructPtr->unk320[i][j]->data[1] = j;
+ gPokenavStructPtr->unk320[i][j]->data[2] = j * 32 + 152;
+ gPokenavStructPtr->unk320[i][j]->data[3] = j * 32 + 256;
+ StartSpriteAnim(gPokenavStructPtr->unk320[i][j], animNum++);
+
+ if ((arg0 == 2 || arg0 == 0) && i > 2)
+ gPokenavStructPtr->unk320[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(0x1);
+ }
+ }
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unk306++;
+ return TRUE;
+}
+#else
+NAKED
+bool8 sub_80F1BC8(u8 arg0)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ ldr r1, _080F1BF4 @ =gPokenavStructPtr\n\
+ ldr r2, [r1]\n\
+ ldr r3, _080F1BF8 @ =0x00000306\n\
+ adds r0, r2, r3\n\
+ ldrh r0, [r0]\n\
+ adds r3, r1, 0\n\
+ cmp r0, 0x1\n\
+ beq _080F1C0A\n\
+ cmp r0, 0x1\n\
+ bgt _080F1BFC\n\
+ cmp r0, 0\n\
+ beq _080F1C02\n\
+ b _080F1DC4\n\
+ .align 2, 0\n\
+_080F1BF4: .4byte gPokenavStructPtr\n\
+_080F1BF8: .4byte 0x00000306\n\
+_080F1BFC:\n\
+ cmp r0, 0x2\n\
+ beq _080F1C12\n\
+ b _080F1DC4\n\
+_080F1C02:\n\
+ mov r0, r9\n\
+ bl sub_80F2458\n\
+ b _080F1DC8\n\
+_080F1C0A:\n\
+ mov r0, r9\n\
+ bl sub_80F2514\n\
+ b _080F1DC8\n\
+_080F1C12:\n\
+ mov r4, r9\n\
+ cmp r4, 0x1\n\
+ beq _080F1C40\n\
+ cmp r4, 0x1\n\
+ bgt _080F1C22\n\
+ cmp r4, 0\n\
+ beq _080F1C2A\n\
+ b _080F1DC4\n\
+_080F1C22:\n\
+ mov r5, r9\n\
+ cmp r5, 0x2\n\
+ beq _080F1C54\n\
+ b _080F1DC4\n\
+_080F1C2A:\n\
+ movs r0, 0x2A\n\
+ str r0, [sp, 0x4]\n\
+ movs r1, 0x14\n\
+ str r1, [sp, 0x8]\n\
+ ldr r4, _080F1C3C @ =0x0000030e\n\
+ adds r1, r2, r4\n\
+ movs r0, 0x5\n\
+ b _080F1C62\n\
+ .align 2, 0\n\
+_080F1C3C: .4byte 0x0000030e\n\
+_080F1C40:\n\
+ movs r5, 0x38\n\
+ str r5, [sp, 0x4]\n\
+ movs r0, 0x14\n\
+ str r0, [sp, 0x8]\n\
+ ldr r4, _080F1C50 @ =0x0000030e\n\
+ adds r1, r2, r4\n\
+ movs r0, 0x3\n\
+ b _080F1C62\n\
+ .align 2, 0\n\
+_080F1C50: .4byte 0x0000030e\n\
+_080F1C54:\n\
+ movs r5, 0x28\n\
+ str r5, [sp, 0x4]\n\
+ movs r0, 0x10\n\
+ str r0, [sp, 0x8]\n\
+ ldr r4, _080F1CDC @ =0x0000030e\n\
+ adds r1, r2, r4\n\
+ movs r0, 0x6\n\
+_080F1C62:\n\
+ strb r0, [r1]\n\
+ movs r5, 0\n\
+ str r5, [sp]\n\
+ mov r8, r5\n\
+ adds r1, r3, 0\n\
+ ldr r0, [r1]\n\
+ ldr r2, _080F1CDC @ =0x0000030e\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r8, r0\n\
+ blt _080F1C7E\n\
+ b _080F1DC8\n\
+_080F1C7E:\n\
+ ldr r4, [sp, 0x8]\n\
+ mov r3, r8\n\
+ muls r3, r4\n\
+ ldr r5, [sp, 0x4]\n\
+ adds r0, r5, r3\n\
+ subs r0, 0x8\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ ldr r4, [r1]\n\
+ mov r2, r8\n\
+ lsls r1, r2, 1\n\
+ movs r5, 0xC5\n\
+ lsls r5, 2\n\
+ adds r2, r4, r5\n\
+ adds r2, r1\n\
+ lsls r1, r0, 8\n\
+ adds r0, 0x11\n\
+ orrs r1, r0\n\
+ strh r1, [r2]\n\
+ mov r0, r9\n\
+ cmp r0, 0\n\
+ bne _080F1CF2\n\
+ ldr r1, _080F1CE0 @ =0x00006db2\n\
+ adds r0, r4, r1\n\
+ mov r2, r8\n\
+ adds r1, r0, r2\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0\n\
+ bne _080F1CE8\n\
+ movs r5, 0\n\
+ ldr r0, _080F1CE4 @ =gPokenavStructPtr\n\
+ ldr r0, [r0]\n\
+ lsls r2, 4\n\
+ movs r3, 0xC8\n\
+ lsls r3, 2\n\
+ adds r1, r0, r3\n\
+ movs r3, 0\n\
+_080F1CC8:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r2\n\
+ adds r0, r1, r0\n\
+ str r3, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x3\n\
+ bls _080F1CC8\n\
+ b _080F1D92\n\
+ .align 2, 0\n\
+_080F1CDC: .4byte 0x0000030e\n\
+_080F1CE0: .4byte 0x00006db2\n\
+_080F1CE4: .4byte gPokenavStructPtr\n\
+_080F1CE8:\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0x1\n\
+ lsls r0, 18\n\
+ lsrs r0, 16\n\
+ str r0, [sp]\n\
+_080F1CF2:\n\
+ movs r5, 0\n\
+ ldr r4, [sp, 0x4]\n\
+ adds r0, r4, r3\n\
+ lsls r0, 16\n\
+ mov r10, r0\n\
+_080F1CFC:\n\
+ lsls r6, r5, 5\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ adds r7, r6, r0\n\
+ lsls r1, r7, 16\n\
+ asrs r1, 16\n\
+ ldr r0, _080F1DB4 @ =gSpriteTemplate_83E4454\n\
+ mov r3, r10\n\
+ asrs r2, r3, 16\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x40\n\
+ beq _080F1DC4\n\
+ ldr r0, _080F1DB8 @ =gPokenavStructPtr\n\
+ ldr r2, [r0]\n\
+ lsls r1, r5, 2\n\
+ mov r4, r8\n\
+ lsls r0, r4, 4\n\
+ adds r1, r0\n\
+ movs r0, 0xC8\n\
+ lsls r0, 2\n\
+ adds r2, r0\n\
+ adds r4, r2, r1\n\
+ lsls r0, r3, 4\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ ldr r1, _080F1DBC @ =gSprites\n\
+ adds r0, r1\n\
+ str r0, [r4]\n\
+ mov r1, r8\n\
+ strh r1, [r0, 0x2E]\n\
+ ldr r0, [r4]\n\
+ strh r5, [r0, 0x30]\n\
+ ldr r1, [r4]\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x98\n\
+ strh r0, [r1, 0x32]\n\
+ ldr r0, [r4]\n\
+ strh r7, [r0, 0x34]\n\
+ ldr r0, [r4]\n\
+ ldr r1, [sp]\n\
+ adds r2, r1, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ str r2, [sp]\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ bl StartSpriteAnim\n\
+ mov r2, r9\n\
+ cmp r2, 0x2\n\
+ beq _080F1D6E\n\
+ cmp r2, 0\n\
+ bne _080F1D88\n\
+_080F1D6E:\n\
+ mov r3, r8\n\
+ cmp r3, 0x2\n\
+ bls _080F1D88\n\
+ movs r0, 0x1\n\
+ bl IndexOfSpritePaletteTag\n\
+ ldr r3, [r4]\n\
+ lsls r0, 4\n\
+ ldrb r2, [r3, 0x5]\n\
+ movs r1, 0xF\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ strb r1, [r3, 0x5]\n\
+_080F1D88:\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x3\n\
+ bls _080F1CFC\n\
+_080F1D92:\n\
+ mov r0, r8\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ ldr r1, _080F1DB8 @ =gPokenavStructPtr\n\
+ ldr r0, [r1]\n\
+ ldr r4, _080F1DC0 @ =0x0000030e\n\
+ adds r0, r4\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r8, r0\n\
+ bge _080F1DB0\n\
+ b _080F1C7E\n\
+_080F1DB0:\n\
+ b _080F1DC8\n\
+ .align 2, 0\n\
+_080F1DB4: .4byte gSpriteTemplate_83E4454\n\
+_080F1DB8: .4byte gPokenavStructPtr\n\
+_080F1DBC: .4byte gSprites\n\
+_080F1DC0: .4byte 0x0000030e\n\
+_080F1DC4:\n\
+ movs r0, 0\n\
+ b _080F1DD8\n\
+_080F1DC8:\n\
+ ldr r0, _080F1DE8 @ =gPokenavStructPtr\n\
+ ldr r1, [r0]\n\
+ ldr r5, _080F1DEC @ =0x00000306\n\
+ adds r1, r5\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+ movs r0, 0x1\n\
+_080F1DD8:\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080F1DE8: .4byte gPokenavStructPtr\n\
+_080F1DEC: .4byte 0x00000306\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80F1DF0(void)
+{
+ u16 i, j;
+ for (i = 0; i < gPokenavStructPtr->unk30E; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (gPokenavStructPtr->unk320[i][j])
+ gPokenavStructPtr->unk320[i][j]->callback = sub_80F2218;
+ }
+ }
+
+ PlaySE(SE_WIN_OPEN);
+}
+
+bool8 sub_80F1E50(void)
+{
+ if (sub_80F22F8())
+ {
+ sub_80F2108();
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+bool8 sub_80F1E6C(void)
+{
+ return !sub_80F22F8();
+}
+
+void sub_80F1E84(void)
+{
+ u16 i, j;
+
+ gPokenavStructPtr->unk30F = 0;
+ sub_80F2148();
+ for (i = 0; i < gPokenavStructPtr->unk30E; i++)
+ {
+ if (i != gPokenavStructPtr->unk6DAD)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (gPokenavStructPtr->unk320[i][j])
+ gPokenavStructPtr->unk320[i][j]->callback = sub_80F2240;
+ }
+ }
+ }
+}
+
+bool8 sub_80F1F10(void)
+{
+ u16 j;
+
+ switch (gPokenavStructPtr->unk30F)
+ {
+ case 0:
+ if (sub_80F2360())
+ {
+ for (j = 0; j < 4; j++)
+ {
+ struct Sprite *sprite = gPokenavStructPtr->unk320[gPokenavStructPtr->unk6DAD][j];
+ sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ sprite->affineAnims = gSpriteAffineAnimTable_83E4450;
+ InitSpriteAffineAnim(sprite);
+ sprite->data[4] = j * 4 - 6;
+ sprite->data[4] /= 2;
+ sprite->data[5] = sprite->data[4] * 8;
+ sprite->callback = sub_80F2240;
+ }
+
+ sub_80F2170();
+ gPokenavStructPtr->unk30F++;
+ }
+ break;
+ case 1:
+ if (sub_80F23C8())
+ {
+ sub_80F21F8();
+ FreeSpriteTilesByTag(0x0);
+ FreeSpritePaletteByTag(0x0);
+ FreeSpritePaletteByTag(0x1);
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+void sub_80F1FF0(void)
+{
+ if (gPokenavStructPtr->unk311 == 1)
+ {
+ REG_WIN0V = gPokenavStructPtr->unk314[gPokenavStructPtr->unk6DAD];
+ REG_BLDY = gSineTable[gPokenavStructPtr->unk312] >> 5;
+ gPokenavStructPtr->unk312 += 3;
+ gPokenavStructPtr->unk312 &= 0x7F;
+ }
+ else if (gPokenavStructPtr->unk311 == 2)
+ {
+ REG_BLDALPHA = gUnknown_083E42F8[gPokenavStructPtr->unk312];
+ if (gPokenavStructPtr->unk312 < 15)
+ gPokenavStructPtr->unk312++;
+ }
+}
+
+void sub_80F208C(void)
+{
+ sub_80F2148();
+}
+
+void sub_80F2098(void)
+{
+ REG_WIN0H = 0x77F0;
+ REG_WIN0V = gPokenavStructPtr->unk314[gPokenavStructPtr->unk6DAD];
+ REG_WININ = 0x3F;
+ REG_WINOUT = 0x1F;
+ REG_DISPCNT |= DISPCNT_WIN0_ON;
+}
+
+void sub_80F20F4(void)
+{
+ REG_DISPCNT &= ~DISPCNT_WIN0_ON;
+}
+
+void sub_80F2108(void)
+{
+ if (!gPokenavStructPtr->unk311)
+ {
+ gPokenavStructPtr->unk311 = 1;
+ gPokenavStructPtr->unk312 = 0;
+ REG_BLDCNT = 0x90;
+ REG_BLDY = 0;
+ sub_80F2098();
+ }
+}
+
+void sub_80F2148(void)
+{
+ gPokenavStructPtr->unk311 = 0;
+ REG_BLDCNT = 0;
+ sub_80F20F4();
+}
+
+void sub_80F2170(void)
+{
+ u16 j;
+
+ if (!gPokenavStructPtr->unk311)
+ {
+ sub_80F20F4();
+ for (j = 0; j < 4; j++)
+ {
+ struct Sprite *sprite = gPokenavStructPtr->unk320[gPokenavStructPtr->unk6DAD][j];
+ sprite->oam.objMode = ST_OAM_OBJ_BLEND;
+ }
+
+ gPokenavStructPtr->unk311 = 2;
+ gPokenavStructPtr->unk312 = 0;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x10;
+ }
+}
+
+void sub_80F21F8()
+{
+ gPokenavStructPtr->unk311 = 0;
+ REG_BLDCNT = 0;
+}
+
+void sub_80F2218(struct Sprite *sprite)
+{
+ sprite->pos1.x -= 8;
+ if (sprite->pos1.x <= sprite->data[2])
+ {
+ sprite->pos1.x = sprite->data[2];
+ sprite->callback = sub_80F22B0;
+ }
+}
+
+void sub_80F2240(struct Sprite *sprite)
+{
+ if (sprite->data[0] == gPokenavStructPtr->unk6DAD)
+ {
+ if (sprite->data[5])
+ {
+ sprite->pos1.x += sprite->data[4];
+ sprite->data[5] -= sprite->data[4];
+ }
+
+ if (sprite->affineAnimEnded)
+ sub_80F240C(sprite);
+ }
+ else
+ {
+ sprite->pos1.x += 8;
+ if (sprite->pos1.x >= sprite->data[3])
+ sub_80F240C(sprite);
+ }
+}
+
+void sub_80F22B0(struct Sprite *sprite)
+{
+ if (sprite->data[0] == gPokenavStructPtr->unk6DAD)
+ {
+ if (sprite->pos2.x > -16)
+ sprite->pos2.x -= 4;
+ }
+ else
+ {
+ if (sprite->pos2.x < 0)
+ sprite->pos2.x += 4;
+ }
+}
+
+bool8 sub_80F22F8(void)
+{
+ u16 i, j;
+
+ for (i = 0; i < gPokenavStructPtr->unk6DAE; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ struct Sprite *sprite = gPokenavStructPtr->unk320[i][j];
+ if (!sprite)
+ return TRUE;
+
+ if (sprite->pos2.x != 0 && sprite->pos2.x != -16)
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+bool8 sub_80F2360(void)
+{
+ u16 i, j;
+
+ for (i = 0; i < gPokenavStructPtr->unk30E; i++)
+ {
+ if (i != gPokenavStructPtr->unk6DAD)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ struct Sprite *sprite = gPokenavStructPtr->unk320[i][j];
+ if (sprite)
+ return FALSE;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+bool8 sub_80F23C8(void)
+{
+ u16 j;
+
+ for (j = 0; j < 4; j++)
+ {
+ struct Sprite *sprite = gPokenavStructPtr->unk320[gPokenavStructPtr->unk6DAD][j];
+ if (sprite)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_80F240C(struct Sprite *sprite)
+{
+ gPokenavStructPtr->unk320[sprite->data[0]][sprite->data[1]] = NULL;
+ if (sprite->affineAnimEnded)
+ FreeOamMatrix(sprite->oam.matrixNum);
+
+ DestroySprite(sprite);
+}
+
+void sub_80F2458(u8 arg0)
+{
+ switch (arg0)
+ {
+ case 0:
+ gPokenavStructPtr->unk380.data = gPokenavStructPtr->unk388;
+ gPokenavStructPtr->unk380.size = sizeof(gPokenavStructPtr->unk388);
+ gPokenavStructPtr->unk380.tag = 0x0;
+ break;
+ case 1:
+ gPokenavStructPtr->unk380.data = gPokenavStructPtr->unk1788;
+ gPokenavStructPtr->unk380.size = sizeof(gPokenavStructPtr->unk1788);
+ gPokenavStructPtr->unk380.tag = 0x0;
+ break;
+ case 2:
+ gPokenavStructPtr->unk380.data = gPokenavStructPtr->unk2388;
+ gPokenavStructPtr->unk380.size = sizeof(gPokenavStructPtr->unk2388);
+ gPokenavStructPtr->unk380.tag = 0x0;
+ break;
+ default:
+ return;
+ }
+
+ LoadSpriteSheet(&gPokenavStructPtr->unk380);
+}
+
+void sub_80F2514(u8 arg0)
+{
+ struct SpritePalette spritePalette;
+
+ switch (arg0)
+ {
+ case 0:
+ spritePalette.data = gPokenavMenuOptions1_Pal;
+ spritePalette.tag = 0;
+ LoadSpritePalette(&spritePalette);
+ spritePalette.data = gPokenavMenuOptions2_Pal;
+ spritePalette.tag = 0x1;
+ break;
+ case 1:
+ spritePalette.data = gPokenavConditionMenu_Pal;
+ spritePalette.tag = 0x0;
+ break;
+ case 2:
+ spritePalette.data = gPokenavCondition6_Pal;
+ spritePalette.tag = 0;
+ LoadSpritePalette(&spritePalette);
+ spritePalette.data = gPokenavCondition7_Pal;
+ spritePalette.tag = 0x1;
+ break;
+ default:
+ return;
+ }
+
+ LoadSpritePalette(&spritePalette);
+}
+
+void sub_80F2598(void)
+{
+ u8 spriteId;
+
+ gPokenavStructPtr->unk6D9C = NULL;
+ if (DoesSomeoneWantRematchIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) == TRUE)
+ {
+ LoadSpriteSheet(&gSpriteSheet_PokenavBlueLight);
+ LoadSpritePalette(&gSpritePalette_PokenavBlueLight);
+ spriteId = CreateSprite(&gSpriteTemplate_83E4484, 12, 96, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gPokenavStructPtr->unk6D9C = &gSprites[spriteId];
+ }
+ else
+ {
+ FreeSpriteTilesByTag(0x19);
+ FreeSpritePaletteByTag(0x11);
+ }
+ }
+}
+
+void sub_80F2620(void)
+{
+ if (gPokenavStructPtr->unk6D9C)
+ {
+ DestroySprite(gPokenavStructPtr->unk6D9C);
+ FreeSpriteTilesByTag(0x19);
+ FreeSpritePaletteByTag(0x11);
+ gPokenavStructPtr->unk6D9C = NULL;
+ }
+}
+
+void sub_80F2654(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 6)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible = !sprite->invisible;
+ }
+}
+
+void sub_80F2688(void)
+{
+ gPokenavStructPtr->unk306 = 0;
+ if (!gPokenavStructPtr->unk6DAC)
+ while(sub_80F26BC());
+}
+
+bool8 sub_80F26BC(void)
+{
+ switch (gPokenavStructPtr->unk306)
+ {
+ case 0:
+ LZ77UnCompWram(gPokenavMainMenu_Gfx, gPokenavStructPtr->unk3B98);
+ break;
+ case 1:
+ LZ77UnCompWram(gPokenavConditionMenuHeader_Gfx, gPokenavStructPtr->unk4198);
+ break;
+ case 2:
+ LZ77UnCompWram(gPokenavRibbonsHeader_Gfx, gPokenavStructPtr->unk4D98);
+ break;
+ case 3:
+ LZ77UnCompWram(gPokenavHoennMapHeader_Gfx, gPokenavStructPtr->unk5398);
+ break;
+ case 4:
+ LZ77UnCompWram(gPokenavConditionMenuOptions_Gfx, gPokenavStructPtr->unk5F98);
+ break;
+ case 5:
+ LZ77UnCompWram(gPokenavConditionMenuOptions2_Gfx, gPokenavStructPtr->unk6798);
+ break;
+ case 6:
+ LZ77UnCompWram(gPokenavTrainersEyesHeader_Gfx, gPokenavStructPtr->unk4798);
+ break;
+ case 7:
+ LoadSpritePalettes(gUnknown_083E449C);
+ break;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unk306++;
+ return TRUE;
+}
+
+void sub_80F27DC(u8 arg0)
+{
+ struct SpriteSheet spriteSheet;
+
+ switch (arg0)
+ {
+ case 0:
+ spriteSheet.data = gPokenavStructPtr->unk3B98;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk3B98);
+ spriteSheet.tag = 0x1;
+ break;
+ case 1:
+ spriteSheet.data = gPokenavStructPtr->unk4198;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk4198);
+ spriteSheet.tag = 0x1;
+ break;
+ case 3:
+ spriteSheet.data = gPokenavStructPtr->unk4798;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk4798);
+ spriteSheet.tag = 0x1;
+ break;
+ case 2:
+ spriteSheet.data = gPokenavStructPtr->unk4D98;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk4D98);
+ spriteSheet.tag = 0x1;
+ break;
+ case 4:
+ spriteSheet.data = gPokenavStructPtr->unk5398;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk5398);
+ spriteSheet.tag = 0x1;
+ break;
+ case 5:
+ spriteSheet.data = gPokenavStructPtr->unk5F98;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk5F98);
+ spriteSheet.tag = 0x2;
+ break;
+ case 6:
+ spriteSheet.data = gPokenavStructPtr->unk6198;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk6198);
+ spriteSheet.tag = 0x2;
+ break;
+ case 8:
+ spriteSheet.data = gPokenavStructPtr->unk6398;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk6398);
+ spriteSheet.tag = 0x2;
+ break;
+ case 9:
+ spriteSheet.data = gPokenavStructPtr->unk6598;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk6598);
+ spriteSheet.tag = 0x2;
+ break;
+ case 11:
+ spriteSheet.data = gPokenavStructPtr->unk6998;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk6998);
+ spriteSheet.tag = 0x2;
+ break;
+ case 10:
+ spriteSheet.data = gPokenavStructPtr->unk6798;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk6798);
+ spriteSheet.tag = 0x2;
+ break;
+ case 7:
+ spriteSheet.data = gPokenavStructPtr->unk6B98;
+ spriteSheet.size = sizeof(gPokenavStructPtr->unk6B98);
+ spriteSheet.tag = 0x2;
+ break;
+ default:
+ return;
+ }
+
+ LoadSpriteSheet(&spriteSheet);
+}
+
+void sub_80F29B8(u8 arg0)
+{
+ u16 i;
+ s16 deltaX, endX, initialX;
+ u16 y;
+ s16 width;
+ struct Sprite **sprites;
+ const struct SpriteTemplate *spriteTemplate;
+ u8 spriteId;
+
+ spriteTemplate = NULL;
+ switch (arg0)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ initialX = -96;
+ y = 49 - gPokenavStructPtr->unk030C;
+ deltaX = 8;
+ endX = 32;
+ width = 64;
+ sprites = gPokenavStructPtr->unk3B88;
+ spriteTemplate = arg0 != 3 ? &gSpriteTemplate_83E44E0 : &gSpriteTemplate_83E44F8;
+ break;
+ case 4:
+ initialX = 272;
+ y = 49 - gPokenavStructPtr->unk030C;
+ deltaX = -8;
+ endX = 152;
+ width = 64;
+ spriteTemplate = &gSpriteTemplate_83E44E0;
+ sprites = gPokenavStructPtr->unk3B88;
+ break;
+ case 5:
+ case 6:
+ case 8:
+ case 9:
+ spriteTemplate = &gSpriteTemplate_83E4530;
+ // fall through
+ case 7:
+ case 10:
+ case 11:
+ if (spriteTemplate == NULL)
+ spriteTemplate = &gSpriteTemplate_83E4548;
+
+ initialX = -96;
+ y = 68 - gPokenavStructPtr->unk030C;
+ deltaX = 8;
+ endX = 16;
+ width = 32;
+ sprites = gPokenavStructPtr->unk3B90;
+ break;
+ default:
+ return;
+ }
+
+ for (i = 0; i < 2; i++)
+ {
+ spriteId = CreateSprite(spriteTemplate, i * width + initialX, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = deltaX;
+ gSprites[spriteId].data[1] = endX + i * width;
+ gSprites[spriteId].data[2] = i;
+ gSprites[spriteId].data[3] = arg0;
+ if (arg0 == 4 && i == 1)
+ {
+ int anim = !gPokenavStructPtr->regionMap.zoomed ? 1 : 2;
+ StartSpriteAnim(&gSprites[spriteId], anim);
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[spriteId], i);
+ }
+
+ if (arg0 < 4 && i == 1)
+ {
+ gSprites[spriteId].oam.shape = ST_OAM_SQUARE;
+ gSprites[spriteId].oam.size = 2;
+ }
+
+ sprites[i] = &gSprites[spriteId];
+ }
+ }
+}
+
+#define sEndX sprite->data[1]
+void sub_80F2BBC(struct Sprite *sprite)
+{
+ s16 x = sprite->pos1.x;
+ sprite->pos1.x += sprite->data[0];
+ if ((x <= sEndX && sprite->pos1.x >= sEndX) || (x >= sEndX && sprite->pos1.x <= sEndX))
+ {
+ sprite->pos1.x = sEndX;
+ if (sprite->data[3] == 4 && sprite->data[2] == 1)
+ sprite->callback = sub_80F2C58;
+ else
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+#undef sEndX
+
+void sub_80F2C14(struct Sprite *sprite)
+{
+ u16 right;
+
+ sprite->pos1.x -= sprite->data[0];
+ right = sprite->pos1.x + 32;
+ if (right > 304)
+ {
+ if (sprite->data[2] == 1)
+ {
+ if (sprite->data[3] < 5)
+ FreeSpriteTilesByTag(0x1);
+ else
+ FreeSpriteTilesByTag(0x2);
+ }
+
+ DestroySprite(sprite);
+ }
+}
+
+void sub_80F2C58(struct Sprite *sprite)
+{
+ int anim = !gPokenavStructPtr->regionMap.zoomed ? 1 : 2;
+ StartSpriteAnim(sprite, anim);
+}
+
+void sub_80F2C80(u8 arg0)
+{
+ gPokenavStructPtr->unk306 = 0;
+ if (!gPokenavStructPtr->unk6DAC)
+ while (sub_80F2CBC(arg0));
+}
+
+bool8 sub_80F2CBC(u8 arg0)
+{
+ switch (gPokenavStructPtr->unk306)
+ {
+ case 0:
+ sub_80F27DC(arg0);
+ gPokenavStructPtr->unk306++;
+ return TRUE;
+ case 1:
+ sub_80F29B8(arg0);
+ gPokenavStructPtr->unk306++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+}
+
+void sub_80F2D04(u8 arg0)
+{
+ u16 i;
+
+ if (arg0 < 5)
+ {
+ for (i = 0; i < 2; i++)
+ gPokenavStructPtr->unk3B88[i]->callback = sub_80F2C14;
+ }
+ else
+ {
+ for (i = 0; i < 2; i++)
+ gPokenavStructPtr->unk3B90[i]->callback = sub_80F2C14;
+ }
+}
+
+void sub_80F2D6C(u8 arg0)
+{
+ u16 i;
+
+ if (arg0 < 5)
+ {
+ FreeSpriteTilesByTag(0x1);
+ for (i = 0; i < 2; i++)
+ DestroySprite(gPokenavStructPtr->unk3B88[i]);
+ }
+ else
+ {
+ FreeSpriteTilesByTag(0x2);
+ for (i = 0; i < 2; i++)
+ DestroySprite(gPokenavStructPtr->unk3B90[i]);
+ }
+}
+
+void sub_80F2DD8(void)
+{
+ CreateRegionMapCursor(7, 7);
+ CreateRegionMapPlayerIcon(8, 8);
+ sub_80FBF94();
+}
+
+void sub_80F2DF4(void)
+{
+ FreeRegionMapIconResources();
+}
+
+void sub_80F2E00(struct Sprite *sprite)
+{
+ sprite->pos1.x = gPokenavStructPtr->unk8766 + 38;
+}
+
+void sub_80F2E18(u8 arg0)
+{
+ u8 spriteId;
+ struct SpriteTemplate spriteTemplate;
+ struct SpritePalette spritePalette;
+ struct SpriteSheet spriteSheet;
+
+ if (!gPokenavStructPtr->unk8768)
+ {
+ spriteSheet = gUnknown_083E4568;
+ spriteTemplate = gSpriteTemplate_83E4570;
+ spritePalette = gUnknown_083E4588;
+
+ spriteSheet.data = gPokenavStructPtr->unkD1E4[arg0];
+ spritePalette.data = gPokenavStructPtr->unk0[arg0];
+ gPokenavStructPtr->unkD1DC = LoadSpritePalette(&spritePalette);
+ gPokenavStructPtr->unkD1DE = LoadSpriteSheet(&spriteSheet);
+
+ spriteId = CreateSprite(&spriteTemplate, 38, 104, 0);
+ if (spriteId == MAX_SPRITES)
+ {
+ FreeSpriteTilesByTag(0x6);
+ FreeSpritePaletteByTag(0x6);
+ gPokenavStructPtr->unk8768 = NULL;
+ }
+ else
+ {
+ gPokenavStructPtr->unk8768 = &gSprites[spriteId];
+ gPokenavStructPtr->unkD1E0 = (void *)(VRAM + 0x10000) + gPokenavStructPtr->unkD1DE * 32;
+ gPokenavStructPtr->unkD1DC = gPokenavStructPtr->unkD1DC * 16 + 0x100;
+ }
+ }
+ else
+ {
+ DmaCopy16Defvars(3, gPokenavStructPtr->unkD1E4[arg0], gPokenavStructPtr->unkD1E0, 0x800);
+ LoadPalette(gPokenavStructPtr->unk0[arg0], gPokenavStructPtr->unkD1DC, 0x20);
+ }
+}
+
+void sub_80F2F48(void)
+{
+ if (gPokenavStructPtr->unk8768)
+ {
+ DestroySprite(gPokenavStructPtr->unk8768);
+ FreeSpriteTilesByTag(0x6);
+ FreeSpritePaletteByTag(0x6);
+ gPokenavStructPtr->unk8768 = NULL;
+ }
+}
+
+void sub_80F2F7C(u8 arg0)
+{
+ sub_80F2E18(arg0);
+ gPokenavStructPtr->unkCED0 = gPokenavStructPtr->unk8768;
+ gPokenavStructPtr->unkCED0->callback = sub_80F2FEC;
+}
+
+void sub_80F2FB0(void)
+{
+ if (gPokenavStructPtr->unkCED0)
+ {
+ DestroySprite(gPokenavStructPtr->unkCED0);
+ FreeSpriteTilesByTag(0x6);
+ FreeSpritePaletteByTag(0x6);
+ gPokenavStructPtr->unkCED0 = NULL;
+ gPokenavStructPtr->unk8768 = NULL;
+ }
+}
+
+void sub_80F2FEC(struct Sprite *sprite)
+{
+ sprite->pos1.x = gPokenavStructPtr->unkD15A + 40;
+ sprite->pos1.y = 104;
+}
+
+void sub_80F3008(u8 arg0)
+{
+ u16 i;
+ u8 spriteId;
+ struct SpritePalette spritePalette;
+ struct SpriteSheet spriteSheets[3];
+
+ memcpy(spriteSheets, gUnknown_083E4590, sizeof(gUnknown_083E4590));
+ spritePalette = gUnknown_083E45A8;
+ switch (arg0)
+ {
+ case 1:
+ case 2:
+ spritePalette.data = gUnknown_08E9F988;
+ break;
+ }
+
+ LoadSpriteSheets(spriteSheets);
+ LoadSpritePalette(&spritePalette);
+ spriteId = CreateSprite(&gSpriteTemplate_83E45B8, 95, 0, 0);
+ if (spriteId == MAX_SPRITES)
+ {
+ gPokenavStructPtr->unk87CC = NULL;
+ }
+ else
+ {
+ gPokenavStructPtr->unk87CC = &gSprites[spriteId];
+ for (i = 0; i < 2; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83E45F0, 168, i * 128 + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gPokenavStructPtr->unk87D0[i] = &gSprites[spriteId];
+ gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].data[0] = 0;
+ gSprites[spriteId].data[1] = 0;
+ gSprites[spriteId].data[2] = i == 0 ? -1 : 1;
+ gSprites[spriteId].data[3] = i;
+ gSprites[spriteId].data[4] = 1;
+ StartSpriteAnim(&gSprites[spriteId], i);
+ }
+ else
+ {
+ gPokenavStructPtr->unk87D0[i] = NULL;
+ }
+ }
+ }
+}
+
+void sub_80F3130(void)
+{
+ u16 i;
+
+ if (gPokenavStructPtr->unk87CC)
+ {
+ DestroySprite(gPokenavStructPtr->unk87CC);
+ FreeSpriteTilesByTag(0x9);
+ FreeSpritePaletteByTag(0x9);
+ gPokenavStructPtr->unk87CC = NULL;
+ }
+
+ for (i = 0; i < 2; i++)
+ {
+ if (gPokenavStructPtr->unk87D0[i])
+ {
+ DestroySprite(gPokenavStructPtr->unk87D0[i]);
+ gPokenavStructPtr->unk87D0[i] = NULL;
+ }
+ }
+
+ FreeSpriteTilesByTag(0xA);
+}
+
+void sub_80F3190(struct Sprite *sprite)
+{
+ sprite->pos1.y = gPokenavStructPtr->unk876C * 16 + 16;
+}
+
+void sub_80F31AC(struct Sprite *sprite)
+{
+ if (gPokenavStructPtr->unk87C9)
+ {
+ if (sprite->data[4])
+ {
+ if (!sprite->data[3])
+ sprite->invisible = gPokenavStructPtr->unk8770 == 0;
+ else
+ sprite->invisible = gPokenavStructPtr->unk8772 == gPokenavStructPtr->unk8774;
+
+ sprite->data[4] = 0;
+ }
+
+ if (++sprite->data[0] > 4)
+ {
+ sprite->data[0] = 0;
+ if (++sprite->data[1] < 5)
+ {
+ sprite->pos2.y += sprite->data[2];
+ }
+ else
+ {
+ sprite->data[1] = 0;
+ sprite->pos2.y = 0;
+ }
+ }
+ }
+}
+
+void sub_80F3264(void)
+{
+ u16 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ if (gPokenavStructPtr->unk87D0[i])
+ gPokenavStructPtr->unk87D0[i]->data[4] = 1;
+ }
+}
+
+void sub_80F3294(u8 arg0)
+{
+ gPokenavStructPtr->unk87CC->invisible = arg0;
+ if (gPokenavStructPtr->unk87C9)
+ {
+ if (arg0 == 1)
+ {
+ gPokenavStructPtr->unk87D0[0]->invisible = arg0;
+ gPokenavStructPtr->unk87D0[1]->invisible = arg0;
+ }
+ else
+ {
+ gPokenavStructPtr->unk87D0[0]->data[4] = 1;
+ gPokenavStructPtr->unk87D0[1]->data[4] = 1;
+ }
+ }
+}
+
+void sub_80F3328(struct Sprite *sprite)
+{
+ if (sprite->data[0] == gPokenavStructPtr->unk87DC)
+ StartSpriteAnim(sprite, 0);
+ else
+ StartSpriteAnim(sprite, 1);
+}
+
+void sub_80F3360(struct Sprite *sprite)
+{
+ if (gPokenavStructPtr->unk87DC == gPokenavStructPtr->unk87DA - 1)
+ sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x4);
+ else
+ sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x5);
+}
+
+void sub_80F33A8(void)
+{
+ u16 i;
+ u8 spriteId;
+ struct SpriteSheet spriteSheets[4];
+ struct SpritePalette spritePalettes[3];
+ struct SpriteTemplate spriteTemplate;
+
+ memcpy(spriteSheets, gUnknown_083E4628, sizeof(gUnknown_083E4628));
+ memcpy(spritePalettes, gUnknown_083E4648, sizeof(gUnknown_083E4648));
+ spriteTemplate = gSpriteTemplate_83E4660;
+ LoadSpriteSheets(spriteSheets);
+ LoadSpritePalettes(spritePalettes);
+
+ for (i = 0; i < gPokenavStructPtr->unk87DA - 1; i++)
+ {
+ spriteId = CreateSprite(&spriteTemplate, 226, i * 20 + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gPokenavStructPtr->unk87E4[i] = &gSprites[spriteId];
+ gPokenavStructPtr->unk87E4[i]->data[0] = i;
+ }
+ else
+ {
+ gPokenavStructPtr->unk87E4[i] = NULL;
+ }
+ }
+
+ spriteTemplate.tileTag = 0x4;
+ spriteTemplate.callback = SpriteCallbackDummy;
+ for (; i < 6; i++)
+ {
+ spriteId = CreateSprite(&spriteTemplate, 230, i * 20 + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gPokenavStructPtr->unk87E4[i] = &gSprites[spriteId];
+ gPokenavStructPtr->unk87E4[i]->oam.size = 0;
+ }
+ else
+ {
+ gPokenavStructPtr->unk87E4[i] = NULL;
+ }
+ }
+
+ spriteTemplate.tileTag = 0x5;
+ spriteTemplate.callback = sub_80F3360;
+ spriteId = CreateSprite(&spriteTemplate, 222, i * 20 + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gPokenavStructPtr->unk87E4[i] = &gSprites[spriteId];
+ gPokenavStructPtr->unk87E4[i]->oam.shape = ST_OAM_H_RECTANGLE;
+ gPokenavStructPtr->unk87E4[i]->oam.size = 2;
+ }
+ else
+ {
+ gPokenavStructPtr->unk87E4[i] = NULL;
+ }
+}
+
+void sub_80F357C(void)
+{
+ u16 i;
+
+ for (i = 0; i < 7; i++)
+ {
+ if (gPokenavStructPtr->unk87E4[i])
+ {
+ DestroySprite(gPokenavStructPtr->unk87E4[i]);
+ gPokenavStructPtr->unk87E4[i] = NULL;
+ }
+ }
+}
+
+void sub_80F35B4(void)
+{
+ struct Sprite *sprite;
+
+ gPokenavStructPtr->unk76B0.baseTileTag = 0x1C;
+ gPokenavStructPtr->unk76B0.basePaletteTag = 0x13;
+ sub_80F727C(&gPokenavStructPtr->unk76B0);
+ sub_80F7404();
+ sprite = sub_80F7920(27, 21, gUnknown_083E4678);
+ sprite->oam.priority = 3;
+ sprite->pos1.x = 192;
+ sprite->pos1.y = 32;
+ sprite->callback = sub_80F363C;
+ gPokenavStructPtr->unk76AC = sprite;
+}
+
+void sub_80F3614(void)
+{
+ DestroySprite(gPokenavStructPtr->unk76AC);
+ FreeSpriteTilesByTag(0x1B);
+ FreeSpritePaletteByTag(0x15);
+}
+
+void sub_80F363C(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gPokenavStructPtr->unk8934[gPokenavStructPtr->unk8fe9]);
+}
+
+void sub_80F3668(void)
+{
+ sub_80F7418(gPokenavStructPtr->unk8934[gPokenavStructPtr->unk8fe9], 176, 32);
+}
+
+void sub_80F3698(void)
+{
+ struct UnkUsePokeblockSub *var0 = &gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC];
+ gPokenavStructPtr->unk8934[gPokenavStructPtr->unk8fe9] = gPokenavStructPtr->unk76B0.markings;
+ SetMonMarkings(var0->unk1, var0->partyIdx, gPokenavStructPtr->unk76B0.markings);
+ sub_80F7470();
+}
+
+void sub_80F36F0(void)
+{
+ gPokenavStructPtr->unk306 = 0;
+ if (!gPokenavStructPtr->unk6DAC)
+ while (sub_80F3724());
+}
+
+bool8 sub_80F3724(void)
+{
+ switch (gPokenavStructPtr->unk306)
+ {
+ case 0:
+ LZ77UnCompWram(gUnknown_083E3D00, gPokenavStructPtr->unk984C);
+ break;
+ case 1:
+ sub_80F379C();
+ gPokenavStructPtr->unk306++;
+ // fall through
+ case 2:
+ if (sub_80F37D0())
+ return TRUE;
+ break;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unk306++;
+ return TRUE;
+}
+
+void sub_80F379C(void)
+{
+ gPokenavStructPtr->unkBC93 = 0;
+ if (!gPokenavStructPtr->unk6DAC)
+ while (sub_80F37D0());
+}
+
+bool8 sub_80F37D0(void)
+{
+ u16 i;
+ u8 j, k, l, m;
+
+ if (gPokenavStructPtr->unkBC93 > 11)
+ return FALSE;
+
+ for (i = 0; i < 2; i++)
+ {
+ u8 *r4 = &gPokenavStructPtr->unk984C[gPokenavStructPtr->unkBC93][0];
+ u8 *r5 = &gPokenavStructPtr->unkA44C[gPokenavStructPtr->unkBC93][0];
+ for (j = 0; j < 4; j++)
+ {
+ CpuFastSet(r4, r5, 0x10);
+ r5 += 0x40;
+ r4 += 0x20;
+ for (k = 0; k < 2; k++)
+ {
+ for (l = 0; l < 8; l++)
+ {
+ r4 += 4;
+ for (m = 0; m < 4; m++)
+ {
+ r4 -= 1;
+ *r5 = (*r4 << 4) | ((*r4 >> 4) & 0xF);
+ r5++;
+ }
+
+ r4 += 4;
+ }
+
+ r4 -= 0x40;
+ }
+
+ r4 += 0x60;
+ }
+
+ if (++gPokenavStructPtr->unkBC93 > 11)
+ return FALSE;
+ }
+
+ if (gPokenavStructPtr->unkBC93 > 11)
+ return FALSE;
+
+ return TRUE;
+}
+
+void sub_80F38B8(void)
+{
+ gPokenavStructPtr->unk306 = 0;
+ if (!gPokenavStructPtr->unk6DAC)
+ while (sub_80F38EC());
+}
+
+bool8 sub_80F38EC(void)
+{
+ switch (gPokenavStructPtr->unk306)
+ {
+ case 0:
+ gPokenavStructPtr->unk9348 = NULL;
+ gPokenavStructPtr->unkBC92 = 0;
+ break;
+ case 1:
+ sub_80F2E18(0);
+ break;
+ case 2:
+ sub_80F3970();
+ gPokenavStructPtr->unk306++;
+ // fall through
+ case 3:
+ if (sub_80F39A4())
+ return TRUE;
+ break;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unk306++;
+ return TRUE;
+}
+
+void sub_80F3970(void)
+{
+ gPokenavStructPtr->unkBC93 = 0;
+ if (!gPokenavStructPtr->unk6DAC)
+ while (sub_80F39A4());
+}
+
+bool8 sub_80F39A4(void)
+{
+ struct SpriteSheet spriteSheet;
+ struct SpritePalette spritePalette;
+ if (gPokenavStructPtr->unkBC93 > 11)
+ return FALSE;
+
+ spriteSheet.data = &gPokenavStructPtr->unkA44C[gPokenavStructPtr->unkBC93][0];
+ spriteSheet.size = 0x200;
+ spriteSheet.tag = gPokenavStructPtr->unkBC93 + 11;
+ LoadSpriteSheet(&spriteSheet);
+ if (gPokenavStructPtr->unkBC93 < 5)
+ {
+ spritePalette.data = gUnknown_083E3C60[gPokenavStructPtr->unkBC93];
+ spritePalette.tag = gPokenavStructPtr->unkBC93 + 10;
+ LoadSpritePalette(&spritePalette);
+ }
+
+ if (++gPokenavStructPtr->unkBC93 > 11)
+ return FALSE;
+
+ return TRUE;
+}
+
+struct Sprite *sub_80F3A3C(u16 arg0, u16 arg1)
+{
+ struct SpriteTemplate spriteTemplate;
+ u16 var0;
+ u8 ribbon;
+ u8 spriteId;
+
+ if (arg1 < 3)
+ var0 = arg0 + arg1 * 9;
+ else
+ var0 = arg0 + (gPokenavStructPtr->unkBC8E - gPokenavStructPtr->unkBC8F);
+
+ ribbon = gPokenavStructPtr->unkBC4C[var0];
+ spriteTemplate = gSpriteTemplate_83E476C;
+ spriteTemplate.tileTag = gPokenavRibbonsIconGfx[ribbon][0] + 11;
+ spriteTemplate.paletteTag = gPokenavRibbonsIconGfx[ribbon][1] + 10;
+ spriteId = CreateSprite(&spriteTemplate, arg0 * 16 + 96, arg1 * 16 + 40, 2);
+ if (spriteId != MAX_SPRITES)
+ return &gSprites[spriteId];
+ else
+ return NULL;
+}
+
+void sub_80F3B00(void)
+{
+ gPokenavStructPtr->unk9348 = sub_80F3A3C(gPokenavStructPtr->unkBC90, gPokenavStructPtr->unkBC91);
+ if (gPokenavStructPtr->unk9348)
+ {
+ StartSpriteAffineAnim(gPokenavStructPtr->unk9348, 1);
+ gPokenavStructPtr->unkBC92 = 1;
+ }
+ else
+ {
+ gPokenavStructPtr->unkBC92 = 0;
+ }
+}
+
+bool8 sub_80F3B58(void)
+{
+ if (gPokenavStructPtr->unkBC92)
+ {
+ gPokenavStructPtr->unkBC92 = !gPokenavStructPtr->unk9348->affineAnimEnded;
+ return gPokenavStructPtr->unkBC92;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void sub_80F3B94(void)
+{
+ if (gPokenavStructPtr->unk9348)
+ {
+ StartSpriteAffineAnim(gPokenavStructPtr->unk9348, 2);
+ gPokenavStructPtr->unkBC92 = 1;
+ }
+ else
+ {
+ gPokenavStructPtr->unkBC92 = 0;
+ }
+}
+
+bool8 sub_80F3BD4(void)
+{
+ if (gPokenavStructPtr->unkBC92)
+ {
+ gPokenavStructPtr->unkBC92 = !gPokenavStructPtr->unk9348->affineAnimEnded;
+ if (!gPokenavStructPtr->unkBC92)
+ {
+ FreeOamMatrix(gPokenavStructPtr->unk9348->oam.matrixNum);
+ DestroySprite(gPokenavStructPtr->unk9348);
+ gPokenavStructPtr->unk9348 = NULL;
+ }
+
+ return gPokenavStructPtr->unkBC92;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void sub_80F3C2C(void)
+{
+ u16 i;
+
+ if (gPokenavStructPtr->unk9348)
+ {
+ FreeOamMatrix(gPokenavStructPtr->unk9348->oam.matrixNum);
+ DestroySprite(gPokenavStructPtr->unk9348);
+ gPokenavStructPtr->unk9348 = NULL;
+ }
+
+ for (i = 0; i < 12; i++)
+ FreeSpriteTilesByTag(i + 0xB);
+
+ for (i = 0; i < 5; i++)
+ FreeSpritePaletteByTag(i + 0xA);
+
+ sub_80F2F48();
+}
+
+void sub_80F3C94(void)
+{
+ u16 i;
+ struct SpriteSheet spriteSheet;
+ struct SpritePalette spritePalette;
+
+ spriteSheet = gUnknown_083E4784;
+ spritePalette = gUnknown_083E478C;
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+ for (i = 0; i < 10; i++)
+ gPokenavStructPtr->unk8800[i] = NULL;
+}
+
+void sub_80F3CE8(void)
+{
+ move_anim_execute();
+ FreeSpriteTilesByTag(0x17);
+ FreeSpritePaletteByTag(0xF);
+}
+
+void sub_80F3D00(void)
+{
+ u8 spriteId;
+ u16 i;
+ u8 var1;
+ struct UnkUsePokeblockSub *var0 = &gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC];
+
+ if (!var0->unk4)
+ return;
+
+ var1 = gPokenavStructPtr->unk8931[gPokenavStructPtr->unk8fe9];
+ for (i = 0; i < var1 + 1; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83E4800, 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gPokenavStructPtr->unk8800[i] = &gSprites[spriteId];
+ gPokenavStructPtr->unk8800[i]->invisible = 1;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ sub_80F3F20(var1, 1);
+}
+
+void move_anim_execute(void)
+{
+ u16 i;
+
+ for (i = 0; i < 10; i++)
+ {
+ if (!gPokenavStructPtr->unk8800[i])
+ return;
+
+ DestroySprite(gPokenavStructPtr->unk8800[i]);
+ gPokenavStructPtr->unk8800[i] = NULL;
+ }
+}
+
+void sub_80F3DDC(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 60)
+ {
+ sprite->data[1] = 0;
+ sub_80F3F20(sprite->data[2], 0);
+ }
+}
+
+void sub_80F3E04(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ sprite->data[1] = 0;
+ sprite->callback = sub_80F3DDC;
+ }
+}
+
+void sub_80F3E24(struct Sprite *sprite)
+{
+ if (gPokenavStructPtr->unk8768)
+ {
+ sprite->pos1.x = gPokenavStructPtr->unk8768->pos1.x
+ + gPokenavStructPtr->unk8768->pos2.x
+ + gUnknown_083E4794[sprite->data[0]][0];
+ sprite->pos1.y = gPokenavStructPtr->unk8768->pos1.y
+ + gPokenavStructPtr->unk8768->pos2.y
+ + gUnknown_083E4794[sprite->data[0]][1];
+ }
+ else
+ {
+ sprite->pos1.x = gUnknown_083E4794[sprite->data[0]][0] + 40;
+ sprite->pos1.y = gUnknown_083E4794[sprite->data[0]][1] + 104;
+ }
+}
+
+void sub_80F3E9C(struct Sprite *sprite)
+{
+ if (sprite->data[1])
+ {
+ if (--sprite->data[1])
+ return;
+
+ SeekSpriteAnim(sprite, 0);
+ sprite->invisible = 0;
+ }
+
+ sub_80F3E24(sprite);
+ if (sprite->animEnded)
+ {
+ sprite->invisible = 1;
+ if (sprite->data[3] == sprite->data[2])
+ {
+ if (sprite->data[3] == 9)
+ {
+ sub_80F3FAC();
+ sprite->callback = sub_80F3E04;
+ }
+ else
+ {
+ sprite->callback = sub_80F3DDC;
+ }
+ }
+ else
+ {
+ sprite->callback = SpriteCallbackDummy;
+ }
+ }
+}
+
+void sub_80F3F20(u8 arg0, u8 arg1)
+{
+ u16 i;
+
+ for (i = 0; i < 10; i++)
+ {
+ if (gPokenavStructPtr->unk8800[i])
+ {
+ gPokenavStructPtr->unk8800[i]->data[0] = i;
+ gPokenavStructPtr->unk8800[i]->data[1] = i * 16 + 1;
+ gPokenavStructPtr->unk8800[i]->data[2] = arg0;
+ gPokenavStructPtr->unk8800[i]->data[3] = i;
+
+ if (!arg1 || arg0 != 9)
+ {
+ gPokenavStructPtr->unk8800[i]->callback = sub_80F3E9C;
+ }
+ else
+ {
+ sub_80F3E24(gPokenavStructPtr->unk8800[i]);
+ sub_80F3FAC();
+ gPokenavStructPtr->unk8800[i]->callback = sub_80F3E04;
+ gPokenavStructPtr->unk8800[i]->invisible = 0;
+ }
+ }
+ }
+}
+
+void sub_80F3FAC(void)
+{
+ u16 i;
+
+ for (i = 0; i < 10; i++)
+ {
+ if (gPokenavStructPtr->unk8800[i])
+ {
+ SeekSpriteAnim(gPokenavStructPtr->unk8800[i], 0);
+ gPokenavStructPtr->unk8800[i]->invisible = 0;
+ }
+ }
+}
+
+void sub_80F3FF0(void)
+{
+ gPokenavStructPtr->unk306 = 0;
+ if (!gPokenavStructPtr->unk6DAC)
+ while (sub_80F4024());
+}
+
+bool8 sub_80F4024(void)
+{
+ u8 paletteIndex;
+ u8 spriteId;
+ struct SpritePalette spritePalette;
+
+ switch (gPokenavStructPtr->unk306)
+ {
+ case 0:
+ LZ77UnCompWram(gUnknown_083E329C, gPokenavStructPtr->unk131E4);
+ break;
+ case 1:
+ {
+ struct SpriteSheet spriteSheet = {
+ .data = gPokenavStructPtr->unk131E4,
+ .size = sizeof(gPokenavStructPtr->unk131E4),
+ .tag = 0x18,
+ };
+ LoadSpriteSheet(&spriteSheet);
+ break;
+ }
+ case 2:
+ spritePalette = gUnknown_083E4818;
+ LoadSpritePalette(&spritePalette);
+ paletteIndex = IndexOfSpritePaletteTag(0x10);
+ gPokenavStructPtr->unk308 = -3 & ~(1 << (paletteIndex + 0x10));
+ break;
+ case 3:
+ spriteId = CreateSprite(&gSpriteTemplate_83E4850, 218, 14, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gPokenavStructPtr->unk6D98 = &gSprites[spriteId];
+ gPokenavStructPtr->unk6D98->data[0] = 0;
+ }
+ else
+ {
+ gPokenavStructPtr->unk6D98 = NULL;
+ }
+
+ gPokenavStructPtr->unk306++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+
+ gPokenavStructPtr->unk306++;
+ return TRUE;
+}
+
+void sub_80F4138(struct Sprite *sprite)
+{
+ sprite->pos2.y = -gPokenavStructPtr->unk030C;
+ if (sprite->pos2.y <= -32)
+ {
+ if (sprite->data[0] == 0)
+ {
+ sprite->invisible = 1;
+ sprite->data[0] = 1;
+ }
+ }
+ else
+ {
+ if (sprite->data[0] == 1)
+ {
+ sprite->invisible = 0;
+ sprite->data[0] = 0;
+ }
+ }
+}
+
+#ifdef NONMATCHING
+// close, but the last DmaCopy16 is sharing the 0x400 value from the beginning of the function.
+void sub_80F4194(u8 *arg0, u8 *text)
+{
+ u8 i;
+ u8 *tileBuffer;
+ u32 *tileBuf2;
+
+ tileBuffer = gUnknown_083DFEC8;
+ DmaFill16(3, 0x1111, tileBuffer, 0x280);
+ DmaFill16Defvars(3, 0x1111, 0x400 + tileBuffer, 0x280);
+ Text_InitWindow8004E3C(&gWindowTemplate_81E70F0, tileBuffer, text);
+
+ DmaClear16(3, tileBuffer + 0x220, 0x60);
+ DmaClear16(3, tileBuffer + 0x620, 0x60);
+
+ tileBuf2 = (int *)tileBuffer + 0x80;
+ tileBuf2[0] &= 0x0FFFFFFF;
+ tileBuf2[1] &= 0x0FFFFFFF;
+ tileBuf2[2] &= 0x0FFFFFFF;
+ tileBuf2[3] &= 0x0FFFFFFF;
+ tileBuf2[4] &= 0x0FFFFFFF;
+ tileBuf2[5] &= 0x0FFFFFFF;
+ tileBuf2[6] &= 0x0FFFFFFF;
+ tileBuf2[7] &= 0x0FFFFFFF;
+
+ tileBuf2 = (int *)tileBuffer + 0x180;
+ tileBuf2[0] &= 0x0FFFFFFF;
+ tileBuf2[1] &= 0x0FFFFFFF;
+ tileBuf2[2] &= 0x0FFFFFFF;
+ tileBuf2[3] &= 0x0FFFFFFF;
+ tileBuf2[4] &= 0x0FFFFFFF;
+ tileBuf2[5] &= 0x0FFFFFFF;
+ tileBuf2[6] &= 0x0FFFFFFF;
+ tileBuf2[7] &= 0x0FFFFFFF;
+
+ for (i = 0; i < 5; i++)
+ {
+ DmaCopy16(3, &tileBuffer[128 * i], &arg0[i * 256], 128);
+ DmaCopy16(3, &tileBuffer[128 * i + 0x400], &arg0[32 * ((i * 8) + 4)], 128);
+ }
+}
+#else
+NAKED
+void sub_80F4194(u8 *arg0, u8 *text)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ adds r7, r0, 0\n\
+ adds r2, r1, 0\n\
+ ldr r0, _080F42A4 @ =gUnknown_083DFEC8\n\
+ ldr r6, [r0] @ r6 = tileBuffer\n\
+ mov r0, sp \n\
+ ldr r1, _080F42A8 @ =0x00001111\n\
+ adds r5, r1, 0\n\
+ strh r5, [r0]\n\
+ ldr r4, _080F42AC @ =0x040000d4\n\
+ str r0, [r4]\n\
+ str r6, [r4, 0x4]\n\
+ ldr r3, _080F42B0 @ =0x81000140\n\
+ str r3, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ adds r1, r6, r0\n\
+ mov r0, sp\n\
+ strh r5, [r0]\n\
+ str r0, [r4]\n\
+ str r1, [r4, 0x4]\n\
+ str r3, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ ldr r0, _080F42B4 @ =gWindowTemplate_81E70F0\n\
+ adds r1, r6, 0\n\
+ bl Text_InitWindow8004E3C\n\
+ movs r3, 0x88\n\
+ lsls r3, 2\n\
+ adds r1, r6, r3\n\
+ mov r0, sp\n\
+ movs r3, 0\n\
+ strh r3, [r0]\n\
+ str r0, [r4]\n\
+ str r1, [r4, 0x4]\n\
+ ldr r2, _080F42B8 @ =0x81000030\n\
+ str r2, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ movs r0, 0xC4\n\
+ lsls r0, 3\n\
+ adds r1, r6, r0\n\
+ mov r0, sp\n\
+ strh r3, [r0]\n\
+ str r0, [r4]\n\
+ str r1, [r4, 0x4]\n\
+ str r2, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ movs r1, 0x80\n\
+ lsls r1, 2\n\
+ adds r2, r6, r1\n\
+ ldr r0, [r2]\n\
+ ldr r1, _080F42BC @ =0x0fffffff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r0, [r2, 0x4]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x4]\n\
+ ldr r0, [r2, 0x8]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0xC]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0xC]\n\
+ ldr r0, [r2, 0x10]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x10]\n\
+ ldr r0, [r2, 0x14]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x14]\n\
+ ldr r0, [r2, 0x18]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x18]\n\
+ ldr r0, [r2, 0x1C]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x1C]\n\
+ movs r3, 0xC0\n\
+ lsls r3, 3\n\
+ adds r2, r6, r3\n\
+ ldr r0, [r2]\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r0, [r2, 0x4]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x4]\n\
+ ldr r0, [r2, 0x8]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0xC]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0xC]\n\
+ ldr r0, [r2, 0x10]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x10]\n\
+ ldr r0, [r2, 0x14]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x14]\n\
+ ldr r0, [r2, 0x18]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x18]\n\
+ ldr r0, [r2, 0x1C]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x1C]\n\
+ movs r1, 0\n\
+ ldr r2, _080F42C0 @ =0x80000040\n\
+_080F4268:\n\
+ lsls r0, r1, 7\n\
+ adds r0, r6, r0\n\
+ str r0, [r4]\n\
+ lsls r0, r1, 8\n\
+ adds r0, r7, r0\n\
+ str r0, [r4, 0x4]\n\
+ str r2, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ lsls r0, r1, 7\n\
+ movs r3, 0x80\n\
+ lsls r3, 3\n\
+ adds r0, r3\n\
+ adds r0, r6, r0\n\
+ str r0, [r4]\n\
+ lsls r0, r1, 3\n\
+ adds r0, 0x4\n\
+ lsls r0, 5\n\
+ adds r0, r7, r0\n\
+ str r0, [r4, 0x4]\n\
+ str r2, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ adds r0, r1, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, 0x4\n\
+ bls _080F4268\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080F42A4: .4byte gUnknown_083DFEC8\n\
+_080F42A8: .4byte 0x00001111\n\
+_080F42AC: .4byte 0x040000d4\n\
+_080F42B0: .4byte 0x81000140\n\
+_080F42B4: .4byte gWindowTemplate_81E70F0\n\
+_080F42B8: .4byte 0x81000030\n\
+_080F42BC: .4byte 0x0fffffff\n\
+_080F42C0: .4byte 0x80000040\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80F42C4(u8 *arg0)
+{
+ u16 i, tileOffset;
+ u8 spriteId;
+ struct SpriteSheet spriteSheet = {
+ .data = gPokenavStructPtr->unkD1E4[0],
+ .size = 0x500,
+ .tag = 0x1A,
+ };
+
+ sub_80F4194(gPokenavStructPtr->unkD1E4[0], arg0);
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&gUnknown_083E4868);
+
+ tileOffset = 0;
+ for (i = 0; i < 5; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83E4878, i * 32 + 113, 16, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.tileNum += tileOffset;
+ gPokenavStructPtr->unkCED4[i] = &gSprites[spriteId];
+ }
+ else
+ {
+ gPokenavStructPtr->unkCED4[i] = NULL;
+ }
+
+ tileOffset += 8;
+ }
+}
+
+void sub_80F4394(void)
+{
+ u16 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (gPokenavStructPtr->unkCED4[i])
+ DestroySprite(gPokenavStructPtr->unkCED4[i]);
+ }
+
+ FreeSpriteTilesByTag(0x1A);
+ FreeSpritePaletteByTag(0x12);
+}
+
+void sub_80F43D4(u8 *arg0)
+{
+ u16 tile;
+
+ sub_80F4194(gPokenavStructPtr->unkD1E4[0], arg0);
+ tile = GetSpriteTileStartByTag(0x1A);
+ if (tile != 0xFFFF)
+ DmaCopy32Defvars(3, gPokenavStructPtr->unkD1E4[0], (void *)(VRAM + 0x10000 + (tile * 32)), 0x500);
+}
+
+u8 *sub_80F4428(u8 *arg0, u16 arg1, u8 arg2)
+{
+ return sub_80F6514(arg0, arg1, arg2);
+}
+
+u8 *sub_80F443C(u8 *arg0, u16 arg1)
+{
+ return AlignInt1InMenuWindow(StringCopy(arg0, gOtherText_Number), arg1, 56, 1);
+}
+
+u8 *sub_80F445C(u8 *arg0, u16 arg1)
+{
+ u8 *buffer = AlignInt1InMenuWindow(arg0, arg1, 23, 1);
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x11;
+ buffer[2] = 1;
+ buffer += 3;
+ buffer[0] = CHAR_SLASH;
+ buffer += 1;
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x11;
+ buffer[2] = 1;
+ buffer += 3;
+ buffer = AlignInt1InMenuWindow(buffer, gPokenavStructPtr->unk8774 + 1, 50, 1);
+ return buffer;
+}
+
+u32 sub_80F44B0(u16 box, u16 monIndex, int monDataField, int *text)
+{
+ if (box == 14)
+ {
+ if (monDataField == MON_DATA_NICKNAME || monDataField == MON_DATA_OT_NAME)
+ return GetMonData(&gPlayerParty[monIndex], monDataField, text);
+ else
+ return GetMonData(&gPlayerParty[monIndex], monDataField);
+ }
+ else
+ {
+ if (monDataField == MON_DATA_NICKNAME || monDataField == MON_DATA_OT_NAME)
+ return GetBoxMonData(&gPokemonStorage.boxes[box][monIndex], monDataField, text);
+ else
+ return GetBoxMonData(&gPokemonStorage.boxes[box][monIndex], monDataField);
+ }
+}
+
+void SetMonMarkings(u16 box, u16 monIndex, u8 markings)
+{
+ if (box == 14)
+ SetMonData(&gPlayerParty[monIndex], MON_DATA_MARKINGS, &markings);
+ else
+ SetBoxMonData(&gPokemonStorage.boxes[box][monIndex], MON_DATA_MARKINGS, &markings);
+}
+
+void sub_80F45A0(s16 arg0, u8 arg1)
+{
+ u8 box;
+ u8 var0 = gPokenavStructPtr->unk893c[arg0].unk4;
+ if (var0)
+ {
+ sub_80F4428(gPokenavStructPtr->unk8829[arg1], arg0, 0);
+ box = gPokenavStructPtr->unk893c[arg0].unk1;
+ if (box == 14)
+ AlignStringInMenuWindow(gPokenavStructPtr->unk88E9[arg1], gOtherText_InParty, 64, 0);
+ else
+ AlignStringInMenuWindow(gPokenavStructPtr->unk88E9[arg1], gPokemonStorage.boxNames[box], 64, 0);
+
+ gPokenavStructPtr->unk8937[arg1] = 1;
+ }
+ else
+ {
+ AlignStringInMenuWindow(gPokenavStructPtr->unk8829[arg1], gEmptyString_81E72B0, 104, 0);
+ AlignStringInMenuWindow(gPokenavStructPtr->unk88E9[arg1], gEmptyString_81E72B0, 64, 0);
+ gPokenavStructPtr->unk8937[arg1] = var0;
+ }
+}
+
+void sub_80F468C(s16 arg0, u8 arg1)
+{
+ u16 i;
+ u16 box;
+ u16 monIndex;
+
+ if (gPokenavStructPtr->unk893c[arg0].unk4)
+ {
+ box = gPokenavStructPtr->unk893c[arg0].unk1;
+ monIndex = gPokenavStructPtr->unk893c[arg0].partyIdx;
+ gPokenavStructPtr->unk8ff0[arg1][0] = sub_80F44B0(box, monIndex, MON_DATA_COOL, NULL);
+ gPokenavStructPtr->unk8ff0[arg1][1] = sub_80F44B0(box, monIndex, MON_DATA_TOUGH, NULL);
+ gPokenavStructPtr->unk8ff0[arg1][2] = sub_80F44B0(box, monIndex, MON_DATA_SMART, NULL);
+ gPokenavStructPtr->unk8ff0[arg1][3] = sub_80F44B0(box, monIndex, MON_DATA_CUTE, NULL);
+ gPokenavStructPtr->unk8ff0[arg1][4] = sub_80F44B0(box, monIndex, MON_DATA_BEAUTY, NULL);
+
+ gPokenavStructPtr->unk8931[arg1] = sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) != 255
+ ? sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) / 29
+ : 9;
+
+ gPokenavStructPtr->unk8934[arg1] = sub_80F44B0(box, monIndex, MON_DATA_MARKINGS, NULL);
+ sub_80F55AC(gPokenavStructPtr->unk8ff0[arg1], gPokenavStructPtr->unk9004[arg1]);
+ }
+ else
+ {
+ for (i = 0; i < 5; i++)
+ {
+ gPokenavStructPtr->unk8ff0[arg1][i] = 0;
+ gPokenavStructPtr->unk9004[arg1][i].unk0 = 0x9B;
+ gPokenavStructPtr->unk9004[arg1][i].unk2 = 0x5B;
+ }
+ }
+}
+
+void sub_80F4824(s16 arg0, u8 arg1)
+{
+ u16 species;
+ u32 otId;
+ u32 personality;
+ u16 box;
+ u16 monIndex;
+
+ if (gPokenavStructPtr->unk893c[arg0].unk4)
+ {
+ box = gPokenavStructPtr->unk893c[arg0].unk1;
+ monIndex = gPokenavStructPtr->unk893c[arg0].partyIdx;
+ species = sub_80F44B0(box, monIndex, MON_DATA_SPECIES2, NULL);
+ otId = sub_80F44B0(box, monIndex, MON_DATA_OT_ID, NULL);
+ personality = sub_80F44B0(box, monIndex, MON_DATA_PERSONALITY, NULL);
+
+ HandleLoadSpecialPokePic(
+ &gMonFrontPicTable[species],
+ gMonFrontPicCoords[species].coords,
+ 1,
+ (intptr_t)gPokenavStructPtr->unk131E4,
+ gPokenavStructPtr->unkD1E4[arg1],
+ species,
+ personality);
+
+ LZ77UnCompWram(GetMonSpritePalFromOtIdPersonality(species, otId, personality), gPokenavStructPtr->unk0[arg1]);
+ gPokenavStructPtr->unkD1D6[arg1] = species;
+ }
+}
+
+void sub_80F4900(s16 arg0, u8 arg1)
+{
+ sub_80F45A0(arg0, arg1);
+ sub_80F468C(arg0, arg1);
+ sub_80F4824(arg0, arg1);
+}
+
+void sub_80F492C(void)
+{
+ gPokenavStructPtr->unk8FE4 = 0;
+}
+
+#ifdef NONMATCHING
+// registers r3/r4 are swapped
+void sub_80F4944(struct UnkUsePokeblockSub *arg0)
+{
+ u16 i;
+ u16 r3;
+ u16 r4;
+
+ i = 0;
+ r4 = gPokenavStructPtr->unk8FE4;
+ r3 = r4 / 2;
+ while (r3 != r4)
+ {
+ if (arg0->unk0 > gPokenavStructPtr->unk893c[r3].unk0)
+ r4 = r3;
+ else
+ i = r3 + 1;
+
+ r3 = ((r4 - i) / 2) + i;
+ }
+
+ r4 = gPokenavStructPtr->unk8FE4;
+ while (r4 > r3)
+ {
+ gPokenavStructPtr->unk893c[r4] = gPokenavStructPtr->unk893c[r4 - 1];
+ r4--;
+ }
+
+ gPokenavStructPtr->unk893c[r3] = *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)
+{
+ u16 i;
+
+ gPokenavStructPtr->unk893c[0].unk2 = 1;
+ for (i = 1; i < gPokenavStructPtr->unk8FE4; i++)
+ {
+ if (gPokenavStructPtr->unk893c[i].unk0 == gPokenavStructPtr->unk893c[i - 1].unk0)
+ gPokenavStructPtr->unk893c[i].unk2 = gPokenavStructPtr->unk893c[i - 1].unk2;
+ else
+ gPokenavStructPtr->unk893c[i].unk2 = i + 1;
+ }
+
+ gPokenavStructPtr->unk876C = 0;
+ gPokenavStructPtr->unk8770 = 0;
+ gPokenavStructPtr->unk876E = 0;
+ gPokenavStructPtr->unk8772 = gPokenavStructPtr->unk8FE4 < 9 ? (gPokenavStructPtr->unk8FE4 - 1) : 7;
+ gPokenavStructPtr->unk8774 = gPokenavStructPtr->unk8FE4 - 1;
+ gPokenavStructPtr->unk87C9 = gPokenavStructPtr->unk8774 > 7;
+}
+
+void sub_80F4B20(void)
+{
+ s16 var0;
+ s16 var1;
+
+ sub_80F4900(gPokenavStructPtr->unk87DC, 0);
+ sub_80F2E18(0);
+ if (gPokenavStructPtr->unk87DA == 1)
+ {
+ gPokenavStructPtr->unk8fe9 = 0;
+ gPokenavStructPtr->unk8FEA = 0;
+ gPokenavStructPtr->unk8FEB = 0;
+ }
+ else
+ {
+ gPokenavStructPtr->unk8fe9 = 0;
+ gPokenavStructPtr->unk8FEA = 1;
+ gPokenavStructPtr->unk8FEB = 2;
+
+ var0 = gPokenavStructPtr->unk87DC + 1;
+ if (var0 >= gPokenavStructPtr->unk87DA)
+ var0 = 0;
+
+ var1 = gPokenavStructPtr->unk87DC - 1;
+ if (var1 < 0)
+ var1 = gPokenavStructPtr->unk87DA - 1;
+
+ sub_80F4900(var0, 1);
+ sub_80F4900(var1, 2);
+ }
+}
+
+void sub_80F4BD0(void)
+{
+ u16 i, j;
+
+ for (i = 0, j = 0; i < gPokenavStructPtr->unk8828; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ gPokenavStructPtr->unk893c[j].unk1 = 14;
+ gPokenavStructPtr->unk893c[j].partyIdx = i;
+ gPokenavStructPtr->unk893c[j].unk2 = j + 1;
+ gPokenavStructPtr->unk893c[j].unk4 = 1;
+ j++;
+ }
+ }
+
+ gPokenavStructPtr->unk893c[j].unk1 = 0;
+ gPokenavStructPtr->unk893c[j].partyIdx = 0;
+ gPokenavStructPtr->unk893c[j].unk2 = 0;
+ gPokenavStructPtr->unk893c[j].unk4 = 0;
+ gPokenavStructPtr->unk87DC = 0;
+ gPokenavStructPtr->unk87DA = j + 1;
+ sub_80F4B20();
+ gPokenavStructPtr->unk87CB = 1;
+}
+
+void sub_80F4CF0(void)
+{
+ gPokenavStructPtr->unk87DC = gPokenavStructPtr->unk876E;
+ sub_80F4B20();
+
+ if (gPokenavStructPtr->unk8774 == 0)
+ gPokenavStructPtr->unk87CB = 0;
+ else
+ gPokenavStructPtr->unk87CB = 1;
+}
+
+void sub_80F4D44(void)
+{
+ gPokenavStructPtr->unk8FE6 = 0;
+ gPokenavStructPtr->unk8FE7 = 0;
+ sub_80F492C();
+
+ if (!gPokenavStructPtr->unk6DAC)
+ while (sub_80F4D88());
+}
+
+bool8 sub_80F4D88(void)
+{
+ u16 i;
+ register int mask asm("r3"); // FIXME
+ int nextValue;
+ struct UnkUsePokeblockSub var0;
+
+ switch (gPokenavStructPtr->unk8FE6)
+ {
+ default:
+ var0.unk4 = 1;
+ for (i = 0; i < 15; i++)
+ {
+
+ if (GetBoxMonData(&gPokemonStorage.boxes[gPokenavStructPtr->unk8FE6][gPokenavStructPtr->unk8FE7], MON_DATA_SPECIES)
+ && !GetBoxMonData(&gPokemonStorage.boxes[gPokenavStructPtr->unk8FE6][gPokenavStructPtr->unk8FE7], MON_DATA_IS_EGG))
+ {
+ var0.unk1 = gPokenavStructPtr->unk8FE6;
+ var0.partyIdx = gPokenavStructPtr->unk8FE7;
+ var0.unk0 = GetBoxMonData(
+ &gPokemonStorage.boxes[gPokenavStructPtr->unk8FE6][gPokenavStructPtr->unk8FE7],
+ gPokenavStructPtr->unk87D8);
+ sub_80F4944(&var0);
+ }
+
+ gPokenavStructPtr->unk8FE7++;
+ mask = 0xFF;
+ if (gPokenavStructPtr->unk8FE7 == 30)
+ {
+ gPokenavStructPtr->unk8FE7 = 0;
+ nextValue = gPokenavStructPtr->unk8FE6 + 1;
+ gPokenavStructPtr->unk8FE6 = nextValue;
+ if ((nextValue & mask) == 14)
+ break;
+ }
+ }
+ break;
+ case 14:
+ var0.unk4 = 1;
+ var0.unk1 = 14;
+ for (i = 0; i < gPokenavStructPtr->unk8828; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ var0.partyIdx = i;
+ var0.unk0 = GetMonData(&gPlayerParty[i], gPokenavStructPtr->unk87D8);
+ sub_80F4944(&var0);
+ }
+ }
+
+ sub_80F49F4();
+ gPokenavStructPtr->unk87DA = gPokenavStructPtr->unk8FE4;
+ gPokenavStructPtr->unk8FE6++;
+ break;
+ case 15:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_80F4F78(void)
+{
+ sub_80F53EC(gPokenavStructPtr->unk9004[3], gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9]);
+ sub_80F5504();
+}
+
+bool8 sub_80F4FB4(void)
+{
+ bool8 var0 = sub_80F5504();
+ bool8 var1 = sub_80F170C();
+ return var0 || var1;
+}
+
+void sub_80F4FDC(void)
+{
+ if (gPokenavStructPtr->unk76AA || gPokenavStructPtr->unk87DC != gPokenavStructPtr->unk8828)
+ sub_80F53EC(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9004[3]);
+}
+
+bool8 sub_80F5038(void)
+{
+ bool8 var0 = sub_80F5504();
+ bool8 var1 = sub_80F173C();
+ return var0 || var1;
+}
+
+void sub_80F5060(u8 arg0)
+{
+ u16 var0;
+ u8 var1;
+ u8 var2;
+
+ if (arg0)
+ var0 = gPokenavStructPtr->unk8FEB;
+ else
+ var0 = gPokenavStructPtr->unk8FEA;
+
+ sub_80F53EC(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9004[var0]);
+ var1 = gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk4;
+ if (arg0)
+ {
+ gPokenavStructPtr->unk8FEB = gPokenavStructPtr->unk8FEA;
+ gPokenavStructPtr->unk8FEA = gPokenavStructPtr->unk8fe9;
+ gPokenavStructPtr->unk8fe9 = var0;
+ gPokenavStructPtr->unk8FEC = gPokenavStructPtr->unk8FEB;
+
+ gPokenavStructPtr->unk87DC = gPokenavStructPtr->unk87DC
+ ? gPokenavStructPtr->unk87DC - 1
+ : gPokenavStructPtr->unk87DA - 1;
+ gPokenavStructPtr->unk8FEE = gPokenavStructPtr->unk87DC
+ ? gPokenavStructPtr->unk87DC - 1
+ : gPokenavStructPtr->unk87DA - 1;
+ }
+ else
+ {
+ gPokenavStructPtr->unk8FEA = gPokenavStructPtr->unk8FEB;
+ gPokenavStructPtr->unk8FEB = gPokenavStructPtr->unk8fe9;
+ gPokenavStructPtr->unk8fe9 = var0;
+ gPokenavStructPtr->unk8FEC = gPokenavStructPtr->unk8FEA;
+
+ gPokenavStructPtr->unk87DC = (gPokenavStructPtr->unk87DC < gPokenavStructPtr->unk87DA - 1)
+ ? gPokenavStructPtr->unk87DC + 1
+ : 0;
+ gPokenavStructPtr->unk8FEE = (gPokenavStructPtr->unk87DC < gPokenavStructPtr->unk87DA - 1)
+ ? gPokenavStructPtr->unk87DC + 1
+ : 0;
+ }
+
+ var2 = gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk4;
+ if (!var1)
+ gPokenavStructPtr->unk87E0 = sub_80F5264;
+ else if (!var2)
+ gPokenavStructPtr->unk87E0 = sub_80F52F8;
+ else
+ gPokenavStructPtr->unk87E0 = sub_80F5364;
+
+ gPokenavStructPtr->unk87DE = 0;
+}
+
+bool8 gpu_sync_bg_show(void)
+{
+ return gPokenavStructPtr->unk87E0();
+}
+
+bool8 sub_80F5264(void)
+{
+ switch (gPokenavStructPtr->unk87DE)
+ {
+ case 0:
+ sub_80F2E18(gPokenavStructPtr->unk8fe9);
+ sub_80F01E0(gPokenavStructPtr->unk8fe9);
+ gPokenavStructPtr->unk87DE++;
+ // fall through
+ case 1:
+ if (!sub_80F4FB4())
+ {
+ sub_80F4900(gPokenavStructPtr->unk8FEE, gPokenavStructPtr->unk8FEC);
+ gPokenavStructPtr->unk87DE++;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_80F52F8(void)
+{
+ switch (gPokenavStructPtr->unk87DE)
+ {
+ case 0:
+ if (!sub_80F5038())
+ {
+ sub_80F01E0(gPokenavStructPtr->unk8fe9);
+ sub_80F4900(gPokenavStructPtr->unk8FEE, gPokenavStructPtr->unk8FEC);
+ gPokenavStructPtr->unk87DE++;
+ }
+ break;
+ case 1:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_80F5364(void)
+{
+ switch (gPokenavStructPtr->unk87DE)
+ {
+ case 0:
+ sub_80F5504();
+ if (!sub_80F173C())
+ {
+ sub_80F2E18(gPokenavStructPtr->unk8fe9);
+ sub_80F01E0(gPokenavStructPtr->unk8fe9);
+ gPokenavStructPtr->unk87DE++;
+ }
+ break;
+ case 1:
+ if (!sub_80F4FB4())
+ gPokenavStructPtr->unk87DE++;
+ break;
+ case 2:
+ sub_80F4900(gPokenavStructPtr->unk8FEE, gPokenavStructPtr->unk8FEC);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_80F53EC(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1)
+{
+ u16 i, j;
+ int r5;
+ int r6;
+
+ for (i = 0; i < 5; i++)
+ {
+ r5 = arg0[i].unk0 << 8;
+ r6 = ((arg1[i].unk0 - arg0[i].unk0) << 8) / 10;
+ for (j = 0; j < 9; j++)
+ {
+ gPokenavStructPtr->unk9054[j][i].unk0 = (r5 >> 8) + ((r5 >> 7) & 1);
+ r5 += r6;
+ }
+
+ gPokenavStructPtr->unk9054[j][i].unk0 = arg1[i].unk0;
+ r5 = arg0[i].unk2 << 8;
+ r6 = ((arg1[i].unk2 - arg0[i].unk2) << 8) / 10;
+ for (j = 0; j < 9; j++)
+ {
+ gPokenavStructPtr->unk9054[j][i].unk2 = (r5 >> 8) + ((r5 >> 7) & 1);
+ r5 += r6;
+ }
+
+ gPokenavStructPtr->unk9054[j][i].unk2 = arg1[i].unk2;
+ }
+
+ gPokenavStructPtr->unk9342 = 0;
+}
+
+bool8 sub_80F5504(void)
+{
+ if (gPokenavStructPtr->unk9342 < 10)
+ {
+ sub_80F556C(gPokenavStructPtr->unk9054[gPokenavStructPtr->unk9342++]);
+ return gPokenavStructPtr->unk9342 != 10;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void sub_80F5550(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1)
+{
+ sub_80F53EC(arg0, arg1);
+}
+
+bool8 sub_80F555C(void)
+{
+ return sub_80F5504();
+}
+
+void sub_80F556C(struct UnkPokenav11 *arg0)
+{
+ u16 i;
+
+ for (i = 0; i < 5; i++)
+ gPokenavStructPtr->unk911C[i] = arg0[i];
+
+ gPokenavStructPtr->unk9344 = 1;
+}
+
void sub_80F55AC(u8 *a0, struct UnkPokenav11 a1[])
{
u16 i;
@@ -55,3 +5187,678 @@ void sub_80F567C(u8 *a0, struct UnkPokenav11 a1[])
{
sub_80F55AC(a0, a1);
}
+
+/* TODO
+// emerald: sub_81D2278
+void sub_80F5688(u16 * r6, u16 * r5, u16 * sp0, u8 r9, u16 * r7)
+{
+ u16 sp04;
+ u16 r0;
+ u16 r4;
+ u16 r10;
+ if (r5[1] < sp0[1])
+ {
+ sp04 = r5[1];
+ r4 = r5[0] << 10;
+ r0 = sp0[1];
+ r10 = sp0[0];
+ }
+}
+*/
+
+NAKED
+void sub_80F5688(u16 r6[66][2], struct UnkPokenav11 * r5, struct UnkPokenav11 * sp0, u8 r9, u16 r7[66][2])
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x14\n"
+ "\tadds r6, r0, 0\n"
+ "\tadds r5, r1, 0\n"
+ "\tstr r2, [sp]\n"
+ "\tldr r7, [sp, 0x34]\n"
+ "\tlsls r3, 24\n"
+ "\tlsrs r3, 24\n"
+ "\tmov r9, r3\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tldrh r0, [r5, 0x2]\n"
+ "\tldrh r1, [r2, 0x2]\n"
+ "\tcmp r0, r1\n"
+ "\tbcs _080F56D0\n"
+ "\tadds r2, r0, 0\n"
+ "\tstr r2, [sp, 0x4]\n"
+ "\tldr r3, [sp]\n"
+ "\tldrh r0, [r3, 0x2]\n"
+ "\tldrh r1, [r5]\n"
+ "\tlsls r4, r1, 10\n"
+ "\tldrh r2, [r3]\n"
+ "\tmov r10, r2\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tsubs r0, r3\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tmov r8, r0\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080F56FC\n"
+ "\tsubs r0, r2, r1\n"
+ "\tb _080F56F2\n"
+ "_080F56D0:\n"
+ "\tldrh r0, [r5, 0x2]\n"
+ "\tldr r1, [sp]\n"
+ "\tldrh r1, [r1, 0x2]\n"
+ "\tstr r1, [sp, 0x4]\n"
+ "\tldr r2, [sp]\n"
+ "\tldrh r1, [r2]\n"
+ "\tlsls r4, r1, 10\n"
+ "\tldrh r3, [r5]\n"
+ "\tmov r10, r3\n"
+ "\tldr r2, [sp, 0x4]\n"
+ "\tsubs r0, r2\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tmov r8, r0\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080F56FC\n"
+ "\tsubs r0, r3, r1\n"
+ "_080F56F2:\n"
+ "\tlsls r0, 10\n"
+ "\tmov r1, r8\n"
+ "\tbl __divsi3\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "_080F56FC:\n"
+ "\tmov r0, r8\n"
+ "\tadds r0, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tmov r8, r0\n"
+ "\tcmp r7, 0\n"
+ "\tbne _080F5746\n"
+ "\tldr r0, [sp, 0x4]\n"
+ "\tsubs r0, 0x38\n"
+ "\tlsls r0, 2\n"
+ "\tadds r6, r0\n"
+ "\tmovs r5, 0\n"
+ "\tmov r3, r9\n"
+ "\tlsls r3, 1\n"
+ "\tmov r12, r3\n"
+ "\tmov r0, r10\n"
+ "\tadd r0, r9\n"
+ "\tstr r0, [sp, 0xC]\n"
+ "\tcmp r7, r8\n"
+ "\tbcs _080F57D4\n"
+ "\tmovs r7, 0x1\n"
+ "_080F5726:\n"
+ "\tadds r2, r3, r6\n"
+ "\tasrs r1, r4, 10\n"
+ "\tasrs r0, r4, 9\n"
+ "\tands r0, r7\n"
+ "\tadds r1, r0\n"
+ "\tadd r1, r9\n"
+ "\tstrh r1, [r2]\n"
+ "\tldr r1, [sp, 0x8]\n"
+ "\tadds r4, r1\n"
+ "\tadds r6, 0x4\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, r8\n"
+ "\tbcc _080F5726\n"
+ "\tb _080F57D4\n"
+ "_080F5746:\n"
+ "\tldr r2, [sp, 0x8]\n"
+ "\tcmp r2, 0\n"
+ "\tble _080F57E4\n"
+ "\tldr r0, [sp, 0x4]\n"
+ "\tsubs r0, 0x38\n"
+ "\tlsls r0, 2\n"
+ "\tadds r7, r0\n"
+ "\tmovs r5, 0\n"
+ "\tmov r3, r9\n"
+ "\tlsls r3, 1\n"
+ "\tmov r12, r3\n"
+ "\tmov r0, r10\n"
+ "\tadd r0, r9\n"
+ "\tstr r0, [sp, 0xC]\n"
+ "\tcmp r5, r8\n"
+ "\tbcs _080F5798\n"
+ "\tldr r0, _080F57D8 @ =0x00026bff\n"
+ "\tcmp r4, r0\n"
+ "\tbgt _080F5798\n"
+ "\tmov r1, r12\n"
+ "\tstr r1, [sp, 0x10]\n"
+ "\tmov r10, r0\n"
+ "_080F5772:\n"
+ "\tldr r3, [sp, 0x10]\n"
+ "\tadds r2, r3, r7\n"
+ "\tasrs r1, r4, 10\n"
+ "\tasrs r0, r4, 9\n"
+ "\tmovs r3, 0x1\n"
+ "\tands r0, r3\n"
+ "\tadds r1, r0\n"
+ "\tadd r1, r9\n"
+ "\tstrh r1, [r2]\n"
+ "\tldr r0, [sp, 0x8]\n"
+ "\tadds r4, r0\n"
+ "\tadds r7, 0x4\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, r8\n"
+ "\tbcs _080F5798\n"
+ "\tcmp r4, r10\n"
+ "\tble _080F5772\n"
+ "_080F5798:\n"
+ "\tldr r1, _080F57DC @ =gPokenavStructPtr\n"
+ "\tldr r0, [r1]\n"
+ "\tldr r2, [sp, 0x4]\n"
+ "\tadds r1, r2, r5\n"
+ "\tldr r3, _080F57E0 @ =0x00009340\n"
+ "\tadds r0, r3\n"
+ "\tstrh r1, [r0]\n"
+ "\tldrh r0, [r0]\n"
+ "\tsubs r0, 0x38\n"
+ "\tlsls r0, 2\n"
+ "\tadds r6, r0\n"
+ "\tcmp r5, r8\n"
+ "\tbcs _080F57D4\n"
+ "\tmov r3, r12\n"
+ "\tmovs r7, 0x1\n"
+ "_080F57B6:\n"
+ "\tadds r2, r3, r6\n"
+ "\tasrs r1, r4, 10\n"
+ "\tasrs r0, r4, 9\n"
+ "\tands r0, r7\n"
+ "\tadds r1, r0\n"
+ "\tadd r1, r9\n"
+ "\tstrh r1, [r2]\n"
+ "\tldr r0, [sp, 0x8]\n"
+ "\tadds r4, r0\n"
+ "\tadds r6, 0x4\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, r8\n"
+ "\tbcc _080F57B6\n"
+ "_080F57D4:\n"
+ "\tsubs r0, r6, 0x4\n"
+ "\tb _080F58C4\n"
+ "\t.align 2, 0\n"
+ "_080F57D8: .4byte 0x00026bff\n"
+ "_080F57DC: .4byte gPokenavStructPtr\n"
+ "_080F57E0: .4byte 0x00009340\n"
+ "_080F57E4:\n"
+ "\tldr r1, [sp, 0x8]\n"
+ "\tcmp r1, 0\n"
+ "\tbge _080F5890\n"
+ "\tldr r0, [sp, 0x4]\n"
+ "\tsubs r0, 0x38\n"
+ "\tlsls r0, 2\n"
+ "\tadds r6, r0\n"
+ "\tmovs r5, 0\n"
+ "\tmov r2, r9\n"
+ "\tlsls r2, 1\n"
+ "\tmov r12, r2\n"
+ "\tmov r3, r10\n"
+ "\tadd r3, r9\n"
+ "\tstr r3, [sp, 0xC]\n"
+ "\tcmp r5, r8\n"
+ "\tbcs _080F5842\n"
+ "\tadds r3, r2, r6\n"
+ "\tasrs r1, r4, 10\n"
+ "\tasrs r0, r4, 9\n"
+ "\tmovs r2, 0x1\n"
+ "\tands r0, r2\n"
+ "\tadds r1, r0\n"
+ "\tadd r1, r9\n"
+ "\tstrh r1, [r3]\n"
+ "\tb _080F5838\n"
+ "_080F5816:\n"
+ "\tldr r0, [sp, 0x8]\n"
+ "\tadds r4, r0\n"
+ "\tadds r6, 0x4\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, r8\n"
+ "\tbcs _080F5842\n"
+ "\tmov r1, r12\n"
+ "\tadds r3, r1, r6\n"
+ "\tasrs r2, r4, 10\n"
+ "\tasrs r0, r4, 9\n"
+ "\tmovs r1, 0x1\n"
+ "\tands r0, r1\n"
+ "\tadds r2, r0\n"
+ "\tadd r2, r9\n"
+ "\tstrh r2, [r3]\n"
+ "_080F5838:\n"
+ "\tldr r0, _080F5884 @ =0x00026bff\n"
+ "\tcmp r4, r0\n"
+ "\tbgt _080F5816\n"
+ "\tmovs r0, 0x9B\n"
+ "\tstrh r0, [r3]\n"
+ "_080F5842:\n"
+ "\tldr r2, _080F5888 @ =gPokenavStructPtr\n"
+ "\tldr r0, [r2]\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tadds r1, r3, r5\n"
+ "\tldr r2, _080F588C @ =0x00009340\n"
+ "\tadds r0, r2\n"
+ "\tstrh r1, [r0]\n"
+ "\tldrh r0, [r0]\n"
+ "\tsubs r0, 0x38\n"
+ "\tlsls r0, 2\n"
+ "\tadds r7, r0\n"
+ "\tcmp r5, r8\n"
+ "\tbcs _080F587E\n"
+ "\tmov r3, r12\n"
+ "\tmovs r6, 0x1\n"
+ "_080F5860:\n"
+ "\tadds r2, r3, r7\n"
+ "\tasrs r1, r4, 10\n"
+ "\tasrs r0, r4, 9\n"
+ "\tands r0, r6\n"
+ "\tadds r1, r0\n"
+ "\tadd r1, r9\n"
+ "\tstrh r1, [r2]\n"
+ "\tldr r0, [sp, 0x8]\n"
+ "\tadds r4, r0\n"
+ "\tadds r7, 0x4\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, r8\n"
+ "\tbcc _080F5860\n"
+ "_080F587E:\n"
+ "\tsubs r0, r7, 0x4\n"
+ "\tb _080F58C4\n"
+ "\t.align 2, 0\n"
+ "_080F5884: .4byte 0x00026bff\n"
+ "_080F5888: .4byte gPokenavStructPtr\n"
+ "_080F588C: .4byte 0x00009340\n"
+ "_080F5890:\n"
+ "\tldr r0, _080F58BC @ =gPokenavStructPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tldr r1, _080F58C0 @ =0x00009340\n"
+ "\tadds r0, r1\n"
+ "\tmov r2, sp\n"
+ "\tldrh r2, [r2, 0x4]\n"
+ "\tstrh r2, [r0]\n"
+ "\tldr r0, [sp, 0x4]\n"
+ "\tsubs r0, 0x38\n"
+ "\tlsls r0, 2\n"
+ "\tadds r6, r0\n"
+ "\tadds r7, r0\n"
+ "\tldrh r0, [r5]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r6, 0x2]\n"
+ "\tldr r3, [sp]\n"
+ "\tldrh r0, [r3]\n"
+ "\tstrh r0, [r7]\n"
+ "\tmovs r0, 0x9B\n"
+ "\tstrh r0, [r7, 0x2]\n"
+ "\tb _080F58CC\n"
+ "\t.align 2, 0\n"
+ "_080F58BC: .4byte gPokenavStructPtr\n"
+ "_080F58C0: .4byte 0x00009340\n"
+ "_080F58C4:\n"
+ "\tadd r0, r12\n"
+ "\tmov r1, sp\n"
+ "\tldrh r1, [r1, 0xC]\n"
+ "\tstrh r1, [r0]\n"
+ "_080F58CC:\n"
+ "\tadd sp, 0x14\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+
+void sub_80F58DC(struct UnkPokenav11 * a0)
+{
+ u16 i, r6, varMax;
+
+ if (a0[0].unk2 < a0[1].unk2)
+ {
+ r6 = a0[0].unk2;
+ sub_80F5688(gPokenavStructPtr->unk9130, &a0[0], &a0[1], 1, NULL);
+ }
+ else
+ {
+ r6 = a0[1].unk2;
+ sub_80F5688(gPokenavStructPtr->unk9130, &a0[1], &a0[0], 0, NULL);
+ }
+ sub_80F5688(gPokenavStructPtr->unk9130, &a0[1], &a0[2], 1, NULL);
+
+ i = a0[2].unk2 <= a0[3].unk2;
+ sub_80F5688(gPokenavStructPtr->unk9130, &a0[2], &a0[3], i, gPokenavStructPtr->unk9238);
+ for (i = 56; i < r6; i++)
+ {
+ gPokenavStructPtr->unk9130[i - 56][0] = 0;
+ gPokenavStructPtr->unk9130[i - 56][1] = 0;
+ }
+
+ for (i = a0[0].unk2; i <= gPokenavStructPtr->unk9340; i++)
+ gPokenavStructPtr->unk9130[i - 56][0] = 155;
+
+ varMax = max(gPokenavStructPtr->unk9340, a0[2].unk2);
+ for (i = varMax + 1; i < 122; i++)
+ {
+ gPokenavStructPtr->unk9130[i - 56][0] = 0;
+ gPokenavStructPtr->unk9130[i - 56][1] = 0;
+ }
+
+// for (i = 56; i < 122; i++)
+// {
+// if (gPokenavStructPtr->unk9130[i - 56][0] == 0 && gPokenavStructPtr->unk9130[i - 56][1] != 0)
+// gPokenavStructPtr->unk9130[i - 56][0] = 155;
+// }
+}
+
+void sub_80F5A1C(struct UnkPokenav11 *arg0)
+{
+ u16 i, r6, varMax;
+
+ if (arg0[0].unk2 < arg0[4].unk2)
+ {
+ r6 = arg0[0].unk2;
+ sub_80F5688(gPokenavStructPtr->unk9238, &arg0[0], &arg0[4], 0, NULL);
+ }
+ else
+ {
+ r6 = arg0[4].unk2;
+ sub_80F5688(gPokenavStructPtr->unk9238, &arg0[4], &arg0[0], 1, NULL);
+ }
+
+ sub_80F5688(gPokenavStructPtr->unk9238, &arg0[4], &arg0[3], 0, NULL);
+
+ for (i = 56; i < r6; i++)
+ {
+ gPokenavStructPtr->unk9238[i - 56][0] = 0;
+ gPokenavStructPtr->unk9238[i - 56][1] = 0;
+ }
+
+ for (i = arg0[0].unk2; i <= gPokenavStructPtr->unk9340; i++)
+ gPokenavStructPtr->unk9238[i - 56][1] = 155;
+
+ varMax = max(gPokenavStructPtr->unk9340, arg0[3].unk2 + 1);
+ for (i = varMax; i < 122; i++)
+ {
+ gPokenavStructPtr->unk9238[i - 56][0] = 0;
+ gPokenavStructPtr->unk9238[i - 56][1] = 0;
+ }
+
+// for (i = 0; i < 66; i++)
+// {
+// if (gPokenavStructPtr->unk9238[i][0] >= gPokenavStructPtr->unk9238[i][1])
+// {
+// gPokenavStructPtr->unk9238[i][1] = 0;
+// gPokenavStructPtr->unk9238[i][0] = 0;
+// }
+// }
+}
+
+void sub_80F5B38(void)
+{
+ gPokenavStructPtr->unk9345 = 0;
+}
+
+extern const struct ScanlineEffectParams gUnknown_083E4990;
+
+bool8 sub_80F5B50(void)
+{
+ s32 i;
+ struct ScanlineEffectParams params;
+
+ switch (gPokenavStructPtr->unk9345)
+ {
+ case 0:
+ ScanlineEffect_Clear();
+ for (i = 0; i < 16; i++)
+ {
+ gScanlineEffectRegBuffers[0][16 + 2 * i] = 0xEF;
+ gScanlineEffectRegBuffers[0][17 + 2 * i] = 0xEF;
+ gScanlineEffectRegBuffers[1][16 + 2 * i] = 0xEF;
+ gScanlineEffectRegBuffers[1][17 + 2 * i] = 0xEF;
+ }
+ gPokenavStructPtr->unk9345++;
+ return TRUE;
+ case 1:
+ params = gUnknown_083E4990;
+ ScanlineEffect_SetParams(params);
+ gPokenavStructPtr->unk9345++;
+ break;
+ }
+ return FALSE;
+}
+
+void sub_80F5BDC(void)
+{
+ gScanlineEffect.state = 3;
+ ScanlineEffect_InitHBlankDmaTransfer();
+}
+
+void sub_80F5BF0(void)
+{
+ u16 i;
+
+ if (gPokenavStructPtr->unk9344)
+ {
+ sub_80F58DC(gPokenavStructPtr->unk911C);
+ sub_80F5A1C(gPokenavStructPtr->unk911C);
+ for (i = 0; i < 66; i++)
+ {
+ gScanlineEffectRegBuffers[1][(i + 55) * 2 + 0] = gScanlineEffectRegBuffers[0][(i + 55) * 2 + 0] = (gPokenavStructPtr->unk9130[i][0] << 8) | (gPokenavStructPtr->unk9130[i][1]);
+ gScanlineEffectRegBuffers[1][(i + 55) * 2 + 1] = gScanlineEffectRegBuffers[0][(i + 55) * 2 + 1] = (gPokenavStructPtr->unk9238[i][0] << 8) | (gPokenavStructPtr->unk9238[i][1]);
+ }
+ gPokenavStructPtr->unk9344 = 0;
+ }
+}
+
+void sub_80F5CDC(u8 a0)
+{
+ u16 i, r5;
+
+ if (gPokenavStructPtr->unk9344)
+ {
+ sub_80F58DC(gPokenavStructPtr->unk911C);
+ sub_80F5A1C(gPokenavStructPtr->unk911C);
+ r5 = 2 * (55 - a0);
+ for (i = 0; i < 66; i ++)
+ {
+ gScanlineEffectRegBuffers[1][r5 + 0] = gScanlineEffectRegBuffers[0][r5 + 0] = (gPokenavStructPtr->unk9130[i][0] << 8) | (gPokenavStructPtr->unk9130[i][1]);
+ gScanlineEffectRegBuffers[1][r5 + 1] = gScanlineEffectRegBuffers[0][r5 + 1] = (gPokenavStructPtr->unk9238[i][0] << 8) | (gPokenavStructPtr->unk9238[i][1]);
+ r5 += 2;
+ }
+ gPokenavStructPtr->unk9344 = 0;
+ }
+}
+
+u8 sub_80F5DD4(void)
+{
+ if (({gMain.newAndRepeatedKeys & DPAD_UP;}))
+ {
+ return sub_80F5E20();
+ }
+ else if (({gMain.newAndRepeatedKeys & DPAD_DOWN;}))
+ {
+ return sub_80F5EE4();
+ }
+ else if (({gMain.newAndRepeatedKeys & DPAD_LEFT;}))
+ {
+ return sub_80F5FB4();
+ }
+ else if (({gMain.newAndRepeatedKeys & DPAD_RIGHT;}))
+ {
+ return sub_80F6010();
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+u8 sub_80F5E20(void)
+{
+ if (gPokenavStructPtr->unk876E == 0)
+ {
+ return 0;
+ }
+ if (gPokenavStructPtr->unk87C9 != 0 && gPokenavStructPtr->unk876C == 0)
+ {
+ sub_80F063C(-1);
+ sub_80F6074(-1);
+ return 2;
+ }
+ gPokenavStructPtr->unk876C--;
+ if (gPokenavStructPtr->unk87C9 == 0 && gPokenavStructPtr->unk876C < 0)
+ {
+ gPokenavStructPtr->unk876C = gPokenavStructPtr->unk8772;
+ }
+ gPokenavStructPtr->unk876E = gPokenavStructPtr->unk8770 + gPokenavStructPtr->unk876C;
+ if (gPokenavStructPtr->unk876E > gPokenavStructPtr->unk8774)
+ {
+ gPokenavStructPtr->unk876E -= gPokenavStructPtr->unk8774 + 1;
+ }
+ return 1;
+}
+
+u8 sub_80F5EE4(void)
+{
+ if (gPokenavStructPtr->unk876E == gPokenavStructPtr->unk8774)
+ {
+ return 0;
+ }
+ if (gPokenavStructPtr->unk87C9 != 0 && gPokenavStructPtr->unk876C == 7)
+ {
+ sub_80F063C(1);
+ sub_80F6074(1);
+ return 2;
+ }
+ gPokenavStructPtr->unk876C++;
+ if (gPokenavStructPtr->unk87C9 == 0 && gPokenavStructPtr->unk876C > gPokenavStructPtr->unk8772)
+ {
+ gPokenavStructPtr->unk876C = 0;
+ }
+ gPokenavStructPtr->unk876E = gPokenavStructPtr->unk8770 + gPokenavStructPtr->unk876C;
+ if (gPokenavStructPtr->unk876E > gPokenavStructPtr->unk8774)
+ {
+ gPokenavStructPtr->unk876E -= gPokenavStructPtr->unk8774 + 1;
+ }
+ return 1;
+}
+
+u8 sub_80F5FB4(void)
+{
+ s16 r4;
+ if (gPokenavStructPtr->unk8770 == 0 || gPokenavStructPtr->unk87C9 == 0)
+ {
+ return 0;
+ }
+ if (gPokenavStructPtr->unk8770 < 8)
+ {
+ r4 = -gPokenavStructPtr->unk8770;
+ }
+ else
+ {
+ r4 = -8;
+ }
+ sub_80F063C(r4);
+ sub_80F6074(r4);
+ return 2;
+}
+
+u8 sub_80F6010(void)
+{
+ s16 r4;
+ if (gPokenavStructPtr->unk8772 == gPokenavStructPtr->unk8774 || gPokenavStructPtr->unk87C9 == 0)
+ {
+ return 0;
+ }
+ r4 = gPokenavStructPtr->unk8774 - gPokenavStructPtr->unk8772;
+ if (r4 > 8)
+ {
+ r4 = 8;
+ }
+ sub_80F063C(r4);
+ sub_80F6074(r4);
+ return 2;
+}
+
+void sub_80F6074(s16 a0)
+{
+ gPokenavStructPtr->unk8770 += a0;
+ if (gPokenavStructPtr->unk8770 > gPokenavStructPtr->unk8774)
+ {
+ gPokenavStructPtr->unk8770 -= gPokenavStructPtr->unk8774 + 1;
+ }
+ if (gPokenavStructPtr->unk8770 < 0)
+ {
+ gPokenavStructPtr->unk8770 += gPokenavStructPtr->unk8774 + 1;
+ }
+ gPokenavStructPtr->unk8772 += a0;
+ if (gPokenavStructPtr->unk8772 > gPokenavStructPtr->unk8774)
+ {
+ gPokenavStructPtr->unk8772 -= gPokenavStructPtr->unk8774 + 1;
+ }
+ if (gPokenavStructPtr->unk8772 < 0)
+ {
+ gPokenavStructPtr->unk8772 += gPokenavStructPtr->unk8774 + 1;
+ }
+ gPokenavStructPtr->unk876E += a0;
+ if (gPokenavStructPtr->unk876E > gPokenavStructPtr->unk8774)
+ {
+ gPokenavStructPtr->unk876E -= gPokenavStructPtr->unk8774 + 1;
+ }
+ if (gPokenavStructPtr->unk876E < 0)
+ {
+ gPokenavStructPtr->unk876E += gPokenavStructPtr->unk8774 + 1;
+ }
+}
+
+void sub_80F6134(void)
+{
+ if (gPokenavStructPtr->unk87C9 != 0)
+ {
+ if (gPokenavStructPtr->unk87DC < gPokenavStructPtr->unk8774 - 7)
+ {
+ gPokenavStructPtr->unk876C = 0;
+ gPokenavStructPtr->unk8770 = gPokenavStructPtr->unk87DC;
+ gPokenavStructPtr->unk876E = gPokenavStructPtr->unk87DC;
+ gPokenavStructPtr->unk8772 = gPokenavStructPtr->unk8770 + 7;
+ if (gPokenavStructPtr->unk8772 > gPokenavStructPtr->unk8774)
+ {
+ gPokenavStructPtr->unk8772 -= gPokenavStructPtr->unk8774 + 1;
+ }
+ }
+ else
+ {
+ gPokenavStructPtr->unk8770 = gPokenavStructPtr->unk8774 - 7;
+ gPokenavStructPtr->unk8772 = gPokenavStructPtr->unk8774;
+ gPokenavStructPtr->unk876E = gPokenavStructPtr->unk87DC;
+ gPokenavStructPtr->unk876C = 7 - (gPokenavStructPtr->unk8774 - gPokenavStructPtr->unk876E);
+ }
+ }
+ else
+ {
+ gPokenavStructPtr->unk876C = gPokenavStructPtr->unk87DC;
+ gPokenavStructPtr->unk876E = gPokenavStructPtr->unk87DC;
+ }
+}
+
+void sub_80F6208(void)
+{
+ gPokenavStructPtr->unk8FE6 = 0;
+ gPokenavStructPtr->unk8FE7 = 0;
+ gPokenavStructPtr->unk8FE8 = 0xFF;
+ if (gPokenavStructPtr->unk6DAC == 0)
+ {
+ while (sub_80F6250())
+ ;
+ }
+}
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index b545b99fb..3150629b7 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -100,321 +100,7 @@ struct PokenavRibbonIconGfx {
IWRAM_DATA void (*gUnknown_03000744)(void);
-extern const u8 gUnknown_083E0314[];
-extern const u16 gUnknown_08E9F9E8[];
-extern const u16 gUnknown_083E0274[];
-extern const u8 gUnknown_08E9FC64[];
-extern const u8 gUnknown_083E0354[];
-extern const u8 gUnknown_08E9FD64[];
-extern const u8 gUnknown_08E9FE54[];
-extern const u8 gUnknown_08E9FD1C[];
-extern const u16 gPokenavConditionSearch2_Pal[];
-extern const u8 gUnknown_083E0334[];
-extern const u16 gUnknown_083E02B4[];
-extern const u8 gPokenavConditionSearch2_Gfx[];
-extern const u8 gUnknown_083E0254[];
-extern const u8 gUnknown_08E9FEB4[];
-extern const u8 gUnknown_083E01AC[];
-extern const u8 gUnknown_08E9AC4C[];
-extern const u8 gPokenavConditionMenu2_Pal[];
-extern const u8 gPokenavConditionView_Gfx[];
-extern const u8 gUnknown_08E9ABB4[];
-extern const u8 gUnknown_08E9AC2C[];
-extern const u8 *const gPokenavCityMaps[][2];
-extern const u8 gPokenavHoennMapSquares_Pal[];
-extern const u8 gPokenavHoennMapSquares_Gfx[];
-extern const u16 gUnknown_083E003C[];
-extern const u8 *const gUnknown_083E31B0[];
-extern const u8 *const gUnknown_083E31CC[];
-extern const u8 *const gUnknown_083E31D8[];
-extern u8 *gUnknown_083DFEC8;
-extern const u8 gUnknown_083DFEEC[];
-extern const u8 gUnknown_083E005C[];
-extern const u8 gUnknown_083E007C[];
-extern const u8 gPokenavOutlineTilemap[];
-extern const u8 gPokenavOutlineTiles[];
-extern const u8 gPokenavOutlinePalette[];
-extern const u8 gUnknown_083DFECC[];
-extern const u8 gUnknown_083DFF8C[];
-extern const u8 gPokenavHoennMapMisc_Gfx[];
-extern const u8 gUnknown_08E99FB0[];
-extern const u8 gUnknown_08E9A100[];
-extern const u16 gPokenavHoennMap1_Pal[];
-extern void (*const gUnknown_083E3270[])(u16, u16);
-extern const u8 gUnknown_083E039C[];
-extern const u8 gUnknown_083E03A0[];
-extern const u8 gUnknown_083E01F4[];
-extern const u8 *const gTrainerEyeDescriptions[];
-extern const u8 gUnknown_08E9FBA0[];
-extern const u8 gPokenavRibbonView_Gfx[];
-extern const u8 gUnknown_083E040C[];
-extern const u16 gPokenavRibbonView_Pal[];
-extern const u16 gUnknown_083E03A8[];
-extern const u16 gUnknown_083E3C60[][16];
-extern const u16 gPokenavRibbonsIconGfx[][2];
-extern const u8 *const gRibbonDescriptions[][2];
-extern const u8 *const gGiftRibbonDescriptions[][2];
-extern const u8 gUnknown_08E9FF58[];
-extern const u8 gPokenavRibbonPokeView_Gfx[];
-extern const u16 gUnknown_083E0124[];
-extern const u16 gUnknown_083E0144[];
-extern const u8 gPokenavMenuOptions_Gfx[];
-extern const u8 gPokenavConditionMenu_Gfx[];
-extern const u8 gPokenavConditionSearch_Gfx[];
-extern const struct SpriteTemplate gSpriteTemplate_83E4454;
-extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83E4450[];
-extern const u16 gUnknown_083E42F8[];
-extern const u16 gPokenavMenuOptions1_Pal[];
-extern const u16 gPokenavMenuOptions2_Pal[];
-extern const u16 gPokenavConditionMenu_Pal[];
-extern const u16 gPokenavCondition6_Pal[];
-extern const u16 gPokenavCondition7_Pal[];
-extern const struct SpriteSheet gSpriteSheet_PokenavBlueLight;
-extern const struct SpritePalette gSpritePalette_PokenavBlueLight;
-extern const struct SpriteTemplate gSpriteTemplate_83E4484;
-extern const u8 gPokenavMainMenu_Gfx[];
-extern const u8 gPokenavConditionMenuHeader_Gfx[];
-extern const u8 gPokenavRibbonsHeader_Gfx[];
-extern const u8 gPokenavHoennMapHeader_Gfx[];
-extern const u8 gPokenavConditionMenuOptions_Gfx[];
-extern const u8 gPokenavConditionMenuOptions2_Gfx[];
-extern const u8 gPokenavTrainersEyesHeader_Gfx[];
-extern const struct SpritePalette gUnknown_083E449C[];
-extern const struct SpriteTemplate gSpriteTemplate_83E4530;
-extern const struct SpriteTemplate gSpriteTemplate_83E4548;
-extern const struct SpriteTemplate gSpriteTemplate_83E44E0;
-extern const struct SpriteTemplate gSpriteTemplate_83E44F8;
-extern const struct SpriteSheet gUnknown_083E4568;
-extern const struct SpriteTemplate gSpriteTemplate_83E4570;
-extern const struct SpritePalette gUnknown_083E4588;
-extern const struct SpriteSheet gUnknown_083E4590[3];
-extern const struct SpritePalette gUnknown_083E45A8;
-extern const u16 gUnknown_08E9F988[];
-extern const struct SpriteTemplate gSpriteTemplate_83E45B8;
-extern const struct SpriteTemplate gSpriteTemplate_83E45F0;
-extern const struct SpriteSheet gUnknown_083E4628[4];
-extern const struct SpritePalette gUnknown_083E4648[3];
-extern const struct SpriteTemplate gSpriteTemplate_83E4660;
-extern const u16 gUnknown_083E4678[];
-extern const u8 gUnknown_083E3D00[];
-extern const struct SpriteTemplate gSpriteTemplate_83E476C;
-extern const struct SpriteSheet gUnknown_083E4784;
-extern const struct SpritePalette gUnknown_083E478C;
-extern const struct SpriteTemplate gSpriteTemplate_83E4800;
-extern const s16 gUnknown_083E4794[][2];
-extern const u8 gUnknown_083E329C[];
-extern const struct SpritePalette gUnknown_083E4818;
-extern const struct SpriteTemplate gSpriteTemplate_83E4850;
-extern const struct SpritePalette gUnknown_083E4868;
-extern const struct SpriteTemplate gSpriteTemplate_83E4878;
-
-extern u16 gUnknown_020388B4;
-extern u8 gUnknown_020388B0[];
-
-
-// TODO: decompile the debug code so the compiler doesn't complain about
-// unused static functions
-#define static
-
-static void sub_80EBCA8();
-static void sub_80EEE20();
-static bool8 sub_80EEE54();
-static void sub_80EEE08();
-static void sub_80EED2C(u8);
-static void sub_80EC268();
-static void sub_80EED1C();
-static void sub_80EE9C0(u8, u8, u8);
-static bool8 sub_80EEA0C();
-static bool8 sub_80EEC10();
-static void sub_80EED9C();
-static void sub_80EDB88();
-static void sub_80EC4A0();
-static void sub_80EC81C();
-static void sub_80EE96C();
-static void sub_80EE3D8();
-static bool8 sub_80EEF34();
-static void sub_80EED0C();
-static void sub_80EC67C();
-static void sub_80EC86C();
-static bool8 sub_80EEC90();
-static void sub_80ED620();
-static void sub_80EC960();
-static void sub_80ED01C();
-static void sub_80ECC08();
-static void sub_80ED31C();
-static void sub_80ED4D8();
-static void sub_80ED858();
-static void sub_80EDDBC();
-static void sub_80EDE70();
-static void sub_80EDEE4();
-static void sub_80EE06C();
-static void sub_80EE294();
-static void sub_80EE58C();
-static void sub_80EE658();
-static void sub_80EE8F4();
-static void sub_80EEDC4();
-static void ShowMapNamePopUpWindow(void);
-static void sub_80F0954(u16, u16, u16);
-static bool8 sub_80F098C(void);
-static u8 *sub_80F445C(u8*, u16);
-static void sub_80F081C(u8);
-bool8 sub_80F0944(void);
-static u8 *sub_80F4428(u8*, u16, u8);
-void sub_80F700C(u8*, u16);
-static void sub_80F0B24(void);
-static bool8 sub_80F0B44(void);
-static void sub_80F0C28(void);
-static bool8 sub_80F0C48(void);
-void LoadTrainerEyesDescriptionLines(void);
-bool8 sub_80F0D5C(void);
-static void sub_80F0EC0(void);
-static bool8 sub_80F0EF4(void);
-static void sub_80F0F64(void);
-static void sub_80F0FA0(void);
-static bool8 sub_80F0FEC(void);
-static bool8 sub_80F0718(void);
-void sub_80F0FFC(u8);
-static void sub_80F19DC(u8*);
-static bool8 sub_80F1080(void);
-void sub_80F1614(void);
-void DrawMonRibbonIcons(void);
-void sub_80F13FC(void);
-void sub_80F1438(void);
-static void sub_80F1494(void);
-bool8 sub_80F162C(u8);
-static void sub_80F01E0(u16);
-static void sub_80F19FC(void);
-static void sub_80F1A74(void);
-static void sub_80F1A80(void);
-static void sub_80F1A90(void);
-static bool8 sub_80F1AC4(void);
-static void sub_80F1B8C(u8);
-static bool8 sub_80F1BC8(u8);
-static void sub_80F2458(u8);
-static void sub_80F2514(u8);
-static void sub_80F1DF0(void);
-static void sub_80F2218(struct Sprite *sprite);
-static bool8 sub_80F1E50(void);
-static bool8 sub_80F22F8(void);
-static void sub_80F2108(void);
-static bool8 sub_80F1E6C(void);
-static void sub_80F1E84(void);
-static void sub_80F2148(void);
-static void sub_80F2240(struct Sprite *sprite);
-static bool8 sub_80F1F10(void);
-static bool8 sub_80F2360(void);
-static void sub_80F2170(void);
-static bool8 sub_80F23C8(void);
-static void sub_80F21F8(void);
-static void sub_80F1FF0(void);
-static void sub_80F208C(void);
-static void sub_80F22B0(struct Sprite *sprite);
-static void sub_80F240C(struct Sprite *sprite);
-static void sub_80F2598(void);
-static void sub_80F2620(void);
-static bool8 sub_80F26BC(void);
-static void sub_80F2C58(struct Sprite *sprite);
-static void sub_80F2D04(u8);
-static void sub_80F2D6C(u8);
-static void sub_80F2DD8(void);
-static void sub_80F2DF4(void);
-static void sub_80F2FEC(struct Sprite *sprite);
-static void sub_80F2FB0(void);
-static void sub_80F3008(u8);
-static void sub_80F3130(void);
-static void sub_80F3264(void);
-static void sub_80F3294(u8);
-static void sub_80F35B4(void);
-static void sub_80F363C(struct Sprite *sprite);
-static void SetMonMarkings(u16, u16, u8);
-static void sub_80F36F0(void);
-static bool8 sub_80F3724(void);
-static void sub_80F379C(void);
-static bool8 sub_80F37D0(void);
-static void sub_80F38B8(void);
-static bool8 sub_80F38EC(void);
-static void sub_80F3970(void);
-static bool8 sub_80F39A4(void);
-static void sub_80F3B00(void);
-static bool8 sub_80F3B58(void);
-static void sub_80F3B94(void);
-static bool8 sub_80F3BD4(void);
-static void sub_80F3C2C(void);
-static void sub_80F3F20(u8, u8);
-static void sub_80F3FAC(void);
-static void sub_80F3FF0(void);
-static bool8 sub_80F4024(void);
-static void sub_80F42C4(u8*);
-static void sub_80F4394(void);
-u8 *sub_80F6514(u8*, u16, u8);
-static u8 *sub_80F443C(u8 *, u16);
-void sub_80F55AC(u8*, struct UnkPokenav11 *);
-static void sub_80F4CF0(void);
-static void sub_80F4D44(void);
-static bool8 sub_80F4D88(void);
-static void sub_80F53EC(struct UnkPokenav11*, struct UnkPokenav11*);
-static bool8 sub_80F5504(void);
-static bool8 sub_80F5264(void);
-static bool8 sub_80F52F8(void);
-static bool8 sub_80F5364(void);
-
-extern void sub_80F0900(void);
-extern void sub_80F01A4(void);
-extern void sub_80EFD3C(void);
-extern void sub_8095C8C();
-extern void sub_80EFDA0(void);
-extern void sub_80EFD74(void);
-extern bool8 sub_80EFC64(void);
-extern void sub_80EFC3C(void);
-extern void sub_80EF624(const u16 *, const u16 *, u8, u8, u16 *);
-extern void sub_80EF7D4(void);
-extern void sub_80EF54C(u8);
-extern void sub_80EF58C(u8);
-extern void sub_80F6FFC();
-extern void sub_80F6FB8();
-extern void sub_80F6DB8();
-extern bool8 sub_80F6E9C();
-extern bool8 sub_80F6ED4();
-extern bool8 sub_80F70FC();
-extern void sub_80F708C(u32);
-extern void sub_80F6F10();
-static extern void sub_80F15A8(void);
-extern void sub_80F6A4C();
-extern bool8 sub_80F6AF0();
-extern u8 sub_80F68E8();
-extern void sub_80F66E0();
-extern void sub_80F638C();
-extern bool8 sub_80F63D0();
-extern void sub_80EFF34();
-extern bool8 sub_80EFF68();
-extern void sub_80F6134();
-extern u8 sub_80F5DD4();
-extern void sub_80F0264(u8);
-extern bool8 sub_80F02A0();
-extern void sub_80EF9F8(void);
-extern bool8 sub_80EFBDC(bool8);
-extern void sub_80EFBB0(void);
-extern void sub_80EEFBC(u8);
-extern void sub_80EF814(void);
-extern void sub_80EF840(void);
-extern bool8 sub_80EF874(void);
-extern bool8 sub_80F6250();
-extern void sub_80F6208();
-extern void sub_80F6C20();
-extern void sub_80EF248(u8);
-extern bool8 sub_80EF284(u8);
-extern void sub_80EF428(u8, u8);
-extern bool8 sub_80EEF78();
-extern void sub_80EBC10();
-extern void sub_80EBDBC(void (*func)(void));
-extern void sub_80EBBE8();
-extern void sub_80EBDD8();
-extern void sub_80EBD90();
-extern void sub_80EBD18();
-extern void sub_80FB260();
-extern void sub_80EFE7C(void);
-extern void sub_80F5BF0();
-extern void sub_80F6F64();
+struct UnkPokenavStruct *const gPokenavStructPtr = (struct UnkPokenavStruct *)gSharedMem;
extern u16 gKeyRepeatStartDelay;
@@ -425,10 +111,10 @@ void sub_80EBA5C()
default:
gMain.state = 0;
case 0:
- ewram0_10.var6dac = is_c1_link_related_active();
- if (!ewram0_10.var6dac)
+ gPokenavStructPtr->unk6DAC = is_c1_link_related_active();
+ if (!gPokenavStructPtr->unk6DAC)
{
- ewram0_10.var6dab = 0;
+ gPokenavStructPtr->unk6DAB = 0;
gMain.state++;
SetMainCallback2(&sub_80EBBE8);
}
@@ -478,7 +164,7 @@ void sub_80EBA5C()
sub_80EBDBC(&sub_80EBDD8);
break;
case 14:
- ewram0_10.var6dab = 1;
+ gPokenavStructPtr->unk6DAB = 1;
PlaySE(SE_PN_ON);
SetMainCallback2(&sub_80EBD90);
SetVBlankCallback(&sub_80EBD18);
@@ -491,46 +177,44 @@ void sub_80EBA5C()
void sub_80EBBE8()
{
- while (!ewram0_10.var6dab)
+ while (!gPokenavStructPtr->unk6DAB)
sub_80EBA5C();
}
void sub_80EBC10()
{
u16 i;
- u16 *var1;
gKeyRepeatStartDelay = 0x14;
- ewram0_10.playerPartyCount = CalculatePlayerPartyCount();
- ewram0_10.var6ddc = 0;
- ewram0_10.var9344 = 0;
- ewram0_10.var8768 = 0;
- ewram0_10.varCED0 = 0;
+ gPokenavStructPtr->unk8828 = CalculatePlayerPartyCount();
+ gPokenavStructPtr->unk6DDC = 0;
+ gPokenavStructPtr->unk9344 = 0;
+ gPokenavStructPtr->unk8768 = 0;
+ gPokenavStructPtr->unkCED0 = 0;
for (i = 0; i < 5; ++i)
{
- ewram0_10.var8fff[i] = 0;
- var1 = (u16 *)ewram0_10.var0;
- var1[i*2 + 0x4820] = 0x9B;
- var1[i*2 + 0x4821] = 0x5B;
+ gPokenavStructPtr->unk8ff0[3][i] = 0;
+ gPokenavStructPtr->unk9004[3][i].unk0 = 0x9B;
+ gPokenavStructPtr->unk9004[3][i].unk2 = 0x5B;
}
- ewram0_10.var6e95 = 0;
+ gPokenavStructPtr->regionMap.needUpdateVideoRegs = 0;
sub_80EBCA8();
}
void sub_80EBCA8()
{
- ewram0_10.var6db2[0] = 1;
- ewram0_10.var6db2[1] = 2;
- ewram0_10.var6db2[2] = 3;
+ gPokenavStructPtr->unk6DB2[0] = 1;
+ gPokenavStructPtr->unk6DB2[1] = 2;
+ gPokenavStructPtr->unk6DB2[2] = 3;
if (FlagGet(FLAG_SYS_RIBBON_GET))
- ewram0_10.var6db2[3] = 4;
+ gPokenavStructPtr->unk6DB2[3] = 4;
else
- ewram0_10.var6db2[3] = 0;
+ gPokenavStructPtr->unk6DB2[3] = 0;
- ewram0_10.var6db2[4] = 5;
+ gPokenavStructPtr->unk6DB2[4] = 5;
}
void sub_80EBD18()
@@ -575,7 +259,7 @@ void sub_80EBD80()
void sub_80EBD90()
{
- ewram0_10.var300();
+ gPokenavStructPtr->unk300();
AnimateSprites();
BuildOamBuffer();
RunTasks();
@@ -585,87 +269,87 @@ void sub_80EBD90()
void sub_80EBDBC(void (*func)(void))
{
- ewram0_10.var300 = func;
- ewram0_10.var304 = 0;
+ gPokenavStructPtr->unk300 = func;
+ gPokenavStructPtr->unk304 = 0;
}
void sub_80EBDD8()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
SetVBlankCallback(NULL);
REG_DISPCNT = 0;
- ewram0_10.var6dad = ewram0_10.var6ddc;
- ewram0_10.var6dae = 5;
- ewram0_10.var304++;
+ gPokenavStructPtr->unk6DAD = gPokenavStructPtr->unk6DDC;
+ gPokenavStructPtr->unk6DAE = 5;
+ gPokenavStructPtr->unk304++;
break;
case 1:
sub_80F3FF0();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 2:
if (!sub_80F4024())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 3:
sub_80F2598();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 4:
sub_80EEE20();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 5:
if (!sub_80EEE54())
{
sub_80EEE08();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 6:
sub_80EF248(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 7:
if (!sub_80EF284(0))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 8:
sub_80F1B8C(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 9:
if (!sub_80F1BC8(0))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 10:
SetVBlankCallback(&sub_80EBD18);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 11:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 12:
sub_80EED2C(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 13:
if (!gPaletteFade.active)
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 14:
sub_80F2C80(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 15:
if (!sub_80F2CBC(0))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 16:
sub_80F1DF0();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 17:
if (!sub_80F1E50())
@@ -683,72 +367,72 @@ void sub_80EBDD8()
void sub_80EC00C()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
if (!sub_80EEF78())
{
SetVBlankCallback(&sub_80EBD80);
sub_80EED1C();
- ewram0_10.var6dad = ewram0_10.var6ddc;
- ewram0_10.var6dae = 5;
+ gPokenavStructPtr->unk6DAD = gPokenavStructPtr->unk6DDC;
+ gPokenavStructPtr->unk6DAE = 5;
sub_80EEE08();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 1:
sub_80EF248(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 2:
if (!sub_80EF284(0))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 3:
sub_80F1B8C(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 4:
if (!sub_80F1BC8(0))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 6:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 7:
sub_80EED2C(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 8:
if (!gPaletteFade.active)
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 9:
sub_80F2598();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 10:
sub_80F2C80(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 11:
if (!sub_80F2CBC(0))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 12:
sub_80F1DF0();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 13:
if (!sub_80F1E50())
{
- sub_80EF428(0, ewram0_10.var6dad);
+ sub_80EF428(0, gPokenavStructPtr->unk6DAD);
sub_80EBDBC(&sub_80EC268);
#if DEBUG
if (gLinkOpen == TRUE)
@@ -761,12 +445,12 @@ void sub_80EC00C()
void sub_80EC210()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
sub_80F2D04(1);
- sub_80EE9C0(0, ewram0_10.var6ddc, 0);
- ewram0_10.var304++;
+ sub_80EE9C0(0, gPokenavStructPtr->unk6DDC, 0);
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!sub_80EEA0C())
@@ -779,21 +463,21 @@ void sub_80EC268()
{
u8 var1;
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
if (sub_80EEC10() != 0)
{
PlaySE(SE_SELECT);
- sub_80EF428(0, ewram0_10.var6dad);
+ sub_80EF428(0, gPokenavStructPtr->unk6DAD);
sub_80EED9C();
}
else
{
if (gMain.newKeys & A_BUTTON)
{
- ewram0_10.var6ddc = ewram0_10.var6dad;
- switch (ewram0_10.var6db2[ewram0_10.var6ddc] - 1)
+ gPokenavStructPtr->unk6DDC = gPokenavStructPtr->unk6DAD;
+ switch (gPokenavStructPtr->unk6DB2[gPokenavStructPtr->unk6DDC] - 1)
{
case 0:
PlaySE(SE_SELECT);
@@ -804,19 +488,19 @@ void sub_80EC268()
sub_80EBDBC(&sub_80EC81C);
break;
case 4:
- ewram0_10.var304 = 1;
+ gPokenavStructPtr->unk304 = 1;
break;
case 3:
- ewram0_10.var304 = 2;
+ gPokenavStructPtr->unk304 = 2;
break;
case 2:
- ewram0_10.var304 = 6;
+ gPokenavStructPtr->unk304 = 6;
break;
}
}
else if (gMain.newKeys & B_BUTTON)
{
- ewram0_10.var304 = 1;
+ gPokenavStructPtr->unk304 = 1;
}
}
break;
@@ -826,16 +510,16 @@ void sub_80EC268()
break;
case 2:
sub_80F6208();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 3:
if (!sub_80F6250())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 4:
if (!sub_8055870())
{
- if (ewram0_10.var8fe8 != 0)
+ if (gPokenavStructPtr->unk8FE8 != 0)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80EDB88);
@@ -844,13 +528,13 @@ void sub_80EC268()
{
PlaySE(0x20);
sub_80EF428(0, 5);
- ewram0_10.var304 = 0xFF;
+ gPokenavStructPtr->unk304 = 0xFF;
}
}
break;
case 6:
sub_80F6C20();
- if (ewram0_10.varD158 != 0)
+ if (gPokenavStructPtr->unkD158 != 0)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80EE3D8);
@@ -859,21 +543,21 @@ void sub_80EC268()
{
PlaySE(0x20);
sub_80EF428(0, 6);
- ewram0_10.var304 = 0xFF;
+ gPokenavStructPtr->unk304 = 0xFF;
}
break;
case 0xFF:
if ((var1 = sub_80EEC10()) != 0)
{
PlaySE(SE_SELECT);
- sub_80EF428(0, ewram0_10.var6dad);
- ewram0_10.var304 = 0;
+ sub_80EF428(0, gPokenavStructPtr->unk6DAD);
+ gPokenavStructPtr->unk304 = 0;
sub_80EED9C();
}
else if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- sub_80EF428(0, ewram0_10.var6dad);
- ewram0_10.var304 = var1;
+ sub_80EF428(0, gPokenavStructPtr->unk6DAD);
+ gPokenavStructPtr->unk304 = var1;
}
break;
}
@@ -883,12 +567,12 @@ void sub_80EC4A0()
{
u32 var1;
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
sub_80F1E84();
sub_80F2D04(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!sub_80F1F10())
@@ -898,14 +582,14 @@ void sub_80EC4A0()
else
var1 = 0x8;
sub_80EEFBC(var1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
if (!sub_80EEF34())
{
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
}
break;
case 3:
@@ -913,45 +597,45 @@ void sub_80EC4A0()
{
SetVBlankCallback(NULL);
sub_80EED0C();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 4:
sub_80F2620();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
sub_80EF814();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 6:
sub_80EF840();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 7:
if (!sub_80EF874())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 8:
sub_80F2C80(0x4);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 9:
if (!sub_80F2CBC(0x4))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 0xA:
sub_80F2DD8();
SetVBlankCallback(&sub_80EBD30);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 0xB:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 0xC:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
break;
case 0xD:
sub_80EED2C(0x1);
@@ -959,7 +643,7 @@ void sub_80EC4A0()
if (gLinkOpen == TRUE)
debug_sub_8008218((void *)(VRAM + 0x75E0), 0, (void *)(VRAM + 0xF800), 4);
#endif
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 0xE:
if (!gPaletteFade.active)
@@ -970,7 +654,7 @@ void sub_80EC4A0()
void sub_80EC67C()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
switch (sub_80FAB60())
@@ -983,37 +667,37 @@ void sub_80EC67C()
break;
case 4:
PlaySE(SE_SELECT);
- ewram0_10.var304 = 1;
+ gPokenavStructPtr->unk304 = 1;
break;
case 5:
PlaySE(SE_SELECT);
- ewram0_10.var304 = 4;
+ gPokenavStructPtr->unk304 = 4;
break;
}
break;
case 1:
- if (!ewram0_10.var6e90)
+ if (!gPokenavStructPtr->regionMap.zoomed)
{
sub_80FAEC4();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
else if (!sub_80EFBDC(1))
{
sub_80FAEC4();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
if (!sub_80FAFC0())
{
- if (!ewram0_10.var6e90)
+ if (!gPokenavStructPtr->regionMap.zoomed)
{
sub_80EFBB0();
- ewram0_10.var304 = 0;
+ gPokenavStructPtr->unk304 = 0;
}
else
{
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
}
break;
@@ -1021,19 +705,19 @@ void sub_80EC67C()
if (!sub_80EFBDC(0))
{
sub_80EFBB0();
- ewram0_10.var304 = 0;
+ gPokenavStructPtr->unk304 = 0;
}
break;
case 4:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
break;
case 5:
if (!gPaletteFade.active)
{
sub_80F2DF4();
sub_80F2D04(0x4);
- gSaveBlock2.regionMapZoom = (ewram0_10.var6e90 == 1) ? 1 : 0;
+ gSaveBlock2.regionMapZoom = (gPokenavStructPtr->regionMap.zoomed == 1) ? 1 : 0;
sub_80EBDBC(&sub_80EC00C);
}
break;
@@ -1046,12 +730,12 @@ void sub_80EC67C()
void sub_80EC81C()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
sub_80F2D04(0);
sub_80EE9C0(1, 0, 1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!sub_80EEA0C())
@@ -1062,20 +746,20 @@ void sub_80EC81C()
void sub_80EC86C()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
if (sub_80EEC90())
{
PlaySE(SE_SELECT);
- sub_80EF428(1, ewram0_10.var6dad);
+ sub_80EF428(1, gPokenavStructPtr->unk6DAD);
sub_80EED9C();
}
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- ewram0_10.var6df0 = ewram0_10.var6dad;
- switch (ewram0_10.var6df0)
+ gPokenavStructPtr->unk6DF0 = gPokenavStructPtr->unk6DAD;
+ switch (gPokenavStructPtr->unk6DF0)
{
case 0:
sub_80EBDBC(&sub_80ED620);
@@ -1091,9 +775,9 @@ void sub_80EC86C()
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- ewram0_10.var6df0 = 0x2;
- ewram0_10.var6dad = 0x2;
- ewram0_10.var304++;
+ gPokenavStructPtr->unk6DF0 = 0x2;
+ gPokenavStructPtr->unk6DAD = 0x2;
+ gPokenavStructPtr->unk304++;
}
break;
case 1:
@@ -1105,11 +789,11 @@ void sub_80EC86C()
void sub_80EC960()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
sub_80EE9C0(2, 0, 5);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!sub_80EEA0C())
@@ -1120,18 +804,18 @@ void sub_80EC960()
void sub_80EC9A8()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
sub_80F2D04(5);
- sub_80EE9C0(1, ewram0_10.var6df0, 0xC);
- ewram0_10.var304++;
+ sub_80EE9C0(1, gPokenavStructPtr->unk6DF0, 0xC);
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!sub_80EEA0C())
{
sub_80EBDBC(&sub_80EC86C);
- sub_80EF428(1, ewram0_10.var6dad);
+ sub_80EF428(1, gPokenavStructPtr->unk6DAD);
}
break;
}
@@ -1139,70 +823,70 @@ void sub_80EC9A8()
void sub_80ECA10()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
if (!sub_80EEF78())
{
SetVBlankCallback(&sub_80EBD80);
sub_80EED1C();
- ewram0_10.var6dad = ewram0_10.var6df0;
- ewram0_10.var6dae = 3;
+ gPokenavStructPtr->unk6DAD = gPokenavStructPtr->unk6DF0;
+ gPokenavStructPtr->unk6DAE = 3;
sub_80EEE08();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 1:
sub_80EF248(1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
case 2:
if (!sub_80EF284(1))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 3:
sub_80F1B8C(1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
case 4:
if (!sub_80F1BC8(1))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
if (sub_8055870()) return;
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 6:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 7:
sub_80EED2C(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 8:
sub_80F2598();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 9:
if (!gPaletteFade.active)
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 10:
sub_80F2C80(1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 11:
if (!sub_80F2CBC(1))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 12:
sub_80F1DF0();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 13:
if (!sub_80F1E50())
{
- sub_80EF428(1, ewram0_10.var6dad);
+ sub_80EF428(1, gPokenavStructPtr->unk6DAD);
sub_80EBDBC(&sub_80EC86C);
#if DEBUG
if (gLinkOpen == TRUE)
@@ -1215,49 +899,49 @@ void sub_80ECA10()
void sub_80ECC08()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
if (sub_80EEC90())
{
PlaySE(SE_SELECT);
- sub_80EF428(2, ewram0_10.var6dad);
+ sub_80EF428(2, gPokenavStructPtr->unk6DAD);
sub_80EED9C();
}
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- switch ((s8)ewram0_10.var6dad)
+ switch ((s8)gPokenavStructPtr->unk6DAD)
{
case 0:
- ewram0_10.var87D8 = 22;
+ gPokenavStructPtr->unk87D8 = 22;
break;
case 1:
- ewram0_10.var87D8 = 23;
+ gPokenavStructPtr->unk87D8 = 23;
break;
case 2:
- ewram0_10.var87D8 = 24;
+ gPokenavStructPtr->unk87D8 = 24;
break;
case 3:
- ewram0_10.var87D8 = 33;
+ gPokenavStructPtr->unk87D8 = 33;
break;
case 4:
- ewram0_10.var87D8 = 47;
+ gPokenavStructPtr->unk87D8 = 47;
break;
case 5:
sub_80EBDBC(&sub_80EC9A8);
return;
}
- ewram0_10.var6dfc = ewram0_10.var6dad;
- ewram0_10.var76aa = 1;
+ gPokenavStructPtr->unk6DFC = gPokenavStructPtr->unk6DAD;
+ gPokenavStructPtr->unk76AA = 1;
sub_80EBDBC(&sub_80ED01C);
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- ewram0_10.var6dad = 0x5;
- ewram0_10.var304++;
+ gPokenavStructPtr->unk6DAD = 0x5;
+ gPokenavStructPtr->unk304++;
}
break;
case 1:
@@ -1269,105 +953,105 @@ void sub_80ECC08()
void sub_80ECD80()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!gPaletteFade.active)
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 2:
if (!sub_80EEF78())
{
SetVBlankCallback(&sub_80EBD80);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 3:
sub_80EED1C();
sub_80F3130();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 4:
sub_80F2D6C(0x1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
sub_80F2D6C(0x5);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 6:
- ewram0_10.var6dad = ewram0_10.var6dfc;
- ewram0_10.var6dae = 0x6;
+ gPokenavStructPtr->unk6DAD = gPokenavStructPtr->unk6DFC;
+ gPokenavStructPtr->unk6DAE = 0x6;
sub_80EEE08();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 7:
sub_80EF248(0x2);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 8:
if (!sub_80EF284(0x2))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 9:
sub_80F1B8C(2);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 10:
if (!sub_80F1BC8(2))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 11:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 12:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 13:
sub_80EED2C(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 14:
sub_80F2598();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 15:
if (!gPaletteFade.active)
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 16:
sub_80F2C80(0x1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 17:
if (!sub_80F2CBC(0x1))
{
- ewram0_10.var306 = 0;
- ewram0_10.var304++;
+ gPokenavStructPtr->unk306 = 0;
+ gPokenavStructPtr->unk304++;
}
break;
case 18:
sub_80F2C80(0x5);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 19:
if (!sub_80F2CBC(0x5))
{
sub_80F1DF0();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 20:
if (!sub_80F1E50())
{
- sub_80EF428(2, ewram0_10.var6dad);
+ sub_80EF428(2, gPokenavStructPtr->unk6DAD);
sub_80EBDBC(&sub_80ECC08);
#if DEBUG
if (gLinkOpen == TRUE)
@@ -1380,26 +1064,26 @@ void sub_80ECD80()
void sub_80ED01C()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
sub_80F1E84();
sub_80F2D04(0x1);
sub_80F2D04(0x5);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!sub_80F1F10())
{
sub_80EEFBC(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
if (!sub_80EEF34())
{
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
}
break;
case 3:
@@ -1408,80 +1092,80 @@ void sub_80ED01C()
SetVBlankCallback(NULL);
sub_80EED0C();
sub_80EF814();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 4:
sub_80F2620();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
sub_80F4D44();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 6:
if (!sub_80F4D88())
- ewram0_10.var304 += 2;
+ gPokenavStructPtr->unk304 += 2;
else
- ewram0_10.var304 += 1;
+ gPokenavStructPtr->unk304 += 1;
break;
case 7:
if (!sub_8055870())
- ewram0_10.var304--;
+ gPokenavStructPtr->unk304--;
break;
case 8:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 9:
sub_80F0264(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 10:
if (!sub_80F02A0())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 11:
sub_80F3008(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 12:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 13:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 14:
sub_80EED2C(0x4);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 15:
if (!gPaletteFade.active)
{
- ewram0_10.var306 = 0;
- ewram0_10.var304++;
+ gPokenavStructPtr->unk306 = 0;
+ gPokenavStructPtr->unk304++;
}
break;
case 16:
sub_80F2C80(0x1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 17:
if (!sub_80F2CBC(0x1))
{
- ewram0_10.var306 = 0;
- ewram0_10.var304++;
+ gPokenavStructPtr->unk306 = 0;
+ gPokenavStructPtr->unk304++;
}
break;
case 18:
- sub_80F2C80(ewram0_10.var6dfc + 7);
- ewram0_10.var304++;
+ sub_80F2C80(gPokenavStructPtr->unk6DFC + 7);
+ gPokenavStructPtr->unk304++;
// fall through
case 19:
- if (!sub_80F2CBC(ewram0_10.var6dfc + 7))
+ if (!sub_80F2CBC(gPokenavStructPtr->unk6DFC + 7))
{
sub_80EBDBC(&sub_80ED31C);
#if DEBUG
@@ -1495,7 +1179,7 @@ void sub_80ED01C()
void sub_80ED31C()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
switch (sub_80F5DD4())
@@ -1506,7 +1190,7 @@ void sub_80ED31C()
return;
case 2:
PlaySE(SE_SELECT);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
return;
default:
if (gMain.newKeys & A_BUTTON)
@@ -1529,12 +1213,12 @@ void sub_80ED31C()
{
ShowMapNamePopUpWindow();
sub_80F3264();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
if (!sub_8055870())
- ewram0_10.var304 = 0;
+ gPokenavStructPtr->unk304 = 0;
break;
}
#if DEBUG
@@ -1545,42 +1229,42 @@ void sub_80ED31C()
void sub_80ED3D0()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
SetVBlankCallback(NULL);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 1:
sub_80EED0C();
sub_80F6134();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 2:
sub_80EEFBC(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 3:
sub_80F0264(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 4:
if (!sub_80F02A0())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 6:
sub_80F3008(0);
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 7:
sub_80EED2C(0x4);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
#if DEBUG
if (gLinkOpen == TRUE)
debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
@@ -1595,11 +1279,11 @@ void sub_80ED3D0()
void sub_80ED4D8()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!gPaletteFade.active)
@@ -1607,35 +1291,35 @@ void sub_80ED4D8()
SetVBlankCallback(NULL);
sub_80EED0C();
sub_80F3130();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 3:
sub_80F4CF0();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 4:
sub_80EFF34();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 5:
if (!sub_80EFF68())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 6:
sub_80F35B4();
sub_80EEFBC(0x2);
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(sub_80EBD4C);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 7:
sub_80EED2C(0x2);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
#if DEBUG
if (gLinkOpen == TRUE)
debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF000), 4);
@@ -1650,25 +1334,25 @@ void sub_80ED4D8()
void sub_80ED620()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
sub_80F1E84();
sub_80F2D04(0x1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!sub_80F1F10())
{
sub_80EEFBC(0x1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
if (!sub_80EEF34())
{
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0x0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
}
break;
case 3:
@@ -1677,59 +1361,59 @@ void sub_80ED620()
SetVBlankCallback(NULL);
sub_80EED0C();
sub_80EF814();
- ewram0_10.var76aa = 0;
- ewram0_10.var304++;
+ gPokenavStructPtr->unk76AA = 0;
+ gPokenavStructPtr->unk304++;
}
break;
case 4:
sub_80F2620();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
- ewram0_10.varD162 = 0x2;
+ gPokenavStructPtr->unkD162 = 0x2;
sub_80F4BD0();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 6:
sub_80EFF34();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 7:
if (!sub_80EFF68())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 8:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 9:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 10:
sub_80F33A8();
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD4C);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 11:
sub_80EED2C(0x2);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 12:
if (!gPaletteFade.active)
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 13:
sub_80F2C80(0x1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
case 14:
if (!sub_80F2CBC(0x1))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 15:
sub_80F2C80(0x6);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
// fall through
case 16:
if (!sub_80F2CBC(0x6))
@@ -1760,68 +1444,68 @@ void sub_80F4FDC();
void sub_80ED858() {
u8 var1;
- switch (ewram0_10.var304) {
+ switch (gPokenavStructPtr->unk304) {
case 0:
sub_80F4F78();
sub_80F5B38();
- ewram0_10.var304 = 0x1;
+ gPokenavStructPtr->unk304 = 0x1;
break;
case 1:
if (sub_80F5B50()) return;
- ewram0_10.var304 = 0x2;
+ gPokenavStructPtr->unk304 = 0x2;
break;
case 2:
sub_80F0174(0x1);
- ewram0_10.var304 = 0x3;
+ gPokenavStructPtr->unk304 = 0x3;
break;
case 3:
if (sub_80F4FB4()) return;
sub_80F3C94();
sub_80F3D00();
- ewram0_10.var304 = 0x4;
+ gPokenavStructPtr->unk304 = 0x4;
break;
case 4:
- if ( (gMain.heldKeys & 0x40) && (ewram0_10.var87CB) && (!(ewram0_10.var76aa) || (ewram0_10.var87DC)) ) {
+ if ( (gMain.heldKeys & 0x40) && (gPokenavStructPtr->unk87CB) && (!(gPokenavStructPtr->unk76AA) || (gPokenavStructPtr->unk87DC)) ) {
PlaySE(SE_SELECT);
sub_80F5060(0x1);
move_anim_execute();
- ewram0_10.var304 = 0x5;
+ gPokenavStructPtr->unk304 = 0x5;
}
- else if ( (gMain.heldKeys & 0x80) && (ewram0_10.var87CB) && (!(ewram0_10.var76aa) || (ewram0_10.var76aa >= ewram0_10.var87DC)) ) {
+ else if ( (gMain.heldKeys & 0x80) && (gPokenavStructPtr->unk87CB) && (!(gPokenavStructPtr->unk76AA) || (gPokenavStructPtr->unk76AA >= gPokenavStructPtr->unk87DC)) ) {
PlaySE(SE_SELECT);
sub_80F5060(0);
move_anim_execute();
- ewram0_10.var304 = 0x5;
+ gPokenavStructPtr->unk304 = 0x5;
}
if (gMain.newKeys & B_BUTTON) {
PlaySE(SE_SELECT);
sub_80F4FDC();
move_anim_execute();
- ewram0_10.var304 = 0x9;
+ gPokenavStructPtr->unk304 = 0x9;
}
else if (gMain.newKeys & A_BUTTON) {
- if (ewram0_10.var76aa) {
- if (ewram0_10.var6dac) {
+ if (gPokenavStructPtr->unk76AA) {
+ if (gPokenavStructPtr->unk6DAC) {
PlaySE(SE_SELECT);
- ewram0_10.var304 = 0x7;
+ gPokenavStructPtr->unk304 = 0x7;
}
}
- else if ((ewram0_10.var87DC == ewram0_10.var87DA - 1)) {
+ else if ((gPokenavStructPtr->unk87DC == gPokenavStructPtr->unk87DA - 1)) {
PlaySE(SE_SELECT);
- ewram0_10.var304 = 0x9;
+ gPokenavStructPtr->unk304 = 0x9;
}
}
/*
if (gMain.heldKeys & 0x40) {
- if (ewram0_10.var87CB) {
- if (ewram0_10.var76aa) {
- if (!ewram0_10.var87DC) goto label1;
+ if (gPokenavStructPtr->unk87CB) {
+ if (gPokenavStructPtr->unk76AA) {
+ if (!gPokenavStructPtr->unk87DC) goto label1;
}
PlaySE(SE_SELECT);
sub_80F5060(0x1);
move_anim_execute();
- ewram0_10.var304 = 0x5;
+ gPokenavStructPtr->unk304 = 0x5;
}
else goto label1;
@@ -1830,14 +1514,14 @@ void sub_80ED858() {
break;
label1:
if (gMain.heldKeys & 0x80) {
- if (ewram0_10.var87CB) {
- if (ewram0_10.var76aa) {
- if (!(ewram0_10.var76aa < ewram0_10.var87DC)) goto label2;
+ if (gPokenavStructPtr->unk87CB) {
+ if (gPokenavStructPtr->unk76AA) {
+ if (!(gPokenavStructPtr->unk76AA < gPokenavStructPtr->unk87DC)) goto label2;
}
PlaySE(SE_SELECT);
sub_80F5060(0x1);
move_anim_execute();
- ewram0_10.var304 = 0x5;
+ gPokenavStructPtr->unk304 = 0x5;
}
else goto label2;
}
@@ -1848,18 +1532,18 @@ label2:
PlaySE(SE_SELECT);
sub_80F4FDC();
move_anim_execute();
- ewram0_10.var304 = 0x9;
+ gPokenavStructPtr->unk304 = 0x9;
}
else if (gMain.newKeys & A_BUTTON) {
- if (!ewram0_10.var76aa) {
- if ((ewram0_10.var87DC == ewram0_10.var87DA - 1)) {
+ if (!gPokenavStructPtr->unk76AA) {
+ if ((gPokenavStructPtr->unk87DC == gPokenavStructPtr->unk87DA - 1)) {
PlaySE(SE_SELECT);
- ewram0_10.var304 = 0x9;
+ gPokenavStructPtr->unk304 = 0x9;
}
}
else {
PlaySE(SE_SELECT);
- ewram0_10.var304 = 0x9;
+ gPokenavStructPtr->unk304 = 0x9;
}
}
*/
@@ -1868,36 +1552,36 @@ label2:
case 5:
if (gpu_sync_bg_show()) return;
sub_80F3D00();
- ewram0_10.var304 = 0x6;
+ gPokenavStructPtr->unk304 = 0x6;
break;
case 6:
if (sub_8055870()) return;
- ewram0_10.var304 = 0x4;
+ gPokenavStructPtr->unk304 = 0x4;
break;
case 7:
sub_80EEFBC(0x3);
sub_80F3668();
- ewram0_10.var304 = 0x8;
+ gPokenavStructPtr->unk304 = 0x8;
break;
case 8:
if (sub_80F7500()) return;
sub_80EEFBC(0x2);
sub_80F3698();
- ewram0_10.var304 = 0x4;
+ gPokenavStructPtr->unk304 = 0x4;
break;
case 9:
if (!(var1 = sub_80F5038())) {
sub_80F0174(0);
sub_80F2F48();
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, var1);
- ewram0_10.var304 = 0xB;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0x0, 0x10, var1);
+ gPokenavStructPtr->unk304 = 0xB;
}
break;
case 0xA:
if (gPaletteFade.active) return;
sub_80F3CE8();
sub_80F5BDC();
- if (!ewram0_10.var76aa) {
+ if (!gPokenavStructPtr->unk76AA) {
sub_80F357C();
sub_80F2D6C(0x1);
sub_80F2D6C(0x6);
@@ -2713,25 +2397,25 @@ _080EDB84: .4byte sub_80ED3D0\n");
void sub_80EDB88()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
sub_80F1E84();
sub_80F2D04(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!sub_80F1F10())
{
sub_80EEFBC(0x4);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
if (!sub_80EEF34())
{
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
}
break;
case 3:
@@ -2740,60 +2424,60 @@ void sub_80EDB88()
SetVBlankCallback(NULL);
sub_80EED0C();
sub_80EF814();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 4:
sub_80F2620();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
sub_80F638C();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
case 6:
if (!sub_80F63D0())
- ewram0_10.var304 += 2;
+ gPokenavStructPtr->unk304 += 2;
else
- ewram0_10.var304 += 1;
+ gPokenavStructPtr->unk304 += 1;
break;
case 7:
if (!sub_8055870())
- ewram0_10.var304--;
+ gPokenavStructPtr->unk304--;
break;
case 8:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 9:
sub_80F0264(0x1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
case 10:
if (!sub_80F02A0())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 11:
sub_80F2C80(0x2);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
case 12:
if (!sub_80F2CBC(0x2))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 13:
sub_80F3008(0x1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 14:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 15:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 16:
sub_80EED2C(0x4);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
#if DEBUG
if (gLinkOpen == TRUE)
debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
@@ -2808,7 +2492,7 @@ void sub_80EDB88()
void sub_80EDDBC()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
switch (sub_80F5DD4())
@@ -2819,7 +2503,7 @@ void sub_80EDDBC()
return;
case 2:
PlaySE(SE_SELECT);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
return;
default:
if (gMain.newKeys & A_BUTTON)
@@ -2842,12 +2526,12 @@ void sub_80EDDBC()
{
ShowMapNamePopUpWindow();
sub_80F3264();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
if (!sub_8055870())
- ewram0_10.var304 = 0;
+ gPokenavStructPtr->unk304 = 0;
break;
}
#if DEBUG
@@ -2858,18 +2542,18 @@ void sub_80EDDBC()
void sub_80EDE70()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!gPaletteFade.active)
{
sub_80F3130();
sub_80F2D6C(0x2);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
@@ -2881,11 +2565,11 @@ void sub_80EDE70()
void sub_80EDEE4()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!gPaletteFade.active)
@@ -2893,38 +2577,38 @@ void sub_80EDEE4()
SetVBlankCallback(NULL);
sub_80EED0C();
sub_80F3130();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
sub_80F66E0();
sub_80EEE08();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 3:
if (!sub_80F1080())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 4:
sub_80EEFBC(0x5);
sub_80F38B8();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
case 5:
if (!sub_80F38EC())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 6:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 7:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD18);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 8:
sub_80EED2C(0x3);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
#if DEBUG
if (gLinkOpen == TRUE)
debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF000), 4);
@@ -2932,7 +2616,7 @@ void sub_80EDEE4()
break;
case 9:
if (!gPaletteFade.active)
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 10:
if (!sub_80F170C())
@@ -2943,30 +2627,30 @@ void sub_80EDEE4()
void sub_80EE06C()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
sub_80F15A8();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 1:
- if ((gMain.newAndRepeatedKeys & 0x40) && (ewram0_10.var87DC))
+ if ((gMain.newAndRepeatedKeys & 0x40) && (gPokenavStructPtr->unk87DC))
{
PlaySE(SE_SELECT);
sub_80F6A4C(-1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
- else if ((gMain.newAndRepeatedKeys & 0x80) && ewram0_10.var87DC < ewram0_10.var8774)
+ else if ((gMain.newAndRepeatedKeys & 0x80) && gPokenavStructPtr->unk87DC < gPokenavStructPtr->unk8774)
{
PlaySE(SE_SELECT);
sub_80F6A4C(1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EEFBC(0xB);
- ewram0_10.var304 = 0x4;
+ gPokenavStructPtr->unk304 = 0x4;
}
else if (gMain.newKeys & B_BUTTON)
{
@@ -2976,21 +2660,21 @@ void sub_80EE06C()
break;
case 2:
if (!sub_80F6AF0())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 3:
if (!sub_8055870())
- ewram0_10.var304 = 0;
+ gPokenavStructPtr->unk304 = 0;
break;
case 4:
sub_80F3B00();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
if (!sub_80F3B58())
{
sub_80F1494();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
sub_80EED9C();
}
break;
@@ -3000,7 +2684,7 @@ void sub_80EE06C()
case 1:
PlaySE(SE_SELECT);
sub_80F3B94();
- ewram0_10.var304 = 0x7;
+ gPokenavStructPtr->unk304 = 0x7;
return;
default:
case 0:
@@ -3008,20 +2692,20 @@ void sub_80EE06C()
{
PlaySE(SE_SELECT);
sub_80F3B94();
- ewram0_10.var304 = 0x8;
+ gPokenavStructPtr->unk304 = 0x8;
}
break;
}
break;
case 7:
if (!sub_80F3BD4())
- ewram0_10.var304 = 0x4;
+ gPokenavStructPtr->unk304 = 0x4;
break;
case 8:
if (!sub_80F3BD4())
{
sub_80EEFBC(0x5);
- ewram0_10.var304 = 0;
+ gPokenavStructPtr->unk304 = 0;
}
break;
}
@@ -3033,11 +2717,11 @@ void sub_80EE06C()
void sub_80EE294()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!gPaletteFade.active)
@@ -3046,34 +2730,34 @@ void sub_80EE294()
sub_80EED0C();
sub_80F3C2C();
sub_80EEE08();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
sub_80F6134();
sub_80F0264(0x1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
case 3:
if (!sub_80F02A0())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 4:
sub_80EEFBC(0x4);
sub_80F3008(0x1);
SetVBlankCallback(&sub_80EBD18);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 6:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
break;
case 7:
sub_80EED2C(0x4);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
#if DEBUG
if (gLinkOpen == TRUE)
debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
@@ -3088,25 +2772,25 @@ void sub_80EE294()
void sub_80EE3D8()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
sub_80F1E84();
sub_80F2D04(0);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!sub_80F1F10())
{
sub_80EEFBC(0x9);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
if (!sub_80EEF34())
{
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
}
break;
case 3:
@@ -3116,44 +2800,44 @@ void sub_80EE3D8()
sub_80EED0C();
sub_80EF814();
sub_80EEE08();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 4:
sub_80F2620();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
sub_80F0264(0x2);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
case 6:
if (!sub_80F02A0())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 7:
sub_80F2C80(0x3);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
case 8:
if (!sub_80F2CBC(0x3))
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 9:
sub_80F3008(0x2);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 10:
if (!sub_8055870())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 11:
sub_80F6F10();
- BeginNormalPaletteFade(ewram0_10.var308, -1, 16, 0, RGB(0, 0, 0));
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(&sub_80EBD68);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 12:
sub_80EED2C(0x5);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
#if DEBUG
if (gLinkOpen == TRUE)
debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
@@ -3168,18 +2852,18 @@ void sub_80EE3D8()
void sub_80EE58C()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
switch (sub_80F5DD4())
{
case 1:
PlaySE(SE_SELECT);
- sub_80F0FFC(ewram0_10.var876E);
+ sub_80F0FFC(gPokenavStructPtr->unk876E);
return;
case 2:
PlaySE(SE_SELECT);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
return;
default:
if (gMain.newKeys & A_BUTTON)
@@ -3200,14 +2884,14 @@ void sub_80EE58C()
case 1:
if (!sub_80F0718())
{
- sub_80F0FFC(ewram0_10.var876E);
+ sub_80F0FFC(gPokenavStructPtr->unk876E);
sub_80F3264();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
if (!sub_8055870())
- ewram0_10.var304 = 0;
+ gPokenavStructPtr->unk304 = 0;
break;
}
#if DEBUG
@@ -3218,64 +2902,64 @@ void sub_80EE58C()
void sub_80EE658()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
sub_80F3294(0x1);
sub_80EEFBC(0xA);
sub_80F0B24();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!sub_80F0B44())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 2:
sub_80F0F64();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 3:
if (!sub_80F0FEC())
{
sub_80F6FB8(0x1);
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 4:
sub_80F6DB8();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 5:
sub_80F700C((u8 *)(gSharedMem + 0x8788), *(u16 *)(gSharedMem + 0x8788 - 0x1A));
sub_80F42C4((u8 *)(gSharedMem + 0x8788));
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 6:
LoadTrainerEyesDescriptionLines();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
case 7:
if (!sub_80F6E9C() && !sub_80F0D5C())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 8:
- if ((gMain.heldKeys & 0x40) && ewram0_10.var87DC)
+ if ((gMain.heldKeys & 0x40) && gPokenavStructPtr->unk87DC)
{
PlaySE(SE_SELECT);
sub_80F708C(-1);
- ewram0_10.var304 = 0x10;
+ gPokenavStructPtr->unk304 = 0x10;
}
- else if ((gMain.heldKeys & 0x80) && ewram0_10.var87DC < ewram0_10.var8774)
+ else if ((gMain.heldKeys & 0x80) && gPokenavStructPtr->unk87DC < gPokenavStructPtr->unk8774)
{
PlaySE(SE_SELECT);
sub_80F708C(1);
- ewram0_10.var304 = 0x10;
+ gPokenavStructPtr->unk304 = 0x10;
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
sub_80F4394();
sub_80F0EC0();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 9:
@@ -3283,28 +2967,28 @@ void sub_80EE658()
{
sub_80F6FB8(0);
sub_80F2FB0();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 10:
sub_80F6134();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 11:
sub_80F0FA0();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 12:
if (!sub_80F0FEC())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 13:
sub_80F0C28();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 14:
if (!sub_80F0C48())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 15:
sub_80EEFBC(0x9);
@@ -3314,22 +2998,22 @@ void sub_80EE658()
break;
case 16:
if (!sub_80F70FC())
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
break;
case 17:
if (!sub_8055870())
- ewram0_10.var304 = 0x8;
+ gPokenavStructPtr->unk304 = 0x8;
break;
}
}
void sub_80EE8F4()
{
- switch (ewram0_10.var304)
+ switch (gPokenavStructPtr->unk304)
{
case 0:
- BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB(0, 0, 0));
+ gPokenavStructPtr->unk304++;
break;
case 1:
if (!gPaletteFade.active)
@@ -3337,7 +3021,7 @@ void sub_80EE8F4()
sub_80F3130();
sub_80F2D6C(0x2);
sub_80F6FFC();
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
break;
case 2:
@@ -3348,11 +3032,11 @@ void sub_80EE8F4()
void sub_80EE96C()
{
- if (!ewram0_10.var304)
+ if (!gPokenavStructPtr->unk304)
{
PlaySE(0x6F);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- ewram0_10.var304++;
+ gPokenavStructPtr->unk304++;
}
else
{
@@ -3367,31 +3051,31 @@ void sub_80EE96C()
void sub_80EE9C0(u8 param1, u8 param2, u8 param3)
{
sub_80F1E84();
- ewram0_10.var6e14 = param1;
- ewram0_10.var6e15 = param2;
- ewram0_10.var6e16 = 0;
- ewram0_10.var6e17 = param3;
+ gPokenavStructPtr->unk6E14 = param1;
+ gPokenavStructPtr->unk6E15 = param2;
+ gPokenavStructPtr->unk6E16 = 0;
+ gPokenavStructPtr->unk6E17 = param3;
}
#if 0
bool8 sub_80EEA0C() {
- switch (ewram0_10.var6e16) {
+ switch (gPokenavStructPtr->unk6E16) {
case 0:
if (sub_80F1F10()) return 1;
- if (ewram0_10.var6e17 != 0xC) {
- ewram0_10.var6e16 = 0x1;
+ if (gPokenavStructPtr->unk6E17 != 0xC) {
+ gPokenavStructPtr->unk6E16 = 0x1;
return 1;
}
else {
- ewram0_10.var6e16 = 0x3;
+ gPokenavStructPtr->unk6E16 = 0x3;
return 1;
}
case 1:
- sub_80F2C80(ewram0_10.var6e17);
- ewram0_10.var6e16++;
+ sub_80F2C80(gPokenavStructPtr->unk6E17);
+ gPokenavStructPtr->unk6E16++;
case 2:
- if (sub_80F2CBC(ewram0_10.var6e17)) return 1;
- ewram0_10.var6e16++;
+ if (sub_80F2CBC(gPokenavStructPtr->unk6E17)) return 1;
+ gPokenavStructPtr->unk6E16++;
case 3:
}
@@ -3651,18 +3335,18 @@ bool8 sub_80EEC10()
{
do
{
- if (--ewram0_11.var6dad < 0)
- ewram0_11.var6dad = ewram0_11.var6dae - 1;
- } while (!ewram0_10.var6db2[ewram0_11.var6dad]);
+ if (--gPokenavStructPtr->unk6DAD < 0)
+ gPokenavStructPtr->unk6DAD = gPokenavStructPtr->unk6DAE - 1;
+ } while (!gPokenavStructPtr->unk6DB2[gPokenavStructPtr->unk6DAD]);
return TRUE;
}
if (gMain.newKeys & 0x80)
{
do
{
- if (++ewram0_11.var6dad >= ewram0_11.var6dae)
- ewram0_11.var6dad = 0;
- } while (!ewram0_10.var6db2[ewram0_11.var6dad]);
+ if (++gPokenavStructPtr->unk6DAD >= gPokenavStructPtr->unk6DAE)
+ gPokenavStructPtr->unk6DAD = 0;
+ } while (!gPokenavStructPtr->unk6DB2[gPokenavStructPtr->unk6DAD]);
return TRUE;
}
#if DEBUG
@@ -3676,14 +3360,14 @@ bool8 sub_80EEC90()
{
if (gMain.newKeys & 0x40)
{
- if (--ewram0_11.var6dad < 0)
- ewram0_11.var6dad = ewram0_11.var6dae - 1;
+ if (--gPokenavStructPtr->unk6DAD < 0)
+ gPokenavStructPtr->unk6DAD = gPokenavStructPtr->unk6DAE - 1;
return TRUE;
}
if (gMain.newKeys & 0x80)
{
- if (++ewram0_11.var6dad >= ewram0_11.var6dae)
- ewram0_11.var6dad = 0;
+ if (++gPokenavStructPtr->unk6DAD >= gPokenavStructPtr->unk6DAE)
+ gPokenavStructPtr->unk6DAD = 0;
return TRUE;
}
#if DEBUG
@@ -3727,5013 +3411,13 @@ void sub_80EED2C(u8 param1)
void sub_80EED9C(void)
{
- gUnknown_03000744 = ewram0_10.var300;
- ewram0_10.var300 = &sub_80EEDC4;
- ewram0_10.var300();
+ gUnknown_03000744 = gPokenavStructPtr->unk300;
+ gPokenavStructPtr->unk300 = &sub_80EEDC4;
+ gPokenavStructPtr->unk300();
}
void sub_80EEDC4(void)
{
if (sub_8055870() != 0x1)
- ewram0_10.var300 = gUnknown_03000744;
-}
-
-void sub_80EEDE8(void)
-{
- REG_BG0HOFS = 0;
- REG_BG0VOFS = 0;
- REG_BG2VOFS = 0;
- REG_BG2HOFS = 0;
- REG_BG3HOFS = 0;
- REG_BG3VOFS = 0;
-}
-
-void sub_80EEE08(void)
-{
- gPokenavStructPtr->unkD160 = 0;
-}
-
-void sub_80EEE20(void)
-{
- gPokenavStructPtr->unkD160 = 0;
- if (!gPokenavStructPtr->unk6DAC)
- {
- while (sub_80EEE54())
- ;
- }
-}
-
-bool8 sub_80EEE54(void)
-{
- switch (gPokenavStructPtr->unkD160)
- {
- case 0:
- LZ77UnCompVram(gPokenavHoennMapMisc_Gfx, (void *)VRAM + 0xC000);
- break;
- case 1:
- LZ77UnCompVram(gUnknown_08E99FB0, (void *)VRAM + 0xD800);
- break;
- case 2:
- LoadPalette(gPokenavHoennMap1_Pal, 0x10, 0x20);
- break;
- case 3:
- sub_80EF58C(0);
- sub_80EF58C(1);
- sub_80EF58C(2);
- break;
- case 4:
- gPokenavStructPtr->unk030C = 0;
- REG_BG1HOFS = 0;
- REG_BG1VOFS = 0;
- REG_BG1CNT = 0x1B0C;
- gPokenavStructPtr->unkD160++;
- default:
- return FALSE;
- }
- gPokenavStructPtr->unkD160++;
- return TRUE;
-}
-
-bool8 sub_80EEF34(void)
-{
- bool8 retVal = TRUE;
-
- if (gPokenavStructPtr->unk030C == 32)
- return FALSE;
-
- gPokenavStructPtr->unk030C += 2;
- if (gPokenavStructPtr->unk030C > 31)
- {
- gPokenavStructPtr->unk030C = 32;
- retVal = FALSE;
- }
-
- REG_BG1VOFS = gPokenavStructPtr->unk030C;
- return retVal;
-}
-
-bool8 sub_80EEF78(void)
-{
- bool8 retVal = TRUE;
-
- if (gPokenavStructPtr->unk030C == 0)
- return FALSE;
-
- gPokenavStructPtr->unk030C -= 2;
- if (gPokenavStructPtr->unk030C <= 0)
- {
- gPokenavStructPtr->unk030C = 0;
- retVal = FALSE;
- }
-
- REG_BG1VOFS = gPokenavStructPtr->unk030C;
- return retVal;
-}
-
-void sub_80EEFBC(u8 a)
-{
- u8 var1;
-
- sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 0, 17, 2);
-
- switch (a)
- {
- case 0:
- sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 17, 0, 10, 2);
- sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
- break;
- case 11:
- sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2);
- break;
- case 2:
- var1 = gPokenavStructPtr->unk6DAC;
- if (!var1)
- {
- sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 10, 2, 10, 2);
- sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, var1, 6, 7, 2);
- }
- else
- {
- sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
- }
- break;
- case 3:
- sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 4, 10, 2);
- sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
- break;
- case 4:
- sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 20, 2, 10, 2);
- sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2);
- break;
- case 7:
- sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 10, 4, 10, 2);
- sub_809D104((void *)VRAM + 0xD800, 7, 22, gUnknown_08E9A100, 0, 6, 7, 2);
- break;
- case 8:
- sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 20, 4, 10, 2);
- sub_809D104((void *)VRAM + 0xD800, 7, 22, gUnknown_08E9A100, 0, 6, 7, 2);
- break;
- case 5:
- case 9:
- sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 2, 10, 2);
- sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2);
- break;
- case 10:
- sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2);
- break;
- }
-}
-
-void sub_80EF248(u8 a)
-{
- gPokenavStructPtr->unkD160 = 0;
-
- if (!gPokenavStructPtr->unk6DAC)
- {
- while (sub_80EF284(a))
- ;
- }
-}
-
-bool8 sub_80EF284(u8 a)
-{
- switch (gPokenavStructPtr->unkD160)
- {
- case 0:
- sub_80EEDE8();
- break;
- case 1:
- Text_LoadWindowTemplate(&gWindowTemplate_81E7224);
- break;
- case 2:
- MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224);
- break;
- case 3:
- if (!MultistepInitMenuWindowContinue())
- return TRUE;
- break;
- case 4:
- DmaCopy16Defvars(3, gUnknown_083DFEEC, (void *)VRAM + 0x5000, 0xA0);
- break;
- case 5:
- LZ77UnCompVram(gUnknown_083DFF8C, (void *)VRAM + 0xF800);
- break;
- case 6:
- DmaCopy16Defvars(3, gUnknown_083E005C, (void *)VRAM + 0x8000, 0x20);
- break;
- case 7:
- LZ77UnCompVram(gUnknown_083E007C, (void *)VRAM + 0xE000);
- break;
- case 8:
- LZ77UnCompVram(gPokenavOutlineTilemap, (void *)VRAM + 0xE800);
- break;
- case 9:
- LZ77UnCompVram(gPokenavOutlineTiles, (void *)VRAM + 0x8020);
- break;
- case 10:
- sub_80EF54C(a);
- LoadPalette(gUnknown_083DFECC, 0xF0, 0x20);
- LoadPalette(gPokenavOutlinePalette, 0x40, 0x20);
- sub_80EF7D4();
- break;
- case 11:
- REG_BG0CNT = 0x1F01;
- REG_BG2CNT = 0x1D0A;
- REG_BG3CNT = 0x1C0B;
- REG_BLDCNT = 0;
-
- gPokenavStructPtr->unkD160++;
- return FALSE;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unkD160++;
- return TRUE;
-}
-
-void sub_80EF428(u8 a, u8 b)
-{
- u8 *tileBuffer;
- const u8 *pcText = 0;
-
- switch (a)
- {
- case 0:
- pcText = gUnknown_083E31B0[b];
- break;
- case 1:
- pcText = gUnknown_083E31CC[b];
- break;
- case 2:
- pcText = gUnknown_083E31D8[b];
- break;
- }
-
- tileBuffer = gUnknown_083DFEC8;
- AlignStringInMenuWindow(&tileBuffer[0x800], pcText, 0xC0, 2);
- Menu_PrintText(&tileBuffer[0x800], 3, 17);
-}
-
-void sub_80EF490(u8 a)
-{
- u16 var1, var2;
-
- if (a == 2)
- a = 1;
-
- gPokenavStructPtr->unkCE4E = a * 30;
- var1 = gPokenavStructPtr->unkCE4C;
- var2 = a * 30;
- if (var1 < var2)
- gPokenavStructPtr->unkCE50 = 2;
- else if (var1 > var2)
- gPokenavStructPtr->unkCE50 = -2;
- else
- gPokenavStructPtr->unkCE50 = 0;
-}
-
-bool8 sub_80EF4F8(void)
-{
- u16 *palettes;
-
- if (gPokenavStructPtr->unkCE4C == gPokenavStructPtr->unkCE4E)
- {
- return FALSE;
- }
- else
- {
- gPokenavStructPtr->unkCE4C = gPokenavStructPtr->unkCE50 + gPokenavStructPtr->unkCE4C;
-
- palettes = gPokenavStructPtr->palettesCE52;
- LoadPalette(&palettes[gPokenavStructPtr->unkCE4C], 0x31, 4);
- return TRUE;
- }
-
-}
-
-void sub_80EF54C(u8 a)
-{
- if (a == 2)
- a = 1;
-
- gPokenavStructPtr->unkCE4C = a * 30;
- LoadPalette(&gPokenavStructPtr->palettesCE52[gPokenavStructPtr->unkCE4C], 0x31, 4);
-}
-
-void sub_80EF58C(u8 a)
-{
- u16 i;
- u16 * palettes;
- const u16 *var1;
-
- switch (a)
- {
- case 0:
- for (i = 0; i < 62; i++)
- gPokenavStructPtr->palettesCE52[i] = 0;
- break;
- case 1:
- palettes = gPokenavStructPtr->palettesCE52;
- var1 = gUnknown_083E003C;
- sub_80EF624(&var1[1], &var1[3], 16, 2, palettes);
- break;
- case 2:
- palettes = gPokenavStructPtr->palettesCE8E;
- var1 = gUnknown_083E003C;
- sub_80EF624(&var1[3], &var1[7], 16, 2, palettes);
- break;
- }
-}
-
-#ifdef NONMATCHING
-void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes)
-{
- u16 red1, green1, blue1;
- u16 red2, green2, blue2;
- s32 redDiv, greenDiv, blueDiv;
- u16 *palettes2;
- u16 i, j;
-
- i = 0;
- while (i < d)
- {
- red1 = (*a & 0x1F) << 8;
- green1 = ((*a >> 5) & 0x1F) << 8;
- blue1 = ((*a >> 10) & 0x1F) << 8;
-
- red2 = (*b & 0x1F) << 8;
- green2 = ((*b >> 5) & 0x1F) << 8;
- blue2 = ((*b >> 10) & 0x1F) << 8;
-
- redDiv = (red2 - red1) / c;
- greenDiv = (green2 - green1) / c;
- blueDiv = (blue2 - blue1) / c;
-
- palettes2 = palettes;
- for (j = 0; j < c - 1; j++)
- {
- *palettes2 = (((blue1 << 8) >> 16) << 10) | (((green1 << 8) >> 16) << 5) | ((red1 << 8) >> 16);
- palettes2 += d;
- red1 += redDiv;
- green1 += greenDiv;
- blue1 += blueDiv;
- }
-
- *palettes2 = (red2 >> 8) | (blue2 << 2) | (green2 >> 3);
- palettes++;
-
- a++;
- b++;
- i++;
- }
-}
-#else
-NAKED
-void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x38\n\
- str r0, [sp]\n\
- str r1, [sp, 0x4]\n\
- ldr r4, [sp, 0x58]\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x8]\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- str r3, [sp, 0xC]\n\
- movs r0, 0\n\
- str r0, [sp, 0x10]\n\
- lsls r0, r3, 16\n\
- ldr r1, [sp, 0x10]\n\
- cmp r1, r3\n\
- bcs _080EF72E\n\
- subs r2, 0x1\n\
- str r2, [sp, 0x20]\n\
- str r0, [sp, 0x2C]\n\
-_080EF654:\n\
- ldr r2, [sp]\n\
- ldrh r1, [r2]\n\
- movs r0, 0x1F\n\
- ands r0, r1\n\
- lsls r7, r0, 8\n\
- lsls r1, 16\n\
- lsrs r0, r1, 21\n\
- movs r2, 0x1F\n\
- ands r0, r2\n\
- lsls r6, r0, 8\n\
- lsrs r1, 26\n\
- ands r1, r2\n\
- lsls r5, r1, 8\n\
- ldr r0, [sp, 0x4]\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1F\n\
- ands r0, r1\n\
- lsls r0, 8\n\
- str r0, [sp, 0x14]\n\
- lsls r1, 16\n\
- lsrs r0, r1, 21\n\
- ands r0, r2\n\
- lsls r0, 8\n\
- str r0, [sp, 0x18]\n\
- lsrs r1, 26\n\
- ands r1, r2\n\
- lsls r1, 8\n\
- str r1, [sp, 0x1C]\n\
- ldr r1, [sp, 0x14]\n\
- subs r0, r1, r7\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- mov r10, r0\n\
- ldr r2, [sp, 0x18]\n\
- subs r0, r2, r6\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- mov r9, r0\n\
- ldr r1, [sp, 0x1C]\n\
- subs r0, r1, r5\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- mov r8, r0\n\
- adds r3, r4, 0\n\
- movs r4, 0\n\
- ldr r2, [sp]\n\
- adds r2, 0x2\n\
- str r2, [sp, 0x30]\n\
- ldr r0, [sp, 0x4]\n\
- adds r0, 0x2\n\
- str r0, [sp, 0x34]\n\
- adds r1, r3, 0x2\n\
- str r1, [sp, 0x24]\n\
- ldr r2, [sp, 0x10]\n\
- adds r2, 0x1\n\
- str r2, [sp, 0x28]\n\
- ldr r0, [sp, 0x20]\n\
- cmp r4, r0\n\
- bge _080EF700\n\
- ldr r1, [sp, 0xC]\n\
- lsls r1, 1\n\
- mov r12, r1\n\
-_080EF6D6:\n\
- lsls r0, r7, 8\n\
- lsrs r2, r0, 16\n\
- lsls r0, r6, 8\n\
- lsrs r1, r0, 16\n\
- lsls r0, r5, 8\n\
- lsrs r0, 16\n\
- lsls r0, 10\n\
- lsls r1, 5\n\
- orrs r0, r1\n\
- orrs r2, r0\n\
- strh r2, [r3]\n\
- add r3, r12\n\
- add r7, r10\n\
- add r6, r9\n\
- add r5, r8\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- ldr r2, [sp, 0x20]\n\
- cmp r4, r2\n\
- blt _080EF6D6\n\
-_080EF700:\n\
- ldr r4, [sp, 0x14]\n\
- lsrs r2, r4, 8\n\
- ldr r1, [sp, 0x1C]\n\
- lsls r0, r1, 2\n\
- ldr r4, [sp, 0x18]\n\
- lsrs r1, r4, 3\n\
- orrs r0, r1\n\
- orrs r2, r0\n\
- strh r2, [r3]\n\
- ldr r0, [sp, 0x30]\n\
- str r0, [sp]\n\
- ldr r1, [sp, 0x34]\n\
- str r1, [sp, 0x4]\n\
- ldr r4, [sp, 0x24]\n\
- ldr r2, [sp, 0x28]\n\
- lsls r0, r2, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x10]\n\
- ldr r1, [sp, 0x2C]\n\
- lsrs r0, r1, 16\n\
- ldr r2, [sp, 0x10]\n\
- cmp r2, r0\n\
- bcc _080EF654\n\
-_080EF72E:\n\
- add sp, 0x38\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
-
-void sub_80EF740(void)
-{
- gPokenavStructPtr->unk6DA0 = (gPokenavStructPtr->unk6DA0 + 1) & 1;
- if (gPokenavStructPtr->unk6DA0)
- gPokenavStructPtr->unk6DA2++;
-
- REG_BG3HOFS = gPokenavStructPtr->unk6DA2;
-}
-
-void sub_80EF780(u8 taskId)
-{
- if (gTasks[taskId].data[0] == 0 || (gPokenavStructPtr->unk6DA2 & 0x7) != 0)
- {
- sub_80EF740();
- }
- else
- {
- u16 value = gPokenavStructPtr->unk6DA2 & 0x7;
- gPokenavStructPtr->unk6DA2 = value;
- gPokenavStructPtr->unk6DA0 = value;
- REG_BG3HOFS = value;
- }
-}
-
-void sub_80EF7D4(void)
-{
- gPokenavStructPtr->unk6DA2 = 0;
- gPokenavStructPtr->unk6DA0 = 0;
- gPokenavStructPtr->taskId6DA4 = CreateTask(sub_80EF780, 80);
-}
-
-void sub_80EF814(void)
-{
- if (FuncIsActiveTask(sub_80EF780))
- DestroyTask(gPokenavStructPtr->taskId6DA4);
-}
-
-void sub_80EF840(void)
-{
- gPokenavStructPtr->unkD160 = 0;
-
- if (gPokenavStructPtr->unk6DAC == 0)
- {
- while (sub_80EF874() != 0)
- ;
- }
-}
-
-bool8 sub_80EF874(void)
-{
- switch (gPokenavStructPtr->unkD160)
- {
- case 0:
- sub_80EEDE8();
- break;
- case 1:
- Text_LoadWindowTemplate(&gWindowTemplate_81E7224);
- break;
- case 2:
- MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224);
- break;
- case 3:
- if (!MultistepInitMenuWindowContinue())
- return TRUE;
- break;
- case 4:
- Menu_EraseScreen();
- break;
- case 5:
- sub_80FA904(&gPokenavStructPtr->regionMap, gSaveBlock2.regionMapZoom ? TRUE : FALSE);
- break;
- case 6:
- if (sub_80FA940())
- return TRUE;
- break;
- case 7:
- LZ77UnCompVram(gPokenavHoennMapSquares_Gfx, (void *)VRAM + 0x5000);
- break;
- case 8:
- LoadPalette(gPokenavHoennMapSquares_Pal, 0x30, 0x20);
- sub_80EFC3C();
- break;
- case 9:
- if (sub_80EFC64())
- return TRUE;
- break;
- case 10:
- Menu_DrawStdWindowFrame(13, 3, 29, 17);
- sub_80EF9F8();
- break;
- case 11:
- if (!gPokenavStructPtr->regionMap.zoomed)
- {
- gPokenavStructPtr->unk7698 = 160;
- REG_BG0VOFS = 160;
- }
- else
- {
- gPokenavStructPtr->unk7698 = 256;
- REG_BG0VOFS = 0;
- }
-
- REG_BG0CNT = REG_BG0CNT;
- REG_BG0CNT |= 1;
- REG_BLDCNT = 0;
- break;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unkD160++;
- return TRUE;
-}
-
-asm(".include \"constants/gba_constants.inc\"\n");
-
-void sub_80EF9F8(void)
-{
- bool8 someBool = FALSE;
- u16 top = 4;
- u16 mapSectionId;
- u8 b;
-
- switch (gPokenavStructPtr->regionMap.unk16)
- {
- case 0:
- break;
- case 1:
- case 4:
- sub_8072A18(gPokenavStructPtr->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
- top += 2;
- if (gLinkOpen == TRUE)
- {
- sub_80F1A80();
- someBool = TRUE;
- }
- else
- {
- u16 i;
-
- for (i = 0; i < 4; i++)
- {
- const u8 *secName = GetLandmarkName(
- gPokenavStructPtr->regionMap.mapSectionId,
- gPokenavStructPtr->regionMap.everGrandeCityArea,
- i);
-
- if (secName == NULL)
- break;
- sub_8072A18(secName, 0x70, top * 8, 0x78, 1);
- top += 2;
- }
- }
- break;
- case 2:
- sub_8072A18(gPokenavStructPtr->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
- top += 2;
- mapSectionId = gPokenavStructPtr->regionMap.mapSectionId;
- b = gPokenavStructPtr->regionMap.everGrandeCityArea;
- if (gPokenavStructPtr->unkCDCC[mapSectionId][b] != NULL)
- {
- Menu_BlankWindowRect(14, top, 15, 15);
- Menu_BlankWindowRect(26, top, 28, 15);
- sub_8095C8C((void *)(VRAM + 0xF800), 16, 6, gPokenavStructPtr->unkCDCC[mapSectionId][b], 0, 0, 10, 10, 10);
- top += 11;
- }
- break;
- case 3:
- sub_8072A18(gPokenavStructPtr->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
- top += 2;
- break;
- }
-
- // Epic fail by the compiler at optimizing this.
- if (!someBool && top < 16)
- Menu_BlankWindowRect(14, top, 28, 15);
-
- if (gPokenavStructPtr->regionMap.unk16 == 2)
- sub_80EFD74();
- else
- sub_80EFDA0();
-}
-
-void sub_80EFBB0(void)
-{
- if (!gPokenavStructPtr->regionMap.zoomed)
- sub_80EEFBC(8);
- else
- sub_80EEFBC(7);
-}
-
-bool8 sub_80EFBDC(bool8 a)
-{
- bool8 retVal = TRUE;
- u16 var1 = gPokenavStructPtr->unk7698;
-
- if (a)
- {
- if (var1 > 168)
- {
- var1 = var1 - 8;
- }
- else
- {
- var1 = 160;
- retVal = FALSE;
- }
- }
- else
- {
- if (var1 < 248)
- {
- var1 = var1 + 8;
- }
- else
- {
- var1 = 256;
- retVal = FALSE;
- }
- }
-
- gPokenavStructPtr->unk7698 = var1;
- REG_BG0VOFS = var1 & 0xFF;
-
- return retVal;
-}
-
-void sub_80EFC3C(void)
-{
- gPokenavStructPtr->unkBC9A = 0;
- gPokenavStructPtr->unkBC9B = 0;
- sub_80EFD3C();
-}
-
-bool8 sub_80EFC64(void)
-{
- u16 i;
- u8 var1;
- u16 var2;
-
- if (gPokenavStructPtr->unkBC9A >= 16)
- return FALSE;
-
- var1 = gPokenavStructPtr->unkBC9A;
- var2 = gPokenavStructPtr->unkBC9B;
- for (i = 0; i < 2; i++)
- {
- if (gPokenavCityMaps[var1][i] != 0)
- {
- LZ77UnCompVram(gPokenavCityMaps[var1][i], gPokenavStructPtr->unkBC9C[var2]);
- gPokenavStructPtr->unkCDCC[var1][i] = gPokenavStructPtr->unkBC9C[var2];
- var2++;
- }
- else
- {
- gPokenavStructPtr->unkCDCC[var1][i] = NULL;
- }
- }
-
- if (++gPokenavStructPtr->unkBC9A >= 16)
- return FALSE;
-
- gPokenavStructPtr->unkBC9B = var2;
- return TRUE;
-}
-
-void sub_80EFD3C(void)
-{
- gPokenavStructPtr->unk769E = 0;
- gPokenavStructPtr->unk769C = 47;
- gPokenavStructPtr->unk769D = 0;
- gPokenavStructPtr->unk769A = 0;
-}
-
-void sub_80EFD74(void)
-{
- gPokenavStructPtr->unk769E = 1;
- if (gPokenavStructPtr->unk769D == 1)
- gPokenavStructPtr->unk769D = 2;
-}
-
-void sub_80EFDA0(void)
-{
- sub_8095C8C((void *)VRAM + 0xF800, 14, 16, gUnknown_08E9AC2C, 0, 0, 15, 1, 15);
- gPokenavStructPtr->unk769E = 0;
-}
-
-void sub_80EFDE4(u8 param0)
-{
- u16 var1 = 60 - gPokenavStructPtr->unk769C;
-
- if (var1 > 15)
- var1 = 15;
-
- if (gPokenavStructPtr->unk769E != 0)
- {
- sub_8095C8C((void *)VRAM + 0xF800, 14, 16, gUnknown_08E9ABB4, gPokenavStructPtr->unk769C, 0, var1, 1, 60);
-
- if (var1 < 15)
- {
- u16 var2 = var1 + 14;
-
- sub_8095C8C((void *)VRAM + 0xF800, var2, 16, gUnknown_08E9ABB4, 0, 0, (u16)(15 - var1), 1, 60);
- }
- }
-}
-
-void sub_80EFE7C(void)
-{
- u16 var1;
- u8 var2 = gPokenavStructPtr->unk769D;
-
- switch (var2)
- {
- case 0:
- var1 = ++gPokenavStructPtr->unk769C;
-
- if (var1 > 59)
- gPokenavStructPtr->unk769C = var2;
-
- sub_80EFDE4(gPokenavStructPtr->unk769E);
-
- switch (gPokenavStructPtr->unk769C)
- {
- case 0:
- case 15:
- case 30:
- case 45:
- gPokenavStructPtr->unk769D = 1;
- gPokenavStructPtr->unk769A = 0;
- break;
- }
- break;
- case 1:
- var1 = ++gPokenavStructPtr->unk769A;
- if (var1 > 120)
- {
- gPokenavStructPtr->unk769A = 0;
- gPokenavStructPtr->unk769D = 0;
- }
- break;
- case 2:
- sub_80EFDE4(1);
- gPokenavStructPtr->unk769D = 1;
- break;
- }
-}
-
-void sub_80EFF34(void)
-{
- gPokenavStructPtr->unkD160 = 0;
-
- if (gPokenavStructPtr->unk6DAC == 0)
- {
- while (sub_80EFF68())
- ;
- }
-}
-
-bool8 sub_80EFF68(void)
-{
- switch (gPokenavStructPtr->unkD160)
- {
- case 0:
- sub_80EEDE8();
- gPokenavStructPtr->unkD162 = 11;
- break;
- case 1:
- Text_LoadWindowTemplate(&gWindowTemplate_81E7080);
- break;
- case 2:
- MultistepInitMenuWindowBegin(&gWindowTemplate_81E7080);
- break;
- case 3:
- if (!MultistepInitMenuWindowContinue())
- return TRUE;
- break;
- case 4:
- Menu_EraseScreen();
- break;
- case 5:
- sub_80F1614();
- break;
- case 6:
- if (sub_80F162C(0))
- return TRUE;
- break;
- case 7:
- LZ77UnCompVram(gPokenavConditionView_Gfx, (void *)VRAM + 0x5000);
- break;
- case 8:
- LZ77UnCompVram(gUnknown_08E9AC4C, (void *)VRAM + 0xF000);
- LoadPalette(gPokenavConditionMenu2_Pal, 0x20, 0x20);
- break;
- case 9:
- if (gPokenavStructPtr->unk76AA == 1)
- sub_8095C8C((void *)VRAM + 0xF000, 0, 5, gUnknown_083E01AC, 0, 0, 9, 4, 9);
- break;
- case 10:
- LZ77UnCompVram(gUnknown_08E9FEB4, (void *)VRAM + 0xB800);
- break;
- case 11:
- LoadPalette(gUnknown_083E0254, 0x30, 0x20);
- LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
- LoadPalette(&gPokenavConditionMenu2_Pal[2], 0xB1, 0x2);
- LoadPalette(&gPokenavConditionMenu2_Pal[16], 0xB5, 0x2);
- LoadPalette(&gPokenavConditionMenu2_Pal[30], 0xBF, 0x2);
- sub_80F01A4();
- break;
- case 12:
- sub_80F01E0(gPokenavStructPtr->unk8fe9);
- break;
- case 13:
- REG_BG3CNT = 0x1E03;
- REG_BG2CNT = 0x1702;
- REG_BLDCNT = 0x844;
- REG_BLDALPHA = 0x40B;
- break;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unkD160++;
- return TRUE;
-}
-
-void sub_80F0174(bool8 bg2on)
-{
- if (bg2on)
- REG_DISPCNT |= DISPCNT_BG2_ON;
- else
- REG_DISPCNT &= ~DISPCNT_BG2_ON;
-}
-
-void sub_80F01A4(void)
-{
- REG_WIN0H = WIN_RANGE(0, 240);
- REG_WIN1H = WIN_RANGE(0, 155);
- REG_WIN0V = WIN_RANGE(56, 121);
- REG_WIN1V = WIN_RANGE(56, 121);
- REG_WININ = 0x3F3F;
- REG_WINOUT = 0x001B;
-}
-
-static void sub_80F01E0(u16 a)
-{
- Menu_PrintText(gPokenavStructPtr->unk8829[a], 13, 1);
-
- if (gPokenavStructPtr->unk76AA == 1)
- {
- Menu_PrintText(gPokenavStructPtr->unk88E9[a], 13, 3);
- sub_80F443C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk2);
- Menu_PrintText(gPokenavStructPtr->unk8788, 1, 6);
- }
-}
-
-void sub_80F0264(u8 a)
-{
- gPokenavStructPtr->unk306 = 0;
- gPokenavStructPtr->unk87CA = a;
-
- if (gPokenavStructPtr->unk6DAC == 0)
- {
- while (sub_80F02A0())
- ;
- }
-}
-
-bool8 sub_80F02A0(void)
-{
- const u16 *pointer;
-
- switch (gPokenavStructPtr->unk306)
- {
- case 0:
- sub_80EEDE8();
-
- gPokenavStructPtr->unk87C8 = gPokenavStructPtr->unk87CA == 1;
- gPokenavStructPtr->unkD162 = 11;
- break;
- case 1:
- Text_LoadWindowTemplate(&gWindowTemplate_81E70D4);
- break;
- case 2:
- MultistepInitMenuWindowBegin(&gWindowTemplate_81E70D4);
- break;
- case 3:
- if (!MultistepInitMenuWindowContinue())
- {
- return TRUE;
- }
- break;
- case 4:
- Menu_EraseScreen();
- break;
- case 5:
- LZ77UnCompVram(gUnknown_08E9FC64, (void *)VRAM + 0xE800);
- break;
- case 6:
- LZ77UnCompVram(gPokenavConditionSearch2_Gfx, (void *)VRAM + 0x8000);
- break;
- case 7:
- LoadPalette(gUnknown_083E02B4, 0xB0, 0x20);
- LoadPalette(gUnknown_083E02B4, 0xF0, 0x20);
- LoadPalette(gUnknown_083E0334, 0x40, 0x20);
-
- if (gPokenavStructPtr->unk87CA == 0)
- {
- LoadPalette(gPokenavConditionSearch2_Pal, 0x30, 0x20);
- gPlttBufferUnfaded[0] = gPokenavConditionSearch2_Pal[5];
- LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
- LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2);
- LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2);
- LoadPalette(&gPokenavConditionSearch2_Pal[5], 0xBF, 0x2);
- }
- else if (gPokenavStructPtr->unk87CA == 1)
- {
- LoadPalette(gUnknown_083E0274, 0x30, 0x20);
- gPlttBufferUnfaded[0] = gUnknown_083E0274[5];
- LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
- LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2);
- LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2);
- LoadPalette(&gUnknown_083E0274[5], 0xBF, 0x2);
- }
- else
- {
- LoadPalette(gUnknown_08E9F9E8, 0x30, 0x20);
- gPlttBufferUnfaded[0] = *(pointer = &gUnknown_08E9F9E8[5]);
- LoadPalette(gUnknown_083E0314, 0x50, 0x20);
- LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2);
- LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2);
- LoadPalette(pointer, 0xBF, 0x2);
- LoadPalette(pointer, 0x5F, 0x2);
- }
- break;
- case 8:
- if (gPokenavStructPtr->unk87CA != 2)
- {
- sub_8095C8C((void *)VRAM + 0xE800, 0, 5, gUnknown_08E9FD1C, 0, 0, 9, 4, 9);
- }
- else
- {
- sub_8095C8C((void *)VRAM + 0xE800, 0, 4, gUnknown_08E9FE54, 0, 0, 12, 10, 12);
- sub_8095C8C((void *)VRAM + 0xE800, 0, 8, gUnknown_08E9FD64, 0, 0, 12, 10, 12);
- }
- break;
- case 9:
- LZ77UnCompVram(gUnknown_083E0354, (void *)VRAM + 0x5000);
- break;
- case 10:
- DmaClear16(3, (void *)VRAM + 0xF800, 0x800);
- break;
- case 11:
- sub_80F0900();
- break;
- case 12:
- if (sub_80F0944())
- {
- return TRUE;
- }
- break;
- case 13:
- if (gPokenavStructPtr->unk87CA != 2)
- {
- ShowMapNamePopUpWindow();
- }
- else
- {
- sub_80F081C(0);
- sub_80F0FFC((u8)gPokenavStructPtr->unk876E);
- }
- break;
- case 14:
- REG_BG2CNT = 0x1D0A;
- REG_BG3CNT = 0x1E03;
- REG_BG0CNT = 0x1F01;
- REG_BG3VOFS = 0xF8;
-
- gPokenavStructPtr->unk8776 = 0xF8;
- gPokenavStructPtr->unk8778 = 0;
-
- REG_BLDCNT = 0;
- gPokenavStructPtr->unkD160++;
- return FALSE;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unk306++;
- return TRUE;
-}
-
-void sub_80F063C(s16 arg0)
-{
- s16 var0;
- s16 var1;
- s16 var2;
-
- gPokenavStructPtr->unk877C = arg0 * 16;
- gPokenavStructPtr->unk877A = (arg0 == 1 || arg0 == -1) ? 4 : 8;
- if (arg0 < 0)
- {
- gPokenavStructPtr->unk877A *= -1;
- var0 = arg0 * 2 + gPokenavStructPtr->unk8778;
- var1 = arg0 + gPokenavStructPtr->unk8770;
- if (var1 < 0)
- var1 += gPokenavStructPtr->unk8774 + 1;
-
- arg0 *= -1;
- }
- else
- {
- var0 = gPokenavStructPtr->unk8778 + 16;
- var1 = gPokenavStructPtr->unk8772 + 1;
- }
-
- if (var1 > gPokenavStructPtr->unk8774)
- var1 = 0;
-
- var2 = var0 & 0x1F;
- sub_80F0954(var1, var2, arg0);
-}
-
-static bool8 sub_80F0718(void)
-{
- if (!sub_80F098C())
- {
- if (gPokenavStructPtr->unk877C == 0)
- return FALSE;
-
- gPokenavStructPtr->unk877C -= gPokenavStructPtr->unk877A;
- gPokenavStructPtr->unk8776 += gPokenavStructPtr->unk877A;
- gPokenavStructPtr->unk8776 &= 0xFF;
- REG_BG3VOFS = gPokenavStructPtr->unk8776;
- if (gPokenavStructPtr->unk877C == 0)
- {
- gPokenavStructPtr->unk8778 = ((8 + gPokenavStructPtr->unk8776) & 0xFF) / 8;
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-static void ShowMapNamePopUpWindow(void)
-{
- switch (gPokenavStructPtr->unk87CA)
- {
- case 0:
- sub_80F443C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk893c[gPokenavStructPtr->unk876E].unk2);
- break;
- case 1:
- sub_80F445C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk876E + 1);
- break;
- default:
- return;
- }
-
- BasicInitMenuWindow(&gWindowTemplate_81E710C);
- Menu_PrintText(gPokenavStructPtr->unk8788, 1, 6);
-}
-
-void sub_80F081C(u8 arg0)
-{
- u32 numTrainerBattles;
-
- BasicInitMenuWindow(&gWindowTemplate_81E710C);
- switch (arg0)
- {
- case 0:
- case 1:
- MenuPrint_RightAligned(gOtherText_NumberRegistered, 10, 9);
- if (arg0 != 0)
- break;
- // fall through
- case 2:
- ConvertIntToDecimalStringN(
- gPokenavStructPtr->unk8788,
- gPokenavStructPtr->unk8774 + 1,
- STR_CONV_MODE_RIGHT_ALIGN,
- 5);
- MenuPrint_RightAligned(gPokenavStructPtr->unk8788, 10, 11);
- if (arg0 != 0)
- break;
- // fall through
- case 3:
- MenuPrint_RightAligned(gOtherText_NumberBattles, 10, 13);
- if (arg0 != 0)
- break;
- // fall through
- case 4:
- numTrainerBattles = GetGameStat(GAME_STAT_TRAINER_BATTLES);
- if (numTrainerBattles > 99999)
- numTrainerBattles = 99999;
-
- ConvertIntToDecimalStringN(
- gPokenavStructPtr->unk8788,
- numTrainerBattles,
- STR_CONV_MODE_RIGHT_ALIGN,
- 5);
- MenuPrint_RightAligned(gPokenavStructPtr->unk8788, 10, 15);
- break;
- }
-}
-
-static void sub_80F08E4(void)
-{
- BasicInitMenuWindow(&gWindowTemplate_81E710C);
- Menu_EraseWindowRect(0, 9, 11, 16);
-}
-
-void sub_80F0900(void)
-{
- s16 var0 = (gPokenavStructPtr->unk8772 - gPokenavStructPtr->unk8770) + 1;
- if (var0 < 8)
- Menu_EraseWindowRect(12, 1, 31, 15);
-
- sub_80F0954(gPokenavStructPtr->unk8770, 0, var0);
-}
-
-bool8 sub_80F0944(void)
-{
- return sub_80F098C();
-}
-
-static void sub_80F0954(u16 arg0, u16 arg1, u16 arg2)
-{
- gPokenavStructPtr->unk877E = arg0;
- gPokenavStructPtr->unk8780 = arg1;
- gPokenavStructPtr->unk8784 = arg2;
- gPokenavStructPtr->unk8786 = 0;
-}
-
-#ifdef NONMATCHING
-static bool8 sub_80F098C(void)
-{
- register u16 zero asm("r8");
- if (!gPokenavStructPtr->unk8784)
- {
- DONE:
- return FALSE;
- }
-
- zero = 0;
- gUnknown_083E3270[gPokenavStructPtr->unk87CA](gPokenavStructPtr->unk877E, gPokenavStructPtr->unk8780);
- if (!--gPokenavStructPtr->unk8784)
- goto DONE;
-
- if ((++gPokenavStructPtr->unk877E & 0xFFFF) > gPokenavStructPtr->unk8774)
- gPokenavStructPtr->unk877E = zero;
-
- gPokenavStructPtr->unk8780 += 2;
- gPokenavStructPtr->unk8780 &= 0x1F;
- return TRUE;
-}
-#else
-NAKED
-static bool8 sub_80F098C(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- ldr r0, _080F09A4 @ =gPokenavStructPtr\n\
- ldr r6, [r0]\n\
- ldr r0, _080F09A8 @ =0x00008784\n\
- adds r7, r6, r0\n\
- ldrh r0, [r7]\n\
- cmp r0, 0\n\
- bne _080F09AC\n\
-_080F09A0:\n\
- movs r0, 0\n\
- b _080F0A02\n\
- .align 2, 0\n\
-_080F09A4: .4byte gPokenavStructPtr\n\
-_080F09A8: .4byte 0x00008784\n\
-_080F09AC:\n\
- movs r1, 0\n\
- mov r8, r1\n\
- ldr r1, _080F0A0C @ =gUnknown_083E3270\n\
- ldr r2, _080F0A10 @ =0x000087ca\n\
- adds r0, r6, r2\n\
- ldrb r2, [r0]\n\
- lsls r2, 2\n\
- adds r2, r1\n\
- ldr r0, _080F0A14 @ =0x0000877e\n\
- adds r4, r6, r0\n\
- ldrh r0, [r4]\n\
- ldr r1, _080F0A18 @ =0x00008780\n\
- adds r5, r6, r1\n\
- ldrh r1, [r5]\n\
- ldr r2, [r2]\n\
- bl _call_via_r2\n\
- ldrh r0, [r7]\n\
- subs r0, 0x1\n\
- strh r0, [r7]\n\
- ldr r2, _080F0A1C @ =0x0000ffff\n\
- adds r1, r2, 0\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _080F09A0\n\
- ldrh r0, [r4]\n\
- adds r0, 0x1\n\
- strh r0, [r4]\n\
- ands r0, r1\n\
- ldr r2, _080F0A20 @ =0x00008774\n\
- adds r1, r6, r2\n\
- movs r2, 0\n\
- ldrsh r1, [r1, r2]\n\
- cmp r0, r1\n\
- ble _080F09F6\n\
- mov r0, r8\n\
- strh r0, [r4]\n\
-_080F09F6:\n\
- ldrh r0, [r5]\n\
- adds r0, 0x2\n\
- movs r1, 0x1F\n\
- ands r0, r1\n\
- strh r0, [r5]\n\
- movs r0, 0x1\n\
-_080F0A02:\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080F0A0C: .4byte gUnknown_083E3270\n\
-_080F0A10: .4byte 0x000087ca\n\
-_080F0A14: .4byte 0x0000877e\n\
-_080F0A18: .4byte 0x00008780\n\
-_080F0A1C: .4byte 0x0000ffff\n\
-_080F0A20: .4byte 0x00008774\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
-
-void sub_80F0A24(u16 arg0, u16 arg1)
-{
- u8 var0 = gPokenavStructPtr->unk87C8 == 0 ? 2 : 1;
- sub_80F4428(gPokenavStructPtr->unk8788, arg0, var0);
- BasicInitMenuWindow(&gWindowTemplate_81E70D4);
- Menu_PrintText(gPokenavStructPtr->unk8788, 13, arg1);
-}
-
-static void sub_80F0A74(u16 arg0, u16 arg1)
-{
- sub_80F700C(gPokenavStructPtr->unk8788, arg0);
- arg1 &= 0x1F;
- BasicInitMenuWindow(&gWindowTemplate_81E70D4);
- Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, arg1 * 8, 0);
- if (arg0 < gPokenavStructPtr->unkD158 && gPokenavStructPtr->trainersEye[arg0].rematchNo != 0)
- sub_8095C8C((void *)VRAM + 0xF000, 29, arg1, gUnknown_083E039C, 0, 0, 1, 2, 1);
- else
- sub_8095C8C((void *)VRAM + 0xF000, 29, arg1, gUnknown_083E03A0, 0, 0, 1, 2, 1);
-}
-
-static void sub_80F0B24(void)
-{
- gPokenavStructPtr->unkD15C = 0;
- gPokenavStructPtr->unk306 = 0;
-}
-
-static bool8 sub_80F0B44(void)
-{
- int top;
- if (gPokenavStructPtr->unkD15C > 8)
- {
- return FALSE;
- }
-
- if (++gPokenavStructPtr->unk306 > 1)
- {
- gPokenavStructPtr->unk306 = 0;
- if (gPokenavStructPtr->unkD15C < 8)
- {
- top = (gPokenavStructPtr->unk8778 + (gPokenavStructPtr->unkD15C * 2)) & 0x1F;
- if (gPokenavStructPtr->unkD15C != gPokenavStructPtr->unk876C)
- {
- BasicInitMenuWindow(&gWindowTemplate_81E70D4);
- Menu_EraseWindowRect(12, top, 31, top + 1);
- }
-
- if (!gPokenavStructPtr->unkD15C)
- sub_80F08E4();
-
- gPokenavStructPtr->unkD15C++;
- return TRUE;
- }
- else
- {
- u16 i;
- BasicInitMenuWindow(&gWindowTemplate_81E70D4);
- top = (gPokenavStructPtr->unk8778 + 16) & 0x1F;
- for (i = 0; i < 8; i++)
- {
- Menu_EraseWindowRect(12, top, 31, top + 1);
- top = (top + 2) & 0x1F;
- }
-
- gPokenavStructPtr->unkD15C++;
- return FALSE;
- }
- }
- else
- {
- return TRUE;
- }
-}
-
-static void sub_80F0C28(void)
-{
- gPokenavStructPtr->unkD15C = 0;
- gPokenavStructPtr->unk306 = 0;
-}
-
-static bool8 sub_80F0C48(void)
-{
- if (gPokenavStructPtr->unkD15C > 7)
- return FALSE;
-
- if (++gPokenavStructPtr->unk306 > 1)
- {
- gPokenavStructPtr->unk306 = 0;
- BasicInitMenuWindow(&gWindowTemplate_81E70D4);
- sub_80F0A74(gPokenavStructPtr->unk8770 + gPokenavStructPtr->unkD15C,
- gPokenavStructPtr->unk8778 + gPokenavStructPtr->unkD15C * 2);
-
- if ((++gPokenavStructPtr->unkD15C) > 7)
- {
- sub_80F081C(0);
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-void LoadTrainerEyesDescriptionLines(void)
-{
- u16 i;
- int trainerEyesId;
- const u8 *curChar;
-
- gPokenavStructPtr->unk306 = 0;
- gPokenavStructPtr->unkD15C = 0;
- trainerEyesId = gPokenavStructPtr->trainersEye[gPokenavStructPtr->unk876E].rematchTableIdx;
- gPokenavStructPtr->trainerEyeDescriptionLines[0] = gTrainerEyeDescriptions[trainerEyesId];
-
- // Find the start of the 3 other lines in the Trainer's Eyes description.
- curChar = gPokenavStructPtr->trainerEyeDescriptionLines[0];
- for (i = 0; i < 3; i++)
- {
- while (*curChar != EOS)
- curChar++;
- gPokenavStructPtr->trainerEyeDescriptionLines[i + 1] = ++curChar;
- }
-}
-
-#ifdef NONMATCHING
-// small register mismatch (r2/r3) on the line where var0 is set.
-bool8 sub_80F0D5C(void)
-{
- int var0;
- if (gPokenavStructPtr->unkD15C == 7)
- return FALSE;
-
- if (++gPokenavStructPtr->unk306 > 1)
- {
- gPokenavStructPtr->unk306 = 0;
- BasicInitMenuWindow(&gWindowTemplate_81E70D4);
- var0 = (gPokenavStructPtr->unk8778 + 2 + gPokenavStructPtr->unkD15C * 2) & 0x1F;
- switch (gPokenavStructPtr->unkD15C)
- {
- case 0:
- Menu_PrintTextPixelCoords(gOtherText_Strategy, 97, var0 * 8, 0);
- break;
- case 1:
- AlignStringInMenuWindow(
- gPokenavStructPtr->unk8788,
- gPokenavStructPtr->trainerEyeDescriptionLines[0],
- 136,
- 0);
- Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0);
- break;
- case 2:
- Menu_PrintTextPixelCoords(gOtherText_TrainersPokemon, 97, var0 * 8, 0);
- break;
- case 3:
- AlignStringInMenuWindow(
- gPokenavStructPtr->unk8788,
- gPokenavStructPtr->trainerEyeDescriptionLines[1],
- 136,
- 0);
- Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0);
- break;
- case 4:
- Menu_PrintTextPixelCoords(gOtherText_SelfIntroduction, 97, var0 * 8, 0);
- break;
- case 5:
- AlignStringInMenuWindow(
- gPokenavStructPtr->unk8788,
- gPokenavStructPtr->trainerEyeDescriptionLines[2],
- 136,
- 0);
- Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0);
- break;
- case 6:
- AlignStringInMenuWindow(
- gPokenavStructPtr->unk8788,
- gPokenavStructPtr->trainerEyeDescriptionLines[3],
- 136,
- 0);
- Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0);
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unkD15C++;
- return TRUE;
- }
- else
- {
- return TRUE;
- }
-}
-#else
-NAKED
-bool8 sub_80F0D5C(void)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- ldr r0, _080F0D70 @ =gPokenavStructPtr\n\
- ldr r4, [r0]\n\
- ldr r0, _080F0D74 @ =0x0000d15c\n\
- adds r5, r4, r0\n\
- ldrh r0, [r5]\n\
- cmp r0, 0x7\n\
- bne _080F0D78\n\
-_080F0D6C:\n\
- movs r0, 0\n\
- b _080F0EB0\n\
- .align 2, 0\n\
-_080F0D70: .4byte gPokenavStructPtr\n\
-_080F0D74: .4byte 0x0000d15c\n\
-_080F0D78:\n\
- ldr r0, _080F0DB8 @ =0x00000306\n\
- adds r1, r4, r0\n\
- ldrh r0, [r1]\n\
- adds r0, 0x1\n\
- strh r0, [r1]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _080F0D8C\n\
- b _080F0EAE\n\
-_080F0D8C:\n\
- movs r0, 0\n\
- strh r0, [r1]\n\
- ldr r0, _080F0DBC @ =gWindowTemplate_81E70D4\n\
- bl BasicInitMenuWindow\n\
- ldr r0, _080F0DC0 @ =0x00008778\n\
- adds r1, r4, r0\n\
- ldrh r3, [r5]\n\
- lsls r0, r3, 1\n\
- adds r0, 0x2\n\
- ldrh r1, [r1]\n\
- adds r5, r0, r1\n\
- movs r0, 0x1F\n\
- ands r5, r0\n\
- cmp r3, 0x6\n\
- bhi _080F0D6C\n\
- lsls r0, r3, 2\n\
- ldr r1, _080F0DC4 @ =_080F0DC8\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_080F0DB8: .4byte 0x00000306\n\
-_080F0DBC: .4byte gWindowTemplate_81E70D4\n\
-_080F0DC0: .4byte 0x00008778\n\
-_080F0DC4: .4byte _080F0DC8\n\
- .align 2, 0\n\
-_080F0DC8:\n\
- .4byte _080F0DE4\n\
- .4byte _080F0DF0\n\
- .4byte _080F0E08\n\
- .4byte _080F0E14\n\
- .4byte _080F0E2C\n\
- .4byte _080F0E38\n\
- .4byte _080F0E6C\n\
-_080F0DE4:\n\
- ldr r0, _080F0DEC @ =gOtherText_Strategy\n\
- lsls r2, r5, 3\n\
- b _080F0E54\n\
- .align 2, 0\n\
-_080F0DEC: .4byte gOtherText_Strategy\n\
-_080F0DF0:\n\
- ldr r0, _080F0DFC @ =gPokenavStructPtr\n\
- ldr r0, [r0]\n\
- ldr r1, _080F0E00 @ =0x00008788\n\
- adds r4, r0, r1\n\
- ldr r1, _080F0E04 @ =0x0000d110\n\
- b _080F0E42\n\
- .align 2, 0\n\
-_080F0DFC: .4byte gPokenavStructPtr\n\
-_080F0E00: .4byte 0x00008788\n\
-_080F0E04: .4byte 0x0000d110\n\
-_080F0E08:\n\
- ldr r0, _080F0E10 @ =gOtherText_TrainersPokemon\n\
- lsls r2, r5, 3\n\
- b _080F0E54\n\
- .align 2, 0\n\
-_080F0E10: .4byte gOtherText_TrainersPokemon\n\
-_080F0E14:\n\
- ldr r0, _080F0E20 @ =gPokenavStructPtr\n\
- ldr r0, [r0]\n\
- ldr r1, _080F0E24 @ =0x00008788\n\
- adds r4, r0, r1\n\
- ldr r1, _080F0E28 @ =0x0000d114\n\
- b _080F0E42\n\
- .align 2, 0\n\
-_080F0E20: .4byte gPokenavStructPtr\n\
-_080F0E24: .4byte 0x00008788\n\
-_080F0E28: .4byte 0x0000d114\n\
-_080F0E2C:\n\
- ldr r0, _080F0E34 @ =gOtherText_SelfIntroduction\n\
- lsls r2, r5, 3\n\
- b _080F0E54\n\
- .align 2, 0\n\
-_080F0E34: .4byte gOtherText_SelfIntroduction\n\
-_080F0E38:\n\
- ldr r0, _080F0E60 @ =gPokenavStructPtr\n\
- ldr r0, [r0]\n\
- ldr r1, _080F0E64 @ =0x00008788\n\
- adds r4, r0, r1\n\
- ldr r1, _080F0E68 @ =0x0000d118\n\
-_080F0E42:\n\
- adds r0, r1\n\
- ldr r1, [r0]\n\
- adds r0, r4, 0\n\
- movs r2, 0x88\n\
- movs r3, 0\n\
- bl AlignStringInMenuWindow\n\
- lsls r2, r5, 3\n\
- adds r0, r4, 0\n\
-_080F0E54:\n\
- movs r1, 0x61\n\
- movs r3, 0\n\
- bl Menu_PrintTextPixelCoords\n\
- b _080F0EA0\n\
- .align 2, 0\n\
-_080F0E60: .4byte gPokenavStructPtr\n\
-_080F0E64: .4byte 0x00008788\n\
-_080F0E68: .4byte 0x0000d118\n\
-_080F0E6C:\n\
- ldr r0, _080F0E94 @ =gPokenavStructPtr\n\
- ldr r0, [r0]\n\
- ldr r1, _080F0E98 @ =0x00008788\n\
- adds r4, r0, r1\n\
- ldr r1, _080F0E9C @ =0x0000d11c\n\
- adds r0, r1\n\
- ldr r1, [r0]\n\
- adds r0, r4, 0\n\
- movs r2, 0x88\n\
- movs r3, 0\n\
- bl AlignStringInMenuWindow\n\
- lsls r2, r5, 3\n\
- adds r0, r4, 0\n\
- movs r1, 0x61\n\
- movs r3, 0\n\
- bl Menu_PrintTextPixelCoords\n\
- b _080F0D6C\n\
- .align 2, 0\n\
-_080F0E94: .4byte gPokenavStructPtr\n\
-_080F0E98: .4byte 0x00008788\n\
-_080F0E9C: .4byte 0x0000d11c\n\
-_080F0EA0:\n\
- ldr r0, _080F0EB8 @ =gPokenavStructPtr\n\
- ldr r1, [r0]\n\
- ldr r0, _080F0EBC @ =0x0000d15c\n\
- adds r1, r0\n\
- ldrh r0, [r1]\n\
- adds r0, 0x1\n\
- strh r0, [r1]\n\
-_080F0EAE:\n\
- movs r0, 0x1\n\
-_080F0EB0:\n\
- pop {r4,r5}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080F0EB8: .4byte gPokenavStructPtr\n\
-_080F0EBC: .4byte 0x0000d15c\n\
- .syntax divided\n");
-}
-#endif
-
-static void sub_80F0EC0(void)
-{
- gPokenavStructPtr->unk306 = 0;
- gPokenavStructPtr->unkD15C = 0;
- StringFill(gPokenavStructPtr->unk8788, CHAR_SPACE, 16);
-}
-
-static bool8 sub_80F0EF4(void)
-{
- int top;
- if (gPokenavStructPtr->unkD15C > 6)
- return FALSE;
-
- if (++gPokenavStructPtr->unk306 > 1)
- {
- gPokenavStructPtr->unk306 = 0;
- top = (gPokenavStructPtr->unk8778 + 2 + gPokenavStructPtr->unkD15C * 2) & 0x1F;
- BasicInitMenuWindow(&gWindowTemplate_81E70D4);
- Menu_EraseWindowRect(12, top, 31, top + 1);
- gPokenavStructPtr->unkD15C++;
- }
-
- return TRUE;
-}
-
-static void sub_80F0F64(void)
-{
- s16 var0 = gPokenavStructPtr->unk876C;
- gPokenavStructPtr->unk877C = var0 * 16;
- gPokenavStructPtr->unk877A = var0 == 1 ? 4 : 8;
-}
-
-static void sub_80F0FA0(void)
-{
- s16 var0 = gPokenavStructPtr->unk876C * -1;
- gPokenavStructPtr->unk877C = var0 * 16;
- gPokenavStructPtr->unk877A = var0 == -1 ? -4 : -8;
-}
-
-static bool8 sub_80F0FEC(void)
-{
- return sub_80F0718();
-}
-
-void sub_80F0FFC(u8 arg0)
-{
- GetMapSectionName(gPokenavStructPtr->unk8788, gPokenavStructPtr->trainersEye[arg0].regionMapSectionId, 0);
- BasicInitMenuWindow(&gWindowTemplate_81E710C);
- sub_80F19DC(gPokenavStructPtr->unk8788);
- AlignStringInMenuWindow(gPokenavStructPtr->unkD138, gPokenavStructPtr->unk8788, 88, 2);
- Menu_PrintText(gPokenavStructPtr->unkD138, 0, 5);
-}
-
-void sub_80F105C(void)
-{
- sub_80F0A74(gPokenavStructPtr->unk876E, gPokenavStructPtr->unk8778);
-}
-
-static bool8 sub_80F1080(void)
-{
- switch (gPokenavStructPtr->unkD160)
- {
- case 0:
- sub_80EEDE8();
- gPokenavStructPtr->unkD162 = 11;
- break;
- case 1:
- Text_LoadWindowTemplate(&gWindowTemplate_81E70B8);
- break;
- case 2:
- MultistepInitMenuWindowBegin(&gWindowTemplate_81E70B8);
- break;
- case 3:
- if (!MultistepInitMenuWindowContinue())
- return TRUE;
- break;
- case 4:
- Menu_EraseScreen();
- break;
- case 5:
- sub_80F1614();
- break;
- case 6:
- if (sub_80F162C(1))
- return TRUE;
- break;
- case 7:
- LZ77UnCompWram(gUnknown_08E9FBA0, gPokenavStructPtr->unk934C);
- break;
- case 8:
- DrawMonRibbonIcons();
- break;
- case 9:
- sub_80F13FC();
- break;
- case 10:
- LZ77UnCompVram(gPokenavRibbonView_Gfx, (void *)(VRAM + 0x8000));
- break;
- case 11:
- LZ77UnCompVram(gUnknown_083E040C, (void *)(VRAM + 0x8200));
- break;
- case 12:
- LoadPalette(gPokenavRibbonView_Pal, 0x20, 0x20);
- LoadPalette(gUnknown_083E03A8, 0xF0, 0x20);
- LoadPalette(gUnknown_083E3C60[0], 0x30, 0xA0);
- LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
- LoadPalette(gUnknown_083E03A8 + 0xF, 0xBF, 0x2);
- break;
- case 13:
- sub_80F1438();
- break;
- case 14:
- REG_BG2CNT = 0x1E02;
- REG_BG3CNT = 0x170B;
- REG_BLDCNT = 0;
- gPokenavStructPtr->unkD160++;
- return FALSE;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unkD160++;
- return TRUE;
-}
-
-void DrawMonRibbonIcons(void)
-{
- u16 i;
- u16 offset;
- u8 index, palette, tile;
- u8 var0;
-
- offset = 0x8B;
- var0 = gPokenavStructPtr->unkBC8E - gPokenavStructPtr->unkBC8F;
-
- for (i = 0; i < 8; i++)
- CpuFill16(0x2000, &gPokenavStructPtr->unk934C[offset + i * 32], 0x24);
-
- for (i = 0; i < var0; i++)
- {
- index = gPokenavStructPtr->unkBC4C[i];
- palette = gPokenavRibbonsIconGfx[index][1] + 3;
- tile = gPokenavRibbonsIconGfx[index][0] * 2 + 0x10;
- gPokenavStructPtr->unk934C[offset] = (palette << 12) | tile;
- gPokenavStructPtr->unk934C[offset + 1] = ((palette << 12) | 0x400) | tile;
- gPokenavStructPtr->unk934C[offset + 0x20] = (palette << 12) | (tile + 1);
- gPokenavStructPtr->unk934C[offset + 0x21] = (palette << 12) | 0x400 | (tile + 1);
-
- if ((i + 1) % 9 == 0)
- offset += 0x30;
- else
- offset += 2;
- }
-
- offset = 0x14B;
- for (i = 0; i < gPokenavStructPtr->unkBC8F; i++)
- {
- index = gPokenavStructPtr->unkBC4C[var0 + i];
- palette = gPokenavRibbonsIconGfx[index][1] + 3;
- tile = gPokenavRibbonsIconGfx[index][0] * 2 + 0x10;
- gPokenavStructPtr->unk934C[offset] = (palette << 12) | tile;
- gPokenavStructPtr->unk934C[offset + 1] = ((palette << 12) | 0x400) | tile;
- gPokenavStructPtr->unk934C[offset + 0x20] = (palette << 12) | (tile + 1);
- gPokenavStructPtr->unk934C[offset + 0x21] = (palette << 12) | 0x400 | (tile + 1);
-
- offset += 2;
- }
-}
-
-void sub_80F13FC(void)
-{
- u16 *src = gPokenavStructPtr->unk934C;
- u16 *dest = (u16 *)(VRAM + 0xB800);
- DmaCopy32(3, src, dest, 0x500);
- gPlttBufferUnfaded[0] = *(gPokenavRibbonView_Pal + 14);
-}
-
-void sub_80F1438(void)
-{
- Menu_PrintText(gPokenavStructPtr->unk8829[0], 13, 1);
- sub_80F445C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk876E + 1);
- Menu_PrintText(gPokenavStructPtr->unk8788, 1, 5);
-}
-
-void sub_80F1480(void)
-{
- Menu_EraseWindowRect(12, 13, 27, 16);
-}
-
-// This is a fakematching function, due to a hardcoded access of gSaveBlock1.
-// Due to this hardcoded address access, gift ribbons do not properly display
-// their descriptions, since the hardcoded access is inside of the LinkBattleRecords
-// save data, rather than the giftRibbons array, which is almost certainly what the
-// intended access is.
-static void sub_80F1494(void)
-{
- u8 *arr;
- u8 *tileBuffer1 = &gUnknown_083DFEC8[0x800];
- u8 *tileBuffer2 = &gUnknown_083DFEC8[0xA98];
-
- if (gPokenavStructPtr->unkBC91 < 3)
- {
- gUnknown_020388B4 = gPokenavStructPtr->unkBC91 * 9 + gPokenavStructPtr->unkBC90;
- gUnknown_020388B4 = gPokenavStructPtr->unkBC4C[gUnknown_020388B4];
- AlignStringInMenuWindow(tileBuffer1, gRibbonDescriptions[gUnknown_020388B4][0], 128, 0);
- AlignStringInMenuWindow(tileBuffer2, gRibbonDescriptions[gUnknown_020388B4][1], 128, 0);
- }
- else
- {
- gUnknown_020388B4 = gPokenavStructPtr->unkBC8E - gPokenavStructPtr->unkBC8F;
- gUnknown_020388B4 = gPokenavStructPtr->unkBC4C[gUnknown_020388B4 + gPokenavStructPtr->unkBC90];
-
- // FIXME!
- arr = ((u8*)&gSaveBlock1);
- asm("ldrh r1, [r5]\n\
- add r0, r0, r1");
- gUnknown_020388B4 = arr[0x30F7];
- // The bug fix for this code is the following:
- // gUnknown_020388B4 = gSaveBlock1.externalReservedData.giftRibbons[gUnknown_020388B4];
- if (gUnknown_020388B4)
- {
- gUnknown_020388B4--;
- AlignStringInMenuWindow(tileBuffer1, gGiftRibbonDescriptions[gUnknown_020388B4][0], 128, 0);
- AlignStringInMenuWindow(tileBuffer2, gGiftRibbonDescriptions[gUnknown_020388B4][1], 128, 0);
- }
- else
- {
- AlignStringInMenuWindow(tileBuffer1, gEmptyString_81E72B0, 128, 0);
- AlignStringInMenuWindow(tileBuffer2, gEmptyString_81E72B0, 128, 0);
- }
- }
-
- Menu_PrintText(tileBuffer1, 12, 13);
- Menu_PrintText(tileBuffer2, 12, 15);
-}
-
-static void sub_80F15A8(void)
-{
- u8 *buffer;
- Menu_EraseWindowRect(12, 13, 27, 16);
- buffer = StringCopy(gPokenavStructPtr->unk8788, gOtherText_Ribbons);
- buffer[0] = CHAR_SPACE;
- buffer++;
- buffer = ConvertIntToDecimalStringN(
- buffer,
- gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk0,
- STR_CONV_MODE_LEFT_ALIGN,
- 2);
- buffer[0] = EOS;
- Menu_PrintText(gPokenavStructPtr->unk8788, 12, 13);
-}
-
-void sub_80F1614(void)
-{
- gPokenavStructPtr->unk8764 = 0;
-}
-
-bool8 sub_80F162C(u8 arg0)
-{
- switch (gPokenavStructPtr->unk8764)
- {
- case 0:
- break;
- case 1:
- LZ77UnCompVram(gUnknown_08E9FF58, (void *)(VRAM + 0xE800));
- break;
- case 2:
- DmaCopy16Defvars(3, gPokenavRibbonPokeView_Gfx, (void *)(VRAM + 0xE000), 0xE0);
- break;
- case 3:
- if (!arg0)
- LoadPalette(gUnknown_083E0124, 0xD0, 0x20);
- else
- LoadPalette(gUnknown_083E0144, 0xD0, 0x20);
-
- gPokenavStructPtr->unk8766 = -80;
- REG_BG0CNT = 0x1D0D;
- gPokenavStructPtr->unk8764++;
- return FALSE;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unk8764++;
- return TRUE;
-}
-
-bool8 sub_80F170C(void)
-{
- gPokenavStructPtr->unk8766 += 0x10;
- if (gPokenavStructPtr->unk8766 > 0)
- gPokenavStructPtr->unk8766 = 0;
-
- return gPokenavStructPtr->unk8766 != 0;
-}
-
-bool8 sub_80F173C(void)
-{
- gPokenavStructPtr->unk8766 -= 0x10;
- if (gPokenavStructPtr->unk8766 < -0x50)
- gPokenavStructPtr->unk8766 = -0x50;
-
- return gPokenavStructPtr->unk8766 != -0x50;
-}
-
-bool8 sub_80F1778(void)
-{
- switch (gPokenavStructPtr->unkD160)
- {
- case 0:
- sub_80EEDE8();
- gPokenavStructPtr->unkD162 = 2;
- break;
- case 1:
- sub_80F1614();
- break;
- case 2:
- if (sub_80F162C(0))
- return TRUE;
- break;
- case 3:
- LZ77UnCompVram(gPokenavConditionView_Gfx, (void *)(VRAM + 0x5000));
- break;
- case 4:
- LZ77UnCompVram(gUnknown_08E9AC4C, (void *)(VRAM + 0xF000));
- LoadPalette(gPokenavConditionMenu2_Pal, 0x20, 0x20);
- break;
- case 5:
- sub_8095C8C((void *)VRAM + 0xF000, 0, 13, gUnknown_083E01F4, 0, 0, 12, 4, 12);
- break;
- case 6:
- LZ77UnCompVram(gUnknown_08E9FEB4, (void *)(VRAM + 0xB800));
- break;
- case 7:
- LoadPalette(gUnknown_083E0254, 0x30, 0x20);
- LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
- LoadPalette(&gPokenavConditionMenu2_Pal[2], 0xB1, 0x2);
- LoadPalette(&gPokenavConditionMenu2_Pal[16], 0xB5, 0x2);
- LoadPalette(&gPokenavConditionMenu2_Pal[30], 0xBF, 0x2);
- sub_80F01A4();
- break;
- case 8:
- sub_80F01E0(gPokenavStructPtr->unk8fe9);
- break;
- case 9:
- REG_BG3CNT = 0x1E03;
- REG_BG2CNT = 0x1702;
- REG_BLDCNT = 0x844;
- REG_BLDALPHA = 0x40B;
- break;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unkD160++;
- return TRUE;
-}
-
-void sub_80F1934(void)
-{
- u8 *buffer = gPokenavStructPtr->unk8788;
- if (gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk4)
- {
- u8 nature = GetNature(&gPlayerParty[sub_8137124(gPokenavStructPtr->unk87DC)]);
- buffer = StringCopy(buffer, gOtherText_Nature2);
- AlignStringInMenuWindow(buffer, gNatureNames[nature], 87, 0);
- }
- else
- {
- AlignStringInMenuWindow(buffer, gEmptyString_81E72B0, 87, 0);
- }
-
- Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 1, 112, 1);
-}
-
-static void sub_80F19DC(u8 *text)
-{
- while (text[0] != EOS)
- {
- if (text[0] == EXT_CTRL_CODE_BEGIN && text[1] == CHAR_SPACE)
- {
- text[0] = EOS;
- break;
- }
-
- text++;
- }
-}
-
-static void sub_80F19FC(void)
-{
- // FIXME r4/r5 swapped
- register u8 *ptr asm("r5") = gUnknown_020388B0;
- if (ptr[0] == 1)
- {
- const u8 *landmarkName = GetLandmarkName(
- gPokenavStructPtr->regionMap.mapSectionId,
- gPokenavStructPtr->regionMap.everGrandeCityArea,
- ptr[1]);
-
- if (landmarkName)
- {
- sub_8072A18(landmarkName, 0x70, 4 * (ptr[1] * 4 + 12), 0x78, 1);
- if (++ptr[1] != 4)
- return;
- }
-
- Menu_BlankWindowRect(14, ptr[1] * 2 + 6, 28, 15);
- ptr[0] = 0;
- }
-}
-
-static void sub_80F1A74(void)
-{
- gUnknown_020388B0[0] = 0;
-}
-
-static void sub_80F1A80(void)
-{
- gUnknown_020388B0[0] = 1;
- gUnknown_020388B0[1] = 0;
-}
-
-static void sub_80F1A90(void)
-{
- gPokenavStructPtr->unk306 = 0;
- if (gPokenavStructPtr->unk6DAC == 0)
- while (sub_80F1AC4());
-}
-
-static bool8 sub_80F1AC4(void)
-{
- u16 i, j;
-
- switch (gPokenavStructPtr->unk306)
- {
- case 0:
- for (i = 0; i < 6; i++)
- {
- for (j = 0; j < 4; j++)
- gPokenavStructPtr->unk320[i][j] = NULL;
- }
-
- gPokenavStructPtr->unk311 = 0;
- break;
- case 1:
- LZ77UnCompWram(gPokenavMenuOptions_Gfx, gPokenavStructPtr->unk388);
- break;
- case 2:
- LZ77UnCompWram(gPokenavConditionMenu_Gfx, gPokenavStructPtr->unk1788);
- break;
- case 3:
- LZ77UnCompWram(gPokenavConditionSearch_Gfx, gPokenavStructPtr->unk2388);
- return FALSE;
- }
-
- gPokenavStructPtr->unk306++;
- return TRUE;
-}
-
-static void sub_80F1B8C(u8 arg0)
-{
- gPokenavStructPtr->unk306 = 0;
- if (gPokenavStructPtr->unk6DAC == 0)
- while (sub_80F1BC8(arg0));
-}
-
-#ifdef NONMATCHING
-// very close, but for some reason, (i + 1) is being stored in sp[0x10]
-static bool8 sub_80F1BC8(u8 arg0)
-{
- u16 i, j;
- u16 animNum;
- u16 topOffset;
- u16 height;
- u16 middle;
- u8 spriteId;
-
- switch (gPokenavStructPtr->unk306)
- {
- case 0:
- sub_80F2458(arg0);
- break;
- case 1:
- sub_80F2514(arg0);
- break;
- case 2:
- switch (arg0)
- {
- case 0:
- topOffset = 42;
- height = 20;
- gPokenavStructPtr->unk30E = 5;
- break;
- case 1:
- topOffset = 56;
- height = 20;
- gPokenavStructPtr->unk30E = 3;
- break;
- case 2:
- topOffset = 40;
- height = 16;
- gPokenavStructPtr->unk30E = 6;
- break;
- default:
- return FALSE;
- }
-
- animNum = 0;
- for (i = 0; i < gPokenavStructPtr->unk30E; i++)
- {
- middle = (height * i) + topOffset - 8;
- gPokenavStructPtr->unk314[i] = (middle << 8) | (middle + 0x11);
- if (!arg0)
- {
- if (gPokenavStructPtr->unk6DB2[i] == 0)
- {
- for (j = 0; j < 4; j++)
- gPokenavStructPtr->unk320[i][j] = NULL;
- continue;
- }
- else
- {
- animNum = (gPokenavStructPtr->unk6DB2[i] - 1) * 4;
- }
- }
-
- for (j = 0; j < 4; j++)
- {
- spriteId = CreateSprite(&gSpriteTemplate_83E4454, j * 32 + 256, (height * i) + topOffset, 0);
- if (spriteId != MAX_SPRITES)
- {
- gPokenavStructPtr->unk320[i][j] = &gSprites[spriteId];
- gPokenavStructPtr->unk320[i][j]->data[0] = i;
- gPokenavStructPtr->unk320[i][j]->data[1] = j;
- gPokenavStructPtr->unk320[i][j]->data[2] = j * 32 + 152;
- gPokenavStructPtr->unk320[i][j]->data[3] = j * 32 + 256;
- StartSpriteAnim(gPokenavStructPtr->unk320[i][j], animNum++);
-
- if ((arg0 == 2 || arg0 == 0) && i > 2)
- gPokenavStructPtr->unk320[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(0x1);
- }
- }
- }
- break;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unk306++;
- return TRUE;
-}
-#else
-NAKED
-static bool8 sub_80F1BC8(u8 arg0)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0xC\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- ldr r1, _080F1BF4 @ =gPokenavStructPtr\n\
- ldr r2, [r1]\n\
- ldr r3, _080F1BF8 @ =0x00000306\n\
- adds r0, r2, r3\n\
- ldrh r0, [r0]\n\
- adds r3, r1, 0\n\
- cmp r0, 0x1\n\
- beq _080F1C0A\n\
- cmp r0, 0x1\n\
- bgt _080F1BFC\n\
- cmp r0, 0\n\
- beq _080F1C02\n\
- b _080F1DC4\n\
- .align 2, 0\n\
-_080F1BF4: .4byte gPokenavStructPtr\n\
-_080F1BF8: .4byte 0x00000306\n\
-_080F1BFC:\n\
- cmp r0, 0x2\n\
- beq _080F1C12\n\
- b _080F1DC4\n\
-_080F1C02:\n\
- mov r0, r9\n\
- bl sub_80F2458\n\
- b _080F1DC8\n\
-_080F1C0A:\n\
- mov r0, r9\n\
- bl sub_80F2514\n\
- b _080F1DC8\n\
-_080F1C12:\n\
- mov r4, r9\n\
- cmp r4, 0x1\n\
- beq _080F1C40\n\
- cmp r4, 0x1\n\
- bgt _080F1C22\n\
- cmp r4, 0\n\
- beq _080F1C2A\n\
- b _080F1DC4\n\
-_080F1C22:\n\
- mov r5, r9\n\
- cmp r5, 0x2\n\
- beq _080F1C54\n\
- b _080F1DC4\n\
-_080F1C2A:\n\
- movs r0, 0x2A\n\
- str r0, [sp, 0x4]\n\
- movs r1, 0x14\n\
- str r1, [sp, 0x8]\n\
- ldr r4, _080F1C3C @ =0x0000030e\n\
- adds r1, r2, r4\n\
- movs r0, 0x5\n\
- b _080F1C62\n\
- .align 2, 0\n\
-_080F1C3C: .4byte 0x0000030e\n\
-_080F1C40:\n\
- movs r5, 0x38\n\
- str r5, [sp, 0x4]\n\
- movs r0, 0x14\n\
- str r0, [sp, 0x8]\n\
- ldr r4, _080F1C50 @ =0x0000030e\n\
- adds r1, r2, r4\n\
- movs r0, 0x3\n\
- b _080F1C62\n\
- .align 2, 0\n\
-_080F1C50: .4byte 0x0000030e\n\
-_080F1C54:\n\
- movs r5, 0x28\n\
- str r5, [sp, 0x4]\n\
- movs r0, 0x10\n\
- str r0, [sp, 0x8]\n\
- ldr r4, _080F1CDC @ =0x0000030e\n\
- adds r1, r2, r4\n\
- movs r0, 0x6\n\
-_080F1C62:\n\
- strb r0, [r1]\n\
- movs r5, 0\n\
- str r5, [sp]\n\
- mov r8, r5\n\
- adds r1, r3, 0\n\
- ldr r0, [r1]\n\
- ldr r2, _080F1CDC @ =0x0000030e\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- cmp r8, r0\n\
- blt _080F1C7E\n\
- b _080F1DC8\n\
-_080F1C7E:\n\
- ldr r4, [sp, 0x8]\n\
- mov r3, r8\n\
- muls r3, r4\n\
- ldr r5, [sp, 0x4]\n\
- adds r0, r5, r3\n\
- subs r0, 0x8\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- ldr r4, [r1]\n\
- mov r2, r8\n\
- lsls r1, r2, 1\n\
- movs r5, 0xC5\n\
- lsls r5, 2\n\
- adds r2, r4, r5\n\
- adds r2, r1\n\
- lsls r1, r0, 8\n\
- adds r0, 0x11\n\
- orrs r1, r0\n\
- strh r1, [r2]\n\
- mov r0, r9\n\
- cmp r0, 0\n\
- bne _080F1CF2\n\
- ldr r1, _080F1CE0 @ =0x00006db2\n\
- adds r0, r4, r1\n\
- mov r2, r8\n\
- adds r1, r0, r2\n\
- ldrb r0, [r1]\n\
- cmp r0, 0\n\
- bne _080F1CE8\n\
- movs r5, 0\n\
- ldr r0, _080F1CE4 @ =gPokenavStructPtr\n\
- ldr r0, [r0]\n\
- lsls r2, 4\n\
- movs r3, 0xC8\n\
- lsls r3, 2\n\
- adds r1, r0, r3\n\
- movs r3, 0\n\
-_080F1CC8:\n\
- lsls r0, r5, 2\n\
- adds r0, r2\n\
- adds r0, r1, r0\n\
- str r3, [r0]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x3\n\
- bls _080F1CC8\n\
- b _080F1D92\n\
- .align 2, 0\n\
-_080F1CDC: .4byte 0x0000030e\n\
-_080F1CE0: .4byte 0x00006db2\n\
-_080F1CE4: .4byte gPokenavStructPtr\n\
-_080F1CE8:\n\
- ldrb r0, [r1]\n\
- subs r0, 0x1\n\
- lsls r0, 18\n\
- lsrs r0, 16\n\
- str r0, [sp]\n\
-_080F1CF2:\n\
- movs r5, 0\n\
- ldr r4, [sp, 0x4]\n\
- adds r0, r4, r3\n\
- lsls r0, 16\n\
- mov r10, r0\n\
-_080F1CFC:\n\
- lsls r6, r5, 5\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- adds r7, r6, r0\n\
- lsls r1, r7, 16\n\
- asrs r1, 16\n\
- ldr r0, _080F1DB4 @ =gSpriteTemplate_83E4454\n\
- mov r3, r10\n\
- asrs r2, r3, 16\n\
- movs r3, 0\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- cmp r3, 0x40\n\
- beq _080F1DC4\n\
- ldr r0, _080F1DB8 @ =gPokenavStructPtr\n\
- ldr r2, [r0]\n\
- lsls r1, r5, 2\n\
- mov r4, r8\n\
- lsls r0, r4, 4\n\
- adds r1, r0\n\
- movs r0, 0xC8\n\
- lsls r0, 2\n\
- adds r2, r0\n\
- adds r4, r2, r1\n\
- lsls r0, r3, 4\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- ldr r1, _080F1DBC @ =gSprites\n\
- adds r0, r1\n\
- str r0, [r4]\n\
- mov r1, r8\n\
- strh r1, [r0, 0x2E]\n\
- ldr r0, [r4]\n\
- strh r5, [r0, 0x30]\n\
- ldr r1, [r4]\n\
- adds r0, r6, 0\n\
- adds r0, 0x98\n\
- strh r0, [r1, 0x32]\n\
- ldr r0, [r4]\n\
- strh r7, [r0, 0x34]\n\
- ldr r0, [r4]\n\
- ldr r1, [sp]\n\
- adds r2, r1, 0x1\n\
- lsls r2, 16\n\
- lsrs r2, 16\n\
- str r2, [sp]\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- bl StartSpriteAnim\n\
- mov r2, r9\n\
- cmp r2, 0x2\n\
- beq _080F1D6E\n\
- cmp r2, 0\n\
- bne _080F1D88\n\
-_080F1D6E:\n\
- mov r3, r8\n\
- cmp r3, 0x2\n\
- bls _080F1D88\n\
- movs r0, 0x1\n\
- bl IndexOfSpritePaletteTag\n\
- ldr r3, [r4]\n\
- lsls r0, 4\n\
- ldrb r2, [r3, 0x5]\n\
- movs r1, 0xF\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- strb r1, [r3, 0x5]\n\
-_080F1D88:\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x3\n\
- bls _080F1CFC\n\
-_080F1D92:\n\
- mov r0, r8\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- ldr r1, _080F1DB8 @ =gPokenavStructPtr\n\
- ldr r0, [r1]\n\
- ldr r4, _080F1DC0 @ =0x0000030e\n\
- adds r0, r4\n\
- ldrb r0, [r0]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- cmp r8, r0\n\
- bge _080F1DB0\n\
- b _080F1C7E\n\
-_080F1DB0:\n\
- b _080F1DC8\n\
- .align 2, 0\n\
-_080F1DB4: .4byte gSpriteTemplate_83E4454\n\
-_080F1DB8: .4byte gPokenavStructPtr\n\
-_080F1DBC: .4byte gSprites\n\
-_080F1DC0: .4byte 0x0000030e\n\
-_080F1DC4:\n\
- movs r0, 0\n\
- b _080F1DD8\n\
-_080F1DC8:\n\
- ldr r0, _080F1DE8 @ =gPokenavStructPtr\n\
- ldr r1, [r0]\n\
- ldr r5, _080F1DEC @ =0x00000306\n\
- adds r1, r5\n\
- ldrh r0, [r1]\n\
- adds r0, 0x1\n\
- strh r0, [r1]\n\
- movs r0, 0x1\n\
-_080F1DD8:\n\
- add sp, 0xC\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080F1DE8: .4byte gPokenavStructPtr\n\
-_080F1DEC: .4byte 0x00000306\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
-
-static void sub_80F1DF0(void)
-{
- u16 i, j;
- for (i = 0; i < gPokenavStructPtr->unk30E; i++)
- {
- for (j = 0; j < 4; j++)
- {
- if (gPokenavStructPtr->unk320[i][j])
- gPokenavStructPtr->unk320[i][j]->callback = sub_80F2218;
- }
- }
-
- PlaySE(SE_WIN_OPEN);
-}
-
-static bool8 sub_80F1E50(void)
-{
- if (sub_80F22F8())
- {
- sub_80F2108();
- return FALSE;
- }
- else
- {
- return TRUE;
- }
-}
-
-static bool8 sub_80F1E6C(void)
-{
- return !sub_80F22F8();
-}
-
-static void sub_80F1E84(void)
-{
- u16 i, j;
-
- gPokenavStructPtr->unk30F = 0;
- sub_80F2148();
- for (i = 0; i < gPokenavStructPtr->unk30E; i++)
- {
- if (i != gPokenavStructPtr->unk6DAD)
- {
- for (j = 0; j < 4; j++)
- {
- if (gPokenavStructPtr->unk320[i][j])
- gPokenavStructPtr->unk320[i][j]->callback = sub_80F2240;
- }
- }
- }
-}
-
-static bool8 sub_80F1F10(void)
-{
- u16 j;
-
- switch (gPokenavStructPtr->unk30F)
- {
- case 0:
- if (sub_80F2360())
- {
- for (j = 0; j < 4; j++)
- {
- struct Sprite *sprite = gPokenavStructPtr->unk320[gPokenavStructPtr->unk6DAD][j];
- sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
- sprite->affineAnims = gSpriteAffineAnimTable_83E4450;
- InitSpriteAffineAnim(sprite);
- sprite->data[4] = j * 4 - 6;
- sprite->data[4] /= 2;
- sprite->data[5] = sprite->data[4] * 8;
- sprite->callback = sub_80F2240;
- }
-
- sub_80F2170();
- gPokenavStructPtr->unk30F++;
- }
- break;
- case 1:
- if (sub_80F23C8())
- {
- sub_80F21F8();
- FreeSpriteTilesByTag(0x0);
- FreeSpritePaletteByTag(0x0);
- FreeSpritePaletteByTag(0x1);
- return FALSE;
- }
- break;
- }
-
- return TRUE;
-}
-
-static void sub_80F1FF0(void)
-{
- if (gPokenavStructPtr->unk311 == 1)
- {
- REG_WIN0V = gPokenavStructPtr->unk314[gPokenavStructPtr->unk6DAD];
- REG_BLDY = gSineTable[gPokenavStructPtr->unk312] >> 5;
- gPokenavStructPtr->unk312 += 3;
- gPokenavStructPtr->unk312 &= 0x7F;
- }
- else if (gPokenavStructPtr->unk311 == 2)
- {
- REG_BLDALPHA = gUnknown_083E42F8[gPokenavStructPtr->unk312];
- if (gPokenavStructPtr->unk312 < 15)
- gPokenavStructPtr->unk312++;
- }
-}
-
-static void sub_80F208C(void)
-{
- sub_80F2148();
-}
-
-static void sub_80F2098(void)
-{
- REG_WIN0H = 0x77F0;
- REG_WIN0V = gPokenavStructPtr->unk314[gPokenavStructPtr->unk6DAD];
- REG_WININ = 0x3F;
- REG_WINOUT = 0x1F;
- REG_DISPCNT |= DISPCNT_WIN0_ON;
-}
-
-static void sub_80F20F4(void)
-{
- REG_DISPCNT &= ~DISPCNT_WIN0_ON;
-}
-
-static void sub_80F2108(void)
-{
- if (!gPokenavStructPtr->unk311)
- {
- gPokenavStructPtr->unk311 = 1;
- gPokenavStructPtr->unk312 = 0;
- REG_BLDCNT = 0x90;
- REG_BLDY = 0;
- sub_80F2098();
- }
-}
-
-static void sub_80F2148(void)
-{
- gPokenavStructPtr->unk311 = 0;
- REG_BLDCNT = 0;
- sub_80F20F4();
-}
-
-static void sub_80F2170(void)
-{
- u16 j;
-
- if (!gPokenavStructPtr->unk311)
- {
- sub_80F20F4();
- for (j = 0; j < 4; j++)
- {
- struct Sprite *sprite = gPokenavStructPtr->unk320[gPokenavStructPtr->unk6DAD][j];
- sprite->oam.objMode = ST_OAM_OBJ_BLEND;
- }
-
- gPokenavStructPtr->unk311 = 2;
- gPokenavStructPtr->unk312 = 0;
- REG_BLDCNT = 0x3F40;
- REG_BLDALPHA = 0x10;
- }
-}
-
-static void sub_80F21F8()
-{
- gPokenavStructPtr->unk311 = 0;
- REG_BLDCNT = 0;
-}
-
-static void sub_80F2218(struct Sprite *sprite)
-{
- sprite->pos1.x -= 8;
- if (sprite->pos1.x <= sprite->data[2])
- {
- sprite->pos1.x = sprite->data[2];
- sprite->callback = sub_80F22B0;
- }
-}
-
-static void sub_80F2240(struct Sprite *sprite)
-{
- if (sprite->data[0] == gPokenavStructPtr->unk6DAD)
- {
- if (sprite->data[5])
- {
- sprite->pos1.x += sprite->data[4];
- sprite->data[5] -= sprite->data[4];
- }
-
- if (sprite->affineAnimEnded)
- sub_80F240C(sprite);
- }
- else
- {
- sprite->pos1.x += 8;
- if (sprite->pos1.x >= sprite->data[3])
- sub_80F240C(sprite);
- }
-}
-
-static void sub_80F22B0(struct Sprite *sprite)
-{
- if (sprite->data[0] == gPokenavStructPtr->unk6DAD)
- {
- if (sprite->pos2.x > -16)
- sprite->pos2.x -= 4;
- }
- else
- {
- if (sprite->pos2.x < 0)
- sprite->pos2.x += 4;
- }
-}
-
-static bool8 sub_80F22F8(void)
-{
- u16 i, j;
-
- for (i = 0; i < gPokenavStructPtr->unk6DAE; i++)
- {
- for (j = 0; j < 4; j++)
- {
- struct Sprite *sprite = gPokenavStructPtr->unk320[i][j];
- if (!sprite)
- return TRUE;
-
- if (sprite->pos2.x != 0 && sprite->pos2.x != -16)
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-static bool8 sub_80F2360(void)
-{
- u16 i, j;
-
- for (i = 0; i < gPokenavStructPtr->unk30E; i++)
- {
- if (i != gPokenavStructPtr->unk6DAD)
- {
- for (j = 0; j < 4; j++)
- {
- struct Sprite *sprite = gPokenavStructPtr->unk320[i][j];
- if (sprite)
- return FALSE;
- }
- }
- }
-
- return TRUE;
-}
-
-static bool8 sub_80F23C8(void)
-{
- u16 j;
-
- for (j = 0; j < 4; j++)
- {
- struct Sprite *sprite = gPokenavStructPtr->unk320[gPokenavStructPtr->unk6DAD][j];
- if (sprite)
- return FALSE;
- }
-
- return TRUE;
-}
-
-static void sub_80F240C(struct Sprite *sprite)
-{
- gPokenavStructPtr->unk320[sprite->data[0]][sprite->data[1]] = NULL;
- if (sprite->affineAnimEnded)
- FreeOamMatrix(sprite->oam.matrixNum);
-
- DestroySprite(sprite);
-}
-
-static void sub_80F2458(u8 arg0)
-{
- switch (arg0)
- {
- case 0:
- gPokenavStructPtr->unk380.data = gPokenavStructPtr->unk388;
- gPokenavStructPtr->unk380.size = sizeof(gPokenavStructPtr->unk388);
- gPokenavStructPtr->unk380.tag = 0x0;
- break;
- case 1:
- gPokenavStructPtr->unk380.data = gPokenavStructPtr->unk1788;
- gPokenavStructPtr->unk380.size = sizeof(gPokenavStructPtr->unk1788);
- gPokenavStructPtr->unk380.tag = 0x0;
- break;
- case 2:
- gPokenavStructPtr->unk380.data = gPokenavStructPtr->unk2388;
- gPokenavStructPtr->unk380.size = sizeof(gPokenavStructPtr->unk2388);
- gPokenavStructPtr->unk380.tag = 0x0;
- break;
- default:
- return;
- }
-
- LoadSpriteSheet(&gPokenavStructPtr->unk380);
-}
-
-static void sub_80F2514(u8 arg0)
-{
- struct SpritePalette spritePalette;
-
- switch (arg0)
- {
- case 0:
- spritePalette.data = gPokenavMenuOptions1_Pal;
- spritePalette.tag = 0;
- LoadSpritePalette(&spritePalette);
- spritePalette.data = gPokenavMenuOptions2_Pal;
- spritePalette.tag = 0x1;
- break;
- case 1:
- spritePalette.data = gPokenavConditionMenu_Pal;
- spritePalette.tag = 0x0;
- break;
- case 2:
- spritePalette.data = gPokenavCondition6_Pal;
- spritePalette.tag = 0;
- LoadSpritePalette(&spritePalette);
- spritePalette.data = gPokenavCondition7_Pal;
- spritePalette.tag = 0x1;
- break;
- default:
- return;
- }
-
- LoadSpritePalette(&spritePalette);
-}
-
-static void sub_80F2598(void)
-{
- u8 spriteId;
-
- gPokenavStructPtr->unk6D9C = NULL;
- if (DoesSomeoneWantRematchIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) == TRUE)
- {
- LoadSpriteSheet(&gSpriteSheet_PokenavBlueLight);
- LoadSpritePalette(&gSpritePalette_PokenavBlueLight);
- spriteId = CreateSprite(&gSpriteTemplate_83E4484, 12, 96, 0);
- if (spriteId != MAX_SPRITES)
- {
- gPokenavStructPtr->unk6D9C = &gSprites[spriteId];
- }
- else
- {
- FreeSpriteTilesByTag(0x19);
- FreeSpritePaletteByTag(0x11);
- }
- }
-}
-
-static void sub_80F2620(void)
-{
- if (gPokenavStructPtr->unk6D9C)
- {
- DestroySprite(gPokenavStructPtr->unk6D9C);
- FreeSpriteTilesByTag(0x19);
- FreeSpritePaletteByTag(0x11);
- gPokenavStructPtr->unk6D9C = NULL;
- }
-}
-
-void sub_80F2654(struct Sprite *sprite)
-{
- if (++sprite->data[0] > 6)
- {
- sprite->data[0] = 0;
- sprite->invisible = !sprite->invisible;
- }
-}
-
-void sub_80F2688(void)
-{
- gPokenavStructPtr->unk306 = 0;
- if (!gPokenavStructPtr->unk6DAC)
- while(sub_80F26BC());
-}
-
-static bool8 sub_80F26BC(void)
-{
- switch (gPokenavStructPtr->unk306)
- {
- case 0:
- LZ77UnCompWram(gPokenavMainMenu_Gfx, gPokenavStructPtr->unk3B98);
- break;
- case 1:
- LZ77UnCompWram(gPokenavConditionMenuHeader_Gfx, gPokenavStructPtr->unk4198);
- break;
- case 2:
- LZ77UnCompWram(gPokenavRibbonsHeader_Gfx, gPokenavStructPtr->unk4D98);
- break;
- case 3:
- LZ77UnCompWram(gPokenavHoennMapHeader_Gfx, gPokenavStructPtr->unk5398);
- break;
- case 4:
- LZ77UnCompWram(gPokenavConditionMenuOptions_Gfx, gPokenavStructPtr->unk5F98);
- break;
- case 5:
- LZ77UnCompWram(gPokenavConditionMenuOptions2_Gfx, gPokenavStructPtr->unk6798);
- break;
- case 6:
- LZ77UnCompWram(gPokenavTrainersEyesHeader_Gfx, gPokenavStructPtr->unk4798);
- break;
- case 7:
- LoadSpritePalettes(gUnknown_083E449C);
- break;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unk306++;
- return TRUE;
-}
-
-static void sub_80F27DC(u8 arg0)
-{
- struct SpriteSheet spriteSheet;
-
- switch (arg0)
- {
- case 0:
- spriteSheet.data = gPokenavStructPtr->unk3B98;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk3B98);
- spriteSheet.tag = 0x1;
- break;
- case 1:
- spriteSheet.data = gPokenavStructPtr->unk4198;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk4198);
- spriteSheet.tag = 0x1;
- break;
- case 3:
- spriteSheet.data = gPokenavStructPtr->unk4798;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk4798);
- spriteSheet.tag = 0x1;
- break;
- case 2:
- spriteSheet.data = gPokenavStructPtr->unk4D98;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk4D98);
- spriteSheet.tag = 0x1;
- break;
- case 4:
- spriteSheet.data = gPokenavStructPtr->unk5398;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk5398);
- spriteSheet.tag = 0x1;
- break;
- case 5:
- spriteSheet.data = gPokenavStructPtr->unk5F98;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk5F98);
- spriteSheet.tag = 0x2;
- break;
- case 6:
- spriteSheet.data = gPokenavStructPtr->unk6198;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk6198);
- spriteSheet.tag = 0x2;
- break;
- case 8:
- spriteSheet.data = gPokenavStructPtr->unk6398;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk6398);
- spriteSheet.tag = 0x2;
- break;
- case 9:
- spriteSheet.data = gPokenavStructPtr->unk6598;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk6598);
- spriteSheet.tag = 0x2;
- break;
- case 11:
- spriteSheet.data = gPokenavStructPtr->unk6998;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk6998);
- spriteSheet.tag = 0x2;
- break;
- case 10:
- spriteSheet.data = gPokenavStructPtr->unk6798;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk6798);
- spriteSheet.tag = 0x2;
- break;
- case 7:
- spriteSheet.data = gPokenavStructPtr->unk6B98;
- spriteSheet.size = sizeof(gPokenavStructPtr->unk6B98);
- spriteSheet.tag = 0x2;
- break;
- default:
- return;
- }
-
- LoadSpriteSheet(&spriteSheet);
-}
-
-void sub_80F29B8(u8 arg0)
-{
- u16 i;
- s16 deltaX, endX, initialX;
- u16 y;
- s16 width;
- struct Sprite **sprites;
- const struct SpriteTemplate *spriteTemplate;
- u8 spriteId;
-
- spriteTemplate = NULL;
- switch (arg0)
- {
- case 0:
- case 1:
- case 2:
- case 3:
- initialX = -96;
- y = 49 - gPokenavStructPtr->unk030C;
- deltaX = 8;
- endX = 32;
- width = 64;
- sprites = gPokenavStructPtr->unk3B88;
- spriteTemplate = arg0 != 3 ? &gSpriteTemplate_83E44E0 : &gSpriteTemplate_83E44F8;
- break;
- case 4:
- initialX = 272;
- y = 49 - gPokenavStructPtr->unk030C;
- deltaX = -8;
- endX = 152;
- width = 64;
- spriteTemplate = &gSpriteTemplate_83E44E0;
- sprites = gPokenavStructPtr->unk3B88;
- break;
- case 5:
- case 6:
- case 8:
- case 9:
- spriteTemplate = &gSpriteTemplate_83E4530;
- // fall through
- case 7:
- case 10:
- case 11:
- if (spriteTemplate == NULL)
- spriteTemplate = &gSpriteTemplate_83E4548;
-
- initialX = -96;
- y = 68 - gPokenavStructPtr->unk030C;
- deltaX = 8;
- endX = 16;
- width = 32;
- sprites = gPokenavStructPtr->unk3B90;
- break;
- default:
- return;
- }
-
- for (i = 0; i < 2; i++)
- {
- spriteId = CreateSprite(spriteTemplate, i * width + initialX, y, 0);
- if (spriteId != MAX_SPRITES)
- {
- gSprites[spriteId].data[0] = deltaX;
- gSprites[spriteId].data[1] = endX + i * width;
- gSprites[spriteId].data[2] = i;
- gSprites[spriteId].data[3] = arg0;
- if (arg0 == 4 && i == 1)
- {
- int anim = !gPokenavStructPtr->regionMap.zoomed ? 1 : 2;
- StartSpriteAnim(&gSprites[spriteId], anim);
- }
- else
- {
- StartSpriteAnim(&gSprites[spriteId], i);
- }
-
- if (arg0 < 4 && i == 1)
- {
- gSprites[spriteId].oam.shape = ST_OAM_SQUARE;
- gSprites[spriteId].oam.size = 2;
- }
-
- sprites[i] = &gSprites[spriteId];
- }
- }
-}
-
-#define sEndX sprite->data[1]
-void sub_80F2BBC(struct Sprite *sprite)
-{
- s16 x = sprite->pos1.x;
- sprite->pos1.x += sprite->data[0];
- if ((x <= sEndX && sprite->pos1.x >= sEndX) || (x >= sEndX && sprite->pos1.x <= sEndX))
- {
- sprite->pos1.x = sEndX;
- if (sprite->data[3] == 4 && sprite->data[2] == 1)
- sprite->callback = sub_80F2C58;
- else
- sprite->callback = SpriteCallbackDummy;
- }
-}
-#undef sEndX
-
-static void sub_80F2C14(struct Sprite *sprite)
-{
- u16 right;
-
- sprite->pos1.x -= sprite->data[0];
- right = sprite->pos1.x + 32;
- if (right > 304)
- {
- if (sprite->data[2] == 1)
- {
- if (sprite->data[3] < 5)
- FreeSpriteTilesByTag(0x1);
- else
- FreeSpriteTilesByTag(0x2);
- }
-
- DestroySprite(sprite);
- }
-}
-
-static void sub_80F2C58(struct Sprite *sprite)
-{
- int anim = !gPokenavStructPtr->regionMap.zoomed ? 1 : 2;
- StartSpriteAnim(sprite, anim);
-}
-
-void sub_80F2C80(u8 arg0)
-{
- gPokenavStructPtr->unk306 = 0;
- if (!gPokenavStructPtr->unk6DAC)
- while (sub_80F2CBC(arg0));
-}
-
-bool8 sub_80F2CBC(u8 arg0)
-{
- switch (gPokenavStructPtr->unk306)
- {
- case 0:
- sub_80F27DC(arg0);
- gPokenavStructPtr->unk306++;
- return TRUE;
- case 1:
- sub_80F29B8(arg0);
- gPokenavStructPtr->unk306++;
- return FALSE;
- default:
- return FALSE;
- }
-}
-
-static void sub_80F2D04(u8 arg0)
-{
- u16 i;
-
- if (arg0 < 5)
- {
- for (i = 0; i < 2; i++)
- gPokenavStructPtr->unk3B88[i]->callback = sub_80F2C14;
- }
- else
- {
- for (i = 0; i < 2; i++)
- gPokenavStructPtr->unk3B90[i]->callback = sub_80F2C14;
- }
-}
-
-static void sub_80F2D6C(u8 arg0)
-{
- u16 i;
-
- if (arg0 < 5)
- {
- FreeSpriteTilesByTag(0x1);
- for (i = 0; i < 2; i++)
- DestroySprite(gPokenavStructPtr->unk3B88[i]);
- }
- else
- {
- FreeSpriteTilesByTag(0x2);
- for (i = 0; i < 2; i++)
- DestroySprite(gPokenavStructPtr->unk3B90[i]);
- }
-}
-
-static void sub_80F2DD8(void)
-{
- CreateRegionMapCursor(7, 7);
- CreateRegionMapPlayerIcon(8, 8);
- sub_80FBF94();
-}
-
-static void sub_80F2DF4(void)
-{
- FreeRegionMapIconResources();
-}
-
-void sub_80F2E00(struct Sprite *sprite)
-{
- sprite->pos1.x = gPokenavStructPtr->unk8766 + 38;
-}
-
-static void sub_80F2E18(u8 arg0)
-{
- u8 spriteId;
- struct SpriteTemplate spriteTemplate;
- struct SpritePalette spritePalette;
- struct SpriteSheet spriteSheet;
-
- if (!gPokenavStructPtr->unk8768)
- {
- spriteSheet = gUnknown_083E4568;
- spriteTemplate = gSpriteTemplate_83E4570;
- spritePalette = gUnknown_083E4588;
-
- spriteSheet.data = gPokenavStructPtr->unkD1E4[arg0];
- spritePalette.data = gPokenavStructPtr->unk0[arg0];
- gPokenavStructPtr->unkD1DC = LoadSpritePalette(&spritePalette);
- gPokenavStructPtr->unkD1DE = LoadSpriteSheet(&spriteSheet);
-
- spriteId = CreateSprite(&spriteTemplate, 38, 104, 0);
- if (spriteId == MAX_SPRITES)
- {
- FreeSpriteTilesByTag(0x6);
- FreeSpritePaletteByTag(0x6);
- gPokenavStructPtr->unk8768 = NULL;
- }
- else
- {
- gPokenavStructPtr->unk8768 = &gSprites[spriteId];
- gPokenavStructPtr->unkD1E0 = (void *)(VRAM + 0x10000) + gPokenavStructPtr->unkD1DE * 32;
- gPokenavStructPtr->unkD1DC = gPokenavStructPtr->unkD1DC * 16 + 0x100;
- }
- }
- else
- {
- DmaCopy16Defvars(3, gPokenavStructPtr->unkD1E4[arg0], gPokenavStructPtr->unkD1E0, 0x800);
- LoadPalette(gPokenavStructPtr->unk0[arg0], gPokenavStructPtr->unkD1DC, 0x20);
- }
-}
-
-void sub_80F2F48(void)
-{
- if (gPokenavStructPtr->unk8768)
- {
- DestroySprite(gPokenavStructPtr->unk8768);
- FreeSpriteTilesByTag(0x6);
- FreeSpritePaletteByTag(0x6);
- gPokenavStructPtr->unk8768 = NULL;
- }
-}
-
-void sub_80F2F7C(u8 arg0)
-{
- sub_80F2E18(arg0);
- gPokenavStructPtr->unkCED0 = gPokenavStructPtr->unk8768;
- gPokenavStructPtr->unkCED0->callback = sub_80F2FEC;
-}
-
-static void sub_80F2FB0(void)
-{
- if (gPokenavStructPtr->unkCED0)
- {
- DestroySprite(gPokenavStructPtr->unkCED0);
- FreeSpriteTilesByTag(0x6);
- FreeSpritePaletteByTag(0x6);
- gPokenavStructPtr->unkCED0 = NULL;
- gPokenavStructPtr->unk8768 = NULL;
- }
-}
-
-static void sub_80F2FEC(struct Sprite *sprite)
-{
- sprite->pos1.x = gPokenavStructPtr->unkD15A + 40;
- sprite->pos1.y = 104;
-}
-
-static void sub_80F3008(u8 arg0)
-{
- u16 i;
- u8 spriteId;
- struct SpritePalette spritePalette;
- struct SpriteSheet spriteSheets[3];
-
- memcpy(spriteSheets, gUnknown_083E4590, sizeof(gUnknown_083E4590));
- spritePalette = gUnknown_083E45A8;
- switch (arg0)
- {
- case 1:
- case 2:
- spritePalette.data = gUnknown_08E9F988;
- break;
- }
-
- LoadSpriteSheets(spriteSheets);
- LoadSpritePalette(&spritePalette);
- spriteId = CreateSprite(&gSpriteTemplate_83E45B8, 95, 0, 0);
- if (spriteId == MAX_SPRITES)
- {
- gPokenavStructPtr->unk87CC = NULL;
- }
- else
- {
- gPokenavStructPtr->unk87CC = &gSprites[spriteId];
- for (i = 0; i < 2; i++)
- {
- spriteId = CreateSprite(&gSpriteTemplate_83E45F0, 168, i * 128 + 8, 0);
- if (spriteId != MAX_SPRITES)
- {
- gPokenavStructPtr->unk87D0[i] = &gSprites[spriteId];
- gSprites[spriteId].invisible = 1;
- gSprites[spriteId].data[0] = 0;
- gSprites[spriteId].data[1] = 0;
- gSprites[spriteId].data[2] = i == 0 ? -1 : 1;
- gSprites[spriteId].data[3] = i;
- gSprites[spriteId].data[4] = 1;
- StartSpriteAnim(&gSprites[spriteId], i);
- }
- else
- {
- gPokenavStructPtr->unk87D0[i] = NULL;
- }
- }
- }
-}
-
-static void sub_80F3130(void)
-{
- u16 i;
-
- if (gPokenavStructPtr->unk87CC)
- {
- DestroySprite(gPokenavStructPtr->unk87CC);
- FreeSpriteTilesByTag(0x9);
- FreeSpritePaletteByTag(0x9);
- gPokenavStructPtr->unk87CC = NULL;
- }
-
- for (i = 0; i < 2; i++)
- {
- if (gPokenavStructPtr->unk87D0[i])
- {
- DestroySprite(gPokenavStructPtr->unk87D0[i]);
- gPokenavStructPtr->unk87D0[i] = NULL;
- }
- }
-
- FreeSpriteTilesByTag(0xA);
-}
-
-void sub_80F3190(struct Sprite *sprite)
-{
- sprite->pos1.y = gPokenavStructPtr->unk876C * 16 + 16;
-}
-
-void sub_80F31AC(struct Sprite *sprite)
-{
- if (gPokenavStructPtr->unk87C9)
- {
- if (sprite->data[4])
- {
- if (!sprite->data[3])
- sprite->invisible = gPokenavStructPtr->unk8770 == 0;
- else
- sprite->invisible = gPokenavStructPtr->unk8772 == gPokenavStructPtr->unk8774;
-
- sprite->data[4] = 0;
- }
-
- if (++sprite->data[0] > 4)
- {
- sprite->data[0] = 0;
- if (++sprite->data[1] < 5)
- {
- sprite->pos2.y += sprite->data[2];
- }
- else
- {
- sprite->data[1] = 0;
- sprite->pos2.y = 0;
- }
- }
- }
-}
-
-static void sub_80F3264(void)
-{
- u16 i;
-
- for (i = 0; i < 2; i++)
- {
- if (gPokenavStructPtr->unk87D0[i])
- gPokenavStructPtr->unk87D0[i]->data[4] = 1;
- }
-}
-
-static void sub_80F3294(u8 arg0)
-{
- gPokenavStructPtr->unk87CC->invisible = arg0;
- if (gPokenavStructPtr->unk87C9)
- {
- if (arg0 == 1)
- {
- gPokenavStructPtr->unk87D0[0]->invisible = arg0;
- gPokenavStructPtr->unk87D0[1]->invisible = arg0;
- }
- else
- {
- gPokenavStructPtr->unk87D0[0]->data[4] = 1;
- gPokenavStructPtr->unk87D0[1]->data[4] = 1;
- }
- }
-}
-
-void sub_80F3328(struct Sprite *sprite)
-{
- if (sprite->data[0] == gPokenavStructPtr->unk87DC)
- StartSpriteAnim(sprite, 0);
- else
- StartSpriteAnim(sprite, 1);
-}
-
-static void sub_80F3360(struct Sprite *sprite)
-{
- if (gPokenavStructPtr->unk87DC == gPokenavStructPtr->unk87DA - 1)
- sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x4);
- else
- sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x5);
-}
-
-void sub_80F33A8(void)
-{
- u16 i;
- u8 spriteId;
- struct SpriteSheet spriteSheets[4];
- struct SpritePalette spritePalettes[3];
- struct SpriteTemplate spriteTemplate;
-
- memcpy(spriteSheets, gUnknown_083E4628, sizeof(gUnknown_083E4628));
- memcpy(spritePalettes, gUnknown_083E4648, sizeof(gUnknown_083E4648));
- spriteTemplate = gSpriteTemplate_83E4660;
- LoadSpriteSheets(spriteSheets);
- LoadSpritePalettes(spritePalettes);
-
- for (i = 0; i < gPokenavStructPtr->unk87DA - 1; i++)
- {
- spriteId = CreateSprite(&spriteTemplate, 226, i * 20 + 8, 0);
- if (spriteId != MAX_SPRITES)
- {
- gPokenavStructPtr->unk87E4[i] = &gSprites[spriteId];
- gPokenavStructPtr->unk87E4[i]->data[0] = i;
- }
- else
- {
- gPokenavStructPtr->unk87E4[i] = NULL;
- }
- }
-
- spriteTemplate.tileTag = 0x4;
- spriteTemplate.callback = SpriteCallbackDummy;
- for (; i < 6; i++)
- {
- spriteId = CreateSprite(&spriteTemplate, 230, i * 20 + 8, 0);
- if (spriteId != MAX_SPRITES)
- {
- gPokenavStructPtr->unk87E4[i] = &gSprites[spriteId];
- gPokenavStructPtr->unk87E4[i]->oam.size = 0;
- }
- else
- {
- gPokenavStructPtr->unk87E4[i] = NULL;
- }
- }
-
- spriteTemplate.tileTag = 0x5;
- spriteTemplate.callback = sub_80F3360;
- spriteId = CreateSprite(&spriteTemplate, 222, i * 20 + 8, 0);
- if (spriteId != MAX_SPRITES)
- {
- gPokenavStructPtr->unk87E4[i] = &gSprites[spriteId];
- gPokenavStructPtr->unk87E4[i]->oam.shape = ST_OAM_H_RECTANGLE;
- gPokenavStructPtr->unk87E4[i]->oam.size = 2;
- }
- else
- {
- gPokenavStructPtr->unk87E4[i] = NULL;
- }
-}
-
-void sub_80F357C(void)
-{
- u16 i;
-
- for (i = 0; i < 7; i++)
- {
- if (gPokenavStructPtr->unk87E4[i])
- {
- DestroySprite(gPokenavStructPtr->unk87E4[i]);
- gPokenavStructPtr->unk87E4[i] = NULL;
- }
- }
-}
-
-static void sub_80F35B4(void)
-{
- struct Sprite *sprite;
-
- gPokenavStructPtr->unk76B0.baseTileTag = 0x1C;
- gPokenavStructPtr->unk76B0.basePaletteTag = 0x13;
- sub_80F727C(&gPokenavStructPtr->unk76B0);
- sub_80F7404();
- sprite = sub_80F7920(27, 21, gUnknown_083E4678);
- sprite->oam.priority = 3;
- sprite->pos1.x = 192;
- sprite->pos1.y = 32;
- sprite->callback = sub_80F363C;
- gPokenavStructPtr->unk76AC = sprite;
-}
-
-void sub_80F3614(void)
-{
- DestroySprite(gPokenavStructPtr->unk76AC);
- FreeSpriteTilesByTag(0x1B);
- FreeSpritePaletteByTag(0x15);
-}
-
-static void sub_80F363C(struct Sprite *sprite)
-{
- StartSpriteAnim(sprite, gPokenavStructPtr->unk8934[gPokenavStructPtr->unk8fe9]);
-}
-
-void sub_80F3668(void)
-{
- sub_80F7418(gPokenavStructPtr->unk8934[gPokenavStructPtr->unk8fe9], 176, 32);
-}
-
-void sub_80F3698(void)
-{
- struct UnkUsePokeblockSub *var0 = &gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC];
- gPokenavStructPtr->unk8934[gPokenavStructPtr->unk8fe9] = gPokenavStructPtr->unk76B0.markings;
- SetMonMarkings(var0->unk1, var0->partyIdx, gPokenavStructPtr->unk76B0.markings);
- sub_80F7470();
-}
-
-static void sub_80F36F0(void)
-{
- gPokenavStructPtr->unk306 = 0;
- if (!gPokenavStructPtr->unk6DAC)
- while (sub_80F3724());
-}
-
-static bool8 sub_80F3724(void)
-{
- switch (gPokenavStructPtr->unk306)
- {
- case 0:
- LZ77UnCompWram(gUnknown_083E3D00, gPokenavStructPtr->unk984C);
- break;
- case 1:
- sub_80F379C();
- gPokenavStructPtr->unk306++;
- // fall through
- case 2:
- if (sub_80F37D0())
- return TRUE;
- break;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unk306++;
- return TRUE;
-}
-
-static void sub_80F379C(void)
-{
- gPokenavStructPtr->unkBC93 = 0;
- if (!gPokenavStructPtr->unk6DAC)
- while (sub_80F37D0());
-}
-
-static bool8 sub_80F37D0(void)
-{
- u16 i;
- u8 j, k, l, m;
-
- if (gPokenavStructPtr->unkBC93 > 11)
- return FALSE;
-
- for (i = 0; i < 2; i++)
- {
- u8 *r4 = &gPokenavStructPtr->unk984C[gPokenavStructPtr->unkBC93][0];
- u8 *r5 = &gPokenavStructPtr->unkA44C[gPokenavStructPtr->unkBC93][0];
- for (j = 0; j < 4; j++)
- {
- CpuFastSet(r4, r5, 0x10);
- r5 += 0x40;
- r4 += 0x20;
- for (k = 0; k < 2; k++)
- {
- for (l = 0; l < 8; l++)
- {
- r4 += 4;
- for (m = 0; m < 4; m++)
- {
- r4 -= 1;
- *r5 = (*r4 << 4) | ((*r4 >> 4) & 0xF);
- r5++;
- }
-
- r4 += 4;
- }
-
- r4 -= 0x40;
- }
-
- r4 += 0x60;
- }
-
- if (++gPokenavStructPtr->unkBC93 > 11)
- return FALSE;
- }
-
- if (gPokenavStructPtr->unkBC93 > 11)
- return FALSE;
-
- return TRUE;
-}
-
-static void sub_80F38B8(void)
-{
- gPokenavStructPtr->unk306 = 0;
- if (!gPokenavStructPtr->unk6DAC)
- while (sub_80F38EC());
-}
-
-static bool8 sub_80F38EC(void)
-{
- switch (gPokenavStructPtr->unk306)
- {
- case 0:
- gPokenavStructPtr->unk9348 = NULL;
- gPokenavStructPtr->unkBC92 = 0;
- break;
- case 1:
- sub_80F2E18(0);
- break;
- case 2:
- sub_80F3970();
- gPokenavStructPtr->unk306++;
- // fall through
- case 3:
- if (sub_80F39A4())
- return TRUE;
- break;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unk306++;
- return TRUE;
-}
-
-static void sub_80F3970(void)
-{
- gPokenavStructPtr->unkBC93 = 0;
- if (!gPokenavStructPtr->unk6DAC)
- while (sub_80F39A4());
-}
-
-static bool8 sub_80F39A4(void)
-{
- struct SpriteSheet spriteSheet;
- struct SpritePalette spritePalette;
- if (gPokenavStructPtr->unkBC93 > 11)
- return FALSE;
-
- spriteSheet.data = &gPokenavStructPtr->unkA44C[gPokenavStructPtr->unkBC93][0];
- spriteSheet.size = 0x200;
- spriteSheet.tag = gPokenavStructPtr->unkBC93 + 11;
- LoadSpriteSheet(&spriteSheet);
- if (gPokenavStructPtr->unkBC93 < 5)
- {
- spritePalette.data = gUnknown_083E3C60[gPokenavStructPtr->unkBC93];
- spritePalette.tag = gPokenavStructPtr->unkBC93 + 10;
- LoadSpritePalette(&spritePalette);
- }
-
- if (++gPokenavStructPtr->unkBC93 > 11)
- return FALSE;
-
- return TRUE;
-}
-
-static struct Sprite *sub_80F3A3C(u16 arg0, u16 arg1)
-{
- struct SpriteTemplate spriteTemplate;
- u16 var0;
- u8 ribbon;
- u8 spriteId;
-
- if (arg1 < 3)
- var0 = arg0 + arg1 * 9;
- else
- var0 = arg0 + (gPokenavStructPtr->unkBC8E - gPokenavStructPtr->unkBC8F);
-
- ribbon = gPokenavStructPtr->unkBC4C[var0];
- spriteTemplate = gSpriteTemplate_83E476C;
- spriteTemplate.tileTag = gPokenavRibbonsIconGfx[ribbon][0] + 11;
- spriteTemplate.paletteTag = gPokenavRibbonsIconGfx[ribbon][1] + 10;
- spriteId = CreateSprite(&spriteTemplate, arg0 * 16 + 96, arg1 * 16 + 40, 2);
- if (spriteId != MAX_SPRITES)
- return &gSprites[spriteId];
- else
- return NULL;
-}
-
-static void sub_80F3B00(void)
-{
- gPokenavStructPtr->unk9348 = sub_80F3A3C(gPokenavStructPtr->unkBC90, gPokenavStructPtr->unkBC91);
- if (gPokenavStructPtr->unk9348)
- {
- StartSpriteAffineAnim(gPokenavStructPtr->unk9348, 1);
- gPokenavStructPtr->unkBC92 = 1;
- }
- else
- {
- gPokenavStructPtr->unkBC92 = 0;
- }
-}
-
-static bool8 sub_80F3B58(void)
-{
- if (gPokenavStructPtr->unkBC92)
- {
- gPokenavStructPtr->unkBC92 = !gPokenavStructPtr->unk9348->affineAnimEnded;
- return gPokenavStructPtr->unkBC92;
- }
- else
- {
- return FALSE;
- }
-}
-
-static void sub_80F3B94(void)
-{
- if (gPokenavStructPtr->unk9348)
- {
- StartSpriteAffineAnim(gPokenavStructPtr->unk9348, 2);
- gPokenavStructPtr->unkBC92 = 1;
- }
- else
- {
- gPokenavStructPtr->unkBC92 = 0;
- }
-}
-
-static bool8 sub_80F3BD4(void)
-{
- if (gPokenavStructPtr->unkBC92)
- {
- gPokenavStructPtr->unkBC92 = !gPokenavStructPtr->unk9348->affineAnimEnded;
- if (!gPokenavStructPtr->unkBC92)
- {
- FreeOamMatrix(gPokenavStructPtr->unk9348->oam.matrixNum);
- DestroySprite(gPokenavStructPtr->unk9348);
- gPokenavStructPtr->unk9348 = NULL;
- }
-
- return gPokenavStructPtr->unkBC92;
- }
- else
- {
- return FALSE;
- }
-}
-
-static void sub_80F3C2C(void)
-{
- u16 i;
-
- if (gPokenavStructPtr->unk9348)
- {
- FreeOamMatrix(gPokenavStructPtr->unk9348->oam.matrixNum);
- DestroySprite(gPokenavStructPtr->unk9348);
- gPokenavStructPtr->unk9348 = NULL;
- }
-
- for (i = 0; i < 12; i++)
- FreeSpriteTilesByTag(i + 0xB);
-
- for (i = 0; i < 5; i++)
- FreeSpritePaletteByTag(i + 0xA);
-
- sub_80F2F48();
-}
-
-void sub_80F3C94(void)
-{
- u16 i;
- struct SpriteSheet spriteSheet;
- struct SpritePalette spritePalette;
-
- spriteSheet = gUnknown_083E4784;
- spritePalette = gUnknown_083E478C;
- LoadSpriteSheet(&spriteSheet);
- LoadSpritePalette(&spritePalette);
- for (i = 0; i < 10; i++)
- gPokenavStructPtr->unk8800[i] = NULL;
-}
-
-void sub_80F3CE8(void)
-{
- move_anim_execute();
- FreeSpriteTilesByTag(0x17);
- FreeSpritePaletteByTag(0xF);
-}
-
-void sub_80F3D00(void)
-{
- u8 spriteId;
- u16 i;
- u8 var1;
- struct UnkUsePokeblockSub *var0 = &gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC];
-
- if (!var0->unk4)
- return;
-
- var1 = gPokenavStructPtr->unk8931[gPokenavStructPtr->unk8fe9];
- for (i = 0; i < var1 + 1; i++)
- {
- spriteId = CreateSprite(&gSpriteTemplate_83E4800, 0, 0, 0);
- if (spriteId != MAX_SPRITES)
- {
- gPokenavStructPtr->unk8800[i] = &gSprites[spriteId];
- gPokenavStructPtr->unk8800[i]->invisible = 1;
- }
- else
- {
- break;
- }
- }
-
- sub_80F3F20(var1, 1);
-}
-
-void move_anim_execute(void)
-{
- u16 i;
-
- for (i = 0; i < 10; i++)
- {
- if (!gPokenavStructPtr->unk8800[i])
- return;
-
- DestroySprite(gPokenavStructPtr->unk8800[i]);
- gPokenavStructPtr->unk8800[i] = NULL;
- }
-}
-
-void sub_80F3DDC(struct Sprite *sprite)
-{
- if (++sprite->data[1] > 60)
- {
- sprite->data[1] = 0;
- sub_80F3F20(sprite->data[2], 0);
- }
-}
-
-static void sub_80F3E04(struct Sprite *sprite)
-{
- if (sprite->animEnded)
- {
- sprite->data[1] = 0;
- sprite->callback = sub_80F3DDC;
- }
-}
-
-static void sub_80F3E24(struct Sprite *sprite)
-{
- if (gPokenavStructPtr->unk8768)
- {
- sprite->pos1.x = gPokenavStructPtr->unk8768->pos1.x
- + gPokenavStructPtr->unk8768->pos2.x
- + gUnknown_083E4794[sprite->data[0]][0];
- sprite->pos1.y = gPokenavStructPtr->unk8768->pos1.y
- + gPokenavStructPtr->unk8768->pos2.y
- + gUnknown_083E4794[sprite->data[0]][1];
- }
- else
- {
- sprite->pos1.x = gUnknown_083E4794[sprite->data[0]][0] + 40;
- sprite->pos1.y = gUnknown_083E4794[sprite->data[0]][1] + 104;
- }
-}
-
-static void sub_80F3E9C(struct Sprite *sprite)
-{
- if (sprite->data[1])
- {
- if (--sprite->data[1])
- return;
-
- SeekSpriteAnim(sprite, 0);
- sprite->invisible = 0;
- }
-
- sub_80F3E24(sprite);
- if (sprite->animEnded)
- {
- sprite->invisible = 1;
- if (sprite->data[3] == sprite->data[2])
- {
- if (sprite->data[3] == 9)
- {
- sub_80F3FAC();
- sprite->callback = sub_80F3E04;
- }
- else
- {
- sprite->callback = sub_80F3DDC;
- }
- }
- else
- {
- sprite->callback = SpriteCallbackDummy;
- }
- }
-}
-
-static void sub_80F3F20(u8 arg0, u8 arg1)
-{
- u16 i;
-
- for (i = 0; i < 10; i++)
- {
- if (gPokenavStructPtr->unk8800[i])
- {
- gPokenavStructPtr->unk8800[i]->data[0] = i;
- gPokenavStructPtr->unk8800[i]->data[1] = i * 16 + 1;
- gPokenavStructPtr->unk8800[i]->data[2] = arg0;
- gPokenavStructPtr->unk8800[i]->data[3] = i;
-
- if (!arg1 || arg0 != 9)
- {
- gPokenavStructPtr->unk8800[i]->callback = sub_80F3E9C;
- }
- else
- {
- sub_80F3E24(gPokenavStructPtr->unk8800[i]);
- sub_80F3FAC();
- gPokenavStructPtr->unk8800[i]->callback = sub_80F3E04;
- gPokenavStructPtr->unk8800[i]->invisible = 0;
- }
- }
- }
-}
-
-static void sub_80F3FAC(void)
-{
- u16 i;
-
- for (i = 0; i < 10; i++)
- {
- if (gPokenavStructPtr->unk8800[i])
- {
- SeekSpriteAnim(gPokenavStructPtr->unk8800[i], 0);
- gPokenavStructPtr->unk8800[i]->invisible = 0;
- }
- }
-}
-
-static void sub_80F3FF0(void)
-{
- gPokenavStructPtr->unk306 = 0;
- if (!gPokenavStructPtr->unk6DAC)
- while (sub_80F4024());
-}
-
-static bool8 sub_80F4024(void)
-{
- u8 paletteIndex;
- u8 spriteId;
- struct SpritePalette spritePalette;
-
- switch (gPokenavStructPtr->unk306)
- {
- case 0:
- LZ77UnCompWram(gUnknown_083E329C, gPokenavStructPtr->unk131E4);
- break;
- case 1:
- {
- struct SpriteSheet spriteSheet = {
- .data = gPokenavStructPtr->unk131E4,
- .size = sizeof(gPokenavStructPtr->unk131E4),
- .tag = 0x18,
- };
- LoadSpriteSheet(&spriteSheet);
- break;
- }
- case 2:
- spritePalette = gUnknown_083E4818;
- LoadSpritePalette(&spritePalette);
- paletteIndex = IndexOfSpritePaletteTag(0x10);
- gPokenavStructPtr->unk308 = -3 & ~(1 << (paletteIndex + 0x10));
- break;
- case 3:
- spriteId = CreateSprite(&gSpriteTemplate_83E4850, 218, 14, 0);
- if (spriteId != MAX_SPRITES)
- {
- gPokenavStructPtr->unk6D98 = &gSprites[spriteId];
- gPokenavStructPtr->unk6D98->data[0] = 0;
- }
- else
- {
- gPokenavStructPtr->unk6D98 = NULL;
- }
-
- gPokenavStructPtr->unk306++;
- return FALSE;
- default:
- return FALSE;
- }
-
- gPokenavStructPtr->unk306++;
- return TRUE;
-}
-
-void sub_80F4138(struct Sprite *sprite)
-{
- sprite->pos2.y = -gPokenavStructPtr->unk030C;
- if (sprite->pos2.y <= -32)
- {
- if (sprite->data[0] == 0)
- {
- sprite->invisible = 1;
- sprite->data[0] = 1;
- }
- }
- else
- {
- if (sprite->data[0] == 1)
- {
- sprite->invisible = 0;
- sprite->data[0] = 0;
- }
- }
-}
-
-#ifdef NONMATCHING
-// close, but the last DmaCopy16 is sharing the 0x400 value from the beginning of the function.
-void sub_80F4194(u8 *arg0, u8 *text)
-{
- u8 i;
- u8 *tileBuffer;
- u32 *tileBuf2;
-
- tileBuffer = gUnknown_083DFEC8;
- DmaFill16(3, 0x1111, tileBuffer, 0x280);
- DmaFill16Defvars(3, 0x1111, 0x400 + tileBuffer, 0x280);
- Text_InitWindow8004E3C(&gWindowTemplate_81E70F0, tileBuffer, text);
-
- DmaClear16(3, tileBuffer + 0x220, 0x60);
- DmaClear16(3, tileBuffer + 0x620, 0x60);
-
- tileBuf2 = (int *)tileBuffer + 0x80;
- tileBuf2[0] &= 0x0FFFFFFF;
- tileBuf2[1] &= 0x0FFFFFFF;
- tileBuf2[2] &= 0x0FFFFFFF;
- tileBuf2[3] &= 0x0FFFFFFF;
- tileBuf2[4] &= 0x0FFFFFFF;
- tileBuf2[5] &= 0x0FFFFFFF;
- tileBuf2[6] &= 0x0FFFFFFF;
- tileBuf2[7] &= 0x0FFFFFFF;
-
- tileBuf2 = (int *)tileBuffer + 0x180;
- tileBuf2[0] &= 0x0FFFFFFF;
- tileBuf2[1] &= 0x0FFFFFFF;
- tileBuf2[2] &= 0x0FFFFFFF;
- tileBuf2[3] &= 0x0FFFFFFF;
- tileBuf2[4] &= 0x0FFFFFFF;
- tileBuf2[5] &= 0x0FFFFFFF;
- tileBuf2[6] &= 0x0FFFFFFF;
- tileBuf2[7] &= 0x0FFFFFFF;
-
- for (i = 0; i < 5; i++)
- {
- DmaCopy16(3, &tileBuffer[128 * i], &arg0[i * 256], 128);
- DmaCopy16(3, &tileBuffer[128 * i + 0x400], &arg0[32 * ((i * 8) + 4)], 128);
- }
-}
-#else
-NAKED
-void sub_80F4194(u8 *arg0, u8 *text)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x4\n\
- adds r7, r0, 0\n\
- adds r2, r1, 0\n\
- ldr r0, _080F42A4 @ =gUnknown_083DFEC8\n\
- ldr r6, [r0] @ r6 = tileBuffer\n\
- mov r0, sp \n\
- ldr r1, _080F42A8 @ =0x00001111\n\
- adds r5, r1, 0\n\
- strh r5, [r0]\n\
- ldr r4, _080F42AC @ =0x040000d4\n\
- str r0, [r4]\n\
- str r6, [r4, 0x4]\n\
- ldr r3, _080F42B0 @ =0x81000140\n\
- str r3, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- adds r1, r6, r0\n\
- mov r0, sp\n\
- strh r5, [r0]\n\
- str r0, [r4]\n\
- str r1, [r4, 0x4]\n\
- str r3, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- ldr r0, _080F42B4 @ =gWindowTemplate_81E70F0\n\
- adds r1, r6, 0\n\
- bl Text_InitWindow8004E3C\n\
- movs r3, 0x88\n\
- lsls r3, 2\n\
- adds r1, r6, r3\n\
- mov r0, sp\n\
- movs r3, 0\n\
- strh r3, [r0]\n\
- str r0, [r4]\n\
- str r1, [r4, 0x4]\n\
- ldr r2, _080F42B8 @ =0x81000030\n\
- str r2, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- movs r0, 0xC4\n\
- lsls r0, 3\n\
- adds r1, r6, r0\n\
- mov r0, sp\n\
- strh r3, [r0]\n\
- str r0, [r4]\n\
- str r1, [r4, 0x4]\n\
- str r2, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- movs r1, 0x80\n\
- lsls r1, 2\n\
- adds r2, r6, r1\n\
- ldr r0, [r2]\n\
- ldr r1, _080F42BC @ =0x0fffffff\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- ldr r0, [r2, 0x4]\n\
- ands r0, r1\n\
- str r0, [r2, 0x4]\n\
- ldr r0, [r2, 0x8]\n\
- ands r0, r1\n\
- str r0, [r2, 0x8]\n\
- ldr r0, [r2, 0xC]\n\
- ands r0, r1\n\
- str r0, [r2, 0xC]\n\
- ldr r0, [r2, 0x10]\n\
- ands r0, r1\n\
- str r0, [r2, 0x10]\n\
- ldr r0, [r2, 0x14]\n\
- ands r0, r1\n\
- str r0, [r2, 0x14]\n\
- ldr r0, [r2, 0x18]\n\
- ands r0, r1\n\
- str r0, [r2, 0x18]\n\
- ldr r0, [r2, 0x1C]\n\
- ands r0, r1\n\
- str r0, [r2, 0x1C]\n\
- movs r3, 0xC0\n\
- lsls r3, 3\n\
- adds r2, r6, r3\n\
- ldr r0, [r2]\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- ldr r0, [r2, 0x4]\n\
- ands r0, r1\n\
- str r0, [r2, 0x4]\n\
- ldr r0, [r2, 0x8]\n\
- ands r0, r1\n\
- str r0, [r2, 0x8]\n\
- ldr r0, [r2, 0xC]\n\
- ands r0, r1\n\
- str r0, [r2, 0xC]\n\
- ldr r0, [r2, 0x10]\n\
- ands r0, r1\n\
- str r0, [r2, 0x10]\n\
- ldr r0, [r2, 0x14]\n\
- ands r0, r1\n\
- str r0, [r2, 0x14]\n\
- ldr r0, [r2, 0x18]\n\
- ands r0, r1\n\
- str r0, [r2, 0x18]\n\
- ldr r0, [r2, 0x1C]\n\
- ands r0, r1\n\
- str r0, [r2, 0x1C]\n\
- movs r1, 0\n\
- ldr r2, _080F42C0 @ =0x80000040\n\
-_080F4268:\n\
- lsls r0, r1, 7\n\
- adds r0, r6, r0\n\
- str r0, [r4]\n\
- lsls r0, r1, 8\n\
- adds r0, r7, r0\n\
- str r0, [r4, 0x4]\n\
- str r2, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- lsls r0, r1, 7\n\
- movs r3, 0x80\n\
- lsls r3, 3\n\
- adds r0, r3\n\
- adds r0, r6, r0\n\
- str r0, [r4]\n\
- lsls r0, r1, 3\n\
- adds r0, 0x4\n\
- lsls r0, 5\n\
- adds r0, r7, r0\n\
- str r0, [r4, 0x4]\n\
- str r2, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- adds r0, r1, 0x1\n\
- lsls r0, 24\n\
- lsrs r1, r0, 24\n\
- cmp r1, 0x4\n\
- bls _080F4268\n\
- add sp, 0x4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080F42A4: .4byte gUnknown_083DFEC8\n\
-_080F42A8: .4byte 0x00001111\n\
-_080F42AC: .4byte 0x040000d4\n\
-_080F42B0: .4byte 0x81000140\n\
-_080F42B4: .4byte gWindowTemplate_81E70F0\n\
-_080F42B8: .4byte 0x81000030\n\
-_080F42BC: .4byte 0x0fffffff\n\
-_080F42C0: .4byte 0x80000040\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
-
-static void sub_80F42C4(u8 *arg0)
-{
- u16 i, tileOffset;
- u8 spriteId;
- struct SpriteSheet spriteSheet = {
- .data = gPokenavStructPtr->unkD1E4[0],
- .size = 0x500,
- .tag = 0x1A,
- };
-
- sub_80F4194(gPokenavStructPtr->unkD1E4[0], arg0);
- LoadSpriteSheet(&spriteSheet);
- LoadSpritePalette(&gUnknown_083E4868);
-
- tileOffset = 0;
- for (i = 0; i < 5; i++)
- {
- spriteId = CreateSprite(&gSpriteTemplate_83E4878, i * 32 + 113, 16, 0);
- if (spriteId != MAX_SPRITES)
- {
- gSprites[spriteId].oam.tileNum += tileOffset;
- gPokenavStructPtr->unkCED4[i] = &gSprites[spriteId];
- }
- else
- {
- gPokenavStructPtr->unkCED4[i] = NULL;
- }
-
- tileOffset += 8;
- }
-}
-
-static void sub_80F4394(void)
-{
- u16 i;
-
- for (i = 0; i < 5; i++)
- {
- if (gPokenavStructPtr->unkCED4[i])
- DestroySprite(gPokenavStructPtr->unkCED4[i]);
- }
-
- FreeSpriteTilesByTag(0x1A);
- FreeSpritePaletteByTag(0x12);
-}
-
-void sub_80F43D4(u8 *arg0)
-{
- u16 tile;
-
- sub_80F4194(gPokenavStructPtr->unkD1E4[0], arg0);
- tile = GetSpriteTileStartByTag(0x1A);
- if (tile != 0xFFFF)
- DmaCopy32Defvars(3, gPokenavStructPtr->unkD1E4[0], (void *)(VRAM + 0x10000 + (tile * 32)), 0x500);
-}
-
-static u8 *sub_80F4428(u8 *arg0, u16 arg1, u8 arg2)
-{
- return sub_80F6514(arg0, arg1, arg2);
-}
-
-static u8 *sub_80F443C(u8 *arg0, u16 arg1)
-{
- return AlignInt1InMenuWindow(StringCopy(arg0, gOtherText_Number), arg1, 56, 1);
-}
-
-static u8 *sub_80F445C(u8 *arg0, u16 arg1)
-{
- u8 *buffer = AlignInt1InMenuWindow(arg0, arg1, 23, 1);
- buffer[0] = EXT_CTRL_CODE_BEGIN;
- buffer[1] = 0x11;
- buffer[2] = 1;
- buffer += 3;
- buffer[0] = CHAR_SLASH;
- buffer += 1;
- buffer[0] = EXT_CTRL_CODE_BEGIN;
- buffer[1] = 0x11;
- buffer[2] = 1;
- buffer += 3;
- buffer = AlignInt1InMenuWindow(buffer, gPokenavStructPtr->unk8774 + 1, 50, 1);
- return buffer;
-}
-
-u32 sub_80F44B0(u16 box, u16 monIndex, int monDataField, int *text)
-{
- if (box == 14)
- {
- if (monDataField == MON_DATA_NICKNAME || monDataField == MON_DATA_OT_NAME)
- return GetMonData(&gPlayerParty[monIndex], monDataField, text);
- else
- return GetMonData(&gPlayerParty[monIndex], monDataField);
- }
- else
- {
- if (monDataField == MON_DATA_NICKNAME || monDataField == MON_DATA_OT_NAME)
- return GetBoxMonData(&gPokemonStorage.boxes[box][monIndex], monDataField, text);
- else
- return GetBoxMonData(&gPokemonStorage.boxes[box][monIndex], monDataField);
- }
-}
-
-static void SetMonMarkings(u16 box, u16 monIndex, u8 markings)
-{
- if (box == 14)
- SetMonData(&gPlayerParty[monIndex], MON_DATA_MARKINGS, &markings);
- else
- SetBoxMonData(&gPokemonStorage.boxes[box][monIndex], MON_DATA_MARKINGS, &markings);
-}
-
-static void sub_80F45A0(s16 arg0, u8 arg1)
-{
- u8 box;
- u8 var0 = gPokenavStructPtr->unk893c[arg0].unk4;
- if (var0)
- {
- sub_80F4428(gPokenavStructPtr->unk8829[arg1], arg0, 0);
- box = gPokenavStructPtr->unk893c[arg0].unk1;
- if (box == 14)
- AlignStringInMenuWindow(gPokenavStructPtr->unk88E9[arg1], gOtherText_InParty, 64, 0);
- else
- AlignStringInMenuWindow(gPokenavStructPtr->unk88E9[arg1], gPokemonStorage.boxNames[box], 64, 0);
-
- gPokenavStructPtr->unk8937[arg1] = 1;
- }
- else
- {
- AlignStringInMenuWindow(gPokenavStructPtr->unk8829[arg1], gEmptyString_81E72B0, 104, 0);
- AlignStringInMenuWindow(gPokenavStructPtr->unk88E9[arg1], gEmptyString_81E72B0, 64, 0);
- gPokenavStructPtr->unk8937[arg1] = var0;
- }
-}
-
-static void sub_80F468C(s16 arg0, u8 arg1)
-{
- u16 i;
- u16 box;
- u16 monIndex;
-
- if (gPokenavStructPtr->unk893c[arg0].unk4)
- {
- box = gPokenavStructPtr->unk893c[arg0].unk1;
- monIndex = gPokenavStructPtr->unk893c[arg0].partyIdx;
- gPokenavStructPtr->unk8ff0[arg1][0] = sub_80F44B0(box, monIndex, MON_DATA_COOL, NULL);
- gPokenavStructPtr->unk8ff0[arg1][1] = sub_80F44B0(box, monIndex, MON_DATA_TOUGH, NULL);
- gPokenavStructPtr->unk8ff0[arg1][2] = sub_80F44B0(box, monIndex, MON_DATA_SMART, NULL);
- gPokenavStructPtr->unk8ff0[arg1][3] = sub_80F44B0(box, monIndex, MON_DATA_CUTE, NULL);
- gPokenavStructPtr->unk8ff0[arg1][4] = sub_80F44B0(box, monIndex, MON_DATA_BEAUTY, NULL);
-
- gPokenavStructPtr->unk8931[arg1] = sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) != 255
- ? sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) / 29
- : 9;
-
- gPokenavStructPtr->unk8934[arg1] = sub_80F44B0(box, monIndex, MON_DATA_MARKINGS, NULL);
- sub_80F55AC(gPokenavStructPtr->unk8ff0[arg1], gPokenavStructPtr->unk9004[arg1]);
- }
- else
- {
- for (i = 0; i < 5; i++)
- {
- gPokenavStructPtr->unk8ff0[arg1][i] = 0;
- gPokenavStructPtr->unk9004[arg1][i].unk0 = 0x9B;
- gPokenavStructPtr->unk9004[arg1][i].unk2 = 0x5B;
- }
- }
-}
-
-static void sub_80F4824(s16 arg0, u8 arg1)
-{
- u16 species;
- u32 otId;
- u32 personality;
- u16 box;
- u16 monIndex;
-
- if (gPokenavStructPtr->unk893c[arg0].unk4)
- {
- box = gPokenavStructPtr->unk893c[arg0].unk1;
- monIndex = gPokenavStructPtr->unk893c[arg0].partyIdx;
- species = sub_80F44B0(box, monIndex, MON_DATA_SPECIES2, NULL);
- otId = sub_80F44B0(box, monIndex, MON_DATA_OT_ID, NULL);
- personality = sub_80F44B0(box, monIndex, MON_DATA_PERSONALITY, NULL);
-
- HandleLoadSpecialPokePic(
- &gMonFrontPicTable[species],
- gMonFrontPicCoords[species].coords,
- 1,
- (intptr_t)gPokenavStructPtr->unk131E4,
- gPokenavStructPtr->unkD1E4[arg1],
- species,
- personality);
-
- LZ77UnCompWram(GetMonSpritePalFromOtIdPersonality(species, otId, personality), gPokenavStructPtr->unk0[arg1]);
- gPokenavStructPtr->unkD1D6[arg1] = species;
- }
-}
-
-void sub_80F4900(s16 arg0, u8 arg1)
-{
- sub_80F45A0(arg0, arg1);
- sub_80F468C(arg0, arg1);
- sub_80F4824(arg0, arg1);
-}
-
-void sub_80F492C(void)
-{
- gPokenavStructPtr->unk8FE4 = 0;
-}
-
-#ifdef NONMATCHING
-// registers r3/r4 are swapped
-void sub_80F4944(struct UnkUsePokeblockSub *arg0)
-{
- u16 i;
- u16 r3;
- u16 r4;
-
- i = 0;
- r4 = gPokenavStructPtr->unk8FE4;
- r3 = r4 / 2;
- while (r3 != r4)
- {
- if (arg0->unk0 > gPokenavStructPtr->unk893c[r3].unk0)
- r4 = r3;
- else
- i = r3 + 1;
-
- r3 = ((r4 - i) / 2) + i;
- }
-
- r4 = gPokenavStructPtr->unk8FE4;
- while (r4 > r3)
- {
- gPokenavStructPtr->unk893c[r4] = gPokenavStructPtr->unk893c[r4 - 1];
- r4--;
- }
-
- gPokenavStructPtr->unk893c[r3] = *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)
-{
- u16 i;
-
- gPokenavStructPtr->unk893c[0].unk2 = 1;
- for (i = 1; i < gPokenavStructPtr->unk8FE4; i++)
- {
- if (gPokenavStructPtr->unk893c[i].unk0 == gPokenavStructPtr->unk893c[i - 1].unk0)
- gPokenavStructPtr->unk893c[i].unk2 = gPokenavStructPtr->unk893c[i - 1].unk2;
- else
- gPokenavStructPtr->unk893c[i].unk2 = i + 1;
- }
-
- gPokenavStructPtr->unk876C = 0;
- gPokenavStructPtr->unk8770 = 0;
- gPokenavStructPtr->unk876E = 0;
- gPokenavStructPtr->unk8772 = gPokenavStructPtr->unk8FE4 < 9 ? (gPokenavStructPtr->unk8FE4 - 1) : 7;
- gPokenavStructPtr->unk8774 = gPokenavStructPtr->unk8FE4 - 1;
- gPokenavStructPtr->unk87C9 = gPokenavStructPtr->unk8774 > 7;
-}
-
-void sub_80F4B20(void)
-{
- s16 var0;
- s16 var1;
-
- sub_80F4900(gPokenavStructPtr->unk87DC, 0);
- sub_80F2E18(0);
- if (gPokenavStructPtr->unk87DA == 1)
- {
- gPokenavStructPtr->unk8fe9 = 0;
- gPokenavStructPtr->unk8FEA = 0;
- gPokenavStructPtr->unk8FEB = 0;
- }
- else
- {
- gPokenavStructPtr->unk8fe9 = 0;
- gPokenavStructPtr->unk8FEA = 1;
- gPokenavStructPtr->unk8FEB = 2;
-
- var0 = gPokenavStructPtr->unk87DC + 1;
- if (var0 >= gPokenavStructPtr->unk87DA)
- var0 = 0;
-
- var1 = gPokenavStructPtr->unk87DC - 1;
- if (var1 < 0)
- var1 = gPokenavStructPtr->unk87DA - 1;
-
- sub_80F4900(var0, 1);
- sub_80F4900(var1, 2);
- }
-}
-
-void sub_80F4BD0(void)
-{
- u16 i, j;
-
- for (i = 0, j = 0; i < gPokenavStructPtr->unk8828; i++)
- {
- if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
- {
- gPokenavStructPtr->unk893c[j].unk1 = 14;
- gPokenavStructPtr->unk893c[j].partyIdx = i;
- gPokenavStructPtr->unk893c[j].unk2 = j + 1;
- gPokenavStructPtr->unk893c[j].unk4 = 1;
- j++;
- }
- }
-
- gPokenavStructPtr->unk893c[j].unk1 = 0;
- gPokenavStructPtr->unk893c[j].partyIdx = 0;
- gPokenavStructPtr->unk893c[j].unk2 = 0;
- gPokenavStructPtr->unk893c[j].unk4 = 0;
- gPokenavStructPtr->unk87DC = 0;
- gPokenavStructPtr->unk87DA = j + 1;
- sub_80F4B20();
- gPokenavStructPtr->unk87CB = 1;
-}
-
-static void sub_80F4CF0(void)
-{
- gPokenavStructPtr->unk87DC = gPokenavStructPtr->unk876E;
- sub_80F4B20();
-
- if (gPokenavStructPtr->unk8774 == 0)
- gPokenavStructPtr->unk87CB = 0;
- else
- gPokenavStructPtr->unk87CB = 1;
-}
-
-static void sub_80F4D44(void)
-{
- gPokenavStructPtr->unk8FE6 = 0;
- gPokenavStructPtr->unk8FE7 = 0;
- sub_80F492C();
-
- if (!gPokenavStructPtr->unk6DAC)
- while (sub_80F4D88());
-}
-
-static bool8 sub_80F4D88(void)
-{
- u16 i;
- register int mask asm("r3"); // FIXME
- int nextValue;
- struct UnkUsePokeblockSub var0;
-
- switch (gPokenavStructPtr->unk8FE6)
- {
- default:
- var0.unk4 = 1;
- for (i = 0; i < 15; i++)
- {
-
- if (GetBoxMonData(&gPokemonStorage.boxes[gPokenavStructPtr->unk8FE6][gPokenavStructPtr->unk8FE7], MON_DATA_SPECIES)
- && !GetBoxMonData(&gPokemonStorage.boxes[gPokenavStructPtr->unk8FE6][gPokenavStructPtr->unk8FE7], MON_DATA_IS_EGG))
- {
- var0.unk1 = gPokenavStructPtr->unk8FE6;
- var0.partyIdx = gPokenavStructPtr->unk8FE7;
- var0.unk0 = GetBoxMonData(
- &gPokemonStorage.boxes[gPokenavStructPtr->unk8FE6][gPokenavStructPtr->unk8FE7],
- gPokenavStructPtr->unk87D8);
- sub_80F4944(&var0);
- }
-
- gPokenavStructPtr->unk8FE7++;
- mask = 0xFF;
- if (gPokenavStructPtr->unk8FE7 == 30)
- {
- gPokenavStructPtr->unk8FE7 = 0;
- nextValue = gPokenavStructPtr->unk8FE6 + 1;
- gPokenavStructPtr->unk8FE6 = nextValue;
- if ((nextValue & mask) == 14)
- break;
- }
- }
- break;
- case 14:
- var0.unk4 = 1;
- var0.unk1 = 14;
- for (i = 0; i < gPokenavStructPtr->unk8828; i++)
- {
- if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
- {
- var0.partyIdx = i;
- var0.unk0 = GetMonData(&gPlayerParty[i], gPokenavStructPtr->unk87D8);
- sub_80F4944(&var0);
- }
- }
-
- sub_80F49F4();
- gPokenavStructPtr->unk87DA = gPokenavStructPtr->unk8FE4;
- gPokenavStructPtr->unk8FE6++;
- break;
- case 15:
- return FALSE;
- }
-
- return TRUE;
-}
-
-void sub_80F4F78(void)
-{
- sub_80F53EC(gPokenavStructPtr->unk9004[3], gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9]);
- sub_80F5504();
-}
-
-bool8 sub_80F4FB4(void)
-{
- bool8 var0 = sub_80F5504();
- bool8 var1 = sub_80F170C();
- return var0 || var1;
-}
-
-void sub_80F4FDC(void)
-{
- if (gPokenavStructPtr->unk76AA || gPokenavStructPtr->unk87DC != gPokenavStructPtr->unk8828)
- sub_80F53EC(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9004[3]);
-}
-
-bool8 sub_80F5038(void)
-{
- bool8 var0 = sub_80F5504();
- bool8 var1 = sub_80F173C();
- return var0 || var1;
-}
-
-void sub_80F5060(u8 arg0)
-{
- u16 var0;
- u8 var1;
- u8 var2;
-
- if (arg0)
- var0 = gPokenavStructPtr->unk8FEB;
- else
- var0 = gPokenavStructPtr->unk8FEA;
-
- sub_80F53EC(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9004[var0]);
- var1 = gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk4;
- if (arg0)
- {
- gPokenavStructPtr->unk8FEB = gPokenavStructPtr->unk8FEA;
- gPokenavStructPtr->unk8FEA = gPokenavStructPtr->unk8fe9;
- gPokenavStructPtr->unk8fe9 = var0;
- gPokenavStructPtr->unk8FEC = gPokenavStructPtr->unk8FEB;
-
- gPokenavStructPtr->unk87DC = gPokenavStructPtr->unk87DC
- ? gPokenavStructPtr->unk87DC - 1
- : gPokenavStructPtr->unk87DA - 1;
- gPokenavStructPtr->unk8FEE = gPokenavStructPtr->unk87DC
- ? gPokenavStructPtr->unk87DC - 1
- : gPokenavStructPtr->unk87DA - 1;
- }
- else
- {
- gPokenavStructPtr->unk8FEA = gPokenavStructPtr->unk8FEB;
- gPokenavStructPtr->unk8FEB = gPokenavStructPtr->unk8fe9;
- gPokenavStructPtr->unk8fe9 = var0;
- gPokenavStructPtr->unk8FEC = gPokenavStructPtr->unk8FEA;
-
- gPokenavStructPtr->unk87DC = (gPokenavStructPtr->unk87DC < gPokenavStructPtr->unk87DA - 1)
- ? gPokenavStructPtr->unk87DC + 1
- : 0;
- gPokenavStructPtr->unk8FEE = (gPokenavStructPtr->unk87DC < gPokenavStructPtr->unk87DA - 1)
- ? gPokenavStructPtr->unk87DC + 1
- : 0;
- }
-
- var2 = gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk4;
- if (!var1)
- gPokenavStructPtr->unk87E0 = sub_80F5264;
- else if (!var2)
- gPokenavStructPtr->unk87E0 = sub_80F52F8;
- else
- gPokenavStructPtr->unk87E0 = sub_80F5364;
-
- gPokenavStructPtr->unk87DE = 0;
-}
-
-bool8 gpu_sync_bg_show(void)
-{
- return gPokenavStructPtr->unk87E0();
-}
-
-static bool8 sub_80F5264(void)
-{
- switch (gPokenavStructPtr->unk87DE)
- {
- case 0:
- sub_80F2E18(gPokenavStructPtr->unk8fe9);
- sub_80F01E0(gPokenavStructPtr->unk8fe9);
- gPokenavStructPtr->unk87DE++;
- // fall through
- case 1:
- if (!sub_80F4FB4())
- {
- sub_80F4900(gPokenavStructPtr->unk8FEE, gPokenavStructPtr->unk8FEC);
- gPokenavStructPtr->unk87DE++;
- }
- break;
- case 2:
- return FALSE;
- }
-
- return TRUE;
-}
-
-static bool8 sub_80F52F8(void)
-{
- switch (gPokenavStructPtr->unk87DE)
- {
- case 0:
- if (!sub_80F5038())
- {
- sub_80F01E0(gPokenavStructPtr->unk8fe9);
- sub_80F4900(gPokenavStructPtr->unk8FEE, gPokenavStructPtr->unk8FEC);
- gPokenavStructPtr->unk87DE++;
- }
- break;
- case 1:
- return FALSE;
- }
-
- return TRUE;
-}
-
-static bool8 sub_80F5364(void)
-{
- switch (gPokenavStructPtr->unk87DE)
- {
- case 0:
- sub_80F5504();
- if (!sub_80F173C())
- {
- sub_80F2E18(gPokenavStructPtr->unk8fe9);
- sub_80F01E0(gPokenavStructPtr->unk8fe9);
- gPokenavStructPtr->unk87DE++;
- }
- break;
- case 1:
- if (!sub_80F4FB4())
- gPokenavStructPtr->unk87DE++;
- break;
- case 2:
- sub_80F4900(gPokenavStructPtr->unk8FEE, gPokenavStructPtr->unk8FEC);
- return FALSE;
- }
-
- return TRUE;
-}
-
-static void sub_80F53EC(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1)
-{
- u16 i, j;
- int r5;
- int r6;
-
- for (i = 0; i < 5; i++)
- {
- r5 = arg0[i].unk0 << 8;
- r6 = ((arg1[i].unk0 - arg0[i].unk0) << 8) / 10;
- for (j = 0; j < 9; j++)
- {
- gPokenavStructPtr->unk9054[j][i].unk0 = (r5 >> 8) + ((r5 >> 7) & 1);
- r5 += r6;
- }
-
- gPokenavStructPtr->unk9054[j][i].unk0 = arg1[i].unk0;
- r5 = arg0[i].unk2 << 8;
- r6 = ((arg1[i].unk2 - arg0[i].unk2) << 8) / 10;
- for (j = 0; j < 9; j++)
- {
- gPokenavStructPtr->unk9054[j][i].unk2 = (r5 >> 8) + ((r5 >> 7) & 1);
- r5 += r6;
- }
-
- gPokenavStructPtr->unk9054[j][i].unk2 = arg1[i].unk2;
- }
-
- gPokenavStructPtr->unk9342 = 0;
-}
-
-static bool8 sub_80F5504(void)
-{
- if (gPokenavStructPtr->unk9342 < 10)
- {
- sub_80F556C(gPokenavStructPtr->unk9054[gPokenavStructPtr->unk9342++]);
- return gPokenavStructPtr->unk9342 != 10;
- }
- else
- {
- return FALSE;
- }
-}
-
-void sub_80F5550(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1)
-{
- sub_80F53EC(arg0, arg1);
-}
-
-bool8 sub_80F555C(void)
-{
- return sub_80F5504();
-}
-
-void sub_80F556C(struct UnkPokenav11 *arg0)
-{
- u16 i;
-
- for (i = 0; i < 5; i++)
- gPokenavStructPtr->unk911C[i] = arg0[i];
-
- gPokenavStructPtr->unk9344 = 1;
+ gPokenavStructPtr->unk300 = gUnknown_03000744;
}
diff --git a/src/trainers_eye.c b/src/trainers_eye.c
index 61be99dec..f4ad50c6d 100644
--- a/src/trainers_eye.c
+++ b/src/trainers_eye.c
@@ -35,7 +35,6 @@ static const struct TrainersEyeGymLeadersAndE4 sGymLeaderTrainersEye[13] = {
};
void sub_80F6E04(u8);
-void sub_80F6FB8(bool8);
void sub_80F6C20(void)
{