summaryrefslogtreecommitdiff
path: root/src/battle/anim/water.c
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-07-08 10:23:22 -0400
committerGitHub <noreply@github.com>2021-07-08 10:23:22 -0400
commita3228d4c86494ee25aff60fc037805ddc1d47d32 (patch)
tree082b433e0f10e758799ce2501f49f959f2ce54b3 /src/battle/anim/water.c
parent038befb44341f0fc22f522dd454d64cf4ad2df2e (diff)
parentb86d6d05d92de28c35c899f4fbd03c1d542dc689 (diff)
Merge pull request #828 from PikalaxALT/battle_struct_macros
Battle struct macros
Diffstat (limited to 'src/battle/anim/water.c')
-rw-r--r--src/battle/anim/water.c352
1 files changed, 46 insertions, 306 deletions
diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c
index 135ed43cb..9b7fcf317 100644
--- a/src/battle/anim/water.c
+++ b/src/battle/anim/water.c
@@ -227,8 +227,8 @@ void sub_80D37FC(struct Sprite *sprite)
sub_8078764(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4];
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->y + gBattleAnimArgs[4];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -252,10 +252,10 @@ void sub_80D3838(struct Sprite *sprite)
static void sub_80D3874(struct Sprite *sprite)
{
sprite->data[0] = (sprite->data[0] + 11) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[0], 4);
+ sprite->x2 = Sin(sprite->data[0], 4);
sprite->data[1] += 48;
- sprite->pos2.y = -(sprite->data[1] >> 8);
+ sprite->y2 = -(sprite->data[1] >> 8);
if (--sprite->data[7] == -1)
{
@@ -355,19 +355,15 @@ void AnimTask_CreateSurfWave(u8 taskId)
gTasks[taskId].func = sub_80D3B60;
}
-#ifdef NONMATCHING
void sub_80D3B60(u8 taskId)
{
- struct Struct_sub_8078914 unk;
vu8 cpuDelay; // yet again
+ struct Struct_sub_8078914 unk;
u8 i;
u16 rgbBuffer;
u16 *BGptrX = &gBattle_BG1_X;
u16 *BGptrY = &gBattle_BG1_Y;
- s16 unkUse;
- u32 palOffset;
- u16 palNum;
*BGptrX += gTasks[taskId].data[0];
*BGptrY += gTasks[taskId].data[1];
@@ -378,9 +374,7 @@ void sub_80D3B60(u8 taskId)
rgbBuffer = gPlttBufferFaded[unk.field_8 * 16 + 7];
for (i = 6; i != 0; i--)
{
- palNum = unk.field_8 * 16;
- palOffset = 1 + i;
- gPlttBufferFaded[palNum + palOffset] = gPlttBufferFaded[palNum + palOffset - 1];
+ gPlttBufferFaded[unk.field_8 * 16 + 1 + i] = gPlttBufferFaded[unk.field_8 * 16 + 1 + i - 1];
}
gPlttBufferFaded[unk.field_8 * 16 + 1] = rgbBuffer;
gTasks[taskId].data[5] = 0;
@@ -389,16 +383,15 @@ void sub_80D3B60(u8 taskId)
{
// there is some weird math going on here
gTasks[taskId].data[6] = 0;
- unkUse = ++gTasks[taskId].data[3];
- if (unkUse <= 13)
+ if (++gTasks[taskId].data[3] <= 13)
{
- gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256);
+ gTasks[gTasks[taskId].data[15]].data[1] = gTasks[taskId].data[3] | ((16 - gTasks[taskId].data[3]) << 8);
gTasks[taskId].data[4]++;
}
if (gTasks[taskId].data[3] > 54)
{
- unkUse = --gTasks[taskId].data[4];
- gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256);
+ gTasks[taskId].data[4]--;
+ gTasks[gTasks[taskId].data[15]].data[1] = gTasks[taskId].data[4] | ((16 - gTasks[taskId].data[4]) << 8);
}
}
if (!(gTasks[gTasks[taskId].data[15]].data[1] & 0x1F))
@@ -407,8 +400,8 @@ void sub_80D3B60(u8 taskId)
cpuDelay = 0; // stall the CPU
cpuDelay = 0; // stall the CPU
Dma3FillLarge32_(0, unk.field_4, 0x1000); // !
- if (!IsContest)
- REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 0;
*BGptrX = 0;
*BGptrY = 0;
@@ -419,259 +412,6 @@ void sub_80D3B60(u8 taskId)
DestroyAnimVisualTask(taskId);
}
}
-#else
-NAKED
-void sub_80D3B60(u8 taskId)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x18\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r0, =gTasks\n\
- lsls r4, r7, 2\n\
- adds r4, r7\n\
- lsls r4, 3\n\
- adds r4, r0\n\
- ldrh r0, [r4, 0x8]\n\
- ldr r1, =gBattle_BG1_X\n\
- ldrh r1, [r1]\n\
- adds r0, r1\n\
- ldr r2, =gBattle_BG1_X\n\
- strh r0, [r2]\n\
- ldrh r0, [r4, 0xA]\n\
- ldr r3, =gBattle_BG1_Y\n\
- ldrh r3, [r3]\n\
- adds r0, r3\n\
- ldr r1, =gBattle_BG1_Y\n\
- strh r0, [r1]\n\
- add r5, sp, 0x4\n\
- adds r0, r5, 0\n\
- bl sub_8078914\n\
- ldrh r0, [r4, 0xA]\n\
- ldrh r2, [r4, 0xC]\n\
- adds r0, r2\n\
- strh r0, [r4, 0xC]\n\
- ldrh r0, [r4, 0x12]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x12]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- mov r10, r5\n\
- cmp r0, 0x4\n\
- bne _080D3C02\n\
- ldr r1, =gPlttBufferFaded\n\
- ldrb r0, [r5, 0x8]\n\
- lsls r0, 4\n\
- adds r0, 0x7\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r6, [r0]\n\
- movs r2, 0x6\n\
- adds r5, r1, 0\n\
- adds r3, r5, 0\n\
- mov r4, r10\n\
-_080D3BC8:\n\
- ldrb r0, [r4, 0x8]\n\
- lsls r0, 4\n\
- adds r1, r2, 0x1\n\
- adds r0, r1\n\
- lsls r1, r0, 1\n\
- adds r1, r3\n\
- subs r0, 0x1\n\
- lsls r0, 1\n\
- adds r0, r3\n\
- ldrh r0, [r0]\n\
- strh r0, [r1]\n\
- subs r0, r2, 0x1\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- cmp r2, 0\n\
- bne _080D3BC8\n\
- mov r3, r10\n\
- ldrb r0, [r3, 0x8]\n\
- lsls r0, 4\n\
- adds r0, 0x1\n\
- lsls r0, 1\n\
- adds r0, r5\n\
- strh r6, [r0]\n\
- ldr r1, =gTasks\n\
- lsls r0, r7, 2\n\
- adds r0, r7\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- strh r2, [r0, 0x12]\n\
-_080D3C02:\n\
- ldr r1, =gTasks\n\
- lsls r2, r7, 2\n\
- adds r0, r2, r7\n\
- lsls r0, 3\n\
- adds r3, r0, r1\n\
- ldrh r0, [r3, 0x14]\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0x14]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- adds r4, r1, 0\n\
- str r2, [sp, 0x14]\n\
- cmp r0, 0x1\n\
- ble _080D3C70\n\
- movs r0, 0\n\
- strh r0, [r3, 0x14]\n\
- ldrh r0, [r3, 0xE]\n\
- adds r2, r0, 0x1\n\
- strh r2, [r3, 0xE]\n\
- lsls r0, r2, 16\n\
- asrs r0, 16\n\
- cmp r0, 0xD\n\
- bgt _080D3C4C\n\
- movs r1, 0x26\n\
- ldrsh r0, [r3, r1]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r1, r4\n\
- movs r0, 0x10\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- orrs r2, r0\n\
- strh r2, [r1, 0xA]\n\
- ldrh r0, [r3, 0x10]\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0x10]\n\
-_080D3C4C:\n\
- movs r2, 0xE\n\
- ldrsh r0, [r3, r2]\n\
- cmp r0, 0x36\n\
- ble _080D3C70\n\
- ldrh r2, [r3, 0x10]\n\
- subs r2, 0x1\n\
- strh r2, [r3, 0x10]\n\
- movs r1, 0x26\n\
- ldrsh r0, [r3, r1]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r1, r4\n\
- movs r0, 0x10\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- orrs r2, r0\n\
- strh r2, [r1, 0xA]\n\
-_080D3C70:\n\
- ldr r2, [sp, 0x14]\n\
- adds r0, r2, r7\n\
- lsls r0, 3\n\
- adds r0, r4\n\
- movs r3, 0x26\n\
- ldrsh r1, [r0, r3]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r4\n\
- ldrh r1, [r0, 0xA]\n\
- movs r0, 0x1F\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080D3D32\n\
- ldr r2, [sp, 0x4]\n\
- movs r3, 0x80\n\
- lsls r3, 6\n\
- add r6, sp, 0x10\n\
- movs r5, 0\n\
- ldr r1, =0x040000d4\n\
- movs r4, 0x80\n\
- lsls r4, 5\n\
- mov r8, r6\n\
- ldr r0, =0x85000400\n\
- mov r12, r0\n\
- movs r0, 0x85\n\
- lsls r0, 24\n\
- mov r9, r0\n\
-_080D3CAA:\n\
- str r5, [sp, 0x10]\n\
- mov r0, r8\n\
- str r0, [r1]\n\
- str r2, [r1, 0x4]\n\
- mov r0, r12\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r2, r4\n\
- subs r3, r4\n\
- cmp r3, r4\n\
- bhi _080D3CAA\n\
- str r5, [sp, 0x10]\n\
- str r6, [r1]\n\
- str r2, [r1, 0x4]\n\
- lsrs r0, r3, 2\n\
- mov r2, r9\n\
- orrs r0, r2\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- mov r0, sp\n\
- movs r1, 0\n\
- strb r1, [r0]\n\
- strb r1, [r0]\n\
- mov r3, r10\n\
- ldr r1, [r3, 0x4]\n\
- movs r4, 0\n\
- str r4, [sp, 0x10]\n\
- ldr r0, =0x040000d4\n\
- str r6, [r0]\n\
- str r1, [r0, 0x4]\n\
- ldr r1, =0x85000400\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- bl IsContest\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080D3D02\n\
- ldr r2, =0x0400000a\n\
- ldrb r1, [r2]\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
-_080D3D02:\n\
- ldr r0,=gBattle_BG1_X\n\
- strh r4, [r0]\n\
- ldr r1, =gBattle_BG1_Y\n\
- strh r4, [r1]\n\
- ldr r0, =0x04000050\n\
- strh r4, [r0]\n\
- adds r0, 0x2\n\
- strh r4, [r0]\n\
- ldr r2, =gTasks\n\
- ldr r3, [sp, 0x14]\n\
- adds r0, r3, r7\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- movs r3, 0x26\n\
- ldrsh r1, [r0, r3]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- ldr r1, =0x0000ffff\n\
- strh r1, [r0, 0x26]\n\
- adds r0, r7, 0\n\
- bl DestroyAnimVisualTask\n\
-_080D3D32:\n\
- add sp, 0x18\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\
- .pool");
-}
-#endif
void sub_80D3D68(u8 taskId)
{
@@ -779,10 +519,10 @@ void sub_80D40A8(struct Sprite *sprite)
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
if (sprite->data[1] & 1)
- sprite->pos2.x = -(sprite->data[3] >> 8);
+ sprite->x2 = -(sprite->data[3] >> 8);
else
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
if (++sprite->data[0] == 21)
DestroyAnimSprite(sprite);
}
@@ -792,7 +532,7 @@ void sub_80D40F4(u8 taskId)
struct Task *task = &gTasks[taskId];
task->data[15] = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER);
- task->data[5] = gSprites[task->data[15]].pos1.y;
+ task->data[5] = gSprites[task->data[15]].y;
task->data[1] = sub_80D4394();
PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
task->func = sub_80D4150;
@@ -813,18 +553,18 @@ void sub_80D4150(u8 taskId)
task->data[3] = 0;
if (++task->data[4] & 1)
{
- gSprites[task->data[15]].pos2.x = 3;
- gSprites[task->data[15]].pos1.y++;
+ gSprites[task->data[15]].x2 = 3;
+ gSprites[task->data[15]].y++;
}
else
{
- gSprites[task->data[15]].pos2.x = -3;
+ gSprites[task->data[15]].x2 = -3;
}
}
if (sub_8079C74(task) == 0)
{
sub_8079A64(task->data[15]);
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
task->data[3] = 0;
task->data[4] = 0;
task->data[0]++;
@@ -854,9 +594,9 @@ void sub_80D4150(u8 taskId)
{
task->data[3] = 0;
if (++task->data[4] & 1)
- gSprites[task->data[15]].pos2.y += 2;
+ gSprites[task->data[15]].y2 += 2;
else
- gSprites[task->data[15]].pos2.y -= 2;
+ gSprites[task->data[15]].y2 -= 2;
if (task->data[4] == 10)
{
sub_8079C08(task, task->data[15], 384, 224, 0x100, 0x100, 8);
@@ -867,11 +607,11 @@ void sub_80D4150(u8 taskId)
}
break;
case 6:
- gSprites[task->data[15]].pos1.y--;
+ gSprites[task->data[15]].y--;
if (sub_8079C74(task) == 0)
{
sub_8078F40(task->data[15]);
- gSprites[task->data[15]].pos1.y = task->data[5];
+ gSprites[task->data[15]].y = task->data[5];
task->data[4] = 0;
task->data[0]++;
}
@@ -959,9 +699,9 @@ void sub_80D452C(struct Sprite *sprite)
case 1:
sprite->data[2] += sprite->data[4];
sprite->data[3] += sprite->data[5];
- sprite->pos1.x = sprite->data[2] >> 4;
- sprite->pos1.y = sprite->data[3] >> 4;
- if (sprite->pos1.x < -8 || sprite->pos1.x > 248 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ sprite->x = sprite->data[2] >> 4;
+ sprite->y = sprite->data[3] >> 4;
+ if (sprite->x < -8 || sprite->x > 248 || sprite->y < -8 || sprite->y > 120)
{
gTasks[sprite->data[6]].data[sprite->data[7]]--;
DestroySprite(sprite);
@@ -1056,11 +796,11 @@ void sub_80D47D0(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
- sprite->pos1.y += 8;
- if (sprite->pos1.y >= sprite->data[5])
+ sprite->y += 8;
+ if (sprite->y >= sprite->data[5])
{
gTasks[sprite->data[6]].data[10] = 1;
- sprite->data[1] = CreateSprite(&gBattleAnimSpriteTemplate_83DB4D8, sprite->pos1.x, sprite->pos1.y, 1);
+ sprite->data[1] = CreateSprite(&gBattleAnimSpriteTemplate_83DB4D8, sprite->x, sprite->y, 1);
if (sprite->data[1] != MAX_SPRITES)
{
StartSpriteAffineAnim(&gSprites[sprite->data[1]], 3);
@@ -1199,11 +939,11 @@ void sub_80D4B3C(struct Sprite *sprite)
{
if (TranslateAnimArc(sprite))
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
sprite->data[0] = 6;
- sprite->data[2] = (Random() & 0x1F) - 16 + sprite->pos1.x;
- sprite->data[4] = (Random() & 0x1F) - 16 + sprite->pos1.y;
+ sprite->data[2] = (Random() & 0x1F) - 16 + sprite->x;
+ sprite->data[4] = (Random() & 0x1F) - 16 + sprite->y;
sprite->data[5] = ~(Random() & 7);
InitAnimArcTranslation(sprite);
sprite->callback = sub_80D4BA4;
@@ -1230,8 +970,8 @@ void sub_80D4BA4(struct Sprite *sprite)
void sub_80D4BF0(struct Sprite *sprite)
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[4];
@@ -1242,9 +982,9 @@ void sub_80D4BF0(struct Sprite *sprite)
void sub_80D4C18(struct Sprite *sprite)
{
sprite->data[4] -= sprite->data[0];
- sprite->pos2.y = sprite->data[4] / 10;
+ sprite->y2 = sprite->data[4] / 10;
sprite->data[5] = (sprite->data[5] + sprite->data[1]) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[5], sprite->data[2]);
+ sprite->x2 = Sin(sprite->data[5], sprite->data[2]);
if (--sprite->data[3] == 0)
DestroyAnimSprite(sprite);
}
@@ -1253,8 +993,8 @@ void sub_80D4C64(struct Sprite *sprite)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] >> 7;
- sprite->pos2.y = sprite->data[4] >> 7;
+ sprite->x2 = sprite->data[3] >> 7;
+ sprite->y2 = sprite->data[4] >> 7;
if (--sprite->data[0] == 0)
{
FreeSpriteOamMatrix(sprite);
@@ -1274,11 +1014,11 @@ void sub_80D4CA4(struct Sprite *sprite)
void sub_80D4CEC(struct Sprite *sprite)
{
- int xDiff = sprite->data[1] - sprite->pos1.x;
- int yDiff = sprite->data[2] - sprite->pos1.y;
+ int xDiff = sprite->data[1] - sprite->x;
+ int yDiff = sprite->data[2] - sprite->y;
- sprite->pos2.x = (sprite->data[0] * xDiff) / sprite->data[3];
- sprite->pos2.y = (sprite->data[0] * yDiff) / sprite->data[3];
+ sprite->x2 = (sprite->data[0] * xDiff) / sprite->data[3];
+ sprite->y2 = (sprite->data[0] * yDiff) / sprite->data[3];
if (++sprite->data[5] == sprite->data[4])
{
sprite->data[5] = 0;
@@ -1302,8 +1042,8 @@ void sub_80D4D64(struct Sprite *sprite, s32 xDiff, s32 yDiff)
something = sprite->data[0] / 2;
// regalloc acts strange here...
- combinedX = sprite->pos1.x + sprite->pos2.x;
- combinedY = sprite->pos1.y + sprite->pos2.y;
+ combinedX = sprite->x + sprite->x2;
+ combinedY = sprite->y + sprite->y2;
// ...then goes back to normal right here.
// Nothing but this appears to reproduce the behavior.