diff options
author | Kaz <kazbloxmc@gmail.com> | 2020-05-29 01:27:27 -0400 |
---|---|---|
committer | Kaz <kazbloxmc@gmail.com> | 2020-05-29 01:27:27 -0400 |
commit | f5ff35770ee158d317aa709e7d814e31e5cca793 (patch) | |
tree | 6b0dd4907d38c1d8bb1f6d58ead75d170636632e /src | |
parent | d673e589f63ebf56563558cc5a47f1414c289c8a (diff) |
trainer_card.c: WTFmatch TrainerCard_Scale[Down/Up]FlipAnimation
Diffstat (limited to 'src')
-rw-r--r-- | src/trainer_card.c | 386 |
1 files changed, 61 insertions, 325 deletions
diff --git a/src/trainer_card.c b/src/trainer_card.c index b6eb28005..0e44c7cfc 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -816,19 +816,12 @@ bool8 TrainerCard_InitFlipAnimation(struct Task *task) return FALSE; } -/* bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) { - u32 r7; - u16 r9; - u32 r6; - u32 r5; - u32 r4; - u32 r10; - u32 sp0; s16 i; + u32 r4, r5, r10, r7, r6, var_24, r9, var; - ewram0_2.var_4 = 0; + ewram0_2.var_4 = FALSE; task->data[1] += 3; if (task->data[1] > 79) task->data[1] = 79; @@ -837,183 +830,33 @@ bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) r9 = 160 - r7; r4 = r9 - r7; r6 = -r7 << 16; - r5 = (160 << 16) / r4; - r5 -= 1 << 16; - r10 = r5 * r4 + r6; - sp0 = r5 / r4; + r5 = 0xA00000 / r4; + r5 += 0xFFFF0000; + var_24 = r6 + r5 * r4; + r10 = r5 / r4; r5 *= 2; - for (i = 0; i < r7; i++) - { - gScanlineEffectRegBuffers.filler0[i] = -4 - (u32)i; - } - //_08093B74 - for (; i < r9; i++) + for (i = 0; i < r7; + // WHAT?! + gScanlineEffectRegBuffers[0][i] = (u32)-i + -4, + i++); + for (; i < (s16)r9; i++) { - u16 var = r6 >> 16; + var = r6 >> 16; r6 += r5; - r5 -= sp0; - gScanlineEffectRegBuffers.filler0[i] = -4 + var; + r5 -= r10; + gScanlineEffectRegBuffers[0][i] = var + -4; } - for (; i < 160; i++) - gScanlineEffectRegBuffers.filler0[i] = -4 + (u16)(r10 >> 16); - ewram0_2.var_4 = 1; - if (task->data[1] > 0x4A) + for (var = var_24 >> 16; i < 160; + // WHAT?! + gScanlineEffectRegBuffers[0][i] = var + -4, + i++); + + ewram0_2.var_4 = TRUE; + if (task->data[1] > 74) task->data[0]++; - return FALSE; -} -*/ -NAKED -bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) -{ - 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, 0x4\n\ - mov r8, r0\n\ - ldr r1, _08093BFC @ =gSharedMem\n\ - movs r0, 0\n\ - strb r0, [r1, 0x4]\n\ - mov r2, r8\n\ - ldrh r0, [r2, 0xA]\n\ - adds r0, 0x3\n\ - strh r0, [r2, 0xA]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x4F\n\ - ble _08093B18\n\ - movs r0, 0x4F\n\ - strh r0, [r2, 0xA]\n\ -_08093B18:\n\ - mov r4, r8\n\ - movs r0, 0xA\n\ - ldrsh r7, [r4, r0]\n\ - movs r0, 0xA0\n\ - subs r0, r7\n\ - mov r9, r0\n\ - subs r4, r0, r7\n\ - negs r0, r7\n\ - lsls r6, r0, 16\n\ - movs r0, 0xA0\n\ - lsls r0, 16\n\ - adds r1, r4, 0\n\ - bl __udivsi3\n\ - adds r5, r0, 0\n\ - ldr r1, _08093C00 @ =0xffff0000\n\ - adds r5, r1\n\ - adds r0, r5, 0\n\ - muls r0, r4\n\ - adds r0, r6\n\ - mov r10, r0\n\ - adds r0, r5, 0\n\ - adds r1, r4, 0\n\ - bl __udivsi3\n\ - str r0, [sp]\n\ - lsls r5, 1\n\ - movs r3, 0\n\ - cmp r3, r7\n\ - bcs _08093B74\n\ - ldr r2, _08093C04 @ =gScanlineEffectRegBuffers\n\ - mov r12, r2\n\ - ldr r0, _08093C08 @ =0x0000fffc\n\ - adds r4, r0, 0\n\ -_08093B5C:\n\ - lsls r0, r3, 16\n\ - asrs r0, 16\n\ - lsls r1, r0, 1\n\ - add r1, r12\n\ - subs r2, r4, r0\n\ - strh r2, [r1]\n\ - adds r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - asrs r0, 16\n\ - cmp r0, r7\n\ - bcc _08093B5C\n\ -_08093B74:\n\ - lsls r2, r3, 16\n\ - mov r1, r9\n\ - lsls r0, r1, 16\n\ - asrs r1, r0, 16\n\ - mov r4, r10\n\ - lsrs r7, r4, 16\n\ - cmp r2, r0\n\ - bge _08093BAE\n\ - ldr r0, _08093C04 @ =gScanlineEffectRegBuffers\n\ - mov r9, r0\n\ - ldr r4, _08093C08 @ =0x0000fffc\n\ - mov r12, r4\n\ - adds r4, r1, 0\n\ -_08093B8E:\n\ - lsrs r1, r6, 16\n\ - adds r6, r5\n\ - ldr r0, [sp]\n\ - subs r5, r0\n\ - asrs r2, 16\n\ - lsls r0, r2, 1\n\ - add r0, r9\n\ - add r1, r12\n\ - strh r1, [r0]\n\ - adds r2, 0x1\n\ - lsls r2, 16\n\ - lsrs r3, r2, 16\n\ - lsls r2, r3, 16\n\ - asrs r0, r2, 16\n\ - cmp r0, r4\n\ - blt _08093B8E\n\ -_08093BAE:\n\ - adds r1, r7, 0\n\ - lsls r0, r3, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x9F\n\ - bgt _08093BD4\n\ - ldr r4, _08093C04 @ =gScanlineEffectRegBuffers\n\ - ldr r0, _08093C08 @ =0x0000fffc\n\ - adds r2, r1, r0\n\ -_08093BBE:\n\ - lsls r1, r3, 16\n\ - asrs r1, 16\n\ - lsls r0, r1, 1\n\ - adds r0, r4\n\ - strh r2, [r0]\n\ - adds r1, 0x1\n\ - lsls r1, 16\n\ - lsrs r3, r1, 16\n\ - asrs r1, 16\n\ - cmp r1, 0x9F\n\ - ble _08093BBE\n\ -_08093BD4:\n\ - movs r0, 0x1\n\ - ldr r1, _08093BFC @ =gSharedMem\n\ - strb r0, [r1, 0x4]\n\ - mov r2, r8\n\ - movs r4, 0xA\n\ - ldrsh r0, [r2, r4]\n\ - cmp r0, 0x4A\n\ - ble _08093BEA\n\ - ldrh r0, [r2, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x8]\n\ -_08093BEA:\n\ - movs r0, 0\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 {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_08093BFC: .4byte gSharedMem\n\ -_08093C00: .4byte 0xffff0000\n\ -_08093C04: .4byte gScanlineEffectRegBuffers\n\ -_08093C08: .4byte 0x0000fffc\n\ - .syntax divided\n"); + return FALSE; } bool8 TrainerCard_SwitchToNewSide(struct Task *task) @@ -1028,154 +871,47 @@ bool8 TrainerCard_SwitchToNewSide(struct Task *task) return TRUE; } -NAKED bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *task) { - 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, 0x4\n\ - mov r8, r0\n\ - ldr r1, _08093D40 @ =gSharedMem\n\ - movs r2, 0\n\ - strb r2, [r1, 0x4]\n\ - ldrh r0, [r0, 0xA]\n\ - subs r0, 0x3\n\ - mov r3, r8\n\ - strh r0, [r3, 0xA]\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - bgt _08093C5C\n\ - strh r2, [r3, 0xA]\n\ -_08093C5C:\n\ - mov r4, r8\n\ - movs r0, 0xA\n\ - ldrsh r7, [r4, r0]\n\ - movs r0, 0xA0\n\ - subs r0, r7\n\ - mov r9, r0\n\ - subs r4, r0, r7\n\ - negs r0, r7\n\ - lsls r6, r0, 16\n\ - movs r0, 0xA0\n\ - lsls r0, 16\n\ - adds r1, r4, 0\n\ - bl __udivsi3\n\ - adds r5, r0, 0\n\ - ldr r1, _08093D44 @ =0xffff0000\n\ - adds r5, r1\n\ - adds r0, r5, 0\n\ - muls r0, r4\n\ - adds r0, r6\n\ - mov r10, r0\n\ - adds r0, r5, 0\n\ - adds r1, r4, 0\n\ - bl __udivsi3\n\ - str r0, [sp]\n\ - lsrs r5, 1\n\ - movs r3, 0\n\ - cmp r3, r7\n\ - bcs _08093CB8\n\ - ldr r2, _08093D48 @ =gScanlineEffectRegBuffers\n\ - mov r12, r2\n\ - ldr r0, _08093D4C @ =0x0000fffc\n\ - adds r4, r0, 0\n\ -_08093CA0:\n\ - lsls r0, r3, 16\n\ - asrs r0, 16\n\ - lsls r1, r0, 1\n\ - add r1, r12\n\ - subs r2, r4, r0\n\ - strh r2, [r1]\n\ - adds r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - asrs r0, 16\n\ - cmp r0, r7\n\ - bcc _08093CA0\n\ -_08093CB8:\n\ - lsls r2, r3, 16\n\ - mov r1, r9\n\ - lsls r0, r1, 16\n\ - asrs r1, r0, 16\n\ - mov r4, r10\n\ - lsrs r7, r4, 16\n\ - cmp r2, r0\n\ - bge _08093CF2\n\ - ldr r0, _08093D48 @ =gScanlineEffectRegBuffers\n\ - mov r9, r0\n\ - ldr r3, _08093D4C @ =0x0000fffc\n\ - mov r12, r3\n\ - adds r4, r1, 0\n\ -_08093CD2:\n\ - lsrs r1, r6, 16\n\ - adds r6, r5\n\ - ldr r0, [sp]\n\ - adds r5, r0\n\ - asrs r2, 16\n\ - lsls r0, r2, 1\n\ - add r0, r9\n\ - add r1, r12\n\ - strh r1, [r0]\n\ - adds r2, 0x1\n\ - lsls r2, 16\n\ - lsrs r3, r2, 16\n\ - lsls r2, r3, 16\n\ - asrs r0, r2, 16\n\ - cmp r0, r4\n\ - blt _08093CD2\n\ -_08093CF2:\n\ - adds r1, r7, 0\n\ - lsls r0, r3, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x9F\n\ - bgt _08093D18\n\ - ldr r4, _08093D48 @ =gScanlineEffectRegBuffers\n\ - ldr r0, _08093D4C @ =0x0000fffc\n\ - adds r2, r1, r0\n\ -_08093D02:\n\ - lsls r1, r3, 16\n\ - asrs r1, 16\n\ - lsls r0, r1, 1\n\ - adds r0, r4\n\ - strh r2, [r0]\n\ - adds r1, 0x1\n\ - lsls r1, 16\n\ - lsrs r3, r1, 16\n\ - asrs r1, 16\n\ - cmp r1, 0x9F\n\ - ble _08093D02\n\ -_08093D18:\n\ - movs r0, 0x1\n\ - ldr r1, _08093D40 @ =gSharedMem\n\ - strb r0, [r1, 0x4]\n\ - mov r2, r8\n\ - movs r3, 0xA\n\ - ldrsh r0, [r2, r3]\n\ - cmp r0, 0\n\ - bgt _08093D2E\n\ - ldrh r0, [r2, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x8]\n\ -_08093D2E:\n\ - movs r0, 0\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 {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_08093D40: .4byte gSharedMem\n\ -_08093D44: .4byte 0xffff0000\n\ -_08093D48: .4byte gScanlineEffectRegBuffers\n\ -_08093D4C: .4byte 0x0000fffc\n\ - .syntax divided\n"); + s16 i; + u32 r4, r5, r10, r7, r6, var_24, r9, var; + + ewram0_2.var_4 = FALSE; + task->data[1] -= 3; + if (task->data[1] <= 0) + task->data[1] = 0; + + r7 = task->data[1]; + r9 = 160 - r7; + r4 = r9 - r7; + r6 = -r7 << 16; + r5 = 0xA00000 / r4; + r5 += 0xFFFF0000; + var_24 = r6 + r5 * r4; + r10 = r5 / r4; + r5 /= 2; + + for (i = 0; i < r7; + // WHAT?! + gScanlineEffectRegBuffers[0][i] = (u32)-i + -4, + i++); + for (; i < (s16)r9; i++) + { + var = r6 >> 16; + r6 += r5; + r5 += r10; + gScanlineEffectRegBuffers[0][i] = var + -4; + } + for (var = var_24 >> 16; i < 160; + // WHAT?! + gScanlineEffectRegBuffers[0][i] = var + -4, + i++); + + ewram0_2.var_4 = TRUE; + if (task->data[1] <= 0) + task->data[0]++; + + return FALSE; } bool8 TrainerCard_FinishFlipAnimation(struct Task *task) |