diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2020-08-19 01:04:35 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-19 01:04:35 -0400 |
commit | 5d6e7a31da8f018c1a69e9e57eca0657ec19c283 (patch) | |
tree | 3ce548fbada787a8d2dc686ef6612f06e2b9fc3a /src/battle/anim/dark.c | |
parent | 9effc97f69d46af00e45420661a775c5977049c8 (diff) | |
parent | 3d96e954c845659f5184e99856ddf61ce1375b2f (diff) |
Merge pull request #788 from kazblox/master
Fix NONMATCHINGs and actual English Debug support
Diffstat (limited to 'src/battle/anim/dark.c')
-rw-r--r-- | src/battle/anim/dark.c | 254 |
1 files changed, 47 insertions, 207 deletions
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index d3d992bda..08aafe195 100644 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -730,215 +730,55 @@ static void sub_80E0620(u8 taskId) } } -// static void sub_80E079C(struct Task *task) -// { -// int var0, var1; -// s16 var2; -// s16 i, j; - -// var2 = task->data[5] - task->data[4]; -// if (var2 != 0) -// { -// var0 = task->data[13] / var2; -// var1 = task->data[6]; - -// for (i = 0; i < task->data[4]; i++) -// { -// gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[10] - (i - 159); -// } - -// for (i = task->data[4]; i <= task->data[5]; i++) -// { -// if (i >= 0) -// { -// gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = (var1 - i) + task->data[10]; -// } - -// var1 += var0; -// } - -// for (j = i; j < task->data[7]; j++) -// { -// if (j >= 0) -// { -// gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][j] = (task->data[10] + 159) - j; -// } -// } -// } -// else -// { -// for (i = 0; i < 112; i++) -// { -// gScanlineEffectRegBuffers[0][i] = task->data[10] + 159 - i; -// gScanlineEffectRegBuffers[1][i] = task->data[10] + 159 - i; -// } -// } -// } - -NAKED static void sub_80E079C(struct Task *task) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - adds r6, r0, 0\n\ - ldrh r0, [r6, 0x12]\n\ - ldrh r4, [r6, 0x10]\n\ - subs r0, r4\n\ - lsls r0, 16\n\ - asrs r1, r0, 16\n\ - cmp r1, 0\n\ - beq _080E0890\n\ - movs r2, 0x22\n\ - ldrsh r0, [r6, r2]\n\ - bl __divsi3\n\ - mov r8, r0\n\ - movs r3, 0x14\n\ - ldrsh r0, [r6, r3]\n\ - lsls r5, r0, 8\n\ - lsls r0, r4, 16\n\ - movs r4, 0\n\ - cmp r0, 0\n\ - ble _080E07FC\n\ - ldr r0, _080E0888 @ =gScanlineEffectRegBuffers\n\ - mov r12, r0\n\ - ldr r7, _080E088C @ =gScanlineEffect\n\ -_080E07D0:\n\ - lsls r2, r4, 16\n\ - asrs r2, 16\n\ - lsls r3, r2, 1\n\ - ldrb r1, [r7, 0x14]\n\ - lsls r0, r1, 4\n\ - subs r0, r1\n\ - lsls r0, 7\n\ - adds r3, r0\n\ - add r3, r12\n\ - adds r1, r2, 0\n\ - subs r1, 0x9F\n\ - ldrh r0, [r6, 0x1C]\n\ - subs r0, r1\n\ - strh r0, [r3]\n\ - adds r2, 0x1\n\ - lsls r2, 16\n\ - lsrs r4, r2, 16\n\ - asrs r2, 16\n\ - movs r1, 0x10\n\ - ldrsh r0, [r6, r1]\n\ - cmp r2, r0\n\ - blt _080E07D0\n\ -_080E07FC:\n\ - ldrh r4, [r6, 0x10]\n\ - lsls r3, r4, 16\n\ - asrs r1, r3, 16\n\ - movs r2, 0x12\n\ - ldrsh r0, [r6, r2]\n\ - cmp r1, r0\n\ - bgt _080E0846\n\ - ldr r0, _080E0888 @ =gScanlineEffectRegBuffers\n\ - mov r12, r0\n\ - ldr r7, _080E088C @ =gScanlineEffect\n\ -_080E0810:\n\ - asrs r4, r3, 16\n\ - cmp r4, 0\n\ - blt _080E0832\n\ - asrs r1, r5, 8\n\ - subs r1, r4\n\ - lsls r3, r4, 1\n\ - ldrb r2, [r7, 0x14]\n\ - lsls r0, r2, 4\n\ - subs r0, r2\n\ - lsls r0, 7\n\ - adds r3, r0\n\ - add r3, r12\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - ldrh r2, [r6, 0x1C]\n\ - adds r1, r2\n\ - strh r1, [r3]\n\ -_080E0832:\n\ - add r5, r8\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - lsls r3, r4, 16\n\ - asrs r1, r3, 16\n\ - movs r2, 0x12\n\ - ldrsh r0, [r6, r2]\n\ - cmp r1, r0\n\ - ble _080E0810\n\ -_080E0846:\n\ - movs r3, 0x1C\n\ - ldrsh r0, [r6, r3]\n\ - adds r0, 0x9F\n\ - lsls r2, r4, 16\n\ - asrs r1, r2, 16\n\ - subs r5, r0, r1\n\ - movs r3, 0x16\n\ - ldrsh r0, [r6, r3]\n\ - cmp r1, r0\n\ - bge _080E08BE\n\ - ldr r7, _080E0888 @ =gScanlineEffectRegBuffers\n\ - ldr r4, _080E088C @ =gScanlineEffect\n\ -_080E085E:\n\ - asrs r3, r2, 16\n\ - cmp r3, 0\n\ - blt _080E0876\n\ - lsls r2, r3, 1\n\ - ldrb r1, [r4, 0x14]\n\ - lsls r0, r1, 4\n\ - subs r0, r1\n\ - lsls r0, 7\n\ - adds r2, r0\n\ - adds r2, r7\n\ - strh r5, [r2]\n\ - subs r5, 0x1\n\ -_080E0876:\n\ - adds r0, r3, 0x1\n\ - lsls r2, r0, 16\n\ - asrs r1, r2, 16\n\ - movs r3, 0x16\n\ - ldrsh r0, [r6, r3]\n\ - cmp r1, r0\n\ - blt _080E085E\n\ - b _080E08BE\n\ - .align 2, 0\n\ -_080E0888: .4byte gScanlineEffectRegBuffers\n\ -_080E088C: .4byte gScanlineEffect\n\ -_080E0890:\n\ - movs r1, 0x1C\n\ - ldrsh r0, [r6, r1]\n\ - adds r5, r0, 0\n\ - adds r5, 0x9F\n\ - movs r4, 0\n\ - ldr r3, _080E08C8 @ =gScanlineEffectRegBuffers\n\ - movs r2, 0xF0\n\ - lsls r2, 3\n\ - adds r6, r3, r2\n\ -_080E08A2:\n\ - lsls r0, r4, 16\n\ - asrs r0, 16\n\ - lsls r2, r0, 1\n\ - adds r1, r2, r3\n\ - strh r5, [r1]\n\ - adds r2, r6\n\ - strh r5, [r2]\n\ - subs r5, 0x1\n\ - adds r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x6F\n\ - ble _080E08A2\n\ -_080E08BE:\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080E08C8: .4byte gScanlineEffectRegBuffers\n\ - .syntax divided\n"); + int var0, var1; + s16 var2; + s16 i; + int var4; + + var2 = task->data[5] - task->data[4]; + if (var2 != 0) + { + var0 = task->data[13] / var2; + var1 = task->data[6] << 8; + + for (i = 0; i < task->data[4]; i++) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[10] - (i - 159); + } + + for (i = task->data[4]; i <= task->data[5]; i++) + { + if (i >= 0) + { + s16 var3 = (var1 >> 8) - i; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = var3 + task->data[10]; + } + + var1 += var0; + } + + var4 = task->data[10] - (i - 159); + for (i = i; i < task->data[7]; i++) + { + if (i >= 0) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = var4; + var4--; + } + } + } + else + { + var4 = task->data[10] + 159; + for (i = 0; i < 112; i++) + { + gScanlineEffectRegBuffers[0][i] = var4; + gScanlineEffectRegBuffers[1][i] = var4; + var4--; + } + } } static void sub_80E08CC(u8 priority) |