summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/menu_specialized.c374
-rw-r--r--src/pokenav_before.c4
-rw-r--r--src/use_pokeblock.c4
3 files changed, 378 insertions, 4 deletions
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
new file mode 100644
index 000000000..cef13b51d
--- /dev/null
+++ b/src/menu_specialized.c
@@ -0,0 +1,374 @@
+#include "global.h"
+#include "pokenav.h"
+
+/* 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;
+// }
+}
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index a00f88051..b545b99fb 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -8525,7 +8525,7 @@ static bool8 sub_80F4D88(void)
void sub_80F4F78(void)
{
- sub_80F53EC(gPokenavStructPtr->unk9040, gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9]);
+ sub_80F53EC(gPokenavStructPtr->unk9004[3], gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9]);
sub_80F5504();
}
@@ -8539,7 +8539,7 @@ bool8 sub_80F4FB4(void)
void sub_80F4FDC(void)
{
if (gPokenavStructPtr->unk76AA || gPokenavStructPtr->unk87DC != gPokenavStructPtr->unk8828)
- sub_80F53EC(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9040);
+ sub_80F53EC(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9004[3]);
}
bool8 sub_80F5038(void)
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index 9deab01fc..e13369c0b 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -549,8 +549,8 @@ static void sub_81369CC(void)
break;
case 2:
sub_8136EF0();
- sub_80F567C(gUnknown_02039304->unk5c, gPokenavStructPtr->unk9040);
- sub_80F5550(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9040);
+ sub_80F567C(gUnknown_02039304->unk5c, gPokenavStructPtr->unk9004[3]);
+ sub_80F5550(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9004[3]);
sub_8137138();
gUnknown_02039304->unk50++;
break;