diff options
Diffstat (limited to 'src/battle/anim')
-rw-r--r-- | src/battle/anim/current.c | 234 | ||||
-rw-r--r-- | src/battle/anim/water.c | 23 |
2 files changed, 24 insertions, 233 deletions
diff --git a/src/battle/anim/current.c b/src/battle/anim/current.c index 23bf9373d..165bded09 100644 --- a/src/battle/anim/current.c +++ b/src/battle/anim/current.c @@ -484,12 +484,11 @@ void sub_80D681C(u8 taskId) gTasks[taskId].func = sub_80D6874; } -#ifdef NONMATCHING // couldn't get the proper tail merging in the "CreateSprite" switch cases. static void sub_80D6874(u8 taskId) { u16 r8; + u16 r2; s16 r12; - s16 r2; u8 spriteId = 0; u8 r7 = 0; u8 sp = gTasks[taskId].data[2]; @@ -512,27 +511,31 @@ static void sub_80D6874(u8 taskId) switch (gTasks[taskId].data[10]) { case 0: - r8 += r2 * 0; - spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 1), 2); + r12 *= 1; + spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + r12, 2); r7++; break; case 2: + r12 *= 2; r8 += r2; - spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 2), 2); + spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + r12, 2); r7++; break; case 4: + r12 *= 3; r8 += r2 * 2; - spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 3), 2); + spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + r12, 2); r7++; break; case 6: + r12 *= 4; r8 += r2 * 3; - spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 4), 2); + spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + r12, 2); r7++; break; case 8: - spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 5), 2); + r12 *= 5; + spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + r12, 2); r7++; break; case 10: @@ -549,221 +552,6 @@ static void sub_80D6874(u8 taskId) gTasks[taskId].data[10]++; } -#else -NAKED -static void sub_80D6874(u8 taskId) -{ - 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\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - movs r5, 0\n\ - movs r7, 0\n\ - ldr r1, _080D68B4 @ =gTasks\n\ - lsls r0, 2\n\ - add r0, r9\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldrb r2, [r0, 0xC]\n\ - str r2, [sp]\n\ - ldrh r4, [r0, 0x8]\n\ - ldrh r6, [r0, 0xA]\n\ - movs r3, 0xC\n\ - ldrsh r0, [r0, r3]\n\ - mov r10, r1\n\ - cmp r0, 0\n\ - bne _080D68B8\n\ - movs r0, 0\n\ - mov r8, r0\n\ - movs r2, 0x1\n\ - movs r1, 0x10\n\ - mov r12, r1\n\ - b _080D68C2\n\ - .align 2, 0\n\ -_080D68B4: .4byte gTasks\n\ -_080D68B8:\n\ - movs r2, 0x10\n\ - mov r12, r2\n\ - movs r3, 0x8\n\ - mov r8, r3\n\ - movs r2, 0x4\n\ -_080D68C2:\n\ - mov r0, r9\n\ - lsls r1, r0, 2\n\ - adds r0, r1, r0\n\ - lsls r0, 3\n\ - add r0, r10\n\ - movs r3, 0x1C\n\ - ldrsh r0, [r0, r3]\n\ - mov r10, r1\n\ - cmp r0, 0xA\n\ - bhi _080D69B8\n\ - lsls r0, 2\n\ - ldr r1, _080D68E0 @ =_080D68E4\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080D68E0: .4byte _080D68E4\n\ - .align 2, 0\n\ -_080D68E4:\n\ - .4byte _080D6910\n\ - .4byte _080D69B8\n\ - .4byte _080D6924\n\ - .4byte _080D69B8\n\ - .4byte _080D6944\n\ - .4byte _080D69B8\n\ - .4byte _080D695A\n\ - .4byte _080D69B8\n\ - .4byte _080D697C\n\ - .4byte _080D69B8\n\ - .4byte _080D69B0\n\ -_080D6910:\n\ - ldr r0, _080D6920 @ =gSpriteTemplate_83D9938\n\ - lsls r1, r4, 16\n\ - asrs r1, 16\n\ - lsls r2, r6, 16\n\ - asrs r2, 16\n\ - mov r4, r12\n\ - lsls r3, r4, 16\n\ - b _080D6992\n\ - .align 2, 0\n\ -_080D6920: .4byte gSpriteTemplate_83D9938\n\ -_080D6924:\n\ - mov r0, r12\n\ - lsls r3, r0, 17\n\ - mov r1, r8\n\ - adds r0, r1, r2\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - ldr r0, _080D6940 @ =gSpriteTemplate_83D9938\n\ - lsls r1, r4, 16\n\ - asrs r1, 16\n\ - lsls r2, r6, 16\n\ - asrs r2, 16\n\ - b _080D6992\n\ - .align 2, 0\n\ -_080D6940: .4byte gSpriteTemplate_83D9938\n\ -_080D6944:\n\ - mov r3, r12\n\ - lsls r0, r3, 16\n\ - asrs r0, 16\n\ - lsls r3, r0, 1\n\ - adds r3, r0\n\ - lsls r0, r2, 1\n\ - add r0, r8\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - b _080D6986\n\ -_080D695A:\n\ - mov r0, r12\n\ - lsls r3, r0, 18\n\ - lsls r0, r2, 1\n\ - adds r0, r2\n\ - add r0, r8\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - ldr r0, _080D6978 @ =gSpriteTemplate_83D9938\n\ - lsls r1, r4, 16\n\ - asrs r1, 16\n\ - lsls r2, r6, 16\n\ - asrs r2, 16\n\ - b _080D6992\n\ - .align 2, 0\n\ -_080D6978: .4byte gSpriteTemplate_83D9938\n\ -_080D697C:\n\ - mov r1, r12\n\ - lsls r0, r1, 16\n\ - asrs r0, 16\n\ - lsls r3, r0, 2\n\ - adds r3, r0\n\ -_080D6986:\n\ - ldr r0, _080D69AC @ =gSpriteTemplate_83D9938\n\ - lsls r1, r4, 16\n\ - asrs r1, 16\n\ - lsls r2, r6, 16\n\ - asrs r2, 16\n\ - lsls r3, 16\n\ -_080D6992:\n\ - asrs r3, 16\n\ - adds r2, r3\n\ - lsls r2, 16\n\ - asrs r2, 16\n\ - movs r3, 0x2\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - adds r0, r7, 0x1\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - b _080D69B8\n\ - .align 2, 0\n\ -_080D69AC: .4byte gSpriteTemplate_83D9938\n\ -_080D69B0:\n\ - mov r0, r9\n\ - bl DestroyAnimVisualTask\n\ - b _080D69FC\n\ -_080D69B8:\n\ - cmp r7, 0\n\ - beq _080D69EC\n\ - ldr r4, _080D6A0C @ =gSprites\n\ - lsls r3, r5, 4\n\ - adds r3, r5\n\ - lsls r3, 2\n\ - adds r0, r3, r4\n\ - ldrh r5, [r0, 0x4]\n\ - lsls r2, r5, 22\n\ - lsrs r2, 22\n\ - add r2, r8\n\ - ldr r6, _080D6A10 @ =0x000003ff\n\ - adds r1, r6, 0\n\ - ands r2, r1\n\ - ldr r1, _080D6A14 @ =0xfffffc00\n\ - ands r1, r5\n\ - orrs r1, r2\n\ - strh r1, [r0, 0x4]\n\ - mov r1, sp\n\ - ldrh r1, [r1]\n\ - strh r1, [r0, 0x2E]\n\ - adds r4, 0x1C\n\ - adds r3, r4\n\ - ldr r1, [r3]\n\ - bl _call_via_r1\n\ -_080D69EC:\n\ - ldr r0, _080D6A18 @ =gTasks\n\ - mov r1, r10\n\ - add r1, r9\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldrh r0, [r1, 0x1C]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0x1C]\n\ -_080D69FC:\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\ - .align 2, 0\n\ -_080D6A0C: .4byte gSprites\n\ -_080D6A10: .4byte 0x000003ff\n\ -_080D6A14: .4byte 0xfffffc00\n\ -_080D6A18: .4byte gTasks\n\ - .syntax divided\n"); -} -#endif void sub_80D6A1C(struct Sprite *sprite) { diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c index b7074bceb..98e50f17f 100644 --- a/src/battle/anim/water.c +++ b/src/battle/anim/water.c @@ -6,6 +6,8 @@ #include "sprite.h" #include "trig.h" #include "util.h" +#include "scanline_effect.h" +#include "palette.h" #include "constants/battle_anim.h" extern u8 gAnimVisualTaskCount; @@ -23,6 +25,7 @@ void sub_8078F40(u8); void sub_8079A64(u8); void sub_80D37FC(struct Sprite *sprite); void sub_80D3838(struct Sprite *sprite); +void sub_80D3D68(u8 taskId); void sub_80D4044(struct Sprite *sprite); void sub_80D40A8(struct Sprite *); void sub_80D4150(u8); @@ -579,7 +582,7 @@ _080D3B5C: .4byte sub_80D3B60\n\ #ifdef NONMATCHING void sub_80D3B60(u8 taskId) { - struct UnknownAnimStruct2 unk; + struct Struct_sub_8078914 unk; u8 i; u16 rgbBuffer; u16 *BGptrX = &gBattle_BG1_X; @@ -590,18 +593,18 @@ void sub_80D3B60(u8 taskId) *BGptrX += gTasks[taskId].data[0]; *BGptrY += gTasks[taskId].data[1]; - sub_80A6B30(&unk); + sub_8078914(&unk); gTasks[taskId].data[2] += gTasks[taskId].data[1]; if (++gTasks[taskId].data[5] == 4) { - rgbBuffer = gPlttBufferFaded[unk.unk8 * 16 + 7]; + rgbBuffer = gPlttBufferFaded[unk.field_8 * 16 + 7]; for (i = 6; i != 0; i--) { - palNum = unk.unk8 * 16; + palNum = unk.field_8 * 16; palOffset = 1 + i; gPlttBufferFaded[palNum + palOffset] = gPlttBufferFaded[palNum + palOffset - 1]; } - gPlttBufferFaded[unk.unk8 * 16 + 1] = rgbBuffer; + gPlttBufferFaded[unk.field_8 * 16 + 1] = rgbBuffer; gTasks[taskId].data[5] = 0; } if (++gTasks[taskId].data[6] > 1) @@ -622,7 +625,7 @@ void sub_80D3B60(u8 taskId) if (!(gTasks[gTasks[taskId].data[15]].data[1] & 0x1F)) { gTasks[taskId].data[0] = gTasks[gTasks[taskId].data[15]].data[1] & 0x1F; - gTasks[taskId].func = sub_8107CC4; + gTasks[taskId].func = sub_80D3D68; } } #else @@ -1895,14 +1898,14 @@ void sub_80D4D64(struct Sprite *sprite, int xDiff, int yDiff) s16 something = sprite->data[0] / 2; s16 combinedX = sprite->pos1.x + sprite->pos2.x; s16 combinedY = sprite->pos1.y + sprite->pos2.y; - s16 randomSomethingY = yDiff + (Random2() % 10) - 5; - s16 randomSomethingX = -xDiff + (Random2() % 10) - 5; + s16 randomSomethingY = yDiff + (Random() % 10) - 5; + s16 randomSomethingX = -xDiff + (Random() % 10) - 5; s16 i; u8 spriteId; for (i = 0; i <= 0; i++) { - spriteId = CreateSprite(&gUnknown_08595310, combinedX, combinedY + something, 130); + spriteId = CreateSprite(&gSpriteTemplate_83D9420, combinedX, combinedY + something, 130); gSprites[spriteId].data[0] = 20; gSprites[spriteId].data[1] = randomSomethingY; gSprites[spriteId].subpriority = GetBattlerSubpriority(gBattleAnimAttacker) - 1; @@ -1913,7 +1916,7 @@ void sub_80D4D64(struct Sprite *sprite, int xDiff, int yDiff) } for (i = 0; i <= 0; i++) { - spriteId = CreateSprite(&gUnknown_08595310, combinedX, combinedY - something, 130); + spriteId = CreateSprite(&gSpriteTemplate_83D9420, combinedX, combinedY - something, 130); gSprites[spriteId].data[0] = 20; gSprites[spriteId].data[1] = randomSomethingY; gSprites[spriteId].subpriority = GetBattlerSubpriority(gBattleAnimAttacker) - 1; |