summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-06-25 12:29:04 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-06-25 12:29:04 -0400
commita6ae701c1d244d418975d9019b6a1af217674ae5 (patch)
tree72b78e6c6297991cf5189f07910fdbdf0b3d6471 /src
parentf8ab227f4fced355cf5253d66078782637238ea7 (diff)
Match sub_811A1C8
Diffstat (limited to 'src')
-rw-r--r--src/pokedex_cry_screen.c219
1 files changed, 30 insertions, 189 deletions
diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c
index d80c3f9ea..b9ae10881 100644
--- a/src/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
@@ -359,207 +359,48 @@ void sub_811A15C(u8 a0)
}
}
-#ifdef NONMATCHING
void sub_811A1C8(u8 a0, u8 a1)
{
- u8 sp0;
- u8 r7;
- u8 r8;
- u16 r1 = (a1 + 127) << 8;
- u8 i = r1 / 1152.0;
- if (i > 71 - 16)
- i = 71 - 16;
- sp0 = i;
- r7 = a0 % 2;
- r8 = a0 / 8;
- if (i > gPokedexCryScreenPtr->unk0012)
+#define PLAY_START_POS (a0 >> 3)
+#define PLAYHEAD_POS (a0 & ((1 << 3) - 1))
+#define VERT_SLICE (a0 & 1)
+ u8 currentPointY;
+ u8 nybble;
+ u16 offset;
+ u16 temp;
+ u8 y;
+
+ temp = (a1 + 127) * 256;
+ y = temp / 1152.0;
+ if (y > 71 - 16)
+ y = 71 - 16;
+ currentPointY = y;
+ nybble = VERT_SLICE;
+ if (y > gPokedexCryScreenPtr->unk0012)
{
do
{
- gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] &= gUnknown_083FB738[r7];
- gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] |= gUnknown_083FB73A[r7][((i / 3) - 1) & 0x0F];
- i--;
- } while (i > gPokedexCryScreenPtr->unk0012);
+ offset = gUnknown_083FB274[PLAYHEAD_POS][y] + PLAY_START_POS * TILE_SIZE_4BPP;
+ gSharedMem[offset] &= gUnknown_083FB738[nybble];
+ gSharedMem[offset] |= gUnknown_083FB73A[nybble][((y / 3) - 1) & 0x0F];
+ y--;
+ } while (y > gPokedexCryScreenPtr->unk0012);
}
else
{
do
{
- gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] &= gUnknown_083FB738[r7];
- gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] |= gUnknown_083FB73A[r7][((i / 3) - 1) & 0x0F];
- i++;
- } while (i < gPokedexCryScreenPtr->unk0012);
+ offset = gUnknown_083FB274[PLAYHEAD_POS][y] + PLAY_START_POS * TILE_SIZE_4BPP;
+ gSharedMem[offset] &= gUnknown_083FB738[nybble];
+ gSharedMem[offset] |= gUnknown_083FB73A[nybble][((y / 3) - 1) & 0x0F];
+ y++;
+ } while (y < gPokedexCryScreenPtr->unk0012);
}
- gPokedexCryScreenPtr->unk0012 = sp0;
+ gPokedexCryScreenPtr->unk0012 = currentPointY;
+ #undef PLAYHEAD_POS
+ #undef PLAY_START_POS
+ #undef VERT_SLICE
}
-#else
-NAKED void sub_811A1C8(u8 a0, u8 a1)
-{
- 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, 0xC\n"
- "\tlsls r5, r0, 24\n"
- "\tlsrs r4, r5, 24\n"
- "\tlsls r1, 24\n"
- "\tmovs r0, 0xFE\n"
- "\tlsls r0, 23\n"
- "\tadds r1, r0\n"
- "\tlsrs r1, 16\n"
- "\tadds r0, r1, 0\n"
- "\tbl __floatsidf\n"
- "\tldr r3, _0811A280 @ =0x00000000\n"
- "\tldr r2, _0811A27C @ =0x40920000\n"
- "\tbl __divdf3\n"
- "\tbl __fixunsdfsi\n"
- "\tlsls r0, 24\n"
- "\tlsrs r6, r0, 24\n"
- "\tcmp r6, 0x37\n"
- "\tbls _0811A1FE\n"
- "\tmovs r6, 0x37\n"
- "_0811A1FE:\n"
- "\tstr r6, [sp]\n"
- "\tmovs r7, 0x1\n"
- "\tands r7, r4\n"
- "\tldr r0, _0811A284 @ =gSharedMem + 0x1C000\n"
- "\tmov r10, r0\n"
- "\tlsrs r5, 27\n"
- "\tmov r8, r5\n"
- "\tldr r0, _0811A288 @ =gUnknown_083FB738\n"
- "\tmov r1, r10\n"
- "\tldrb r1, [r1, 0x12]\n"
- "\tcmp r6, r1\n"
- "\tbls _0811A298\n"
- "\tadds r0, r7, r0\n"
- "\tldrb r0, [r0]\n"
- "\tmov r9, r0\n"
- "\tmovs r2, 0x7\n"
- "\tands r2, r4\n"
- "_0811A220:\n"
- "\tlsls r1, r6, 1\n"
- "\tlsls r0, r2, 3\n"
- "\tadds r0, r2\n"
- "\tlsls r0, 4\n"
- "\tadds r1, r0\n"
- "\tldr r3, _0811A28C @ =gUnknown_083FB274\n"
- "\tadds r1, r3\n"
- "\tmov r3, r8\n"
- "\tlsls r0, r3, 5\n"
- "\tldrh r1, [r1]\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tldr r1, _0811A290 @ =gSharedMem\n"
- "\tadds r5, r0, r1\n"
- "\tldrb r4, [r5]\n"
- "\tmov r3, r9\n"
- "\tands r4, r3\n"
- "\tstrb r4, [r5]\n"
- "\tadds r0, r6, 0\n"
- "\tmovs r1, 0x3\n"
- "\tstr r2, [sp, 0x8]\n"
- "\tbl __udivsi3\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tsubs r0, 0x1\n"
- "\tmovs r1, 0xF\n"
- "\tands r0, r1\n"
- "\tlsls r1, r7, 4\n"
- "\tadds r0, r1\n"
- "\tldr r1, _0811A294 @ =gUnknown_083FB73A\n"
- "\tadds r0, r1\n"
- "\tldrb r0, [r0]\n"
- "\torrs r4, r0\n"
- "\tstrb r4, [r5]\n"
- "\tsubs r0, r6, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r6, r0, 24\n"
- "\tldr r2, [sp, 0x8]\n"
- "\tldr r3, _0811A284 @ =gSharedMem + 0x1C000\n"
- "\tldrb r3, [r3, 0x12]\n"
- "\tcmp r6, r3\n"
- "\tbhi _0811A220\n"
- "\tb _0811A2FA\n"
- "\t.align 2, 0\n"
- "_0811A27C: .4byte 0x40920000\n"
- "_0811A280: .4byte 0x00000000\n"
- "_0811A284: .4byte gSharedMem + 0x1C000\n"
- "_0811A288: .4byte gUnknown_083FB738\n"
- "_0811A28C: .4byte gUnknown_083FB274\n"
- "_0811A290: .4byte gSharedMem\n"
- "_0811A294: .4byte gUnknown_083FB73A\n"
- "_0811A298:\n"
- "\tlsls r1, r7, 4\n"
- "\tstr r1, [sp, 0x4]\n"
- "\tadds r0, r7, r0\n"
- "\tldrb r0, [r0]\n"
- "\tmov r9, r0\n"
- "\tmovs r7, 0x7\n"
- "\tands r7, r4\n"
- "_0811A2A6:\n"
- "\tlsls r1, r6, 1\n"
- "\tlsls r0, r7, 3\n"
- "\tadds r0, r7\n"
- "\tlsls r0, 4\n"
- "\tadds r1, r0\n"
- "\tldr r2, _0811A314 @ =gUnknown_083FB274\n"
- "\tadds r1, r2\n"
- "\tmov r3, r8\n"
- "\tlsls r0, r3, 5\n"
- "\tldrh r1, [r1]\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tldr r1, _0811A318 @ =gSharedMem\n"
- "\tadds r5, r0, r1\n"
- "\tldrb r4, [r5]\n"
- "\tmov r2, r9\n"
- "\tands r4, r2\n"
- "\tstrb r4, [r5]\n"
- "\tadds r0, r6, 0\n"
- "\tmovs r1, 0x3\n"
- "\tbl __udivsi3\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tsubs r0, 0x1\n"
- "\tmovs r1, 0xF\n"
- "\tands r0, r1\n"
- "\tldr r3, [sp, 0x4]\n"
- "\tadds r0, r3\n"
- "\tldr r1, _0811A31C @ =gUnknown_083FB73A\n"
- "\tadds r0, r1\n"
- "\tldrb r0, [r0]\n"
- "\torrs r4, r0\n"
- "\tstrb r4, [r5]\n"
- "\tadds r0, r6, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r6, r0, 24\n"
- "\tldr r2, _0811A320 @ =gSharedMem + 0x1C000\n"
- "\tldrb r2, [r2, 0x12]\n"
- "\tcmp r6, r2\n"
- "\tbcc _0811A2A6\n"
- "_0811A2FA:\n"
- "\tmov r3, sp\n"
- "\tldrb r0, [r3]\n"
- "\tmov r3, r10\n"
- "\tstrb r0, [r3, 0x12]\n"
- "\tadd sp, 0xC\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\n"
- "\t.align 2, 0\n"
- "_0811A314: .4byte gUnknown_083FB274\n"
- "_0811A318: .4byte gSharedMem\n"
- "_0811A31C: .4byte gUnknown_083FB73A\n"
- "_0811A320: .4byte gSharedMem + 0x1C000");
-}
-#endif // NONMATCHING
void sub_811A324(void)
{