diff options
Diffstat (limited to 'src/battle/anim')
51 files changed, 868 insertions, 394 deletions
diff --git a/src/battle/anim/aurora.c b/src/battle/anim/aurora.c index 90fa5c879..b24809264 100644 --- a/src/battle/anim/aurora.c +++ b/src/battle/anim/aurora.c @@ -16,7 +16,7 @@ void sub_80D33B4(struct Sprite *sprite) { s16 r6; - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); if (GetBankSide(gAnimBankAttacker) != 0) r6 = -gBattleAnimArgs[2]; else @@ -26,7 +26,7 @@ void sub_80D33B4(struct Sprite *sprite) sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + r6; sprite->data[3] = sprite->pos1.y; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; - obj_translate_based_on_private_1_2_3_4(sprite); + InitAnimSpriteTranslationDeltas(sprite); sprite->callback = sub_80D344C; sprite->affineAnimPaused = TRUE; sprite->callback(sprite); @@ -39,7 +39,7 @@ static void sub_80D344C(struct Sprite *sprite) StartSpriteAnim(sprite, 1); sprite->affineAnimPaused = FALSE; } - if (sub_8078B5C(sprite) != 0) + if (TranslateAnimSpriteByDeltas(sprite) != 0) DestroyAnimSprite(sprite); } diff --git a/src/battle/anim/blow_kiss.c b/src/battle/anim/blow_kiss.c index e7b49471d..f585b74bc 100644 --- a/src/battle/anim/blow_kiss.c +++ b/src/battle/anim/blow_kiss.c @@ -15,19 +15,19 @@ static void sub_80D1FA4(struct Sprite* sprite); void sub_80D1F58(struct Sprite* sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->data[0] = 0x5F; sprite->data[1] = sprite->pos1.x; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[3] = sprite->pos1.y; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - obj_translate_based_on_private_1_2_3_4(sprite); + InitAnimSpriteTranslationDeltas(sprite); sprite->callback = sub_80D1FA4; } void sub_80D1FA4(struct Sprite* sprite) { - if (sub_8078B5C(sprite) == 0) + if (TranslateAnimSpriteByDeltas(sprite) == 0) { sprite->pos2.y += Sin(sprite->data[5], 14); sprite->data[5] = (sprite->data[5] + 4) & 0xFF; diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c index 403003ce3..1252c1315 100644 --- a/src/battle/anim/bubble.c +++ b/src/battle/anim/bubble.c @@ -43,7 +43,7 @@ void sub_80D31C8(struct Sprite* sprite) sprite->data[3] = sprite->pos1.y; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - obj_translate_based_on_private_1_2_3_4(sprite); + InitAnimSpriteTranslationDeltas(sprite); newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); sprite->data[5] = newSpriteId; @@ -69,7 +69,7 @@ static void sub_80D32E8(struct Sprite *sprite) u16 index = gSprites[spriteId].data[3]; sprite->data[0] = 1; - sub_8078B5C(sprite); + TranslateAnimSpriteByDeltas(sprite); sprite->pos2.x += Sin(index / 256, gSprites[spriteId].data[0]); sprite->pos2.y += Cos(index / 256, gSprites[spriteId].data[1]); diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c index dbc0f75a5..e12f55a8b 100644 --- a/src/battle/anim/bug.c +++ b/src/battle/anim/bug.c @@ -40,7 +40,7 @@ void sub_80DC824(struct Sprite *sprite) sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -65,7 +65,7 @@ void sub_80DC8F4(struct Sprite *sprite) sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -76,7 +76,7 @@ void sub_80DC9A0(struct Sprite *sprite) if (IsContest()) gBattleAnimArgs[2] /= 2; - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; @@ -88,7 +88,7 @@ void sub_80DC9A0(struct Sprite *sprite) } else { - sub_807A3FC(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); + SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); } sub_8078BD4(sprite); @@ -98,7 +98,7 @@ void sub_80DC9A0(struct Sprite *sprite) static void sub_80DCA38(struct Sprite *sprite) { - if (sub_8078B5C(sprite)) + if (TranslateAnimSpriteByDeltas(sprite)) { DestroyAnimSprite(sprite); return; @@ -111,7 +111,7 @@ static void sub_80DCA38(struct Sprite *sprite) // used in Move_STRING_SHOT void sub_80DCA70(struct Sprite *sprite) { - sub_807A3FC(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y); + SetAverageBattlerPositions(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y); if (GetBankSide(gAnimBankAttacker)) sprite->pos1.x -= gBattleAnimArgs[0]; else @@ -212,7 +212,7 @@ void sub_80DCBCC(struct Sprite *sprite) } } - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); lVarX = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; lVarY = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; @@ -224,7 +224,7 @@ void sub_80DCBCC(struct Sprite *sprite) sprite->data[2] = lVarX; sprite->data[4] = lVarY; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -232,7 +232,7 @@ void sub_80DCBCC(struct Sprite *sprite) // Move_PIN_MISSILE, Move_ICICLE_SPEAR void sub_80DCCFC(struct Sprite *sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; @@ -251,7 +251,7 @@ void sub_80DCD78(struct Sprite *sprite) { sprite->invisible = FALSE; - if (sub_8078718(sprite)) + if (TranslateAnimSpriteLinearAndSine(sprite)) { DestroyAnimSprite(sprite); } @@ -271,7 +271,7 @@ void sub_80DCD78(struct Sprite *sprite) x2 += x1; y2 += y1; - if (!sub_8078718(sprite)) + if (!TranslateAnimSpriteLinearAndSine(sprite)) { u16 rot = sub_80790F0(sprite->pos1.x + sprite->pos2.x - x2, sprite->pos1.y + sprite->pos2.y - y2); diff --git a/src/battle/anim/bullet.c b/src/battle/anim/bullet.c index 90b2021f1..1dca0b886 100644 --- a/src/battle/anim/bullet.c +++ b/src/battle/anim/bullet.c @@ -17,11 +17,11 @@ static void sub_80D00B4(struct Sprite* sprite); void sub_80CFFD8(struct Sprite* sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->data[0] = 20; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; sprite->affineAnimPaused = 1; StoreSpriteCallbackInData(sprite, sub_80D0030); } diff --git a/src/battle/anim/cutter.c b/src/battle/anim/cutter.c index 2234ebacb..0f23fed82 100644 --- a/src/battle/anim/cutter.c +++ b/src/battle/anim/cutter.c @@ -1,4 +1,5 @@ #include "global.h" +#include "battle.h" #include "rom_8077ABC.h" #include "trig.h" #include "battle_anim.h" @@ -7,29 +8,36 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -static void sub_80CB09C(struct Sprite* sprite); -static void sub_80CB1A4(struct Sprite* sprite); +static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite); +static void AnimMoveTwisterParticleStep(struct Sprite* sprite); -// cutter (the cresent shaped leaf used in throwing projectiles for the listed moves.) +// Animates a sprite that moves linearly from one location to another, with a +// single-cycle sine wave added to the y position along the way. // Used by Razor Leaf and Magical Leaf. - -void sub_80CAFD0(struct Sprite* sprite) +// arg 0: initial x offset +// arg 1: initial y offset +// arg 2: target x offset +// arg 3: target y offset +// arg 4: translation duration +// arg 5: wave amplitude +// arg 6: target between double battle opponents (boolean) +void AnimTranslateLinearSingleSineWave(struct Sprite* sprite) { - sub_80787B0(sprite, 1); - if (GetBankSide(gAnimBankAttacker)) + InitAnimSpritePos(sprite, 1); + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data[0] = gBattleAnimArgs[4]; - if (!(gBattleAnimArgs[6])) + if (!gBattleAnimArgs[6]) { sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; } else { - sub_807A3FC(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); + SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); sprite->data[2] += gBattleAnimArgs[2]; sprite->data[4] += gBattleAnimArgs[3]; } @@ -45,18 +53,18 @@ void sub_80CAFD0(struct Sprite* sprite) sprite->data[0] = 0; } - sprite->callback = sub_80CB09C; + sprite->callback = AnimTranslateLinearSingleSineWaveStep; } -void sub_80CB09C(struct Sprite* sprite) +static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite) { - bool8 c = FALSE; + bool8 destroy = FALSE; s16 a = sprite->data[0]; s16 b = sprite->data[7]; s16 r0; sprite->data[0] = 1; - sub_8078718(sprite); + TranslateAnimSpriteLinearAndSine(sprite); r0 = sprite->data[7]; sprite->data[0] = a; if (b > 0xC8 && r0 <= 0x37 && sprite->oam.affineParam == 0) @@ -67,24 +75,30 @@ void sub_80CB09C(struct Sprite* sprite) sprite->invisible ^= 1; sprite->oam.affineParam++; if (sprite->oam.affineParam == 0x1E) - c = TRUE; + destroy = TRUE; } - if (sprite->pos1.x + sprite->pos2.x > 0x100 + if (sprite->pos1.x + sprite->pos2.x > 256 || sprite->pos1.x + sprite->pos2.x < -16 - || sprite->pos1.y + sprite->pos2.y > 0xA0 + || sprite->pos1.y + sprite->pos2.y > 160 || sprite->pos1.y + sprite->pos2.y < -16) - c = TRUE; + destroy = TRUE; - if (c) + if (destroy) DestroyAnimSprite(sprite); } -void sub_80CB144(struct Sprite* sprite) +// Animates particles in the Twister move animation. +// arg 0: duration +// arg 1: total y delta (the particles rise upward) +// arg 2: wave period (higher means faster wave) +// arg 3: wave amplitude +// arg 4: speedup frame (particles move faster at the end of the animation) +void AnimMoveTwisterParticle(struct Sprite* sprite) { if (!IsContest() && IsDoubleBattle() == TRUE) { - sub_807A3FC(gAnimBankTarget, 1, &sprite->pos1.x, &sprite->pos1.y); + SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->pos1.x, &sprite->pos1.y); } sprite->pos1.y += 32; @@ -93,10 +107,10 @@ void sub_80CB144(struct Sprite* sprite) sprite->data[2] = gBattleAnimArgs[2]; sprite->data[3] = gBattleAnimArgs[3]; sprite->data[4] = gBattleAnimArgs[4]; - sprite->callback = sub_80CB1A4; + sprite->callback = AnimMoveTwisterParticleStep; } -void sub_80CB1A4(struct Sprite* sprite) +static void AnimMoveTwisterParticleStep(struct Sprite* sprite) { if (sprite->data[1] == 0xFF) { diff --git a/src/battle/anim/cyclone.c b/src/battle/anim/cyclone.c index 0f83df211..b1210bc54 100644 --- a/src/battle/anim/cyclone.c +++ b/src/battle/anim/cyclone.c @@ -13,7 +13,7 @@ extern u8 gAnimBankTarget; void sub_80D0118(struct Sprite* sprite) { - sub_80787B0(sprite, 0); + InitAnimSpritePos(sprite, 0); if (GetBankSide(gAnimBankAttacker) == 0) sprite->pos1.y += 16; diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 1c88dc23e..aaf8507c6 100644 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -14,7 +14,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; @@ -69,7 +69,7 @@ static void sub_80DFC9C(u8 taskId) gTasks[taskId].data[2] = 0; if (r2 == 16) { - gSprites[gObjectBankIDs[gAnimBankAttacker]].invisible = 1; + gSprites[gBankSpriteIds[gAnimBankAttacker]].invisible = 1; DestroyAnimVisualTask(taskId); } } @@ -128,7 +128,7 @@ void sub_80DFE14(struct Sprite *sprite) sprite->data[3] = GetBankPosition(gAnimBankTarget, 3); sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3); sprite->data[0] = 0x7E; - sub_8078A5C(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = -sprite->data[1]; sprite->data[4] = -sprite->data[2]; sprite->data[6] = 0xFFD8; @@ -244,7 +244,7 @@ void sub_80DFFD0(struct Sprite *sprite) static void sub_80E00D0(struct Sprite *sprite) { - if (sub_8078718(sprite)) + if (TranslateAnimSpriteLinearAndSine(sprite)) move_anim_8074EE0(sprite); } @@ -792,13 +792,13 @@ static void sub_80E08CC(u8 priority) void sub_80E0918(u8 taskId) { u8 toBG2 = GetBankIdentity_permutated(gAnimBankAttacker) ^ 1 ? 1 : 0; - sub_8076034(gAnimBankAttacker, toBG2); - gSprites[gObjectBankIDs[gAnimBankAttacker]].invisible = 0; + MoveBattlerSpriteToBG(gAnimBankAttacker, toBG2); + gSprites[gBankSpriteIds[gAnimBankAttacker]].invisible = 0; if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) { - sub_8076034(gAnimBankAttacker ^ 2, toBG2 ^ 1); - gSprites[gObjectBankIDs[gAnimBankAttacker ^ 2]].invisible = 0; + MoveBattlerSpriteToBG(gAnimBankAttacker ^ 2, toBG2 ^ 1); + gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].invisible = 0; } DestroyAnimVisualTask(taskId); @@ -851,7 +851,7 @@ void sub_80E0A4C(u8 taskId) { if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2) == TRUE) { - gSprites[gObjectBankIDs[gAnimBankAttacker ^ 2]].oam.priority--; + gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].oam.priority--; REG_BG1CNT_BITFIELD.priority = 1; var0 = 1; } @@ -937,7 +937,7 @@ static void sub_80E0CD0(u8 taskId) if (gTasks[taskIdCopy].data[6] == 1) { - gSprites[gObjectBankIDs[gAnimBankAttacker ^ 2]].oam.priority++; + gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].oam.priority++; } DestroyAnimVisualTask(taskIdCopy); @@ -985,7 +985,7 @@ void sub_80E0E24(u8 taskId) { bank = GetBankByIdentity(identity); if (IsAnimBankSpriteVisible(bank)) - spriteId = gObjectBankIDs[bank]; + spriteId = gBankSpriteIds[bank]; else spriteId = 0xFF; } diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c index bf39e01c0..dc2c0bc50 100644 --- a/src/battle/anim/dragon.c +++ b/src/battle/anim/dragon.c @@ -19,7 +19,7 @@ extern u8 gBankAttacker; extern u16 gBattle_BG1_X; extern u16 gBattle_BG2_X; extern u16 gUnknown_03000730[]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; // Outrage @@ -68,7 +68,7 @@ void sub_80DF63C(struct Sprite *sprite) StartSpriteAnim(sprite, 1); } sprite->data[0] = gBattleAnimArgs[4]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, move_anim_8074EE0); } diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index f9e505bf2..be3a280af 100644 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -59,7 +59,6 @@ void sub_80D0C88(u8 taskId) task->func = sub_80D0D68; } -#ifdef NONMATCHING void sub_80D0D68(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -99,126 +98,13 @@ void sub_80D0D68(u8 taskId) if (++task->data[3] >= task->data[15]) { - gScanlineEffect.unk15 = 3; + gScanlineEffect.state = 3; DestroyAnimVisualTask(taskId); } } break; } } -#else -__attribute__((naked)) -void sub_80D0D68(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - ldr r1, _080D0D88 @ =gTasks\n\ - adds r3, r0, r1\n\ - movs r1, 0x10\n\ - ldrsh r0, [r3, r1]\n\ - cmp r0, 0\n\ - beq _080D0D8C\n\ - cmp r0, 0x1\n\ - beq _080D0DA2\n\ - b _080D0E22\n\ - .align 2, 0\n\ -_080D0D88: .4byte gTasks\n\ -_080D0D8C:\n\ - ldrh r0, [r3, 0x12]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x12]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x14\n\ - ble _080D0E22\n\ - ldrh r0, [r3, 0x10]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x10]\n\ - b _080D0E22\n\ -_080D0DA2:\n\ - ldrh r0, [r3, 0xA]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0xA]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x3\n\ - ble _080D0E22\n\ - movs r0, 0\n\ - strh r0, [r3, 0xA]\n\ - ldrh r1, [r3, 0xE]\n\ - movs r0, 0x3\n\ - ands r0, r1\n\ - strh r0, [r3, 0xC]\n\ - ldrh r0, [r3, 0x8]\n\ - subs r0, r1\n\ - strh r0, [r3, 0x12]\n\ - movs r2, 0xC\n\ - ldrsh r1, [r3, r2]\n\ - cmp r1, 0x1\n\ - beq _080D0DD8\n\ - cmp r1, 0x1\n\ - ble _080D0DE0\n\ - cmp r1, 0x2\n\ - beq _080D0DDC\n\ - cmp r1, 0x3\n\ - beq _080D0DDC\n\ - b _080D0DE0\n\ -_080D0DD8:\n\ - subs r0, 0x2\n\ - b _080D0DDE\n\ -_080D0DDC:\n\ - adds r0, 0x1\n\ -_080D0DDE:\n\ - strh r0, [r3, 0x12]\n\ -_080D0DE0:\n\ - movs r1, 0x12\n\ - ldrsh r0, [r3, r1]\n\ - cmp r0, 0\n\ - blt _080D0E04\n\ - ldr r2, _080D0E28 @ =gScanlineEffectRegBuffers\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - ldrh r1, [r3, 0x14]\n\ - strh r1, [r0]\n\ - movs r1, 0x12\n\ - ldrsh r0, [r3, r1]\n\ - lsls r0, 1\n\ - movs r1, 0xF0\n\ - lsls r1, 3\n\ - adds r2, r1\n\ - adds r0, r2\n\ - ldrh r1, [r3, 0x14]\n\ - strh r1, [r0]\n\ -_080D0E04:\n\ - ldrh r0, [r3, 0xE]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0xE]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - movs r2, 0x26\n\ - ldrsh r1, [r3, r2]\n\ - cmp r0, r1\n\ - blt _080D0E22\n\ - ldr r1, _080D0E2C @ =gScanlineEffect\n\ - movs r0, 0x3\n\ - strb r0, [r1, 0x15]\n\ - adds r0, r4, 0\n\ - bl DestroyAnimVisualTask\n\ -_080D0E22:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080D0E28: .4byte gScanlineEffectRegBuffers\n\ -_080D0E2C: .4byte gScanlineEffect\n\ -.syntax divided\n"); -} -#endif void sub_80D0E30(struct Sprite* sprite) { diff --git a/src/battle/anim/egg.c b/src/battle/anim/egg.c index 8004b3bf5..b3de1dbb1 100644 --- a/src/battle/anim/egg.c +++ b/src/battle/anim/egg.c @@ -22,7 +22,7 @@ static void sub_80D158C(struct Sprite* sprite); void sub_80D1368(struct Sprite* sprite) { s16 r1; - sub_80787B0(sprite, 0); + InitAnimSpritePos(sprite, 0); r1 = (GetBankSide(gAnimBankAttacker)) ? -0xA0 : 0xA0; sprite->data[0] = 0x380; sprite->data[1] = r1; diff --git a/src/battle/anim/energy_wave.c b/src/battle/anim/energy_wave.c index 15045f5bd..8111f70a3 100644 --- a/src/battle/anim/energy_wave.c +++ b/src/battle/anim/energy_wave.c @@ -20,7 +20,7 @@ static void sub_80D370C(struct Sprite *); void sub_80D3554(struct Sprite *sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->data[0] = 30; sprite->data[1] = sprite->pos1.x; @@ -28,7 +28,7 @@ void sub_80D3554(struct Sprite *sprite) sprite->data[3] = sprite->pos1.y; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - obj_translate_based_on_private_1_2_3_4(sprite); + InitAnimSpriteTranslationDeltas(sprite); sprite->data[5] = 0xD200 / sprite->data[0]; sprite->data[7] = gBattleAnimArgs[3]; @@ -49,7 +49,7 @@ void sub_80D3554(struct Sprite *sprite) static void sub_80D35DC(struct Sprite *sprite) { - if (sub_8078B5C(sprite)) + if (TranslateAnimSpriteByDeltas(sprite)) { DestroyAnimSprite(sprite); } @@ -147,7 +147,7 @@ void sub_80D3728(struct Sprite *sprite) else var2 = 1; - sub_80787B0(sprite, var1); + InitAnimSpritePos(sprite, var1); if (GetBankSide(gAnimBankAttacker) != 0) { @@ -157,6 +157,6 @@ void sub_80D3728(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, var2) + gBattleAnimArgs[3]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c new file mode 100644 index 000000000..a7c25de49 --- /dev/null +++ b/src/battle/anim/fight.c @@ -0,0 +1,647 @@ +#include "global.h" +#include "battle_anim.h" +#include "random.h" +#include "rom_8077ABC.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" +#include "constants/battle_constants.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBankAttacker; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u8 gBankSpriteIds[]; +extern u8 gBanksBySide[]; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; +extern u16 gBattle_WIN0H; +extern u16 gBattle_WIN0V; +extern u16 gBattlePartyID[]; +extern u8 gAnimMoveTurn; + +extern struct SpriteTemplate gBasicHitSplatSpriteTemplate; + +static void sub_80D927C(struct Sprite *sprite); +static void sub_80D9328(struct Sprite *sprite); +static void sub_80D9404(struct Sprite *sprite); +static void sub_80D9474(struct Sprite *sprite); +static void sub_80D94CC(struct Sprite *sprite); +static void sub_80D9524(struct Sprite *sprite); +static void sub_80D9640(struct Sprite *sprite); +static void sub_80D97A0(struct Sprite *sprite); +static void sub_80D986C(struct Sprite *sprite); +static void sub_80D9934(struct Sprite *sprite); +static void sub_80D99F4(struct Sprite *sprite); + + +void sub_080B08A0(struct Sprite *sprite) +{ + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = 15; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +void sub_80D902C(struct Sprite *sprite) +{ + if (gBattleAnimArgs[7] == 1 && GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + { + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + + StartSpriteAnim(sprite, gBattleAnimArgs[6]); + gBattleAnimArgs[6] = 0; + sub_8079534(sprite); +} + +void sub_80D9078(struct Sprite *sprite) +{ + if (IsContest()) + { + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + + sub_80D902C(sprite); +} + +void sub_80D90A4(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + + if (gBattleAnimArgs[3] == 0) + InitAnimSpritePos(sprite, 1); + else + sub_8078764(sprite, 1); + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +void sub_80D90F4(struct Sprite *sprite) +{ + u8 bank; + s16 xMod, yMod; + s16 x, y; + + if (gBattleAnimArgs[0] == 0) + bank = gAnimBankAttacker; + else + bank = gAnimBankTarget; + + if (gBattleAnimArgs[2] < 0) + gBattleAnimArgs[2] = Random() % 5; + + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->pos1.x = GetBankPosition(bank, 2); + sprite->pos1.y = GetBankPosition(bank, 3); + + xMod = sub_807A100(bank, 1) / 2; + yMod = sub_807A100(bank, 0) / 4; + + x = Random() % xMod; + y = Random() % yMod; + + if (Random() & 1) + x *= -1; + if (Random() & 1) + y *= -1; + + if ((gBanksBySide[bank] & 1) == 0) + y += 0xFFF0; + + sprite->pos1.x += x; + sprite->pos1.y += y; + + sprite->data[0] = gBattleAnimArgs[1]; + sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1); + if (sprite->data[7] != 64) + { + StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0); + gSprites[sprite->data[7]].callback = SpriteCallbackDummy; + } + + sprite->callback = sub_80D927C; +} + +static void sub_80D927C(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + if (sprite->data[7] != 64) + { + FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum); + DestroySprite(&gSprites[sprite->data[7]]); + } + + DestroyAnimSprite(sprite); + } + else + { + sprite->data[0]--; + } +} + +void sub_80D92D0(struct Sprite *sprite) +{ + sub_8078764(sprite, 1); + sprite->data[0] = 30; + + if (gBattleAnimArgs[2] == 0) + { + sprite->data[2] = sprite->pos1.x - 20; + } + else + { + sprite->data[2] = sprite->pos1.x + 20; + sprite->hFlip = 1; + } + + sprite->data[4] = sprite->pos1.y - 20; + sprite->callback = StartTranslateAnimSpriteByDeltas; + StoreSpriteCallbackInData(sprite, sub_80D9328); +} + +static void sub_80D9328(struct Sprite *sprite) +{ + if (++sprite->data[5] == 11) + { + sprite->data[2] = sprite->pos1.x - sprite->pos2.x; + sprite->data[4] = sprite->pos1.y - sprite->pos2.y; + sprite->data[0] = 8; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + + sprite->callback = StartTranslateAnimSpriteByDeltas; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); + } +} + +void sub_80D9378(struct Sprite *sprite) +{ + if ((gAnimBankAttacker ^ 2) == gAnimBankTarget && GetBankIdentity(gAnimBankTarget) < 2) + gBattleAnimArgs[0] *= -1; + + sub_8078764(sprite, 1); + + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->pos1.y; + + InitAnimSpriteTranslationDeltas(sprite); + + sprite->data[5] = gBattleAnimArgs[5]; + sprite->data[6] = gBattleAnimArgs[4]; + sprite->data[7] = 0; + + sprite->callback = sub_80D9404; +} + +static void sub_80D9404(struct Sprite *sprite) +{ + if (!TranslateAnimSpriteByDeltas(sprite)) + { + sprite->pos2.y += Sin(sprite->data[7] >> 8, sprite->data[5]); + sprite->data[7] += sprite->data[6]; + } + else + { + DestroyAnimSprite(sprite); + } +} + +void sub_80D943C(struct Sprite *sprite) +{ + sub_8078764(sprite, 1); + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->data[0] = gBattleAnimArgs[3]; + + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, sub_80D9474); +} + +static void sub_80D9474(struct Sprite *sprite) +{ + StartSpriteAffineAnim(sprite, 0); + sprite->affineAnimPaused = 1; + sprite->data[0] = 20; + + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +void sub_80D94A8(struct Sprite *sprite) +{ + sub_8078764(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + + sprite->callback = sub_80D94CC; +} + +static void sub_80D94CC(struct Sprite *sprite) +{ + if (--sprite->data[0] == -1) + { + sprite->data[0] = 6; + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + + sprite->callback = StartTranslateAnimSpriteByDeltas; + StoreSpriteCallbackInData(sprite, sub_80D9524); + } +} + +static void sub_80D9524(struct Sprite *sprite) +{ + sprite->data[0] = 15; + + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +void sub_80D9540(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sub_8078764(sprite, 1); + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->data[0]++; + } + else + { + sprite->data[4] += sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]); + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + + if (sprite->data[3] > 100) + sprite->invisible = sprite->data[3] % 2; + + if (sprite->data[3] > 120) + DestroyAnimSprite(sprite); + } +} + +void sub_80D95D0(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1); + } + else + { + sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0); + sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1); + } + + sprite->pos1.x += gBattleAnimArgs[1]; + sprite->pos1.y += gBattleAnimArgs[2]; + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[3] = 0; + sprite->callback = sub_80D9640; +} + +static void sub_80D9640(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (--sprite->data[1] == 0) + { + if (sprite->data[2] == 0) + DestroyAnimSprite(sprite); + else + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + sprite->data[3]++; + if (sprite->data[3] & 1) + sprite->pos2.x = 2; + else + sprite->pos2.x = -2; + } + + if (--sprite->data[2] == 0) + DestroyAnimSprite(sprite); + break; + } +} + +void sub_80D96B8(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[2]; + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[3]; + } + else + { + sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0) + gBattleAnimArgs[2]; + sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1) + gBattleAnimArgs[3]; + } + + sprite->oam.tileNum += gBattleAnimArgs[1] * 16; + sprite->data[0] = 0; + + switch (gBattleAnimArgs[1]) + { + case 0: + sprite->data[6] = -3; + sprite->data[7] = -3; + break; + case 1: + sprite->data[6] = 3; + sprite->data[7] = -3; + break; + case 2: + sprite->data[6] = -3; + sprite->data[7] = 3; + break; + case 3: + sprite->data[6] = 3; + sprite->data[7] = 3; + break; + default: + DestroyAnimSprite(sprite); + return; + } + + sprite->callback = sub_80D97A0; +} + +static void sub_80D97A0(struct Sprite *sprite) +{ + sprite->pos1.x += sprite->data[6]; + sprite->pos1.y += sprite->data[7]; + + if (++sprite->data[0] > 40) + DestroyAnimSprite(sprite); +} + +void sub_80D97CC(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBankPosition(gBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gBankAttacker, 3); + sprite->oam.priority = sub_8079ED4(gAnimBankAttacker); + sprite->data[7] = gAnimBankTarget; + } + else + { + sprite->oam.priority = sub_8079ED4(gAnimBankTarget); + sprite->data[7] = gAnimBankAttacker; + } + + sprite->data[0] = 0; + sprite->data[1] = 12; + sprite->data[2] = 8; + sprite->callback = sub_80D986C; +} + +static void sub_80D986C(struct Sprite *sprite) +{ + if (++sprite->data[0] == 180) + { + REG_BLDCNT = 0; + + sprite->data[0] = 16; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBankPosition(sprite->data[7], 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBankPosition(sprite->data[7], 3); + + InitAnimSpriteTranslationDeltas(sprite); + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = TranslateAnimSpriteByDeltasUntil; + } +} + +void sub_80D98D8(struct Sprite *sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = 120; + + sprite->data[0] = gBattleAnimArgs[3]; + sub_8079BF4(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8)); + + sprite->data[6] = gBattleAnimArgs[1]; + sprite->oam.tileNum += gBattleAnimArgs[2] * 4; + + sprite->callback = sub_80D9934; +} + +static void sub_80D9934(struct Sprite *sprite) +{ + void *var0; + + if (sprite->data[0] != 0) + { + var0 = sub_8079BFC(sprite->data[4], sprite->data[5]); + var0 -= sprite->data[6]; + sub_8079BF4(&sprite->data[4], &sprite->data[5], var0); + + var0 = (void *)(((intptr_t)var0) >> 8); + sprite->pos1.y = (intptr_t)var0; + if (sprite->pos1.y < -8) + DestroyAnimSprite(sprite); + else + sprite->data[0]--; + } + else + { + s16 pos0 = GetBankPosition(gAnimBankAttacker, 2); + s16 pos1 = GetBankPosition(gAnimBankAttacker, 3); + s16 pos2 = GetBankPosition(gAnimBankTarget, 2); + s16 pos3 = GetBankPosition(gAnimBankTarget, 3); + + sprite->data[0] = pos2 - pos0; + sprite->data[1] = pos3 - pos1; + sprite->data[2] = sprite->pos1.x << 4; + sprite->data[3] = sprite->pos1.y << 4; + + sprite->callback = sub_80D99F4; + } +} + +static void sub_80D99F4(struct Sprite *sprite) +{ + u16 edgeX; + + sprite->data[2] += sprite->data[0]; + sprite->data[3] += sprite->data[1]; + sprite->pos1.x = sprite->data[2] >> 4; + sprite->pos1.y = sprite->data[3] >> 4; + + edgeX = sprite->pos1.x + 8; + if (edgeX > 256 || sprite->pos1.y < -8 || sprite->pos1.y > 120) + DestroyAnimSprite(sprite); +} + +void sub_80D9A38(struct Sprite *sprite) +{ + u8 bank; + + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBankPosition(gBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gBankAttacker, 3); + bank = gAnimBankTarget; + sprite->oam.priority = sub_8079ED4(gAnimBankAttacker); + } + else + { + bank = gAnimBankAttacker; + sprite->oam.priority = sub_8079ED4(gAnimBankTarget); + } + + if (IsContest()) + sprite->oam.matrixNum |= 0x8; + else if (GetBankSide(bank) == SIDE_PLAYER) + sprite->oam.matrixNum |= 0x18; + + sprite->data[0] = 16; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBankPosition(bank, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBankPosition(bank, 3); + + InitAnimSpriteTranslationDeltas(sprite); + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); + sprite->callback = TranslateAnimSpriteByDeltasUntil; +} + +static void sub_80D9B24(struct Sprite *sprite) +{ + if (sprite->data[0] == sprite->data[4]) + DestroyAnimSprite(sprite); + + sprite->data[0]++; +} + +void sub_80D9B48(struct Sprite *sprite) +{ + u8 turn; + + sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2); + sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3); + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[0]; + sprite->data[3] = gBattleAnimArgs[1]; + sprite->data[4] = gBattleAnimArgs[2]; + + turn = gAnimMoveTurn; + if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER) + turn++; + + if (turn & 1) + { + sprite->data[2] = -sprite->data[2]; + sprite->data[1]++; + } + + StartSpriteAnim(sprite, sprite->data[1]); + sprite->pos2.x = sprite->data[2]; + sprite->pos2.y = sprite->data[3]; + sprite->callback = sub_80D9B24; +} + +void sub_80D9BD4(struct Sprite *sprite) +{ + if (gBattleAnimArgs[2] == 0) + InitAnimSpritePos(sprite, 0); + else + sub_8078764(sprite, 0); + + if (IsContest()) + { + StartSpriteAnim(sprite, 2); + } + else if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + { + StartSpriteAnim(sprite, 1); + } + + sprite->callback = sub_8078600; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +void sub_80D9C40(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + sprite->data[1] = (sprite->data[1] + 40) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], 2); + + if (++sprite->data[0] > 40) + { + DestroyAnimSprite(sprite); + } + } +} + +void sub_80D9C80(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + sub_80789D4(0); + task->data[8] = gBattleAnimArgs[0]; + task->data[0]++; + break; + case 1: + if (--task->data[8] == -1) + task->data[0]++; + break; + case 2: + default: + task->data[9] += 1280; + break; + } + + task->data[10] += 2816; + + if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER) + gBattle_BG3_X += task->data[9] >> 8; + else + gBattle_BG3_X -= task->data[9] >> 8; + + gBattle_BG3_Y += task->data[10] >> 8; + + task->data[9] &= 0xFF; + task->data[10] &= 0xFF; + + if (gBattleAnimArgs[7] == -1) + { + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + sub_80789D4(1); + DestroyAnimVisualTask(taskId); + } +} diff --git a/src/battle/anim/fire_2.c b/src/battle/anim/fire_2.c index 4d577a765..fe63fcff1 100644 --- a/src/battle/anim/fire_2.c +++ b/src/battle/anim/fire_2.c @@ -42,7 +42,7 @@ struct Sprite *sub_80D5210(struct Sprite *sprite) void sub_80D522C(struct Sprite *sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->data[7] = gBattleAnimArgs[2]; sprite->data[0] = 0; @@ -62,7 +62,7 @@ void sub_80D5254(struct Sprite *sprite) sprite->data[3] = sprite->pos1.y; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - obj_translate_based_on_private_1_2_3_4(sprite); + InitAnimSpriteTranslationDeltas(sprite); sprite->callback = sub_80D52AC; } @@ -70,7 +70,7 @@ void sub_80D5254(struct Sprite *sprite) void sub_80D52AC(struct Sprite *sprite) { - if (sub_8078B5C(sprite)) + if (TranslateAnimSpriteByDeltas(sprite)) { sprite->data[0] = 0; @@ -123,7 +123,7 @@ void sub_80D5374(struct Sprite *sprite) void sub_80D53B4(struct Sprite *sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->data[1] = gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[3]; diff --git a/src/battle/anim/flying_path.c b/src/battle/anim/flying_path.c index 441ac0e6d..559f617c6 100644 --- a/src/battle/anim/flying_path.c +++ b/src/battle/anim/flying_path.c @@ -53,7 +53,7 @@ void sub_80CBF5C(u8 taskId) { case 4: sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) + if (TranslateAnimSpriteLinearAndSine(sprite) == 0) { break; } @@ -65,7 +65,7 @@ void sub_80CBF5C(u8 taskId) break; case 8: sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) + if (TranslateAnimSpriteLinearAndSine(sprite) == 0) { break; } @@ -77,7 +77,7 @@ void sub_80CBF5C(u8 taskId) break; case 0: sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) + if (TranslateAnimSpriteLinearAndSine(sprite) == 0) break; task->data[15] = 1; @@ -103,7 +103,7 @@ void sub_80CBF5C(u8 taskId) break; case 2: sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) + if (TranslateAnimSpriteLinearAndSine(sprite) == 0) break; task->data[15] = 3; @@ -146,7 +146,7 @@ void sub_80CBF5C(u8 taskId) break; case 6: sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) + if (TranslateAnimSpriteLinearAndSine(sprite) == 0) break; task->data[15] = 7; @@ -189,7 +189,7 @@ void sub_80CBF5C(u8 taskId) break; case 10: sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) + if (TranslateAnimSpriteLinearAndSine(sprite) == 0) { break; } @@ -221,7 +221,7 @@ void sub_80CBF5C(u8 taskId) } case 12: sub_80CC358(task, taskId); - if (sub_8078718(sprite) != 0) + if (TranslateAnimSpriteLinearAndSine(sprite) != 0) { DestroySprite(sprite); task->data[0]++; diff --git a/src/battle/anim/glitter.c b/src/battle/anim/glitter.c index e4577f1e1..e6c101de3 100644 --- a/src/battle/anim/glitter.c +++ b/src/battle/anim/glitter.c @@ -35,7 +35,7 @@ void sub_80CD190(struct Sprite* sprite) if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2)) { - sub_807A3FC(bank, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y); + SetAverageBattlerPositions(bank, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y); sub_807867C(sprite, gBattleAnimArgs[0]); sprite->pos1.y += gBattleAnimArgs[1]; } diff --git a/src/battle/anim/grip.c b/src/battle/anim/grip.c index c4d7b1cef..dbf7a1562 100644 --- a/src/battle/anim/grip.c +++ b/src/battle/anim/grip.c @@ -33,7 +33,7 @@ void sub_80D0178(struct Sprite* sprite) sprite->data[0] = 6; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + r8; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + r6; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, sub_80D020C); } diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c index 254160109..211e0e841 100644 --- a/src/battle/anim/guard.c +++ b/src/battle/anim/guard.c @@ -15,7 +15,7 @@ void sub_80D3014(struct Sprite *sprite) { if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) { - sub_807A3FC(gAnimBankAttacker, 0, &sprite->pos1.x, &sprite->pos1.y); + SetAverageBattlerPositions(gAnimBankAttacker, 0, &sprite->pos1.x, &sprite->pos1.y); sprite->pos1.y += 40; StartSpriteAffineAnim(sprite, 1); @@ -30,6 +30,6 @@ void sub_80D3014(struct Sprite *sprite) sprite->data[2] = sprite->pos1.x; sprite->data[4] = sprite->pos1.y - 72; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/guillotine.c b/src/battle/anim/guillotine.c index b3d842cdf..15279d5e2 100644 --- a/src/battle/anim/guillotine.c +++ b/src/battle/anim/guillotine.c @@ -37,7 +37,7 @@ void sub_80D0228(struct Sprite* sprite) sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + r9; sprite->data[3] = sprite->pos1.y; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + r6; - obj_translate_based_on_private_1_2_3_4(sprite); + InitAnimSpriteTranslationDeltas(sprite); sprite->data[5] = gBattleAnimArgs[0]; sprite->data[6] = sprite->data[0]; sprite->callback = sub_80D02D0; @@ -45,7 +45,7 @@ void sub_80D0228(struct Sprite* sprite) void sub_80D02D0(struct Sprite* sprite) { - if (sub_8078B5C(sprite) && sprite->animEnded == 1) + if (TranslateAnimSpriteByDeltas(sprite) && sprite->animEnded == 1) { SeekSpriteAnim(sprite, 0); sprite->animPaused = 1; @@ -85,6 +85,6 @@ void sub_80D0344(struct Sprite* sprite) void sub_80D03A8(struct Sprite* sprite) { - if (sub_8078B5C(sprite) != 0) + if (TranslateAnimSpriteByDeltas(sprite) != 0) DestroyAnimSprite(sprite); } diff --git a/src/battle/anim/heart_1.c b/src/battle/anim/heart_1.c index 5df89f929..857169e62 100644 --- a/src/battle/anim/heart_1.c +++ b/src/battle/anim/heart_1.c @@ -14,7 +14,7 @@ extern u8 gAnimBankTarget; void sub_80D1C80(struct Sprite* sprite) { if (++sprite->data[0] == 1) - sub_80787B0(sprite, 0); + InitAnimSpritePos(sprite, 0); sprite->pos2.x = Sin(sprite->data[1], 8); sprite->pos2.y = sprite->data[2] >> 8; diff --git a/src/battle/anim/heated_rock.c b/src/battle/anim/heated_rock.c index 51cfbd007..055960f40 100644 --- a/src/battle/anim/heated_rock.c +++ b/src/battle/anim/heated_rock.c @@ -50,101 +50,25 @@ void sub_80D5994(struct Sprite *sprite, s16 x, s16 y) sprite->data[5] = y * 8; } -#ifdef NONMATCHING void sub_80D59B0(struct Sprite *sprite) { int var1; - int var2; - if (++sprite->data[0] > 2) { sprite->data[0] = 0; ++sprite->data[1]; - sprite->data[3] += ((u16)sprite->data[1] * (u16)sprite->data[1]); + var1 = (u16)sprite->data[1] * (u16)sprite->data[1]; + sprite->data[3] += var1; } - var1 = (u16)sprite->data[4] + (u16)sprite->data[2]; - sprite->data[2] = var1; - var1 = (s16)var1 >> 3; - sprite->pos1.x = var1; - - var2 = (u16)sprite->data[5] + (u16)sprite->data[3]; - sprite->data[3] = var2; - var2 = (s16)var2 >> 3; - sprite->pos1.y = var2; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[2] >> 3; + sprite->data[3] += sprite->data[5]; + sprite->pos1.y = sprite->data[3] >> 3; - if ((u32)((var1 + 8) << 16) > 0x1000000 || var2 < -8 || var2 > 120) - { - sprite->invisible = 1; - } -} -#else -__attribute__((naked)) -void sub_80D59B0(struct Sprite *sprite) -{ - asm(".syntax unified\n\ - push {lr}\n\ - adds r2, r0, 0\n\ - ldrh r0, [r2, 0x2E]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x2E]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x2\n\ - ble _080D59DA\n\ - movs r0, 0\n\ - strh r0, [r2, 0x2E]\n\ - ldrh r0, [r2, 0x30]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x30]\n\ - ldrh r0, [r2, 0x30]\n\ - adds r1, r0, 0\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - ldrh r3, [r2, 0x34]\n\ - adds r0, r3\n\ - strh r0, [r2, 0x34]\n\ -_080D59DA:\n\ - ldrh r0, [r2, 0x36]\n\ - ldrh r1, [r2, 0x32]\n\ - adds r0, r1\n\ - strh r0, [r2, 0x32]\n\ - lsls r0, 16\n\ - asrs r0, 19\n\ - strh r0, [r2, 0x20]\n\ - ldrh r1, [r2, 0x38]\n\ - ldrh r3, [r2, 0x34]\n\ - adds r1, r3\n\ - strh r1, [r2, 0x34]\n\ - lsls r1, 16\n\ - asrs r3, r1, 19\n\ - strh r3, [r2, 0x22]\n\ - adds r0, 0x8\n\ - lsls r0, 16\n\ - movs r1, 0x80\n\ - lsls r1, 17\n\ - cmp r0, r1\n\ - bhi _080D5A10\n\ - adds r1, r3, 0\n\ - movs r0, 0x8\n\ - negs r0, r0\n\ - cmp r1, r0\n\ - blt _080D5A10\n\ - cmp r1, 0x78\n\ - ble _080D5A1C\n\ -_080D5A10:\n\ - adds r0, r2, 0\n\ - adds r0, 0x3E\n\ - ldrb r1, [r0]\n\ - movs r2, 0x4\n\ - orrs r1, r2\n\ - strb r1, [r0]\n\ -_080D5A1C:\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); + if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120) + sprite->invisible = TRUE; } -#endif // NONMATCHING void sub_80D5A20(struct Sprite *sprite) { diff --git a/src/battle/anim/hop.c b/src/battle/anim/hop.c index 4006e2d43..0697e83a0 100644 --- a/src/battle/anim/hop.c +++ b/src/battle/anim/hop.c @@ -91,7 +91,7 @@ void sub_80CB94C(struct Sprite* sprite) { s16 e1; s16 e2; - sub_80787B0(sprite, 0); + InitAnimSpritePos(sprite, 0); e1 = GetBankPosition(gAnimBankTarget, 0); e2 = GetBankPosition(gAnimBankTarget, 1); if ((gAnimBankAttacker ^ 2) == gAnimBankTarget) diff --git a/src/battle/anim/lunge_1.c b/src/battle/anim/lunge_1.c index d379c8f09..a3b5f19c5 100644 --- a/src/battle/anim/lunge_1.c +++ b/src/battle/anim/lunge_1.c @@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; static void sub_80CD7CC(struct Sprite* sprite); static void sub_80CD81C(struct Sprite* sprite); @@ -46,16 +46,16 @@ void sub_80CD7CC(struct Sprite* sprite) sprite->data[0] = 6; sprite->data[1] = (GetBankSide(gAnimBankAttacker)) ? 2 : -2; sprite->data[2] = 0; - sprite->data[3] = gObjectBankIDs[gAnimBankAttacker]; + sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; StoreSpriteCallbackInData(sprite, sub_80CD81C); - sprite->callback = sub_8078458; + sprite->callback = TranslateMonBGUntil; } void sub_80CD81C(struct Sprite* sprite) { if (sprite->data[0] == 0) { - sprite->data[3] = gObjectBankIDs[gAnimBankAttacker]; + sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; sub_8078E70(sprite->data[3], 0); sprite->data[4] = (sprite->data[6] = GetBankSide(gAnimBankAttacker)) ? 0x300 : 0xFFFFFD00; sprite->data[5] = 0; @@ -76,9 +76,9 @@ void sub_80CD8A8(struct Sprite* sprite) sprite->data[0] = 4; sprite->data[1] = (GetBankSide(gAnimBankAttacker)) ? -3 : 3; sprite->data[2] = 0; - sprite->data[3] = gObjectBankIDs[gAnimBankAttacker]; + sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; StoreSpriteCallbackInData(sprite, sub_80CD9B8); - sprite->callback = sub_8078458; + sprite->callback = TranslateMonBGUntil; } void sub_80CD8F8(struct Sprite* sprite) @@ -94,7 +94,7 @@ void sub_80CD91C(struct Sprite* sprite) { if (sprite->data[0] == 0) { - sprite->data[3] = gObjectBankIDs[gAnimBankAttacker]; + sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; sprite->data[6] = GetBankSide(gAnimBankAttacker); if (GetBankSide(gAnimBankAttacker)) { diff --git a/src/battle/anim/lunge_2.c b/src/battle/anim/lunge_2.c index fe2470567..f222b291d 100644 --- a/src/battle/anim/lunge_2.c +++ b/src/battle/anim/lunge_2.c @@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; static void sub_80CDB60(u8 taskId); static void sub_80CDD20(u8 taskId); @@ -20,7 +20,7 @@ void sub_80CDAC8(u8 taskId) { u8 a; - gTasks[taskId].data[0] = gObjectBankIDs[gAnimBankAttacker]; + gTasks[taskId].data[0] = gBankSpriteIds[gAnimBankAttacker]; a = GetBankSide(gAnimBankAttacker); gTasks[taskId].data[1] = a; gTasks[taskId].data[2] = 0; diff --git a/src/battle/anim/money.c b/src/battle/anim/money.c index 8358d23db..0ee381e13 100644 --- a/src/battle/anim/money.c +++ b/src/battle/anim/money.c @@ -19,7 +19,7 @@ void sub_80CFE9C(struct Sprite* sprite) s16 r7; u16 var; - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); r6 = GetBankPosition(gAnimBankTarget, 2); r7 = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; if (GetBankSide(gAnimBankAttacker) != 0) diff --git a/src/battle/anim/note_rain.c b/src/battle/anim/note_rain.c index 715462d73..44817b0a0 100644 --- a/src/battle/anim/note_rain.c +++ b/src/battle/anim/note_rain.c @@ -24,14 +24,14 @@ void sub_80D1BA8(struct Sprite* sprite, u8 a, u8 b) void sub_80D1C08(struct Sprite* sprite) { - sub_80787B0(sprite, 0); + InitAnimSpritePos(sprite, 0); if (GetBankSide(gAnimBankAttacker) != 0) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[3]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); sub_80D1BA8(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]); } diff --git a/src/battle/anim/note_scatter_2.c b/src/battle/anim/note_scatter_2.c index 524c51c08..262afb8bf 100644 --- a/src/battle/anim/note_scatter_2.c +++ b/src/battle/anim/note_scatter_2.c @@ -32,14 +32,14 @@ void sub_80CEE60(struct Sprite* sprite) sprite->data[2] = a + sprite->data[1]; sprite->data[3] = sprite->pos1.y; sprite->data[4] = sprite->data[3] - 40; - obj_translate_based_on_private_1_2_3_4(sprite); + InitAnimSpriteTranslationDeltas(sprite); sprite->data[5] = gBattleAnimArgs[3]; sprite->callback = sub_80CEEE8; } void sub_80CEEE8(struct Sprite* sprite) { - if (sub_8078B5C(sprite) == 0) + if (TranslateAnimSpriteByDeltas(sprite) == 0) { s16 a; a = Sin(sprite->data[5], 8); diff --git a/src/battle/anim/orbit.c b/src/battle/anim/orbit.c index c8cf339d2..e7dd0df49 100644 --- a/src/battle/anim/orbit.c +++ b/src/battle/anim/orbit.c @@ -79,13 +79,13 @@ void sub_80CACEC(u8 taskId) void sub_80CAD54(struct Sprite* sprite) { - sub_80787B0(sprite, 0); + InitAnimSpritePos(sprite, 0); sprite->data[0] = gBattleAnimArgs[3]; sprite->data[1] = sprite->pos1.x; sprite->data[2] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[2]; - obj_translate_based_on_private_1_2_3_4(sprite); + InitAnimSpriteTranslationDeltas(sprite); sprite->data[5] = 0x40; sprite->callback = sub_80CADA8; sub_80CADA8(sprite); @@ -93,7 +93,7 @@ void sub_80CAD54(struct Sprite* sprite) void sub_80CADA8(struct Sprite* sprite) { - if (!sub_8078B5C(sprite)) + if (!TranslateAnimSpriteByDeltas(sprite)) { sprite->pos2.x += Sin(sprite->data[5], 32); sprite->pos2.y += Cos(sprite->data[5], -5); @@ -116,13 +116,13 @@ void sub_80CADA8(struct Sprite* sprite) void sub_80CAE20(struct Sprite* sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->data[0] = gBattleAnimArgs[3]; sprite->data[1] = sprite->pos1.x; sprite->data[2] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[2]; - obj_translate_based_on_private_1_2_3_4(sprite); + InitAnimSpriteTranslationDeltas(sprite); sprite->data[5] = 0x40; sprite->callback = sub_80CAE74; sub_80CAE74(sprite); @@ -130,7 +130,7 @@ void sub_80CAE20(struct Sprite* sprite) void sub_80CAE74(struct Sprite* sprite) { - if (!sub_8078B5C(sprite)) + if (!TranslateAnimSpriteByDeltas(sprite)) { sprite->pos2.x += Sin(sprite->data[5], 8); if ((u16)(sprite->data[5] - 0x3B) < 5 || (u16)(sprite->data[5] - 0xBB) < 5) diff --git a/src/battle/anim/orbs.c b/src/battle/anim/orbs.c index 6ca2fa71c..b965cacb8 100644 --- a/src/battle/anim/orbs.c +++ b/src/battle/anim/orbs.c @@ -19,34 +19,34 @@ extern struct SpriteTemplate gSpriteTemplate_83D631C; void sub_80CA7B0(struct Sprite* sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2); sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3); - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, move_anim_8074EE0); } void sub_80CA800(struct Sprite* sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); StartSpriteAnim(sprite, gBattleAnimArgs[3]); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } void sub_80CA858(struct Sprite* sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = sprite->pos1.x; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[3] = sprite->pos1.y; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - obj_translate_based_on_private_1_2_3_4(sprite); + InitAnimSpriteTranslationDeltas(sprite); sprite->data[5] = gBattleAnimArgs[3]; sprite->callback = sub_80CA8B4; sub_80CA8B4(sprite); @@ -54,7 +54,7 @@ void sub_80CA858(struct Sprite* sprite) void sub_80CA8B4(struct Sprite* sprite) { - if (sub_8078B5C(sprite)) + if (TranslateAnimSpriteByDeltas(sprite)) { DestroySprite(sprite); } @@ -105,7 +105,7 @@ void sub_80CA9A8(struct Sprite* sprite) void sub_80CA9F8(struct Sprite* sprite) { - if (sub_8078718(sprite)) + if (TranslateAnimSpriteLinearAndSine(sprite)) DestroyAnimSprite(sprite); } diff --git a/src/battle/anim/perceive.c b/src/battle/anim/perceive.c index 3b3153428..14db096c6 100644 --- a/src/battle/anim/perceive.c +++ b/src/battle/anim/perceive.c @@ -19,6 +19,6 @@ void sub_80D2904(struct Sprite* sprite) void sub_80D2920(struct Sprite* sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->callback = sub_80D2904; } diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c index f31c441fb..272d99e84 100644 --- a/src/battle/anim/poison.c +++ b/src/battle/anim/poison.c @@ -17,7 +17,7 @@ void sub_80D9D70(struct Sprite *sprite) if (!gBattleAnimArgs[3]) StartSpriteAnim(sprite, 2); - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); @@ -31,7 +31,7 @@ void sub_80D9D70(struct Sprite *sprite) void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78 { - if (sub_8078718(sprite)) + if (TranslateAnimSpriteLinearAndSine(sprite)) DestroyAnimSprite(sprite); } @@ -41,8 +41,8 @@ void sub_80D9DF0(struct Sprite *sprite) if (!gBattleAnimArgs[3]) StartSpriteAnim(sprite, 2); - sub_80787B0(sprite, 1); - sub_807A3FC(gAnimBankTarget, 1, &l1, &l2); + InitAnimSpritePos(sprite, 1); + SetAverageBattlerPositions(gAnimBankTarget, 1, &l1, &l2); if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[4] = -gBattleAnimArgs[4]; @@ -59,7 +59,7 @@ void sub_80D9DF0(struct Sprite *sprite) void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4 { - if (sub_8078718(sprite)) + if (TranslateAnimSpriteLinearAndSine(sprite)) DestroyAnimSprite(sprite); } @@ -71,7 +71,7 @@ void sub_80D9E94(struct Sprite *sprite) sprite->data[3] = sprite->pos1.y; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1]; - sub_8078A5C(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; @@ -92,7 +92,7 @@ void sub_80D9EE8(struct Sprite *sprite) void sub_80D9F14(struct Sprite *sprite) { - sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); + SetAverageBattlerPositions(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; @@ -104,7 +104,7 @@ void sub_80D9F14(struct Sprite *sprite) sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; sprite->data[4] = sprite->pos1.y + sprite->data[0]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -116,7 +116,7 @@ void sub_80D9F88(struct Sprite *sprite) } else { - sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); + SetAverageBattlerPositions(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; diff --git a/src/battle/anim/powder.c b/src/battle/anim/powder.c index a0be20d6f..5d67311dc 100644 --- a/src/battle/anim/powder.c +++ b/src/battle/anim/powder.c @@ -6,12 +6,17 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; -static void sub_80CA768(struct Sprite* sprite); +static void AnimMovePowderParticleStep(struct Sprite* sprite); -// powder +// Animates the falling particles that horizontally wave back and forth. // Used by Sleep Powder, Stun Spore, and Poison Powder. - -void sub_80CA710(struct Sprite* sprite) +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: total duration in frames +// arg 3: vertical movement speed (sub-pixel value) +// arg 4: wave amplitude +// arg 5: wave speed +void AnimMovePowderParticle(struct Sprite* sprite) { sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; @@ -28,10 +33,10 @@ void sub_80CA710(struct Sprite* sprite) } sprite->data[4] = gBattleAnimArgs[5]; - sprite->callback = sub_80CA768; + sprite->callback = AnimMovePowderParticleStep; } -void sub_80CA768(struct Sprite* sprite) +static void AnimMovePowderParticleStep(struct Sprite* sprite) { if (sprite->data[0] > 0) { diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c index 6617183cb..b108c496a 100644 --- a/src/battle/anim/psychic.c +++ b/src/battle/anim/psychic.c @@ -14,7 +14,7 @@ extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; extern u16 gBattle_BG1_X; extern u16 gBattle_BG2_X; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern const union AffineAnimCmd *const gUnknown_083DA888[]; extern struct AffineAnimFrameCmd gUnknown_083DA8A4; @@ -53,11 +53,11 @@ void sub_80DB74C(struct Sprite *sprite) u8 toBG_2 = (identity ^ var0) != 0; if (IsAnimBankSpriteVisible(bank)) - sub_8076034(bank, toBG_2); + MoveBattlerSpriteToBG(bank, toBG_2); bank = bankCopy ^ 2; if (IsAnimBankSpriteVisible(bank)) - sub_8076034(bank, toBG_2 ^ var0); + MoveBattlerSpriteToBG(bank, toBG_2 ^ var0); } if (!IsContest() && IsDoubleBattle()) @@ -134,11 +134,11 @@ static void sub_80DB92C(struct Sprite *sprite) u8 bank = bankCopy = GetBankByIdentity(IDENTITY_OPPONENT_MON1); if (IsAnimBankSpriteVisible(bank)) - gSprites[gObjectBankIDs[bank]].invisible = 0; + gSprites[gBankSpriteIds[bank]].invisible = 0; bank = bankCopy ^ 2; if (IsAnimBankSpriteVisible(bank)) - gSprites[gObjectBankIDs[bank]].invisible = 0; + gSprites[gBankSpriteIds[bank]].invisible = 0; } sprite->invisible = 1; @@ -192,7 +192,7 @@ void sub_80DBA4C(struct Sprite *sprite) else { if (gBattleAnimArgs[2] == 0) - sub_80787B0(sprite, var0); + InitAnimSpritePos(sprite, var0); else sub_8078764(sprite, var0); } @@ -539,7 +539,7 @@ static void sub_80DC1FC(u8 taskId) void sub_80DC2B0(struct Sprite *sprite) { - if (sub_8078718(sprite)) + if (TranslateAnimSpriteLinearAndSine(sprite)) { FreeOamMatrix(sprite->oam.matrixNum); DestroySprite(sprite); diff --git a/src/battle/anim/ring.c b/src/battle/anim/ring.c index 915cadcbc..86b2c4659 100644 --- a/src/battle/anim/ring.c +++ b/src/battle/anim/ring.c @@ -10,7 +10,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; static void sub_80D1098(struct Sprite* sprite); @@ -32,7 +32,7 @@ void sub_80D0FD8(struct Sprite* sprite) r4 = gBattleAnimArgs[3] ^ 1; if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2)) { - sub_807A3FC(bank, r4, &sp0, &sp1); + SetAverageBattlerPositions(bank, r4, &sp0, &sp1); if (r4 == 0) r4 = GetBankPosition(bank, 0); else @@ -50,7 +50,7 @@ void sub_80D0FD8(struct Sprite* sprite) void sub_80D1098(struct Sprite* sprite) { - if (sub_8078B5C(sprite)) + if (TranslateAnimSpriteByDeltas(sprite)) { FreeSpriteOamMatrix(sprite); DestroyAnimSprite(sprite); @@ -94,23 +94,23 @@ void sub_80D10B8(struct Sprite* sprite) { r9 = GetBankPosition(bankr7, r10) + gBattleAnimArgs[0]; if (IsAnimBankSpriteVisible(bankr8 ^ 2)) - sprite->subpriority = gSprites[gObjectBankIDs[bankr8 ^ 2]].subpriority - 1; + sprite->subpriority = gSprites[gBankSpriteIds[bankr8 ^ 2]].subpriority - 1; else - sprite->subpriority = gSprites[gObjectBankIDs[bankr8]].subpriority - 1; + sprite->subpriority = gSprites[gBankSpriteIds[bankr8]].subpriority - 1; } else { r9 = GetBankPosition(bankr7, r10) - gBattleAnimArgs[0]; if (gMain.inBattle && IsAnimBankSpriteVisible(bankr7 ^ 2)) { - if (gSprites[gObjectBankIDs[bankr7]].pos1.x < gSprites[gObjectBankIDs[bankr7 ^ 2]].pos1.x) - sprite->subpriority = gSprites[gObjectBankIDs[bankr7 ^ 2]].subpriority + 1; + if (gSprites[gBankSpriteIds[bankr7]].pos1.x < gSprites[gBankSpriteIds[bankr7 ^ 2]].pos1.x) + sprite->subpriority = gSprites[gBankSpriteIds[bankr7 ^ 2]].subpriority + 1; else - sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; + sprite->subpriority = gSprites[gBankSpriteIds[bankr7]].subpriority - 1; } else { - sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; + sprite->subpriority = gSprites[gBankSpriteIds[bankr7]].subpriority - 1; } } @@ -118,7 +118,7 @@ void sub_80D10B8(struct Sprite* sprite) r6 = GetBankPosition(bankr7, sp4) + gBattleAnimArgs[1]; if (gMain.inBattle && IsAnimBankSpriteVisible(bankr8 ^ 2)) { - sub_807A3FC(bankr8, gBattleAnimArgs[6], &sp0, &sp1); + SetAverageBattlerPositions(bankr8, gBattleAnimArgs[6], &sp0, &sp1); } else { @@ -137,7 +137,7 @@ void sub_80D10B8(struct Sprite* sprite) sprite->data[2] = sp0; sprite->data[4] = sp1; sprite->data[0] = gBattleAnimArgs[0]; - obj_translate_based_on_private_1_2_3_4(sprite); + InitAnimSpriteTranslationDeltas(sprite); sprite->callback = sub_80D1098; sub_80D1098(sprite); } diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c index b113ce040..1d1772b1b 100644 --- a/src/battle/anim/rock.c +++ b/src/battle/anim/rock.c @@ -38,7 +38,7 @@ static void sub_80DD9FC(struct Sprite *sprite); void sub_80DCE9C(struct Sprite *sprite) { if (gBattleAnimArgs[3] != 0) - sub_807A3FC(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y); + SetAverageBattlerPositions(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y); sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += 14; @@ -91,7 +91,7 @@ void sub_80DCF60(struct Sprite *sprite) sprite->data[3] = sprite->pos1.y; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3]; - sub_8078A5C(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = 0; sprite->data[4] = 0; @@ -102,7 +102,7 @@ void sub_80DCF60(struct Sprite *sprite) void sub_80DCFE4(struct Sprite *sprite) { if (gBattleAnimArgs[6] == 0) - sub_80787B0(sprite, 0); + InitAnimSpritePos(sprite, 0); else sub_8078764(sprite, 0); @@ -275,13 +275,13 @@ void sub_80DD3AC(struct Sprite *sprite) void sub_80DD490(struct Sprite *sprite) { StartSpriteAnim(sprite, gBattleAnimArgs[4]); - sub_80787B0(sprite, 0); + InitAnimSpritePos(sprite, 0); sprite->data[0] = gBattleAnimArgs[3]; sprite->data[2] = sprite->pos1.x; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -455,7 +455,7 @@ static void sub_80DD774(struct Task *task) void sub_80DD87C(struct Sprite *sprite) { - if (sub_8078718(sprite)) + if (TranslateAnimSpriteLinearAndSine(sprite)) { u8 taskId = FindTaskIdByFunc(sub_80DD604); if (taskId != 0xFF) @@ -517,7 +517,7 @@ void sub_80DD978(struct Sprite *sprite) if (GetBankSide(gAnimBankAttacker) == SIDE_OPPONENT) StartSpriteAffineAnim(sprite, 1); - sub_807941C(sprite); + TranslateAnimSpriteToTargetMonLocation(sprite); } void sub_80DD9A4(struct Sprite *sprite) diff --git a/src/battle/anim/scan.c b/src/battle/anim/scan.c index 22bb26973..e6b85dd5f 100644 --- a/src/battle/anim/scan.c +++ b/src/battle/anim/scan.c @@ -47,7 +47,7 @@ void sub_80CD408(struct Sprite* sprite) sprite->data[0] = 8; sprite->data[2] = sprite->pos1.x + gUnknown_083D6DDC[sprite->data[5] >> 8][0]; sprite->data[4] = sprite->pos1.y + gUnknown_083D6DDC[sprite->data[5] >> 8][1]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, sub_80CD4B8); sprite->data[5] += 0x100; PlaySE12WithPanning(0xD2, BattleAnimAdjustPanning(0x3F)); @@ -112,7 +112,7 @@ void sub_80CD4EC(struct Sprite* sprite) sprite->data[0] = 6; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + a; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + b; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, sub_80CD654); } } diff --git a/src/battle/anim/seed.c b/src/battle/anim/seed.c index be8613a74..e3d4bd3fb 100644 --- a/src/battle/anim/seed.c +++ b/src/battle/anim/seed.c @@ -15,7 +15,7 @@ static void sub_80CABC0(struct Sprite* sprite); void sub_80CAB18(struct Sprite* sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); if (GetBankSide(gAnimBankAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; @@ -31,7 +31,7 @@ void sub_80CAB18(struct Sprite* sprite) void sub_80CAB88(struct Sprite* sprite) { - if (sub_8078718(sprite)) + if (TranslateAnimSpriteLinearAndSine(sprite)) { sprite->invisible = 1; sprite->data[0] = 10; diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c index 94069374f..61645bc59 100644 --- a/src/battle/anim/shadow_minimize.c +++ b/src/battle/anim/shadow_minimize.c @@ -93,7 +93,7 @@ void sub_80D04E0(u8 taskId) sub_8078F40(task->data[0]); gSprites[task->data[15]].pos2.y = 0; DestroyAnimVisualTask(taskId); - break; + break; } } @@ -110,10 +110,11 @@ void sub_80D0614(struct Task* task, u8 taskId) } else { - gSprites[r8].oam.objMode = 1; - gSprites[r8].oam.affineMode = 3; - gSprites[r8].affineAnimPaused = 1; - gSprites[r8].oam.matrixNum = r6; + gSprites[r8].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[r8].oam.affineMode = ST_OAM_AFFINE_DOUBLE; + gSprites[r8].affineAnimPaused = TRUE; + r6 &= 0x1f; + gSprites[r8].oam.matrixNum = r6; // need to inhibit optimizing out the mov r0, 0x3f / neg r0, r0 gSprites[r8].subpriority = task->data[7] - task->data[3]; task->data[3]++; task->data[6]++; @@ -132,7 +133,7 @@ __attribute__((naked)) void sub_80D0614(struct Task* task, u8 taskId) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ + push {r4-r7,lr}\n\ mov r7, r9\n\ mov r6, r8\n\ push {r6,r7}\n\ diff --git a/src/battle/anim/sonic.c b/src/battle/anim/sonic.c index 0897ec6e3..2808c86c2 100644 --- a/src/battle/anim/sonic.c +++ b/src/battle/anim/sonic.c @@ -29,7 +29,7 @@ void sub_80CF6DC(struct Sprite* sprite) gBattleAnimArgs[3] = -gBattleAnimArgs[3]; } - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); a = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; b = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; c = sub_80790F0(a - sprite->pos1.x, b - sprite->pos1.y); @@ -41,7 +41,7 @@ void sub_80CF6DC(struct Sprite* sprite) sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = a; sprite->data[4] = b; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/sonic_task.c b/src/battle/anim/sonic_task.c index 924b1b568..260ae544c 100644 --- a/src/battle/anim/sonic_task.c +++ b/src/battle/anim/sonic_task.c @@ -87,7 +87,7 @@ void sub_80CFB04(u8 taskId) if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) { - sub_807A3FC(gAnimBankTarget, 0, &sp1, &sp2); + SetAverageBattlerPositions(gAnimBankTarget, 0, &sp1, &sp2); } else { diff --git a/src/battle/anim/sunlight.c b/src/battle/anim/sunlight.c index e6fd49a11..88112c74a 100644 --- a/src/battle/anim/sunlight.c +++ b/src/battle/anim/sunlight.c @@ -12,6 +12,6 @@ void sub_80D517C(struct Sprite *sprite) sprite->data[0] = 60; sprite->data[2] = 140; sprite->data[4] = 80; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/sword.c b/src/battle/anim/sword.c index b46fe6759..3367cca07 100644 --- a/src/battle/anim/sword.c +++ b/src/battle/anim/sword.c @@ -15,7 +15,7 @@ static void sub_80CF6B4(struct Sprite* sprite); void sub_80CF690(struct Sprite* sprite) { - sub_80787B0(sprite, 0); + InitAnimSpritePos(sprite, 0); sprite->callback = sub_80785E4; StoreSpriteCallbackInData(sprite, sub_80CF6B4); } @@ -25,6 +25,6 @@ void sub_80CF6B4(struct Sprite* sprite) sprite->data[0] = 6; sprite->data[2] = sprite->pos1.x; sprite->data[4] = sprite->pos1.y - 32; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/tile_out.c b/src/battle/anim/tile_out.c index 50468a440..39d4ff01f 100644 --- a/src/battle/anim/tile_out.c +++ b/src/battle/anim/tile_out.c @@ -37,7 +37,7 @@ void sub_80CE1AC(struct Sprite* sprite) sprite->data[0] = 30; sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2); sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3); - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } } diff --git a/src/battle/anim/unused_4.c b/src/battle/anim/unused_4.c index bda476a0a..50ffaba4a 100644 --- a/src/battle/anim/unused_4.c +++ b/src/battle/anim/unused_4.c @@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; static void sub_80CD9D4(struct Sprite* sprite); @@ -27,7 +27,7 @@ void sub_80CD9D4(struct Sprite* sprite) { case 0: sprite->data[1] = 0; - sprite->data[2] = gObjectBankIDs[gAnimBankAttacker]; + sprite->data[2] = gBankSpriteIds[gAnimBankAttacker]; sprite->data[3] = GetBankSide(gAnimBankAttacker); sprite->data[4] = (sprite->data[3] != 0) ? 0x200 : -0x200; sprite->data[5] = 0; diff --git a/src/battle/anim/unused_7.c b/src/battle/anim/unused_7.c index 2be6e7633..5a2de33c3 100644 --- a/src/battle/anim/unused_7.c +++ b/src/battle/anim/unused_7.c @@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; // unused_7 @@ -32,7 +32,7 @@ void sub_80CF3C4(struct Sprite* sprite) u8 a; sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); - a = gObjectBankIDs[gAnimBankTarget]; + a = gBankSpriteIds[gAnimBankTarget]; if (GetBankSide(gAnimBankAttacker) != 0) { sprite->pos1.x -= gBattleAnimArgs[0]; diff --git a/src/battle/anim/unused_8.c b/src/battle/anim/unused_8.c index 03772f951..b5e150dd8 100644 --- a/src/battle/anim/unused_8.c +++ b/src/battle/anim/unused_8.c @@ -15,7 +15,7 @@ static void sub_80CF4B8(struct Sprite* sprite); void sub_80CF458(struct Sprite* sprite) { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[4]; @@ -28,7 +28,7 @@ void sub_80CF490(struct Sprite* sprite) sprite->data[0] = sprite->data[1]; sprite->data[2] = sprite->pos1.x; sprite->data[4] = sprite->pos1.y + 15; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, sub_80CF4B8); } diff --git a/src/battle/anim/unused_9.c b/src/battle/anim/unused_9.c index cf3ccb0d4..6e0d0321b 100644 --- a/src/battle/anim/unused_9.c +++ b/src/battle/anim/unused_9.c @@ -3,6 +3,7 @@ #include "trig.h" #include "battle_anim.h" #include "sound.h" +#include "palette.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; @@ -17,7 +18,7 @@ static void sub_80CFE2C(struct Sprite* sprite); void sub_80CFDFC(struct Sprite* sprite) { - sub_80787B0(sprite, 0); + InitAnimSpritePos(sprite, 0); sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(gSpriteTemplate_83D75AC.paletteTag) << 4); sprite->callback = sub_80CFE2C; } @@ -26,23 +27,19 @@ void sub_80CFDFC(struct Sprite* sprite) void sub_80CFE2C(struct Sprite* sprite) { u16 r7; - u16* r1; - u16* r2; + u16 r5; int i; if (++sprite->data[1] == 2) { sprite->data[1] = 0; - r7 = gPlttBufferFaded[sprite->data[0] + 8]; - r2 = &gPlttBufferFaded[0x10]; - r1 = &gPlttBufferFaded[sprite->data[0] + 9]; - for (i = 7; i >= 0; i--) + r5 = sprite->data[0]; + r7 = gPlttBufferFaded[r5 + 8]; + for (i = 0; i < 8; i++) { - *r2 = *r1; - r1++; - r2++; + gPlttBufferFaded[r5 + i + 8] = gPlttBufferFaded[r5 + i + 9]; } + gPlttBufferFaded[r5 + 15] = r7; - gPlttBufferFaded[sprite->data[0] + 15] = r7; if (++sprite->data[2] == 0x18) DestroyAnimSprite(sprite); } diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c index 4068cbe78..e6945f9b2 100644 --- a/src/battle/anim/water.c +++ b/src/battle/anim/water.c @@ -18,7 +18,7 @@ void sub_80D37FC(struct Sprite *sprite) sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -30,7 +30,7 @@ void sub_80D3838(struct Sprite *sprite) } else { - sub_80787B0(sprite, 1); + InitAnimSpritePos(sprite, 1); } sprite->data[7] = gBattleAnimArgs[2]; diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c index 348ce6426..24cecb60c 100644 --- a/src/battle/anim/wisp_fire.c +++ b/src/battle/anim/wisp_fire.c @@ -10,7 +10,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankTarget; extern u8 gAnimBankAttacker; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern s8 gUnknown_083D9794[16]; extern s8 gUnknown_083D97A4[16]; @@ -175,7 +175,7 @@ void sub_80D60B4(u8 taskId) } gTasks[taskId].data[0]++; - spriteId = gObjectBankIDs[gAnimBankTarget]; + spriteId = gBankSpriteIds[gAnimBankTarget]; if (!gTasks[taskId].data[4]) unk = gUnknown_083D9794[gTasks[taskId].data[0] % 10]; diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c index 0cbe6eed7..7c22b7f13 100644 --- a/src/battle/anim/wisp_orb.c +++ b/src/battle/anim/wisp_orb.c @@ -21,7 +21,7 @@ void sub_80D5B0C(struct Sprite *sprite) switch (sprite->data[0]) { case 0: - sub_80787B0(sprite, 0); + InitAnimSpritePos(sprite, 0); StartSpriteAnim(sprite, gBattleAnimArgs[2]); sprite->data[7] = gBattleAnimArgs[2]; @@ -86,7 +86,7 @@ static void sub_80D5C5C(struct Sprite *sprite) s16 initialData5; s16 newData5; - if (!sub_8078B5C(sprite)) + if (!TranslateAnimSpriteByDeltas(sprite)) { sprite->pos2.x += Sin(sprite->data[5], 16); initialData5 = sprite->data[5]; diff --git a/src/battle/anim/withdraw.c b/src/battle/anim/withdraw.c index e67248b9f..933c97fa9 100644 --- a/src/battle/anim/withdraw.c +++ b/src/battle/anim/withdraw.c @@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; static void sub_80CF514(u8 taskId); @@ -17,13 +17,13 @@ static void sub_80CF514(u8 taskId); void sub_80CF4D8(u8 taskId) { - sub_8078E70(gObjectBankIDs[gAnimBankAttacker], 0); + sub_8078E70(gBankSpriteIds[gAnimBankAttacker], 0); gTasks[taskId].func = sub_80CF514; } void sub_80CF514(u8 taskId) { - u8 a = gObjectBankIDs[gAnimBankAttacker]; + u8 a = gBankSpriteIds[gAnimBankAttacker]; s16 b; if (GetBankSide(gAnimBankAttacker) == 0) { |