diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2021-07-08 10:23:22 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-08 10:23:22 -0400 |
commit | a3228d4c86494ee25aff60fc037805ddc1d47d32 (patch) | |
tree | 082b433e0f10e758799ce2501f49f959f2ce54b3 /src/battle/anim/water.c | |
parent | 038befb44341f0fc22f522dd454d64cf4ad2df2e (diff) | |
parent | b86d6d05d92de28c35c899f4fbd03c1d542dc689 (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.c | 352 |
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. |