diff --git a/src/battle_intro.c b/src/battle_intro.c index 231f3c4ee7..96c8cbd6aa 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -600,129 +600,18 @@ void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *ar LoadBgTilemap(bgId, arg6, BG_SCREEN_SIZE, 0); } -#ifdef NONMATCHING void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7) { - int i, j; - int offset; + int i, j, offset; + DmaCopy16(3, gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE); offset = (arg5 >> 5) - (arg7 << 9); for (i = arg1; i < arg1 + 8; i++) { for (j = arg0; j < arg0 + 8; j++) { - ((u16 *)BG_VRAM)[i * 32 + j + (arg6 * 0x400) + arg0] = offset | (arg4 << 12); + *((u16 *)(BG_VRAM) + (i * 32) + (j + (arg6 << 10))) = offset | (arg4 << 12); offset++; } } } -#else -NAKED -void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7) -{ - asm_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, 0x4\n\ - ldr r4, [sp, 0x24]\n\ - ldr r5, [sp, 0x28]\n\ - mov r8, r5\n\ - ldr r5, [sp, 0x2C]\n\ - ldr r6, [sp, 0x30]\n\ - mov r9, r6\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r12, r0\n\ - lsls r1, 24\n\ - lsls r2, 24\n\ - lsls r3, 24\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - mov r10, r4\n\ - mov r7, r8\n\ - lsls r7, 16\n\ - lsrs r6, r7, 16\n\ - lsls r5, 24\n\ - lsrs r5, 24\n\ - mov r0, r9\n\ - lsls r0, 24\n\ - mov r9, r0\n\ - ldr r4, =0x040000d4\n\ - ldr r0, =gMonSpritesGfxPtr\n\ - ldr r0, [r0]\n\ - lsrs r2, 22\n\ - adds r0, 0x4\n\ - adds r0, r2\n\ - lsrs r3, 13\n\ - ldr r0, [r0]\n\ - adds r0, r3\n\ - str r0, [r4]\n\ - movs r0, 0xC0\n\ - lsls r0, 19\n\ - adds r6, r0\n\ - str r6, [r4, 0x4]\n\ - ldr r0, =0x80000400\n\ - str r0, [r4, 0x8]\n\ - ldr r0, [r4, 0x8]\n\ - adds r2, r7, 0\n\ - lsrs r2, 21\n\ - mov r6, r9\n\ - lsrs r6, 15\n\ - subs r4, r2, r6\n\ - lsrs r0, r1, 24\n\ - adds r1, r0, 0\n\ - adds r1, 0x8\n\ - cmp r0, r1\n\ - bge _08119148\n\ - mov r9, r1\n\ - mov r7, r12\n\ - lsls r7, 1\n\ - mov r8, r7\n\ - lsls r5, 11\n\ - str r5, [sp]\n\ -_08119110:\n\ - mov r2, r12\n\ - adds r3, r2, 0\n\ - adds r3, 0x8\n\ - adds r5, r0, 0x1\n\ - cmp r2, r3\n\ - bge _08119142\n\ - mov r1, r10\n\ - lsls r6, r1, 12\n\ - lsls r0, 6\n\ - movs r7, 0xC0\n\ - lsls r7, 19\n\ - adds r0, r7\n\ - ldr r1, [sp]\n\ - adds r0, r1, r0\n\ - mov r7, r8\n\ - adds r1, r7, r0\n\ - subs r2, r3, r2\n\ -_08119132:\n\ - adds r0, r4, 0\n\ - orrs r0, r6\n\ - strh r0, [r1]\n\ - adds r4, 0x1\n\ - adds r1, 0x2\n\ - subs r2, 0x1\n\ - cmp r2, 0\n\ - bne _08119132\n\ -_08119142:\n\ - adds r0, r5, 0\n\ - cmp r0, r9\n\ - blt _08119110\n\ -_08119148:\n\ - add sp, 0x4\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\ - .pool"); -} -#endif diff --git a/src/contest_painting.c b/src/contest_painting.c index b43923c7b5..257bde4457 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -250,8 +250,7 @@ static void HoldContestPainting(void) case 1: if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) { - u8 two = 2; //needed to make the asm match - gContestPaintingState = two; + gContestPaintingState++; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); } diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 966dccfcf8..29bc1f1d54 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -1422,109 +1422,109 @@ void sub_8026324(void) u8 sp8 = gUnknown_02022C98->unk_0024; u8 r6; u8 r10; - u8 r2; + s32 r2; u8 r5; u8 r3; s32 r2_2; u8 r4; u8 r7, r7_2; - if (gUnknown_02022C98->unk_0040 < 10) + if (gUnknown_02022C98->unk_0040 >= 10) + return; + + for (r6 = 0; r6 < sp8; r6++) { - for (r6 = 0; r6 < sp8; r6++) + if (gUnknown_02022C98->unk_31A0[r6].unk_2C != 0 && gUnknown_02022C98->unk_00A8[r6] == 1) { - if ( gUnknown_02022C98->unk_31A0[r6].unk_2C != 0 - && gUnknown_02022C98->unk_00A8[r6] == 1) + for (r10 = sp0; r10 < sp4; r10++) { - for (r10 = sp0; r10 < sp4; r10++) + r5 = gUnknown_082F449C[r10]; + if (gUnknown_02022C98->unk_00F4[r5][0] == r6) { - r5 = gUnknown_082F449C[r10]; - if (gUnknown_02022C98->unk_00F4[r5][0] == r6) + break; + } + if (gUnknown_02022C98->unk_00F4[r5][1] == r6) + { + break; + } + if (sub_8026634(gUnknown_02022C98->unk_31A0[r6].unk_2C, r6, gUnknown_082F449C[r10]) == 1) + { + for (r2 = 0; r2 < 2; r2++) { - break; - } - if (gUnknown_02022C98->unk_00F4[r5][1] == r6) - { - break; - } - if (sub_8026634(gUnknown_02022C98->unk_31A0[r6].unk_2C, r6, gUnknown_082F449C[r10]) == 1) - { - for (r2 = 0; r2 < 2; r2++) + if (gUnknown_02022C98->unk_00F4[r5][r2] == 0xFF) { - if (gUnknown_02022C98->unk_00F4[r5][r2] == 0xFF) - { - gUnknown_02022C98->unk_00F4[r5][r2] = r6; - gUnknown_02022C98->unk_00A8[r6] = 2; - gUnknown_02022C98->unk_00C4[r5] = 1; - break; - } + gUnknown_02022C98->unk_00F4[r5][r2] = r6; + gUnknown_02022C98->unk_00A8[r6] = 2; + gUnknown_02022C98->unk_00C4[r5] = 1; + break; } - break; - } - if (gUnknown_02022C98->unk_31A0[r6].unk_34 == 1) - { - break; } + break; + } + if (gUnknown_02022C98->unk_31A0[r6].unk_34 == 1) + { + break; } } } - for (r10 = sp0; r10 < sp4; r10++) + } + + for (r10 = sp0; r10 < sp4; r10++) + { + r6 = 0xFF; + r5 = gUnknown_082F449C[r10]; + if (gUnknown_02022C98->unk_00C4[r5] == 1) { - r6 = 0xFF; - r5 = gUnknown_082F449C[r10]; - if (gUnknown_02022C98->unk_00C4[r5] == 1) + r3 = gUnknown_02022C98->unk_0090[sub_8026D8C(r5)] / 7; + if (r3 < 2) { - r3 = gUnknown_02022C98->unk_0090[sub_8026D8C(r5)] / 7; - if (r3 < 2) + r3 = 2; + } + r2 = gUnknown_082F7A88[r3][gUnknown_02022C98->unk_31A0[0].unk_14.unk_0[r5]] - gUnknown_02022C98->unk_00D0[r5]; + if (r2 < 6) + { + gUnknown_02022C98->unk_009C[r5] += r2; + } + if (++gUnknown_02022C98->unk_009C[r5] >= 6) + { + gUnknown_02022C98->unk_009C[r5] = 0; + if (gUnknown_02022C98->unk_00F4[r5][0] != 0xFF && gUnknown_02022C98->unk_00F4[r5][1] == 0xFF) { - r3 = 2; + r4 = gUnknown_02022C98->unk_00F4[r5][0]; } - r2 = gUnknown_082F7A88[r3][gUnknown_02022C98->unk_31A0[0].unk_14.unk_0[r5]] - gUnknown_02022C98->unk_00D0[r5]; - if (r2 < 6) + else if (gUnknown_02022C98->unk_00F4[r5][0] == 0xFF && gUnknown_02022C98->unk_00F4[r5][1] == 0xFF) { - gUnknown_02022C98->unk_009C[r5] += r2; + continue; } - if (++gUnknown_02022C98->unk_009C[r5] < 6) + else { - gUnknown_02022C98->unk_009C[r5] = 0; - if (gUnknown_02022C98->unk_00F4[r5][0] != 0xFF && gUnknown_02022C98->unk_00F4[r5][1] == 0xFF) + r7 = gUnknown_02022C98->unk_00F4[r5][0]; + r7_2 = gUnknown_02022C98->unk_00F4[r5][1]; + if ((Random() & 1)) { - r4 = gUnknown_02022C98->unk_00F4[r5][0]; - } - else if (gUnknown_02022C98->unk_00F4[r5][0] == 0xFF && gUnknown_02022C98->unk_00F4[r5][1] == 0xFF) - { - continue; + r4 = r7_2; + r6 = r7; } else { - r7 = gUnknown_02022C98->unk_00F4[r5][0]; - r7_2 = gUnknown_02022C98->unk_00F4[r5][1]; - if ((Random() & 1)) - { - r4 = r7_2; - r6 = r7; - } - else - { - r4 = r7; - r6 = r7_2; - } + r4 = r7; + r6 = r7_2; } - gUnknown_02022C98->unk_32CC.unk_1F[r5] = 7; - gUnknown_02022C98->unk_00C4[r5] = 2; - gUnknown_02022C98->unk_00A8[r4] = 3; - gUnknown_02022C98->unk_00B8[r5] = r4; - gUnknown_02022C98->unk_31A0[r4].unk_30 = 1; - gUnknown_02022C98->unk_31A0[r6].unk_34 = 1; - gUnknown_02022C98->unk_0086[r4]++; - sub_8026F1C(0, r5, r4); - sub_8027234(1); - sub_8026D1C(r4); - gUnknown_02022C98->unk_00E8[r5] = gUnknown_02022C98->unk_32CC.unk_14.unk_0[r5]; - gUnknown_02022C98->unk_32CC.unk_14.unk_0[r5] = 3; - gUnknown_02022C98->unk_00F4[r5][0] = 0xFF; - gUnknown_02022C98->unk_00F4[r5][1] = 0xFF; } + gUnknown_02022C98->unk_32CC.unk_14.unk_B[r5] = 7; + gUnknown_02022C98->unk_00C4[r5] = 2; + gUnknown_02022C98->unk_00A8[r4] = 3; + gUnknown_02022C98->unk_00B8[r5] = r4; + gUnknown_02022C98->unk_31A0[r4].unk_30 = 1; + gUnknown_02022C98->unk_31A0[r6].unk_34 = 1; + gUnknown_02022C98->unk_0086[r4]++; + sub_8026F1C(0, r5, r4); + sub_8027234(1); + sub_8026D1C(r4); + gUnknown_02022C98->unk_00E8[r5] = gUnknown_02022C98->unk_32CC.unk_14.unk_0[r5]; + gUnknown_02022C98->unk_32CC.unk_14.unk_0[r5] = 3; + gUnknown_02022C98->unk_00F4[r5][0] = 0xFF; + gUnknown_02022C98->unk_00F4[r5][1] = 0xFF; } } } @@ -1964,34 +1964,33 @@ u32 sub_8026634(u8 a0, u8 a1, u8 a2) return FALSE; } -#ifdef NONMATCHING void sub_802671C(void) { u8 r1 = gUnknown_02022C98->unk_0044; u8 r9 = gUnknown_02022C98->unk_0048; + u8 r3 = 0; u8 r10 = 0; u8 i; - u8 r3; u8 r2; - struct DodrioBerryPickingSubstruct_31A0_14 * ptr; + struct DodrioBerryPickingStruct *ptr; gUnknown_02022C98->unk_0120 = 0; for (i = r1; i < r9 - 1; i++) { - ptr = &gUnknown_02022C98->unk_32CC.unk_14; + ptr = gUnknown_02022C98; if (gUnknown_02022C98->unk_00C4[i] == 0 || gUnknown_02022C98->unk_00C4[i] == 1) { gUnknown_02022C98->unk_0120 = 1; - if (ptr->unk_B[i] >= 10) + if (ptr->unk_32CC.unk_14.unk_B[i] >= 10) { - ptr->unk_B[i] = 10; + ptr->unk_32CC.unk_14.unk_B[i] = 10; gUnknown_02022C98->unk_00C4[i] = 3; if (gUnknown_02022C98->unk_0148[i] == 0) { gUnknown_02022C98->unk_0148[i] = 1; - PlaySE(SE_FUUSEN1 + ptr->unk_0[i]); + PlaySE(SE_FUUSEN1 + ptr->unk_32CC.unk_14.unk_0[i]); } if (gUnknown_02022C98->unk_0040 < 10 || r10 == 1) { @@ -2008,14 +2007,14 @@ void sub_802671C(void) else { r3 = gUnknown_02022C98->unk_0090[sub_8026D8C(i)] / 7; - if (r3 < 2) + if (r3 >= 2) { r3 = 2; } - r2 = gUnknown_082F7A88[r3][ptr->unk_0[i]]; + r2 = gUnknown_082F7A88[r3][ptr->unk_32CC.unk_14.unk_0[i]]; if (++gUnknown_02022C98->unk_00D0[i] >= r2) { - ptr->unk_B[i]++; + ptr->unk_32CC.unk_14.unk_B[i]++; gUnknown_02022C98->unk_00D0[i] = 0; } sub_8026324(); @@ -2030,8 +2029,8 @@ void sub_802671C(void) gUnknown_02022C98->unk_00DC[i] = 0; gUnknown_02022C98->unk_00D0[i] = 0; gUnknown_02022C98->unk_00C4[i] = 0; - ptr->unk_B[i] = 1; - ptr->unk_0[i] = sub_8026DB0(sub_8026D8C(i), i); + ptr->unk_32CC.unk_14.unk_B[i] = 1; + ptr->unk_32CC.unk_14.unk_0[i] = sub_8026DB0(sub_8026D8C(i), i); } } else if (gUnknown_02022C98->unk_00C4[i] == 3) @@ -2043,313 +2042,11 @@ void sub_802671C(void) gUnknown_02022C98->unk_00DC[i] = 0; gUnknown_02022C98->unk_00D0[i] = 0; gUnknown_02022C98->unk_00C4[i] = 0; - ptr->unk_B[i] = 1; - gUnknown_02022C98->unk_00E8[i] = ptr->unk_0[i]; - ptr->unk_0[i] = sub_8026DB0(sub_8026D8C(i), i); + ptr->unk_32CC.unk_14.unk_B[i] = 1; + gUnknown_02022C98->unk_00E8[i] = ptr->unk_32CC.unk_14.unk_0[i]; + ptr->unk_32CC.unk_14.unk_0[i] = sub_8026DB0(sub_8026D8C(i), i); } } } } } -#else -NAKED -void sub_802671C(void) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tldr r2, =gUnknown_02022C98\n" - "\tldr r4, [r2]\n" - "\tadds r0, r4, 0\n" - "\tadds r0, 0x44\n" - "\tldrb r1, [r0]\n" - "\tadds r0, 0x4\n" - "\tldrb r0, [r0]\n" - "\tmov r9, r0\n" - "\tmovs r3, 0\n" - "\tmov r10, r3\n" - "\tmovs r5, 0x90\n" - "\tlsls r5, 1\n" - "\tadds r0, r4, r5\n" - "\tstr r3, [r0]\n" - "\tadds r5, r1, 0\n" - "\tmov r0, r9\n" - "\tsubs r0, 0x1\n" - "\tcmp r5, r0\n" - "\tblt _0802674E\n" - "\tb _08026974\n" - "_0802674E:\n" - "\tmov r8, r2\n" - "_08026750:\n" - "\tmov r0, r8\n" - "\tldr r4, [r0]\n" - "\tadds r0, r4, 0\n" - "\tadds r0, 0xC4\n" - "\tadds r0, r5\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0x1\n" - "\tbls _08026762\n" - "\tb _0802686C\n" - "_08026762:\n" - "\tmovs r1, 0x90\n" - "\tlsls r1, 1\n" - "\tadds r0, r4, r1\n" - "\tmovs r2, 0x1\n" - "\tstr r2, [r0]\n" - "\tldr r1, =0x000032eb\n" - "\tadds r0, r4, r1\n" - "\tadds r6, r0, r5\n" - "\tldrb r0, [r6]\n" - "\tcmp r0, 0x9\n" - "\tbls _080267FC\n" - "\tmovs r7, 0\n" - "\tmovs r0, 0xA\n" - "\tstrb r0, [r6]\n" - "\tmov r1, r8\n" - "\tldr r0, [r1]\n" - "\tadds r0, 0xC4\n" - "\tadds r0, r5\n" - "\tmovs r1, 0x3\n" - "\tstrb r1, [r0]\n" - "\tmov r1, r8\n" - "\tldr r0, [r1]\n" - "\tmovs r6, 0xA4\n" - "\tlsls r6, 1\n" - "\tadds r0, r6\n" - "\tadds r1, r0, r5\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0\n" - "\tbne _080267AC\n" - "\tstrb r2, [r1]\n" - "\tldr r2, =0x000032e0\n" - "\tadds r0, r4, r2\n" - "\tadds r0, r5\n" - "\tldrb r0, [r0]\n" - "\tadds r0, 0x4A\n" - "\tbl PlaySE\n" - "_080267AC:\n" - "\tmov r0, r8\n" - "\tldr r1, [r0]\n" - "\tadds r0, r1, 0\n" - "\tadds r0, 0x40\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0x9\n" - "\tbls _080267C2\n" - "\tmov r2, r10\n" - "\tcmp r2, 0x1\n" - "\tbeq _080267C2\n" - "\tb _08026964\n" - "_080267C2:\n" - "\tmovs r0, 0x1\n" - "\tmov r10, r0\n" - "\tadds r0, r1, r6\n" - "\tadds r0, r5\n" - "\tstrb r7, [r0]\n" - "\tmov r1, r8\n" - "\tldr r0, [r1]\n" - "\tadds r1, r0, 0\n" - "\tadds r1, 0x40\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0x9\n" - "\tbhi _080267DE\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r1]\n" - "_080267DE:\n" - "\tmovs r0, 0x3\n" - "\tadds r1, r5, 0\n" - "\tmovs r2, 0\n" - "\tbl sub_8026F1C\n" - "\tmovs r0, 0\n" - "\tbl sub_8027234\n" - "\tb _08026964\n" - "\t.pool\n" - "_080267FC:\n" - "\tadds r0, r5, 0\n" - "\tbl sub_8026D8C\n" - "\tmov r2, r8\n" - "\tldr r7, [r2]\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tadds r1, r7, 0\n" - "\tadds r1, 0x90\n" - "\tadds r1, r0\n" - "\tldrb r0, [r1]\n" - "\tmovs r1, 0x7\n" - "\tbl __udivsi3\n" - "\tlsls r0, 24\n" - "\tlsrs r3, r0, 24\n" - "\tcmp r3, 0x1\n" - "\tbls _08026822\n" - "\tmovs r3, 0x2\n" - "_08026822:\n" - "\tldr r2, =gUnknown_082F7A88\n" - "\tldr r0, =0x000032e0\n" - "\tadds r1, r4, r0\n" - "\tadds r1, r5\n" - "\tlsls r0, r3, 1\n" - "\tadds r0, r3\n" - "\tldrb r1, [r1]\n" - "\tadds r0, r1\n" - "\tadds r0, r2\n" - "\tldrb r2, [r0]\n" - "\tadds r1, r7, 0\n" - "\tadds r1, 0xD0\n" - "\tadds r1, r5\n" - "\tldrb r0, [r1]\n" - "\tadds r0, 0x1\n" - "\tmovs r3, 0\n" - "\tstrb r0, [r1]\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, r2\n" - "\tbcc _0802685C\n" - "\tldrb r0, [r6]\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r6]\n" - "\tmov r1, r8\n" - "\tldr r0, [r1]\n" - "\tadds r0, 0xD0\n" - "\tadds r0, r5\n" - "\tstrb r3, [r0]\n" - "_0802685C:\n" - "\tbl sub_8026324\n" - "\tb _08026964\n" - "\t.pool\n" - "_0802686C:\n" - "\tcmp r0, 0x2\n" - "\tbne _080268F4\n" - "\tmovs r2, 0x90\n" - "\tlsls r2, 1\n" - "\tadds r0, r4, r2\n" - "\tmovs r6, 0x1\n" - "\tstr r6, [r0]\n" - "\tadds r1, r4, 0\n" - "\tadds r1, 0xDC\n" - "\tadds r1, r5\n" - "\tldrb r0, [r1]\n" - "\tadds r0, 0x1\n" - "\tmovs r3, 0\n" - "\tstrb r0, [r1]\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x13\n" - "\tbls _08026964\n" - "\tmov r0, r8\n" - "\tldr r2, [r0]\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0xB8\n" - "\tadds r0, r5\n" - "\tldrb r1, [r0]\n" - "\tlsls r0, r1, 4\n" - "\tsubs r0, r1\n" - "\tlsls r0, 2\n" - "\tadds r2, r0\n" - "\tldr r1, =0x000031d0\n" - "\tadds r2, r1\n" - "\tstrb r3, [r2]\n" - "\tmov r2, r8\n" - "\tldr r0, [r2]\n" - "\tadds r0, 0xDC\n" - "\tadds r0, r5\n" - "\tstrb r3, [r0]\n" - "\tldr r0, [r2]\n" - "\tadds r0, 0xD0\n" - "\tadds r0, r5\n" - "\tstrb r3, [r0]\n" - "\tldr r0, [r2]\n" - "\tadds r0, 0xC4\n" - "\tadds r0, r5\n" - "\tstrb r3, [r0]\n" - "\tldr r1, =0x000032eb\n" - "\tadds r0, r4, r1\n" - "\tadds r0, r5\n" - "\tstrb r6, [r0]\n" - "\tadds r0, r5, 0\n" - "\tbl sub_8026D8C\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tadds r1, r5, 0\n" - "\tbl sub_8026DB0\n" - "\tldr r2, =0x000032e0\n" - "\tadds r1, r4, r2\n" - "\tadds r1, r5\n" - "\tstrb r0, [r1]\n" - "\tb _08026964\n" - "\t.pool\n" - "_080268F4:\n" - "\tcmp r0, 0x3\n" - "\tbne _08026964\n" - "\tadds r1, r4, 0\n" - "\tadds r1, 0xDC\n" - "\tadds r1, r5\n" - "\tldrb r0, [r1]\n" - "\tadds r0, 0x1\n" - "\tmovs r2, 0\n" - "\tstrb r0, [r1]\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x13\n" - "\tbls _08026964\n" - "\tmov r0, r8\n" - "\tldr r1, [r0]\n" - "\tadds r0, r1, 0\n" - "\tadds r0, 0x40\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0x9\n" - "\tbhi _08026964\n" - "\tadds r0, r1, 0\n" - "\tadds r0, 0xDC\n" - "\tadds r0, r5\n" - "\tstrb r2, [r0]\n" - "\tmov r1, r8\n" - "\tldr r0, [r1]\n" - "\tadds r0, 0xD0\n" - "\tadds r0, r5\n" - "\tstrb r2, [r0]\n" - "\tldr r0, [r1]\n" - "\tadds r0, 0xC4\n" - "\tadds r0, r5\n" - "\tstrb r2, [r0]\n" - "\tldr r2, =0x000032eb\n" - "\tadds r0, r4, r2\n" - "\tadds r0, r5\n" - "\tmovs r1, 0x1\n" - "\tstrb r1, [r0]\n" - "\tmov r0, r8\n" - "\tldr r1, [r0]\n" - "\tadds r1, 0xE8\n" - "\tadds r1, r5\n" - "\tsubs r2, 0xB\n" - "\tadds r4, r2\n" - "\tadds r4, r5\n" - "\tldrb r0, [r4]\n" - "\tstrb r0, [r1]\n" - "\tadds r0, r5, 0\n" - "\tbl sub_8026D8C\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tadds r1, r5, 0\n" - "\tbl sub_8026DB0\n" - "\tstrb r0, [r4]\n" - "_08026964:\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tmov r0, r9\n" - "\tsubs r0, 0x1\n" - "\tcmp r5, r0\n" - "\tbge _08026974\n" - "\tb _08026750\n" - "_08026974:\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.pool"); -} -#endif // NONMATCHING diff --git a/src/link_rfu.c b/src/link_rfu.c index 9732e98891..3728b12196 100644 --- a/src/link_rfu.c +++ b/src/link_rfu.c @@ -2914,70 +2914,21 @@ void sub_800EF88(u8 a0) } } -#ifdef NONMATCHING -// FIXME: gUnknown_03005000.unk_c87 should be in r5 -// FIXME: gRecvCmds should be in r6 and r7 void sub_800EFB0(void) { s32 i, j; + for (i = 0; i < 5; i++) { + struct UnkRfuStruct_2 *ptr = &gUnknown_03005000; for (j = 0; j < 7; j++) { - gUnknown_03005000.unk_c87[i][j][1] = gRecvCmds[i][j] >> 8; - gUnknown_03005000.unk_c87[i][j][0] = gRecvCmds[i][j]; + ptr->unk_c87[i][j][1] = gRecvCmds[i][j] >> 8; + ptr->unk_c87[i][j][0] = gRecvCmds[i][j]; } } CpuFill16(0, gRecvCmds, sizeof gRecvCmds); } -#else -NAKED void sub_800EFB0(void) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tsub sp, 0x4\n" - "\tmovs r2, 0\n" - "\tldr r7, =gRecvCmds\n" - "\tldr r0, =gUnknown_03005000\n" - "\tadds r6, r7, 0\n" - "\tldr r1, =0x00000c87\n" - "\tadds r5, r0, r1\n" - "_0800EFC0:\n" - "\tmovs r3, 0\n" - "\tlsls r0, r2, 3\n" - "\tlsls r1, r2, 4\n" - "\tadds r4, r2, 0x1\n" - "\tsubs r0, r2\n" - "\tlsls r0, 1\n" - "\tadds r2, r0, r5\n" - "\tadds r1, r6\n" - "_0800EFD0:\n" - "\tldrh r0, [r1]\n" - "\tlsrs r0, 8\n" - "\tstrb r0, [r2, 0x1]\n" - "\tldrh r0, [r1]\n" - "\tstrb r0, [r2]\n" - "\tadds r2, 0x2\n" - "\tadds r1, 0x2\n" - "\tadds r3, 0x1\n" - "\tcmp r3, 0x6\n" - "\tble _0800EFD0\n" - "\tadds r2, r4, 0\n" - "\tcmp r2, 0x4\n" - "\tble _0800EFC0\n" - "\tmovs r0, 0\n" - "\tmov r1, sp\n" - "\tstrh r0, [r1]\n" - "\tldr r2, =0x01000028\n" - "\tmov r0, sp\n" - "\tadds r1, r7, 0\n" - "\tbl CpuSet\n" - "\tadd sp, 0x4\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.pool"); -} -#endif void sub_800F014(void) { diff --git a/src/palette.c b/src/palette.c index 5d1d6635c3..eb49ce4c60 100644 --- a/src/palette.c +++ b/src/palette.c @@ -54,8 +54,10 @@ static void UpdateBlendRegisters(void); static bool8 IsSoftwarePaletteFadeFinishing(void); static void sub_80A2D54(u8 taskId); -EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0}; -EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0}; +// palette buffers require alignment with agbcc because +// unaligned word reads are issued in BlendPalette otherwise +ALIGNED(4) EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0}; +ALIGNED(4) EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0}; EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0}; EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0}; static EWRAM_DATA u32 gFiller_2037FE0 = 0; diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 70fa42541f..5c1fb59f71 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -96,7 +96,7 @@ typedef union { struct UnkStruct_08625388 { u16 idx; u16 v2; - u16 v4; + u32 v4; const u8 *v8[4]; }; @@ -1209,7 +1209,6 @@ static void MatchCall_GetNameAndDescByRematchIdx(u32 idx, const u8 **desc, const *name = trainer->trainerName; } -#ifdef NONMATCHING const u8 *sub_81D1B40(u32 idx, u32 offset) { u32 i; @@ -1218,95 +1217,21 @@ const u8 *sub_81D1B40(u32 idx, u32 offset) { if (sMatchCallCheckPageOverrides[i].idx == idx) { - for (; i + 1 < ARRAY_COUNT(sMatchCallCheckPageOverrides) && sMatchCallCheckPageOverrides[i + 1].idx == idx; i++) + while (1) { + if (i + 1 >= ARRAY_COUNT(sMatchCallCheckPageOverrides)) + break; + if (sMatchCallCheckPageOverrides[i + 1].idx != idx) + break; if (!FlagGet(sMatchCallCheckPageOverrides[i + 1].v4)) break; + i++; } return sMatchCallCheckPageOverrides[i].v8[offset]; } } return NULL; } -#else -NAKED const u8 *sub_81D1B40(u32 idx, u32 offset) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r9\n" - "\tmov r6, r8\n" - "\tpush {r6,r7}\n" - "\tadds r6, r0, 0\n" - "\tmovs r5, 0\n" - "\tldr r2, =sMatchCallCheckPageOverrides\n" - "\tmovs r0, 0x8\n" - "\tadds r0, r2\n" - "\tmov r9, r0\n" - "_081D1B54:\n" - "\tlsls r0, r5, 1\n" - "\tadds r0, r5\n" - "\tlsls r0, 3\n" - "\tadds r0, r2\n" - "\tldrh r0, [r0]\n" - "\tcmp r0, r6\n" - "\tbne _081D1BBC\n" - "\tadds r4, r5, 0x1\n" - "\tlsls r1, 2\n" - "\tmov r8, r1\n" - "\tcmp r4, 0x3\n" - "\tbhi _081D1BA8\n" - "\tlsls r0, r4, 1\n" - "\tadds r0, r4\n" - "\tlsls r0, 3\n" - "\tadds r0, r2\n" - "\tldrh r0, [r0]\n" - "\tcmp r0, r6\n" - "\tbne _081D1BA8\n" - "\tldr r7, =sMatchCallCheckPageOverrides\n" - "_081D1B7C:\n" - "\tlsls r0, r4, 1\n" - "\tadds r0, r4\n" - "\tlsls r0, 3\n" - "\tadds r1, r7, 0x4\n" - "\tadds r0, r1\n" - "\tldrh r0, [r0]\n" - "\tbl FlagGet\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _081D1BA8\n" - "\tadds r5, r4, 0\n" - "\tadds r4, r5, 0x1\n" - "\tcmp r4, 0x3\n" - "\tbhi _081D1BA8\n" - "\tlsls r0, r4, 1\n" - "\tadds r0, r4\n" - "\tlsls r0, 3\n" - "\tadds r0, r7\n" - "\tldrh r0, [r0]\n" - "\tcmp r0, r6\n" - "\tbeq _081D1B7C\n" - "_081D1BA8:\n" - "\tlsls r0, r5, 1\n" - "\tadds r0, r5\n" - "\tlsls r0, 3\n" - "\tadd r0, r8\n" - "\tadd r0, r9\n" - "\tldr r0, [r0]\n" - "\tb _081D1BC4\n" - "\t.pool\n" - "_081D1BBC:\n" - "\tadds r5, 0x1\n" - "\tcmp r5, 0x3\n" - "\tbls _081D1B54\n" - "\tmovs r0, 0\n" - "_081D1BC4:\n" - "\tpop {r3,r4}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tpop {r4-r7}\n" - "\tpop {r1}\n" - "\tbx r1"); -} -#endif int sub_81D1BD0(u32 idx) { diff --git a/src/text.c b/src/text.c index 43834eab4d..91a82b19fc 100644 --- a/src/text.c +++ b/src/text.c @@ -197,7 +197,7 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, voi gTempTextPrinter.textSpeed = 0; for (j = 0; j < 0x400; ++j) { - if ((u32)RenderFont(&gTempTextPrinter) == 1) + if (RenderFont(&gTempTextPrinter) == 1) break; }