summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/anim/bug.c6
-rw-r--r--src/battle/anim/bullet.c2
-rw-r--r--src/battle/anim/dark.c2
-rw-r--r--src/battle/anim/dragon.c2
-rw-r--r--src/battle/anim/energy_wave.c2
-rw-r--r--src/battle/anim/fight.c10
-rw-r--r--src/battle/anim/grip.c2
-rw-r--r--src/battle/anim/guard.c2
-rw-r--r--src/battle/anim/lunge_1.c4
-rw-r--r--src/battle/anim/note_rain.c2
-rw-r--r--src/battle/anim/orbs.c4
-rw-r--r--src/battle/anim/poison.c4
-rw-r--r--src/battle/anim/rock.c6
-rw-r--r--src/battle/anim/scan.c4
-rw-r--r--src/battle/anim/sonic.c2
-rw-r--r--src/battle/anim/sunlight.c2
-rw-r--r--src/battle/anim/sword.c2
-rw-r--r--src/battle/anim/tile_out.c2
-rw-r--r--src/battle/anim/unused_8.c2
-rw-r--r--src/battle/anim/water.c2
-rw-r--r--src/battle/battle_anim_80A7E7C.c294
-rw-r--r--src/battle/battle_controller_linkopponent.c6
-rw-r--r--src/battle/battle_controller_linkpartner.c6
-rw-r--r--src/battle/battle_controller_opponent.c6
-rw-r--r--src/battle/battle_controller_player.c6
-rw-r--r--src/battle/battle_controller_wally.c4
-rw-r--r--src/rom_8077ABC.c37
27 files changed, 237 insertions, 186 deletions
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c
index b2726d8dd..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);
}
@@ -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);
}
diff --git a/src/battle/anim/bullet.c b/src/battle/anim/bullet.c
index 8fc581d47..1dca0b886 100644
--- a/src/battle/anim/bullet.c
+++ b/src/battle/anim/bullet.c
@@ -21,7 +21,7 @@ void sub_80CFFD8(struct Sprite* sprite)
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/dark.c b/src/battle/anim/dark.c
index 83a375495..aaf8507c6 100644
--- a/src/battle/anim/dark.c
+++ b/src/battle/anim/dark.c
@@ -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;
diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c
index 4f25cf1a5..dc2c0bc50 100644
--- a/src/battle/anim/dragon.c
+++ b/src/battle/anim/dragon.c
@@ -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/energy_wave.c b/src/battle/anim/energy_wave.c
index acab7bf80..8111f70a3 100644
--- a/src/battle/anim/energy_wave.c
+++ b/src/battle/anim/energy_wave.c
@@ -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
index f589622bd..a7c25de49 100644
--- a/src/battle/anim/fight.c
+++ b/src/battle/anim/fight.c
@@ -166,7 +166,7 @@ void sub_80D92D0(struct Sprite *sprite)
}
sprite->data[4] = sprite->pos1.y - 20;
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, sub_80D9328);
}
@@ -182,7 +182,7 @@ static void sub_80D9328(struct Sprite *sprite)
sprite->pos2.y = 0;
sprite->pos2.x = 0;
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
}
@@ -261,7 +261,7 @@ static void sub_80D94CC(struct Sprite *sprite)
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, sub_80D9524);
}
}
@@ -437,7 +437,7 @@ static void sub_80D986C(struct Sprite *sprite)
InitAnimSpriteTranslationDeltas(sprite);
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
- sprite->callback = sub_8078BB8;
+ sprite->callback = TranslateAnimSpriteByDeltasUntil;
}
}
@@ -532,7 +532,7 @@ void sub_80D9A38(struct Sprite *sprite)
InitAnimSpriteTranslationDeltas(sprite);
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
- sprite->callback = sub_8078BB8;
+ sprite->callback = TranslateAnimSpriteByDeltasUntil;
}
static void sub_80D9B24(struct Sprite *sprite)
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 9dcfa9f5d..211e0e841 100644
--- a/src/battle/anim/guard.c
+++ b/src/battle/anim/guard.c
@@ -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/lunge_1.c b/src/battle/anim/lunge_1.c
index a2adfba13..a3b5f19c5 100644
--- a/src/battle/anim/lunge_1.c
+++ b/src/battle/anim/lunge_1.c
@@ -48,7 +48,7 @@ void sub_80CD7CC(struct Sprite* sprite)
sprite->data[2] = 0;
sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
StoreSpriteCallbackInData(sprite, sub_80CD81C);
- sprite->callback = sub_8078458;
+ sprite->callback = TranslateMonBGUntil;
}
void sub_80CD81C(struct Sprite* sprite)
@@ -78,7 +78,7 @@ void sub_80CD8A8(struct Sprite* sprite)
sprite->data[2] = 0;
sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
StoreSpriteCallbackInData(sprite, sub_80CD9B8);
- sprite->callback = sub_8078458;
+ sprite->callback = TranslateMonBGUntil;
}
void sub_80CD8F8(struct Sprite* sprite)
diff --git a/src/battle/anim/note_rain.c b/src/battle/anim/note_rain.c
index 552329a57..44817b0a0 100644
--- a/src/battle/anim/note_rain.c
+++ b/src/battle/anim/note_rain.c
@@ -31,7 +31,7 @@ void sub_80D1C08(struct Sprite* sprite)
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/orbs.c b/src/battle/anim/orbs.c
index eede55695..b965cacb8 100644
--- a/src/battle/anim/orbs.c
+++ b/src/battle/anim/orbs.c
@@ -23,7 +23,7 @@ void sub_80CA7B0(struct Sprite* sprite)
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);
}
@@ -34,7 +34,7 @@ void sub_80CA800(struct Sprite* sprite)
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);
}
diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c
index 656e923bc..272d99e84 100644
--- a/src/battle/anim/poison.c
+++ b/src/battle/anim/poison.c
@@ -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];
@@ -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);
}
diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c
index 2df7e6642..1d1772b1b 100644
--- a/src/battle/anim/rock.c
+++ b/src/battle/anim/rock.c
@@ -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;
@@ -281,7 +281,7 @@ void sub_80DD490(struct Sprite *sprite)
sprite->data[2] = sprite->pos1.x;
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -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/sonic.c b/src/battle/anim/sonic.c
index 280943a67..2808c86c2 100644
--- a/src/battle/anim/sonic.c
+++ b/src/battle/anim/sonic.c
@@ -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/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 ca74980ea..3367cca07 100644
--- a/src/battle/anim/sword.c
+++ b/src/battle/anim/sword.c
@@ -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_8.c b/src/battle/anim/unused_8.c
index 0a06d3ac8..b5e150dd8 100644
--- a/src/battle/anim/unused_8.c
+++ b/src/battle/anim/unused_8.c
@@ -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/water.c b/src/battle/anim/water.c
index d1ed05747..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);
}
diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c
index aadeb71b0..73e606b79 100644
--- a/src/battle/battle_anim_80A7E7C.c
+++ b/src/battle/battle_anim_80A7E7C.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "battle.h"
#include "battle_anim.h"
#include "rom_8077ABC.h"
#include "sprite.h"
@@ -17,16 +18,16 @@ extern u8 gAnimBankTarget;
static void AnimTask_ShakeMonStep(u8 taskId);
static void AnimTask_ShakeMon2Step(u8 taskId);
-static void sub_80A81D8(u8 taskId);
-static void sub_80A8374(u8 taskId);
+static void AnimTask_ShakeMonInPlaceStep(u8 taskId);
+static void AnimTask_ShakeAndSinkMonStep(u8 taskId);
static void sub_80A8488(u8 taskId);
-static void sub_80A8530(struct Sprite *sprite);
-static void sub_80A85A4(struct Sprite *sprite);
-static void sub_80A85C8(struct Sprite *sprite);
-static void sub_80A8614(struct Sprite* sprite);
-static void sub_80A8638(struct Sprite *sprite);
-static void sub_80A86F4(struct Sprite *sprite);
-static void sub_80A8764(struct Sprite *sprite);
+static void DoHorizontalLunge(struct Sprite *sprite);
+static void ReverseHorizontalLungeDirection(struct Sprite *sprite);
+static void DoVerticalDip(struct Sprite *sprite);
+static void ReverseVerticalDipDirection(struct Sprite* sprite);
+static void SlideMonToOriginalPos(struct Sprite *sprite);
+static void SlideMonToOriginalPosStep(struct Sprite *sprite);
+static void SlideMonToOffset(struct Sprite *sprite);
static void sub_80A8818(struct Sprite *sprite);
static void sub_80A88F0(struct Sprite *sprite);
static void sub_80A89B4(u8 taskId);
@@ -36,7 +37,7 @@ static void sub_80A8D8C(u8 taskId);
static void sub_80A8FD8(u8 taskId);
static void sub_80A913C(u8 taskId);
-const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FB0 =
+const struct SpriteTemplate gHorizontalLungeSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -44,10 +45,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FB0 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A8530,
+ .callback = DoHorizontalLunge,
};
-const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FC8 =
+const struct SpriteTemplate gVerticalDipSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -55,10 +56,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FC8 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A85C8,
+ .callback = DoVerticalDip,
};
-const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FE0 =
+const struct SpriteTemplate gSlideMonToOriginalPosSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -66,10 +67,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FE0 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A8638,
+ .callback = SlideMonToOriginalPos,
};
-const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FF8 =
+const struct SpriteTemplate gSlideMonToOffsetSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -77,7 +78,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FF8 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A8764,
+ .callback = SlideMonToOffset,
};
const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 =
@@ -252,29 +253,37 @@ static void AnimTask_ShakeMon2Step(u8 taskId)
}
}
-void sub_80A8154(u8 taskId)
+// Task to facilitate simple shaking of a pokemon's picture in battle.
+// The shaking alternates between the positive and negative versions of the specified pixel offsets
+// with respect to the current location of the mon's picture.
+// arg 0: battler
+// arg 1: x offset
+// arg 2: y offset
+// arg 3: num shakes
+// arg 4: delay
+void AnimTask_ShakeMonInPlace(u8 taskId)
{
- u8 sprite;
- sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
- if (sprite == 0xff)
+ u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ if (spriteId == 0xff)
{
DestroyAnimVisualTask(taskId);
return;
}
- gSprites[sprite].pos2.x += gBattleAnimArgs[1];
- gSprites[sprite].pos2.y += gBattleAnimArgs[2];
- TASK.data[0] = sprite;
+
+ gSprites[spriteId].pos2.x += gBattleAnimArgs[1];
+ gSprites[spriteId].pos2.y += gBattleAnimArgs[2];
+ TASK.data[0] = spriteId;
TASK.data[1] = 0;
TASK.data[2] = gBattleAnimArgs[3];
TASK.data[3] = 0;
TASK.data[4] = gBattleAnimArgs[4];
TASK.data[5] = gBattleAnimArgs[1] * 2;
TASK.data[6] = gBattleAnimArgs[2] * 2;
- TASK.func = sub_80A81D8;
- sub_80A81D8(taskId);
+ TASK.func = AnimTask_ShakeMonInPlaceStep;
+ TASK.func(taskId);
}
-static void sub_80A81D8(u8 taskId)
+static void AnimTask_ShakeMonInPlaceStep(u8 taskId)
{
if (TASK.data[3] == 0)
{
@@ -311,7 +320,13 @@ static void sub_80A81D8(u8 taskId)
}
}
-void sub_80A8314(u8 taskId)
+// Shakes a mon bg horizontally and moves it downward linearly.
+// arg 0: battler
+// arg 1: x offset
+// arg 2: frame delay between each movement
+// arg 3: downward speed (subpixel)
+// arg 4: duration
+void AnimTask_ShakeAndSinkMon(u8 taskId)
{
u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
gSprites[sprite].pos2.x = gBattleAnimArgs[1];
@@ -320,11 +335,11 @@ void sub_80A8314(u8 taskId)
TASK.data[2] = gBattleAnimArgs[2];
TASK.data[3] = gBattleAnimArgs[3];
TASK.data[4] = gBattleAnimArgs[4];
- TASK.func = sub_80A8374;
- sub_80A8374(taskId);
+ TASK.func = AnimTask_ShakeAndSinkMonStep;
+ TASK.func(taskId);
}
-static void sub_80A8374(u8 taskId)
+static void AnimTask_ShakeAndSinkMonStep(u8 taskId)
{
s16 x;
u8 sprite;
@@ -334,11 +349,11 @@ static void sub_80A8374(u8 taskId)
{
TASK.data[8] = 0;
if (gSprites[sprite].pos2.x == x)
- {
x = -x;
- }
+
gSprites[sprite].pos2.x += x;
}
+
TASK.data[1] = x;
TASK.data[9] += TASK.data[3];
gSprites[sprite].pos2.y = TASK.data[9] >> 8;
@@ -349,89 +364,109 @@ static void sub_80A8374(u8 taskId)
}
}
-void sub_80A8408(u8 taskId)
+// Moves a mon bg picture along an elliptical path that begins
+// and ends at the mon's origin location.
+// arg 0: battler
+// arg 1: ellipse width
+// arg 2: ellipse height
+// arg 3: num loops
+// arg 4: speed (valid values are 0-5)
+void AnimTask_TranslateMonElliptical(u8 taskId)
{
u8 i;
- u8 sprite;
- u8 v1;
- v1 = 1;
- sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ u8 spriteId;
+ u8 wavePeriod;
+
+ wavePeriod = 1;
+ spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
if (gBattleAnimArgs[4] > 5)
- {
gBattleAnimArgs[4] = 5;
- }
+
for (i = 0; i < gBattleAnimArgs[4]; i++)
{
- v1 <<= 1;
+ wavePeriod <<= 1;
}
- TASK.data[0] = sprite;
+
+ TASK.data[0] = spriteId;
TASK.data[1] = gBattleAnimArgs[1];
TASK.data[2] = gBattleAnimArgs[2];
TASK.data[3] = gBattleAnimArgs[3];
- TASK.data[4] = v1;
+ TASK.data[4] = wavePeriod;
TASK.func = sub_80A8488;
- sub_80A8488(taskId);
+ TASK.func(taskId);
}
static void sub_80A8488(u8 taskId)
{
- u8 sprite;
- sprite = TASK.data[0];
- gSprites[sprite].pos2.x = Sin(TASK.data[5], TASK.data[1]);
- gSprites[sprite].pos2.y = -Cos(TASK.data[5], TASK.data[2]);
- gSprites[sprite].pos2.y += TASK.data[2];
+ u8 spriteId = TASK.data[0];
+ gSprites[spriteId].pos2.x = Sin(TASK.data[5], TASK.data[1]);
+ gSprites[spriteId].pos2.y = -Cos(TASK.data[5], TASK.data[2]);
+ gSprites[spriteId].pos2.y += TASK.data[2];
TASK.data[5] += TASK.data[4];
TASK.data[5] &= 0xff;
+
if (TASK.data[5] == 0)
- {
TASK.data[3]--;
- }
+
if (TASK.data[3] == 0)
{
- gSprites[sprite].pos2.x = 0;
- gSprites[sprite].pos2.y = 0;
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
DestroyAnimVisualTask(taskId);
return;
}
}
-void sub_80A8500(u8 taskId)
+// Moves a mon bg picture along an elliptical path that begins
+// and ends at the mon's origin location. Reverses the direction
+// of the path if it's not on the player's side of the battle.
+// arg 0: battler
+// arg 1: ellipse width
+// arg 2: ellipse height
+// arg 3: num loops
+// arg 4: speed (valid values are 0-5)
+void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId)
{
- if (GetBankSide(gAnimBankAttacker))
- {
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- }
- sub_80A8408(taskId);
+
+ AnimTask_TranslateMonElliptical(taskId);
}
-static void sub_80A8530(struct Sprite *sprite)
+// Performs a simple horizontal lunge, where the mon moves
+// horizontally, and then moves back in the opposite direction.
+// arg 0: duration of single lunge direction
+// arg 1: x pixel delta that is applied each frame
+static void DoHorizontalLunge(struct Sprite *sprite)
{
sprite->invisible = TRUE;
- if (GetBankSide(gAnimBankAttacker))
- {
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
sprite->data[1] = -gBattleAnimArgs[1];
- }
else
- {
sprite->data[1] = gBattleAnimArgs[1];
- }
+
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[2] = 0;
sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
sprite->data[4] = gBattleAnimArgs[0];
- StoreSpriteCallbackInData(sprite, sub_80A85A4);
- sprite->callback = sub_8078458;
+ StoreSpriteCallbackInData(sprite, ReverseHorizontalLungeDirection);
+ sprite->callback = TranslateMonBGUntil;
}
-static void sub_80A85A4(struct Sprite *sprite)
+static void ReverseHorizontalLungeDirection(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[1] = -sprite->data[1];
- sprite->callback = sub_8078458;
+ sprite->callback = TranslateMonBGUntil;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
-static void sub_80A85C8(struct Sprite *sprite)
+// Performs a simple vertical dipping motion, where moves vertically, and then
+// moves back in the opposite direction.
+// arg 0: duration of single dip direction
+// arg 1: y pixel delta that is applied each frame
+// arg 2: battler
+static void DoVerticalDip(struct Sprite *sprite)
{
u8 spriteId;
sprite->invisible = TRUE;
@@ -441,73 +476,72 @@ static void sub_80A85C8(struct Sprite *sprite)
sprite->data[2] = gBattleAnimArgs[1];
sprite->data[3] = spriteId;
sprite->data[4] = gBattleAnimArgs[0];
- StoreSpriteCallbackInData(sprite, sub_80A8614);
- sprite->callback = sub_8078458;
+ StoreSpriteCallbackInData(sprite, ReverseVerticalDipDirection);
+ sprite->callback = TranslateMonBGUntil;
}
-static void sub_80A8614(struct Sprite *sprite)
+static void ReverseVerticalDipDirection(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[2] = -sprite->data[2];
- sprite->callback = sub_8078458;
+ sprite->callback = TranslateMonBGUntil;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
-static void sub_80A8638(struct Sprite *sprite)
+// Linearly slides a mon's bg picture back to its original sprite position.
+// The sprite parameter is a dummy sprite used for facilitating the movement with its callback.
+// arg 0: 1 = target or 0 = attacker
+// arg 1: direction (0 = horizontal and vertical, 1 = horizontal only, 2 = vertical only)
+// arg 2: duration
+static void SlideMonToOriginalPos(struct Sprite *sprite)
{
int something;
- int spriteId;
+ int monSpriteId;
if (!gBattleAnimArgs[0])
- {
- spriteId = gBankSpriteIds[gAnimBankAttacker];
- }
+ monSpriteId = gBankSpriteIds[gAnimBankAttacker];
else
- {
- spriteId = gBankSpriteIds[gAnimBankTarget];
- }
+ monSpriteId = gBankSpriteIds[gAnimBankTarget];
+
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
- sprite->data[2] = gSprites[spriteId].pos1.x;
- sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
- sprite->data[4] = gSprites[spriteId].pos1.y;
+ sprite->data[1] = gSprites[monSpriteId].pos1.x + gSprites[monSpriteId].pos2.x;
+ sprite->data[2] = gSprites[monSpriteId].pos1.x;
+ sprite->data[3] = gSprites[monSpriteId].pos1.y + gSprites[monSpriteId].pos2.y;
+ sprite->data[4] = gSprites[monSpriteId].pos1.y;
something = 0;
- sub_8078A5C(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = something;
sprite->data[4] = something;
- sprite->data[5] = gSprites[spriteId].pos2.x;
- sprite->data[6] = gSprites[spriteId].pos2.y;
+ sprite->data[5] = gSprites[monSpriteId].pos2.x;
+ sprite->data[6] = gSprites[monSpriteId].pos2.y;
sprite->invisible = TRUE;
+
if (gBattleAnimArgs[1] == 1)
- {
sprite->data[2] = something;
- }
else if (gBattleAnimArgs[1] == 2)
- {
sprite->data[1] = something;
- }
+
sprite->data[7] = gBattleAnimArgs[1];
- sprite->data[7] |= spriteId << 8;
- sprite->callback = sub_80A86F4;
+ sprite->data[7] |= monSpriteId << 8;
+ sprite->callback = SlideMonToOriginalPosStep;
}
-static void sub_80A86F4(struct Sprite *sprite)
+static void SlideMonToOriginalPosStep(struct Sprite *sprite)
{
- s8 spriteId;
+ s8 monSpriteId;
u8 lo;
- struct Sprite *sprite2;
+ struct Sprite *monSprite;
+
lo = sprite->data[7] & 0xff;
- spriteId = sprite->data[7] >> 8;
- sprite2 = &gSprites[spriteId];
+ monSpriteId = sprite->data[7] >> 8;
+ monSprite = &gSprites[monSpriteId];
if (sprite->data[0] == 0)
{
if (lo < 2)
- {
- sprite2->pos2.x = 0;
- }
+ monSprite->pos2.x = 0;
+
if (lo == 2 || lo == 0)
- {
- sprite2->pos2.y = 0;
- }
+ monSprite->pos2.y = 0;
+
DestroyAnimSprite(sprite);
}
else
@@ -515,25 +549,30 @@ static void sub_80A86F4(struct Sprite *sprite)
sprite->data[0]--;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite2->pos2.x = (s8)(sprite->data[3] >> 8) + sprite->data[5];
- sprite2->pos2.y = (s8)(sprite->data[4] >> 8) + sprite->data[6];
+ monSprite->pos2.x = (s8)(sprite->data[3] >> 8) + sprite->data[5];
+ monSprite->pos2.y = (s8)(sprite->data[4] >> 8) + sprite->data[6];
}
}
-static void sub_80A8764(struct Sprite *sprite)
+// Linearly translates a mon to a target offset. The horizontal offset
+// is mirrored for the opponent's pokemon, and the vertical offset
+// is only mirrored if arg 3 is set to 1.
+// arg 0: 0 = attacker, 1 = target
+// arg 1: target x pixel offset
+// arg 2: target y pixel offset
+// arg 3: mirror vertical translation for opposite battle side
+// arg 4: duration
+static void SlideMonToOffset(struct Sprite *sprite)
{
- u8 v1;
- u8 spriteId;
+ u8 battler;
+ u8 monSpriteId;
if (!gBattleAnimArgs[0])
- {
- v1 = gAnimBankAttacker;
- }
+ battler = gAnimBankAttacker;
else
- {
- v1 = gAnimBankTarget;
- }
- spriteId = gBankSpriteIds[v1];
- if (GetBankSide(v1))
+ battler = gAnimBankTarget;
+
+ monSpriteId = gBankSpriteIds[battler];
+ if (GetBankSide(battler) != SIDE_PLAYER)
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
if (gBattleAnimArgs[3] == 1)
@@ -541,18 +580,19 @@ static void sub_80A8764(struct Sprite *sprite)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
}
+
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = gSprites[spriteId].pos1.x;
- sprite->data[2] = gSprites[spriteId].pos1.x + gBattleAnimArgs[1];
- sprite->data[3] = gSprites[spriteId].pos1.y;
- sprite->data[4] = gSprites[spriteId].pos1.y + gBattleAnimArgs[2];
- sub_8078A5C(sprite);
+ sprite->data[1] = gSprites[monSpriteId].pos1.x;
+ sprite->data[2] = gSprites[monSpriteId].pos1.x + gBattleAnimArgs[1];
+ sprite->data[3] = gSprites[monSpriteId].pos1.y;
+ sprite->data[4] = gSprites[monSpriteId].pos1.y + gBattleAnimArgs[2];
+ InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = 0;
sprite->data[4] = 0;
- sprite->data[5] = spriteId;
+ sprite->data[5] = monSpriteId;
sprite->invisible = TRUE;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
- sprite->callback = sub_80784A8;
+ sprite->callback = TranslateMonBGSubPixelUntil;
}
static void sub_80A8818(struct Sprite *sprite)
@@ -582,7 +622,7 @@ static void sub_80A8818(struct Sprite *sprite)
sprite->data[2] = sprite->data[1] + gBattleAnimArgs[1];
sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
sprite->data[4] = sprite->data[3] + gBattleAnimArgs[2];
- sub_8078A5C(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = gSprites[spriteId].pos2.x << 8;
sprite->data[4] = gSprites[spriteId].pos2.y << 8;
sprite->data[5] = spriteId;
@@ -595,7 +635,7 @@ static void sub_80A8818(struct Sprite *sprite)
{
StoreSpriteCallbackInData(sprite, sub_80A88F0);
}
- sprite->callback = sub_80784A8;
+ sprite->callback = TranslateMonBGSubPixelUntil;
}
diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c
index 604c21e6d..21ac62401 100644
--- a/src/battle/battle_controller_linkopponent.c
+++ b/src/battle/battle_controller_linkopponent.c
@@ -73,7 +73,7 @@ extern void sub_80313A0(struct Sprite *);
extern void sub_803757C(void);
extern void oamt_add_pos2_onto_pos1();
extern void StoreSpriteCallbackInData();
-extern void sub_8078B34(struct Sprite *);
+extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
extern void sub_80375B4(void);
extern void sub_8010384(struct Sprite *);
extern void sub_8037B78(void);
@@ -1282,7 +1282,7 @@ void LinkOpponentHandleTrainerSlideBack(void)
gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_80375B4;
}
@@ -1633,7 +1633,7 @@ void LinkOpponentHandleTrainerBallThrow(void)
gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_803A3A8);
taskId = CreateTask(sub_803A2C4, 5);
gTasks[taskId].data[0] = gActiveBank;
diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c
index e1f93ba08..1d42f56c3 100644
--- a/src/battle/battle_controller_linkpartner.c
+++ b/src/battle/battle_controller_linkpartner.c
@@ -76,7 +76,7 @@ extern u8 sub_8031720();
extern u8 mplay_80342A4();
extern void oamt_add_pos2_onto_pos1();
extern void StoreSpriteCallbackInData();
-extern void sub_8078B34(struct Sprite *);
+extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
extern void sub_80105EC(struct Sprite *);
extern s32 sub_803FC34(u16);
extern void LoadPlayerTrainerBankSprite();
@@ -1227,7 +1227,7 @@ void LinkPartnerHandleTrainerSlideBack(void)
gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_811DB1C;
}
@@ -1579,7 +1579,7 @@ void LinkPartnerHandleTrainerBallThrow(void)
gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index 5fb642e0c..8e8743dbc 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -84,7 +84,7 @@ extern void sub_80313A0(struct Sprite *);
extern void sub_8032B4C(void);
extern void sub_8031A6C(u16, u8);
extern void sub_8032B84(void);
-extern void sub_8078B34(struct Sprite *);
+extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
extern void sub_8032BBC(void);
extern void oamt_add_pos2_onto_pos1();
extern void StoreSpriteCallbackInData();
@@ -1286,7 +1286,7 @@ void OpponentHandleTrainerSlideBack(void)
gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_8032BBC;
}
@@ -2225,7 +2225,7 @@ void OpponentHandleTrainerBallThrow(void)
gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8035C10);
taskId = CreateTask(sub_8035C44, 5);
gTasks[taskId].data[0] = gActiveBank;
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index 33a29c064..e28c058a3 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -102,7 +102,7 @@ extern void sub_8047858();
extern u8 GetBankSide(u8);
extern void StartBattleIntroAnim();
extern void oamt_add_pos2_onto_pos1();
-extern void sub_8078B34(struct Sprite *);
+extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
extern void StoreSpriteCallbackInData();
extern void BattleLoadPlayerMonSprite();
extern bool8 IsDoubleBattle(void);
@@ -3145,7 +3145,7 @@ void PlayerHandleTrainerSlideBack(void)
gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
gBattleBankFunc[gActiveBank] = sub_802D274;
@@ -3600,7 +3600,7 @@ void PlayerHandleTrainerBallThrow(void)
gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
index 3eacaa085..c590b487c 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle/battle_controller_wally.c
@@ -87,7 +87,7 @@ extern void sub_80304A8(void);
extern void sub_8047858();
extern void StartBattleIntroAnim();
extern void oamt_add_pos2_onto_pos1();
-extern void sub_8078B34(struct Sprite *);
+extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
extern void sub_8030E38(struct Sprite *);
extern void StoreSpriteCallbackInData();
extern u8 sub_8046400();
@@ -1484,7 +1484,7 @@ void WallyHandleTrainerBallThrow(void)
gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 9119c74ef..395736d03 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -636,7 +636,7 @@ void unref_sub_8078414(struct Sprite *sprite)
sprite->callback = sub_80782F8;
}
-void sub_8078458(struct Sprite *sprite)
+void TranslateMonBGUntil(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -650,7 +650,9 @@ void sub_8078458(struct Sprite *sprite)
}
}
-void sub_80784A8(struct Sprite *sprite)
+// Same as TranslateMonBGUntil, but it operates on sub-pixel values
+// to handle slower translations.
+void TranslateMonBGSubPixelUntil(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -938,12 +940,12 @@ void sub_8078A34(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- sub_8078A5C(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->callback = sub_80783D0;
sprite->callback(sprite);
}
-void sub_8078A5C(struct Sprite *sprite)
+void InitSpriteDataForLinearTranslation(struct Sprite *sprite)
{
s16 x = (sprite->data[2] - sprite->data[1]) << 8;
s16 y = (sprite->data[4] - sprite->data[3]) << 8;
@@ -981,12 +983,12 @@ void InitAnimSpriteTranslationDeltas(struct Sprite *sprite)
sprite->data[3] = 0;
}
-void sub_8078B34(struct Sprite *sprite)
+void StartTranslateAnimSpriteByDeltas(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
InitAnimSpriteTranslationDeltas(sprite);
- sprite->callback = sub_8078BB8;
+ sprite->callback = TranslateAnimSpriteByDeltasUntil;
sprite->callback(sprite);
}
@@ -1020,7 +1022,7 @@ bool8 TranslateAnimSpriteByDeltas(struct Sprite *sprite)
return FALSE;
}
-void sub_8078BB8(struct Sprite *sprite)
+void TranslateAnimSpriteByDeltasUntil(struct Sprite *sprite)
{
if (TranslateAnimSpriteByDeltas(sprite))
SetCallbackToStoredInData(sprite);
@@ -1038,7 +1040,7 @@ void sub_8078C00(struct Sprite *sprite)
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
sub_8078BD4(sprite);
- sprite->callback = sub_8078BB8;
+ sprite->callback = TranslateAnimSpriteByDeltasUntil;
sprite->callback(sprite);
}
@@ -1392,7 +1394,15 @@ void sub_80793C4(struct Sprite *sprite)
}
}
-void sub_807941C(struct Sprite *sprite)
+// Linearly translates a sprite to a target position on the
+// other mon's sprite.
+// arg 0: initial x offset
+// arg 1: initial y offset
+// arg 2: target x offset
+// arg 3: target y offset
+// arg 4: duration
+// arg 5: lower 8 bits = location on attacking mon, upper 8 bits = location on target mon pick to target
+void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
{
bool8 v1;
u8 v2;
@@ -1408,12 +1418,13 @@ void sub_807941C(struct Sprite *sprite)
v2 = 1;
InitAnimSpritePos(sprite, v1);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBankPosition(gAnimBankTarget, v2) + gBattleAnimArgs[3];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -1466,7 +1477,7 @@ void sub_8079534(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBankPosition(slot, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBankPosition(slot, r7) + gBattleAnimArgs[3];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -2338,6 +2349,6 @@ void sub_807A9BC(struct Sprite *sprite)
sprite->pos1.x += x;
sprite->pos1.y = gBattleAnimArgs[5] - 80;
}
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}