summaryrefslogtreecommitdiff
path: root/src/battle
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle')
-rw-r--r--src/battle/anim/aurora.c6
-rw-r--r--src/battle/anim/blow_kiss.c6
-rw-r--r--src/battle/anim/bubble.c4
-rw-r--r--src/battle/anim/bug.c22
-rw-r--r--src/battle/anim/bullet.c4
-rw-r--r--src/battle/anim/cutter.c58
-rw-r--r--src/battle/anim/cyclone.c2
-rw-r--r--src/battle/anim/dark.c22
-rw-r--r--src/battle/anim/dragon.c4
-rw-r--r--src/battle/anim/draw.c116
-rw-r--r--src/battle/anim/egg.c2
-rw-r--r--src/battle/anim/energy_wave.c10
-rw-r--r--src/battle/anim/fight.c647
-rw-r--r--src/battle/anim/fire_2.c8
-rw-r--r--src/battle/anim/flying_path.c14
-rw-r--r--src/battle/anim/glitter.c2
-rw-r--r--src/battle/anim/grip.c2
-rw-r--r--src/battle/anim/guard.c4
-rw-r--r--src/battle/anim/guillotine.c6
-rw-r--r--src/battle/anim/heart_1.c2
-rw-r--r--src/battle/anim/heated_rock.c92
-rw-r--r--src/battle/anim/hop.c2
-rw-r--r--src/battle/anim/lunge_1.c14
-rw-r--r--src/battle/anim/lunge_2.c4
-rw-r--r--src/battle/anim/money.c2
-rw-r--r--src/battle/anim/note_rain.c4
-rw-r--r--src/battle/anim/note_scatter_2.c4
-rw-r--r--src/battle/anim/orbit.c12
-rw-r--r--src/battle/anim/orbs.c16
-rw-r--r--src/battle/anim/perceive.c2
-rw-r--r--src/battle/anim/poison.c18
-rw-r--r--src/battle/anim/powder.c17
-rw-r--r--src/battle/anim/psychic.c14
-rw-r--r--src/battle/anim/ring.c22
-rw-r--r--src/battle/anim/rock.c14
-rw-r--r--src/battle/anim/scan.c4
-rw-r--r--src/battle/anim/seed.c4
-rw-r--r--src/battle/anim/shadow_minimize.c13
-rw-r--r--src/battle/anim/sonic.c4
-rw-r--r--src/battle/anim/sonic_task.c2
-rw-r--r--src/battle/anim/sunlight.c2
-rw-r--r--src/battle/anim/sword.c4
-rw-r--r--src/battle/anim/tile_out.c2
-rw-r--r--src/battle/anim/unused_4.c4
-rw-r--r--src/battle/anim/unused_7.c4
-rw-r--r--src/battle/anim/unused_8.c4
-rw-r--r--src/battle/anim/unused_9.c19
-rw-r--r--src/battle/anim/water.c4
-rw-r--r--src/battle/anim/wisp_fire.c4
-rw-r--r--src/battle/anim/wisp_orb.c4
-rw-r--r--src/battle/anim/withdraw.c6
-rw-r--r--src/battle/battle_2.c7
-rw-r--r--src/battle/battle_7.c30
-rw-r--r--src/battle/battle_anim.c113
-rw-r--r--src/battle/battle_anim_807B69C.c4
-rw-r--r--src/battle/battle_anim_80A7E7C.c435
-rw-r--r--src/battle/battle_controller_linkopponent.c108
-rw-r--r--src/battle/battle_controller_linkpartner.c112
-rw-r--r--src/battle/battle_controller_opponent.c130
-rw-r--r--src/battle/battle_controller_player.c132
-rw-r--r--src/battle/battle_controller_safari.c14
-rw-r--r--src/battle/battle_controller_wally.c76
-rw-r--r--src/battle/pokeball.c46
-rw-r--r--src/battle/reshow_battle_screen.c44
64 files changed, 1523 insertions, 990 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)
{
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index b09d9ad8d..e37c33d0f 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -88,7 +88,7 @@ extern u16 gBattlePartyID[];
extern u8 gCurrentActionFuncId;
extern u8 gBanksByTurnOrder[];
extern struct UnknownStruct12 gUnknown_02024AD0[];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u16 gCurrentMove; // This is mis-named. It is a species, not a move ID.
extern u8 gLastUsedAbility;
extern u8 gStringBank;
@@ -4671,7 +4671,7 @@ void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d)
}
else
{
- objectID = gObjectBankIDs[bank];
+ objectID = gBankSpriteIds[bank];
ewram17810[bank].unk3 = spriteId;
ewram17810[bank].unk0_2 = 1;
gSprites[spriteId].data[0] = 0xC0;
@@ -8307,9 +8307,8 @@ void HandleAction_UseItem(void)
}
else
{
- ewram16003 = gBankAttacker;
- switch (ewram160D8(gBankAttacker))
+ switch (ewram160D8((ewram16003 = gBankAttacker)))
{
case AI_ITEM_FULL_RESTORE:
case AI_ITEM_HEAL_HP:
diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c
index b4c71b9c2..85c1d4aed 100644
--- a/src/battle/battle_7.c
+++ b/src/battle/battle_7.c
@@ -26,7 +26,7 @@ extern u8 gActiveBank;
extern u8 gNoOfAllBanks;
extern u16 gBattlePartyID[];
extern u8 gBanksBySide[];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u16 gUnknown_02024DE8;
extern u8 gDoingBattleAnim;
extern u32 gTransformedPersonalities[];
@@ -169,9 +169,9 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e)
}
if (ewram17800[a].substituteSprite && sub_803163C(d) == 0)
return TRUE;
- if (ewram17800[a].substituteSprite && d == 2 && gSprites[gObjectBankIDs[a]].invisible)
+ if (ewram17800[a].substituteSprite && d == 2 && gSprites[gBankSpriteIds[a]].invisible)
{
- refresh_graphics_maybe(a, 1, gObjectBankIDs[a]);
+ refresh_graphics_maybe(a, 1, gBankSpriteIds[a]);
sub_80324E0(a);
return TRUE;
}
@@ -592,12 +592,12 @@ void sub_8031F24(void)
s32 i;
for (i = 0; i < gNoOfAllBanks; i++)
- ewram17800[i].invisible = gSprites[gObjectBankIDs[i]].invisible;
+ ewram17800[i].invisible = gSprites[gBankSpriteIds[i]].invisible;
}
void sub_8031F88(u8 a)
{
- ewram17800[a].invisible = gSprites[gObjectBankIDs[a]].invisible;
+ ewram17800[a].invisible = gSprites[gBankSpriteIds[a]].invisible;
}
void sub_8031FC4(u8 a, u8 b, bool8 c)
@@ -611,7 +611,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
if (c)
{
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], ewram17840.unk0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[a]], ewram17840.unk0);
paletteOffset = 0x100 + a * 16;
LoadPalette(ewram16400 + ewram17840.unk0 * 32, paletteOffset, 32);
gBattleMonForms[a] = ewram17840.unk0;
@@ -620,7 +620,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
- gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a);
+ gSprites[gBankSpriteIds[a]].pos1.y = sub_8077F68(a);
}
else
{
@@ -673,7 +673,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
gTransformedPersonalities[a]);
}
}
- DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32), 0x800);
+ DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gBankSpriteIds[a]].oam.tileNum * 32), 0x800);
paletteOffset = 0x100 + a * 16;
lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue);
LZDecompressWram(lzPaletteData, gSharedMem);
@@ -692,8 +692,8 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
ewram17800[a].transformedSpecies = species;
gBattleMonForms[a] = gBattleMonForms[b];
}
- gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a);
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
+ gSprites[gBankSpriteIds[a]].pos1.y = sub_8077F68(a);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
}
}
@@ -833,15 +833,15 @@ void sub_80326EC(u8 a)
{
if (IsBankSpritePresent(i) != 0)
{
- gSprites[gObjectBankIDs[i]].oam.affineMode = a;
+ gSprites[gBankSpriteIds[i]].oam.affineMode = a;
if (a == 0)
{
- ewram17810[i].unk6 = gSprites[gObjectBankIDs[i]].oam.matrixNum;
- gSprites[gObjectBankIDs[i]].oam.matrixNum = 0;
+ ewram17810[i].unk6 = gSprites[gBankSpriteIds[i]].oam.matrixNum;
+ gSprites[gBankSpriteIds[i]].oam.matrixNum = 0;
}
else
{
- gSprites[gObjectBankIDs[i]].oam.matrixNum = ewram17810[i].unk6;
+ gSprites[gBankSpriteIds[i]].oam.matrixNum = ewram17810[i].unk6;
}
}
}
@@ -867,7 +867,7 @@ void sub_80328A4(struct Sprite *sprite)
{
bool8 invisible = FALSE;
u8 r4 = sprite->data[0];
- struct Sprite *r7 = &gSprites[gObjectBankIDs[r4]];
+ struct Sprite *r7 = &gSprites[gBankSpriteIds[r4]];
if (!r7->inUse || IsBankSpritePresent(r4) == 0)
{
diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c
index c71c12ce7..03ce1798f 100644
--- a/src/battle/battle_anim.c
+++ b/src/battle/battle_anim.c
@@ -14,6 +14,7 @@
#include "task.h"
#include "ewram.h"
#include "graphics.h"
+#include "constants/battle_anim.h"
// sprites start at 10000 and thus must be subtracted of 10000 to account for the true index.
#define GET_TRUE_SPRITE_INDEX(i) (i - 10000)
@@ -1287,7 +1288,7 @@ const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
};
extern u16 gBattlePartyID[4];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u8 gBankAttacker;
extern u8 gBankTarget;
EWRAM_DATA const u8 *sBattleAnimScriptPtr = NULL;
@@ -1327,7 +1328,7 @@ extern struct MusicPlayerInfo gMPlay_BGM;
extern struct MusicPlayerInfo gMPlay_SE1;
extern struct MusicPlayerInfo gMPlay_SE2;
-extern const u16 gUnknown_081C7160[];
+extern const u16 gSingingMoves[];
extern const u8 *const gBattleAnims_Moves[];
static void RunAnimScriptCommand(void);
@@ -1521,10 +1522,11 @@ void LaunchBattleAnimation(const u8 *const moveAnims[], u16 move, u8 isMoveAnim)
if (isMoveAnim)
{
- for (i = 0; gUnknown_081C7160[i] != 0xFFFF; i++)
+ for (i = 0; gSingingMoves[i] != 0xFFFF; i++)
{
- if (move == gUnknown_081C7160[i])
+ if (move == gSingingMoves[i])
{
+ // Lower the volume for the short song that gets played.
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128);
break;
}
@@ -1607,28 +1609,28 @@ static void RunAnimScriptCommand(void)
static void ScriptCmd_loadspritegfx(void)
{
- u16 index;
+ u16 tag;
sBattleAnimScriptPtr++;
- index = T1_READ_16(sBattleAnimScriptPtr);
- LoadCompressedObjectPic(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)]);
- LoadCompressedObjectPalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]);
+ tag = T1_READ_16(sBattleAnimScriptPtr);
+ LoadCompressedObjectPic(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)]);
+ LoadCompressedObjectPalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(tag)]);
sBattleAnimScriptPtr += 2;
- AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
+ AddSpriteIndex(GET_TRUE_SPRITE_INDEX(tag));
gAnimFramesToWait = 1;
gAnimScriptCallback = WaitAnimFrameCount;
}
static void ScriptCmd_unloadspritegfx(void)
{
- u16 index;
+ u16 tag;
sBattleAnimScriptPtr++;
- index = T1_READ_16(sBattleAnimScriptPtr);
- FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag);
- FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag);
+ tag = T1_READ_16(sBattleAnimScriptPtr);
+ FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)].tag);
+ FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)].tag);
sBattleAnimScriptPtr += 2;
- ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
+ ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(tag));
}
static void ScriptCmd_createsprite(void)
@@ -1810,7 +1812,7 @@ static void ScriptCmd_monbg(void)
u8 bank;
u8 identity;
bool8 toBG_2;
- u16 r4;
+ u16 spriteId;
u8 taskId;
sBattleAnimScriptPtr++;
@@ -1834,12 +1836,12 @@ static void ScriptCmd_monbg(void)
else
toBG_2 = 1;
- sub_8076034(bank, toBG_2);
- r4 = gObjectBankIDs[bank];
+ MoveBattlerSpriteToBG(bank, toBG_2);
+ spriteId = gBankSpriteIds[bank];
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
- gTasks[taskId].data[0] = r4;
- gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x;
- gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
+ gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
if (toBG_2 == 0)
{
gTasks[taskId].data[3] = gBattle_BG1_X;
@@ -1855,8 +1857,9 @@ static void ScriptCmd_monbg(void)
gMonAnimTaskIdArray[0] = taskId;
}
+
bank ^= 2;
- if (animBank > 1 && IsAnimBankSpriteVisible(bank))
+ if (animBank >= ANIM_BANK_ATK_PARTNER && IsAnimBankSpriteVisible(bank))
{
identity = GetBankIdentity(bank);
identity += 0xFF;
@@ -1864,12 +1867,12 @@ static void ScriptCmd_monbg(void)
toBG_2 = 0;
else
toBG_2 = 1;
- sub_8076034(bank, toBG_2);
- r4 = gObjectBankIDs[bank];
+ MoveBattlerSpriteToBG(bank, toBG_2);
+ spriteId = gBankSpriteIds[bank];
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
- gTasks[taskId].data[0] = r4;
- gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x;
- gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
+ gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
if (toBG_2 == 0)
{
gTasks[taskId].data[3] = gBattle_BG1_X;
@@ -1902,17 +1905,17 @@ bool8 IsAnimBankSpriteVisible(u8 bank)
return FALSE;
if (IsContest())
return TRUE; // this line wont ever be reached.
- if (!(EWRAM_17800[bank].unk0 & 1) || !gSprites[gObjectBankIDs[bank]].invisible)
+ if (!(EWRAM_17800[bank].unk0 & 1) || !gSprites[gBankSpriteIds[bank]].invisible)
return TRUE;
return FALSE;
}
-void sub_8076034(u8 a, u8 b)
+void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
{
u8 spriteId;
- if (b == 0)
+ if (toBG_2 == 0)
{
volatile u8 pointlessZero;
struct UnknownStruct2 s;
@@ -1928,23 +1931,23 @@ void sub_8076034(u8 a, u8 b)
REG_BG1CNT_BITFIELD.screenSize = 1;
REG_BG1CNT_BITFIELD.areaOverflowMode = 0;
- spriteId = gObjectBankIDs[a];
+ spriteId = gBankSpriteIds[bank];
gBattle_BG1_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
if (IsContest() != 0 && IsSpeciesNotUnown(EWRAM_19348) != 0)
gBattle_BG1_X--;
gBattle_BG1_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
+ gSprites[gBankSpriteIds[bank]].invisible = TRUE;
REG_BG1HOFS = gBattle_BG1_X;
REG_BG1VOFS = gBattle_BG1_Y;
- LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk8 * 16, 32);
- DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + a * 16, (u16 *)PLTT + s.unk8 * 16, 32);
+ LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, s.unk8 * 16, 32);
+ DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (u16 *)PLTT + s.unk8 * 16, 32);
if (IsContest() != 0)
r2 = 0;
else
- r2 = GetBankIdentity(a);
+ r2 = GetBankIdentity(bank);
sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock);
if (IsContest() != 0)
sub_8076380();
@@ -1962,18 +1965,18 @@ void sub_8076034(u8 a, u8 b)
REG_BG2CNT_BITFIELD.screenSize = 1;
REG_BG2CNT_BITFIELD.areaOverflowMode = 0;
- spriteId = gObjectBankIDs[a];
+ spriteId = gBankSpriteIds[bank];
gBattle_BG2_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
gBattle_BG2_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
+ gSprites[gBankSpriteIds[bank]].invisible = TRUE;
REG_BG2HOFS = gBattle_BG2_X;
REG_BG2VOFS = gBattle_BG2_Y;
- LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, 0x90, 32);
- DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + a * 16, (void *)(PLTT + 0x120), 32);
+ LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, 0x90, 32);
+ DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (void *)(PLTT + 0x120), 32);
- sub_80E4EF8(0, 0, GetBankIdentity(a), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock);
+ sub_80E4EF8(0, 0, GetBankIdentity(bank), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock);
}
}
@@ -2096,9 +2099,9 @@ static void ScriptCmd_clearmonbg(void)
bank = gAnimBankTarget;
if (gMonAnimTaskIdArray[0] != 0xFF)
- gSprites[gObjectBankIDs[bank]].invisible = FALSE;
+ gSprites[gBankSpriteIds[bank]].invisible = FALSE;
if (animBankId > 1 && gMonAnimTaskIdArray[1] != 0xFF)
- gSprites[gObjectBankIDs[bank ^ 2]].invisible = FALSE;
+ gSprites[gBankSpriteIds[bank ^ 2]].invisible = FALSE;
else
animBankId = 0;
@@ -2166,8 +2169,8 @@ static void ScriptCmd_monbg_22(void)
r1 = 0;
else
r1 = 1;
- sub_8076034(bank, r1);
- gSprites[gObjectBankIDs[bank]].invisible = FALSE;
+ MoveBattlerSpriteToBG(bank, r1);
+ gSprites[gBankSpriteIds[bank]].invisible = FALSE;
}
bank ^= 2;
@@ -2179,8 +2182,8 @@ static void ScriptCmd_monbg_22(void)
r1 = 0;
else
r1 = 1;
- sub_8076034(bank, r1);
- gSprites[gObjectBankIDs[bank]].invisible = FALSE;
+ MoveBattlerSpriteToBG(bank, r1);
+ gSprites[gBankSpriteIds[bank]].invisible = FALSE;
}
sBattleAnimScriptPtr++;
}
@@ -2205,9 +2208,9 @@ static void ScriptCmd_clearmonbg_23(void)
bank = gAnimBankTarget;
if (IsAnimBankSpriteVisible(bank))
- gSprites[gObjectBankIDs[bank]].invisible = FALSE;
+ gSprites[gBankSpriteIds[bank]].invisible = FALSE;
if (animBankId > 1 && IsAnimBankSpriteVisible(bank ^ 2))
- gSprites[gObjectBankIDs[bank ^ 2]].invisible = FALSE;
+ gSprites[gBankSpriteIds[bank ^ 2]].invisible = FALSE;
else
animBankId = 0;
@@ -2244,13 +2247,13 @@ static void sub_80769A4(u8 taskId)
static void ScriptCmd_setalpha(void)
{
- u16 half1, half2;
+ u16 spriteAlpha, bgAlpha;
sBattleAnimScriptPtr++;
- half1 = *(sBattleAnimScriptPtr++);
- half2 = *(sBattleAnimScriptPtr++) << 8;
- REG_BLDCNT = 0x3F40;
- REG_BLDALPHA = half1 | half2;
+ spriteAlpha = *(sBattleAnimScriptPtr++);
+ bgAlpha = *(sBattleAnimScriptPtr++) << 8;
+ REG_BLDCNT = BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_EFFECT_BLEND;
+ REG_BLDALPHA = spriteAlpha | bgAlpha;
}
static void ScriptCmd_setbldcnt(void)
@@ -2699,13 +2702,13 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan)
static void ScriptCmd_playsewithpan(void)
{
- u16 songId;
+ u16 soundId;
s8 pan;
sBattleAnimScriptPtr++;
- songId = T1_READ_16(sBattleAnimScriptPtr);
+ soundId = T1_READ_16(sBattleAnimScriptPtr);
pan = T1_READ_8(sBattleAnimScriptPtr + 2);
- PlaySE12WithPanning(songId, BattleAnimAdjustPanning(pan));
+ PlaySE12WithPanning(soundId, BattleAnimAdjustPanning(pan));
sBattleAnimScriptPtr += 3;
}
diff --git a/src/battle/battle_anim_807B69C.c b/src/battle/battle_anim_807B69C.c
index 058a45769..6043efb0c 100644
--- a/src/battle/battle_anim_807B69C.c
+++ b/src/battle/battle_anim_807B69C.c
@@ -15,7 +15,7 @@ extern bool8 gAnimScriptActive;
extern void (*gAnimScriptCallback)(void);
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankTarget;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
extern const u8 *const gBattleAnims_StatusConditions[];
@@ -72,7 +72,7 @@ static void sub_807BDAC(u8);
u8 unref_sub_807B69C(u8 a, u8 b)
{
- u8 spriteId1 = gObjectBankIDs[a];
+ u8 spriteId1 = gBankSpriteIds[a];
u8 taskId = CreateTask(sub_807B7E0, 10);
u8 spriteId2;
u8 i;
diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c
index f109333e3..f339a1206 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"
@@ -9,34 +10,34 @@
extern s16 gBattleAnimArgs[8];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern s32 gAnimMoveDmg;
extern u16 gAnimMovePower;
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-static void sub_80A7EF0(u8 taskId);
-static void sub_80A808C(u8 taskId);
-static void sub_80A81D8(u8 taskId);
-static void sub_80A8374(u8 taskId);
+static void AnimTask_ShakeMonStep(u8 taskId);
+static void AnimTask_ShakeMon2Step(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);
static void sub_80A8A18(u8 taskId);
-static void sub_80A8C0C(u8 taskId);
+static void AnimTask_SwayMonStep(u8 taskId);
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 =
@@ -91,28 +92,35 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 =
.callback = sub_80A8818,
};
-void sub_80A7E7C(u8 taskId)
+// Task to facilitate simple shaking of a pokemon's picture in battle.
+// The shaking alternates between the original position and the target position.
+// arg 0: anim battler
+// arg 1: x pixel offset
+// arg 2: y pixel offset
+// arg 3: num times to shake
+// arg 4: frame delay
+void AnimTask_ShakeMon(u8 taskId)
{
- u8 sprite;
- sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
- if (sprite == 0xff)
+ u8 spriteId;
+ 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] = gBattleAnimArgs[3];
TASK.data[2] = gBattleAnimArgs[4];
TASK.data[3] = gBattleAnimArgs[4];
TASK.data[4] = gBattleAnimArgs[1];
TASK.data[5] = gBattleAnimArgs[2];
- TASK.func = sub_80A7EF0;
- sub_80A7EF0(taskId);
+ TASK.func = AnimTask_ShakeMonStep;
+ AnimTask_ShakeMonStep(taskId);
}
-static void sub_80A7EF0(u8 taskId)
+static void AnimTask_ShakeMonStep(u8 taskId)
{
if (TASK.data[3] == 0)
{
@@ -147,13 +155,19 @@ static void sub_80A7EF0(u8 taskId)
}
}
-
-void sub_80A7FA0(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.
+// arg 0: anim battler
+// arg 1: x pixel offset
+// arg 2: y pixel offset
+// arg 3: num times to shake
+// arg 4: frame delay
+void AnimTask_ShakeMon2(u8 taskId)
{
u8 sprite;
- bool8 r6;
+ bool8 destroy;
u8 side;
- r6 = 0;
+ destroy = FALSE;
if (gBattleAnimArgs[0] < 4)
{
sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
@@ -181,21 +195,23 @@ void sub_80A7FA0(u8 taskId)
side = GetBankByIdentity(3);
break;
}
+
if (IsAnimBankSpriteVisible(side) == FALSE)
- {
- r6 = 1;
- }
- sprite = gObjectBankIDs[side];
+ destroy = TRUE;
+
+ sprite = gBankSpriteIds[side];
}
else
{
- sprite = gObjectBankIDs[gAnimBankAttacker];
+ sprite = gBankSpriteIds[gAnimBankAttacker];
}
- if (r6)
+
+ if (destroy)
{
DestroyAnimVisualTask(taskId);
return;
}
+
gSprites[sprite].pos2.x = gBattleAnimArgs[1];
gSprites[sprite].pos2.y = gBattleAnimArgs[2];
TASK.data[0] = sprite;
@@ -204,30 +220,24 @@ void sub_80A7FA0(u8 taskId)
TASK.data[3] = gBattleAnimArgs[4];
TASK.data[4] = gBattleAnimArgs[1];
TASK.data[5] = gBattleAnimArgs[2];
- TASK.func = sub_80A808C;
- sub_80A808C(taskId);
+ TASK.func = AnimTask_ShakeMon2Step;
+ TASK.func(taskId);
}
-static void sub_80A808C(u8 taskId)
+static void AnimTask_ShakeMon2Step(u8 taskId)
{
if (TASK.data[3] == 0)
{
if (SPRITE.pos2.x == TASK.data[4])
- {
SPRITE.pos2.x = -TASK.data[4];
- }
else
- {
SPRITE.pos2.x = TASK.data[4];
- }
+
if (SPRITE.pos2.y == TASK.data[5])
- {
SPRITE.pos2.y = -TASK.data[5];
- }
else
- {
SPRITE.pos2.y = TASK.data[5];
- }
+
TASK.data[3] = TASK.data[2];
if (--TASK.data[1] == 0)
{
@@ -243,29 +253,37 @@ static void sub_80A808C(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)
{
@@ -302,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];
@@ -311,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;
@@ -325,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;
@@ -340,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] = gObjectBankIDs[gAnimBankAttacker];
+ 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;
@@ -432,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 = gObjectBankIDs[gAnimBankAttacker];
- }
+ monSpriteId = gBankSpriteIds[gAnimBankAttacker];
else
- {
- spriteId = gObjectBankIDs[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
@@ -506,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 = gObjectBankIDs[v1];
- if (GetBankSide(v1))
+ battler = gAnimBankTarget;
+
+ monSpriteId = gBankSpriteIds[battler];
+ if (GetBankSide(battler) != SIDE_PLAYER)
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
if (gBattleAnimArgs[3] == 1)
@@ -532,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)
@@ -559,7 +608,7 @@ static void sub_80A8818(struct Sprite *sprite)
{
v1 = gAnimBankTarget;
}
- spriteId = gObjectBankIDs[v1];
+ spriteId = gBankSpriteIds[v1];
if (GetBankSide(v1))
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
@@ -573,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;
@@ -586,7 +635,7 @@ static void sub_80A8818(struct Sprite *sprite)
{
StoreSpriteCallbackInData(sprite, sub_80A88F0);
}
- sprite->callback = sub_80784A8;
+ sprite->callback = TranslateMonBGSubPixelUntil;
}
@@ -668,7 +717,7 @@ void sub_80A8A80(u8 taskId)
DestroyAnimVisualTask(taskId);
return;
}
- spriteId = gObjectBankIDs[gAnimBankAttacker ^ 2];
+ spriteId = gBankSpriteIds[gAnimBankAttacker ^ 2];
break;
case 3:
if (!IsAnimBankSpriteVisible(gAnimBankTarget ^ 2))
@@ -676,7 +725,7 @@ void sub_80A8A80(u8 taskId)
DestroyAnimVisualTask(taskId);
return;
}
- spriteId = gObjectBankIDs[gAnimBankTarget ^ 2];
+ spriteId = gBankSpriteIds[gAnimBankTarget ^ 2];
break;
default:
DestroyAnimVisualTask(taskId);
@@ -705,59 +754,67 @@ static void sub_80A8B3C(u8 taskId)
}
}
-void sub_80A8B88(u8 taskId)
+// Task that facilitates translating the mon bg picture back and forth
+// in a swaying motion (uses Sine wave). It can sway either horizontally
+// or vertically, but not both.
+// arg 0: direction (0 = horizontal, 1 = vertical)
+// arg 1: wave amplitude
+// arg 2: wave period
+// arg 3: num sways
+// arg 4: which mon (0 = attacker, 1`= target)
+void AnimTask_SwayMon(u8 taskId)
{
u8 spriteId;
- if (GetBankSide(gAnimBankAttacker))
- {
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- }
+
spriteId = GetAnimBankSpriteId(gBattleAnimArgs[4]);
TASK.data[0] = gBattleAnimArgs[0];
TASK.data[1] = gBattleAnimArgs[1];
TASK.data[2] = gBattleAnimArgs[2];
TASK.data[3] = gBattleAnimArgs[3];
TASK.data[4] = spriteId;
+
if (gBattleAnimArgs[4] == 0)
- {
TASK.data[5] = gAnimBankAttacker;
- }
else
- {
TASK.data[5] = gAnimBankTarget;
- }
+
TASK.data[12] = 1;
- TASK.func = sub_80A8C0C;
+ TASK.func = AnimTask_SwayMonStep;
}
-static void sub_80A8C0C(u8 taskId)
+static void AnimTask_SwayMonStep(u8 taskId)
{
- s16 y;
+ s16 sineValue;
u8 spriteId;
- int index;
- u16 val;
+ int waveIndex;
+ u16 sineIndex;
+
spriteId = TASK.data[4];
- val = TASK.data[10] + TASK.data[2];
- TASK.data[10] = val;
- index = val >> 8;
- y = Sin(index, TASK.data[1]);
+ sineIndex = TASK.data[10] + TASK.data[2];
+ TASK.data[10] = sineIndex;
+ waveIndex = sineIndex >> 8;
+ sineValue = Sin(waveIndex, TASK.data[1]);
+
if (TASK.data[0] == 0)
{
- gSprites[spriteId].pos2.x = y;
+ gSprites[spriteId].pos2.x = sineValue;
}
else
{
- if (GetBankSide(TASK.data[5]) == 0)
+ if (GetBankSide(TASK.data[5]) == SIDE_PLAYER)
{
- gSprites[spriteId].pos2.y = (y >= 0) ? y : -y;
+ gSprites[spriteId].pos2.y = (sineValue >= 0) ? sineValue : -sineValue;
}
else
{
- gSprites[spriteId].pos2.y = (y >= 0) ? -y : y;
+ gSprites[spriteId].pos2.y = (sineValue >= 0) ? -sineValue : sineValue;
}
}
- if (((index >= 0x80u) && (TASK.data[11] == 0) && (TASK.data[12] == 1))
- || ((index < 0x7fu) && (TASK.data[11] == 1) && (TASK.data[12] == 0)))
+
+ if (((waveIndex >= 0x80u) && (TASK.data[11] == 0) && (TASK.data[12] == 1))
+ || ((waveIndex < 0x7fu) && (TASK.data[11] == 1) && (TASK.data[12] == 0)))
{
TASK.data[11] ^= 1;
TASK.data[12] ^= 1;
diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c
index 40f50d7ff..21ac62401 100644
--- a/src/battle/battle_controller_linkopponent.c
+++ b/src/battle/battle_controller_linkopponent.c
@@ -27,7 +27,7 @@ struct MovePpInfo
extern u8 gActiveBank;
extern u8 gBattleBufferA[][0x200];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u16 gBattlePartyID[];
extern u8 gHealthboxIDs[];
extern u16 gBattleTypeFlags;
@@ -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);
@@ -266,18 +266,18 @@ void sub_803752C(void)
void sub_803757C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
LinkOpponentBufferExecCompleted();
}
void sub_80375B4(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
{
- sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam);
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data[5];
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8031B74(gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam);
+ gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBank]].data[5];
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
LinkOpponentBufferExecCompleted();
}
}
@@ -381,8 +381,8 @@ void sub_8037840(void)
void sub_8037A74(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE
- && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBank]].animEnded == TRUE
+ && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
{
if (!ewram17810[gActiveBank].unk0_7)
{
@@ -414,7 +414,7 @@ void sub_8037B24(void)
void sub_8037B78(void)
{
- if (!gSprites[gObjectBankIDs[gActiveBank]].inUse)
+ if (!gSprites[gBankSpriteIds[gActiveBank]].inUse)
{
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkOpponentBufferExecCompleted();
@@ -425,8 +425,8 @@ void sub_8037BBC(void)
{
if (!ewram17810[gActiveBank].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8032A08(gActiveBank);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkOpponentBufferExecCompleted();
@@ -441,7 +441,7 @@ void sub_8037C2C(void)
void dp01t_0F_4_move_anim(void)
{
- u8 spriteId = gObjectBankIDs[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBank];
if (gSprites[spriteId].data[1] == 32)
{
@@ -485,7 +485,7 @@ void sub_8037D64(void)
ewram17810[gActiveBank].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
sub_8045A5C(
gHealthboxIDs[gActiveBank],
&gEnemyParty[gBattlePartyID[gActiveBank]],
@@ -1155,15 +1155,15 @@ void LinkOpponentHandleLoadPokeSprite(void)
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(gActiveBank, 2),
sub_8077F68(gActiveBank),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]);
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
gBattleBankFunc[gActiveBank] = sub_8037A74;
}
@@ -1185,18 +1185,18 @@ void sub_8039430(u8 a, u8 b)
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
- gObjectBankIDs[a] = CreateSprite(
+ gBankSpriteIds[a] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(a, 2),
sub_8077F68(a),
sub_8079E90(a));
- gSprites[gUnknown_0300434C[a]].data[1] = gObjectBankIDs[a];
- gSprites[gObjectBankIDs[a]].data[0] = a;
- gSprites[gObjectBankIDs[a]].data[2] = species;
- gSprites[gObjectBankIDs[a]].oam.paletteNum = a;
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
- gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a];
+ gSprites[gBankSpriteIds[a]].data[0] = a;
+ gSprites[gBankSpriteIds[a]].data[2] = species;
+ gSprites[gBankSpriteIds[a]].oam.paletteNum = a;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
+ gSprites[gBankSpriteIds[a]].invisible = TRUE;
+ gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFE);
}
@@ -1209,8 +1209,8 @@ void LinkOpponentHandleReturnPokeToBall(void)
}
else
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8032A08(gActiveBank);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkOpponentBufferExecCompleted();
@@ -1257,17 +1257,17 @@ void LinkOpponentHandleTrainerThrow(void)
}
sub_8031A6C(gender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
176 + xOffset, 40 + 4 * (8 - gTrainerFrontPicCoords[gender].coords),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag);
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum;
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[gender].tag);
- gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = gender;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[gender].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = gender;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_803757C;
}
@@ -1278,12 +1278,12 @@ void LinkOpponentHandleTrainerSlide(void)
void LinkOpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ 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 = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_80375B4;
}
@@ -1299,7 +1299,7 @@ void LinkOpponentHandlecmd10(void)
{
ewram17810[gActiveBank].unk4 = 0;
PlaySE12WithPanning(SE_POKE_DEAD, 63);
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8010384;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8010384;
gBattleBankFunc[gActiveBank] = sub_8037B78;
}
}
@@ -1574,14 +1574,14 @@ void LinkOpponentHandlecmd40(void)
void LinkOpponentHandleHitAnimation(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
{
LinkOpponentBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
sub_8047858(gActiveBank);
gBattleBankFunc[gActiveBank] = dp01t_0F_4_move_anim;
}
@@ -1629,12 +1629,12 @@ void LinkOpponentHandleTrainerBallThrow(void)
{
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_803A3A8);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ 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 = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_803A3A8);
taskId = CreateTask(sub_803A2C4, 5);
gTasks[taskId].data[0] = gActiveBank;
if (ewram17810[gActiveBank].unk0_0)
@@ -1733,7 +1733,7 @@ void LinkOpponentHandleSpriteInvisibility(void)
{
if (IsBankSpritePresent(gActiveBank) != 0)
{
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
}
LinkOpponentBufferExecCompleted();
diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c
index 3a16e12e6..1d42f56c3 100644
--- a/src/battle/battle_controller_linkpartner.c
+++ b/src/battle/battle_controller_linkpartner.c
@@ -35,7 +35,7 @@ extern u8 gBattleBufferA[][0x200];
extern u8 gActiveBank;
extern u32 gBattleExecBuffer;
extern u16 gBattlePartyID[];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u8 gBattleOutcome;
extern u16 gUnknown_02024DE8;
extern u8 gUnknown_02024E68[];
@@ -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();
@@ -260,17 +260,17 @@ void LinkPartnerBufferRunCommand(void)
void sub_811DAE4(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
LinkPartnerBufferExecCompleted();
}
void sub_811DB1C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
{
nullsub_10(0);
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
LinkPartnerBufferExecCompleted();
}
}
@@ -338,8 +338,8 @@ void sub_811DCA0(void)
void sub_811DDE8(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].animEnded
- && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBank]].animEnded
+ && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
LinkPartnerBufferExecCompleted();
}
@@ -362,11 +362,11 @@ void bx_t3_healthbar_update(void)
void sub_811DE98(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > 160)
+ if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > 160)
{
nullsub_9(GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkPartnerBufferExecCompleted();
}
@@ -376,8 +376,8 @@ void sub_811DF34(void)
{
if (!ewram17810[gActiveBank].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkPartnerBufferExecCompleted();
}
@@ -391,7 +391,7 @@ void sub_811DFA0(void)
void bx_blink_t3(void)
{
- u8 spriteId = gObjectBankIDs[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBank];
if (gSprites[spriteId].data[1] == 32)
{
gSprites[spriteId].data[1] = 0;
@@ -435,7 +435,7 @@ void sub_811E0CC(void)
FreeSpritePaletteByTag(0x27F9);
CreateTask(c3_0802FDF4, 10);
HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0);
sub_804777C(gActiveBank);
sub_8043DFC(gHealthboxIDs[gActiveBank]);
@@ -1104,15 +1104,15 @@ void LinkPartnerHandleLoadPokeSprite(void)
GetMonSpriteTemplate_803C56C(
GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(gActiveBank, 2),
sub_8077F68(gActiveBank),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]);
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
gBattleBankFunc[gActiveBank] = sub_811DDE8;
}
@@ -1134,18 +1134,18 @@ void sub_811F864(u8 a, u8 b)
species = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
- gObjectBankIDs[a] = CreateSprite(
+ gBankSpriteIds[a] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(a, 2),
sub_8077F68(a),
sub_8079E90(a));
- gSprites[gUnknown_0300434C[a]].data[1] = gObjectBankIDs[a];
- gSprites[gObjectBankIDs[a]].data[0] = a;
- gSprites[gObjectBankIDs[a]].data[2] = species;
- gSprites[gObjectBankIDs[a]].oam.paletteNum = a;
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
- gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a];
+ gSprites[gBankSpriteIds[a]].data[0] = a;
+ gSprites[gBankSpriteIds[a]].data[2] = species;
+ gSprites[gBankSpriteIds[a]].oam.paletteNum = a;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
+ gSprites[gBankSpriteIds[a]].invisible = TRUE;
+ gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFF);
}
@@ -1158,8 +1158,8 @@ void LinkPartnerHandleReturnPokeToBall(void)
}
else
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkPartnerBufferExecCompleted();
}
@@ -1205,14 +1205,14 @@ void LinkPartnerHandleTrainerThrow(void)
}
LoadPlayerTrainerBankSprite(gender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
80 + xOffset, 80 + 4 * (8 - gTrainerBackPicCoords[gender].coords),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_811DAE4;
}
@@ -1223,12 +1223,12 @@ void LinkPartnerHandleTrainerSlide(void)
void LinkPartnerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ 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 = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_811DB1C;
}
@@ -1245,9 +1245,9 @@ void LinkPartnerHandlecmd10(void)
ewram17810[gActiveBank].unk4 = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
PlaySE12WithPanning(SE_POKE_DEAD, -64);
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 5;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80105EC;
gBattleBankFunc[gActiveBank] = sub_811DE98;
}
}
@@ -1519,14 +1519,14 @@ void LinkPartnerHandlecmd40(void)
void LinkPartnerHandleHitAnimation(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
{
LinkPartnerBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
sub_8047858(gActiveBank);
gBattleBankFunc[gActiveBank] = bx_blink_t3;
}
@@ -1575,19 +1575,19 @@ void LinkPartnerHandleTrainerBallThrow(void)
u8 r4;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gActiveBank;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ 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 = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
r4 = AllocSpritePalette(0xD6F9);
LoadCompressedPalette(
gTrainerBackPicPaletteTable[gLinkPlayers[sub_803FC34(gActiveBank)].gender].data,
0x100 + r4 * 16, 0x20);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = r4;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = r4;
taskId = CreateTask(sub_812071C, 5);
gTasks[taskId].data[0] = gActiveBank;
if (ewram17810[gActiveBank].unk0_0)
@@ -1673,7 +1673,7 @@ void LinkPartnerHandleSpriteInvisibility(void)
{
if (IsBankSpritePresent(gActiveBank) != 0)
{
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
}
LinkPartnerBufferExecCompleted();
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index 338f8d418..8e8743dbc 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -34,7 +34,7 @@ extern u8 gUnknown_02023A14_50;
extern u8 gActiveBank;
extern u8 gBattleBufferA[][0x200];
extern u16 gBattlePartyID[];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u8 gBattleMonForms[];
extern struct SpriteTemplate gUnknown_02024E8C;
extern void (*gBattleBankFunc[])(void);
@@ -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();
@@ -280,25 +280,25 @@ void OpponentBufferRunCommand(void)
void sub_8032B4C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
OpponentBufferExecCompleted();
}
// Duplicate of sub_8032B4C
void sub_8032B84(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
OpponentBufferExecCompleted();
}
void sub_8032BBC(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
{
- sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam);
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data[5];
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8031B74(gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam);
+ gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBank]].data[5];
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
OpponentBufferExecCompleted();
}
}
@@ -386,8 +386,8 @@ void sub_8032E2C(void)
void sub_8033018(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE
- && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBank]].animEnded == TRUE
+ && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
{
if (!ewram17810[gActiveBank].unk0_7)
{
@@ -419,7 +419,7 @@ void sub_80330C8(void)
void sub_803311C(void)
{
- if (!gSprites[gObjectBankIDs[gActiveBank]].inUse)
+ if (!gSprites[gBankSpriteIds[gActiveBank]].inUse)
{
sub_8043DB0(gHealthboxIDs[gActiveBank]);
OpponentBufferExecCompleted();
@@ -430,8 +430,8 @@ void sub_8033160(void)
{
if (!ewram17810[gActiveBank].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8032A08(gActiveBank);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
OpponentBufferExecCompleted();
@@ -446,7 +446,7 @@ void sub_80331D0(void)
void bx_blink_t7(void)
{
- u8 spriteId = gObjectBankIDs[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBank];
if (gSprites[spriteId].data[1] == 32)
{
@@ -490,7 +490,7 @@ void sub_8033308(void)
ewram17810[gActiveBank].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
sub_8045A5C(
gHealthboxIDs[gActiveBank],
&gEnemyParty[gBattlePartyID[gActiveBank]],
@@ -1126,16 +1126,16 @@ void OpponentHandleLoadPokeSprite(void)
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(gActiveBank, 2),
sub_8077F68(gActiveBank),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = species;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]);
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = species;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
gBattleBankFunc[gActiveBank] = sub_8033018;
}
@@ -1158,18 +1158,18 @@ void sub_803495C(u8 a, u8 b)
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
- gObjectBankIDs[a] = CreateSprite(
+ gBankSpriteIds[a] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(a, 2),
sub_8077F68(a),
sub_8079E90(a));
- gSprites[gObjectBankIDs[a]].data[0] = a;
- gSprites[gObjectBankIDs[a]].data[2] = species;
- gSprites[gUnknown_0300434C[a]].data[1] = gObjectBankIDs[a];
- gSprites[gObjectBankIDs[a]].oam.paletteNum = a;
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
- gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[a]].data[0] = a;
+ gSprites[gBankSpriteIds[a]].data[2] = species;
+ gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a];
+ gSprites[gBankSpriteIds[a]].oam.paletteNum = a;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
+ gSprites[gBankSpriteIds[a]].invisible = TRUE;
+ gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFE);
}
@@ -1182,8 +1182,8 @@ void OpponentHandleReturnPokeToBall(void)
}
else
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8032A08(gActiveBank);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
OpponentBufferExecCompleted();
@@ -1234,18 +1234,18 @@ void OpponentHandleTrainerThrow(void)
sub_8031A6C(trainerPicIndex, gActiveBank);
GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
0xB0,
40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum;
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicIndex;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_8032B4C;
}
@@ -1264,30 +1264,30 @@ void OpponentHandleTrainerSlide(void)
sub_8031A6C(trainerPicIndex, gActiveBank);
GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
0xB0,
40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
0x1E);
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 96;
- gSprites[gObjectBankIDs[gActiveBank]].pos1.x += 32;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum;
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 96;
+ gSprites[gBankSpriteIds[gActiveBank]].pos1.x += 32;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicIndex;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_8032B84;
}
void OpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ 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 = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_8032BBC;
}
@@ -1303,7 +1303,7 @@ void OpponentHandlecmd10(void)
{
ewram17810[gActiveBank].unk4 = 0;
PlaySE12WithPanning(SE_POKE_DEAD, 63);
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8010384;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8010384;
gBattleBankFunc[gActiveBank] = sub_803311C;
}
}
@@ -2166,14 +2166,14 @@ void OpponentHandlecmd40(void)
void OpponentHandleHitAnimation(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
{
OpponentBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
sub_8047858(gActiveBank);
gBattleBankFunc[gActiveBank] = bx_blink_t7;
}
@@ -2221,12 +2221,12 @@ void OpponentHandleTrainerBallThrow(void)
{
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8035C10);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ 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 = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8035C10);
taskId = CreateTask(sub_8035C44, 5);
gTasks[taskId].data[0] = gActiveBank;
if (ewram17810[gActiveBank].unk0_0)
@@ -2325,7 +2325,7 @@ void OpponentHandleSpriteInvisibility(void)
{
if (IsBankSpritePresent(gActiveBank) != 0)
{
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
}
OpponentBufferExecCompleted();
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index e03e21849..e28c058a3 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -53,7 +53,7 @@ extern u8 gBankInMenu;
extern u16 gBattlePartyID[];
extern u8 gHealthboxIDs[];
extern u8 gDoingBattleAnim;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u16 gBattleTypeFlags;
extern u8 gBattleOutcome;
extern void (*gAnimScriptCallback)(void);
@@ -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);
@@ -143,7 +143,7 @@ extern bool8 gDoingBattleAnim;
extern u16 gBattleTypeFlags;
extern u32 gBattleExecBuffer;
extern u8 gBattleBufferA[][0x200];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u8 gActionSelectionCursor[];
extern u8 gMoveSelectionCursor[];
extern u8 gAbsentBankFlags;
@@ -370,7 +370,7 @@ void PlayerBufferRunCommand(void)
void bx_0802E404(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
PlayerBufferExecCompleted();
}
@@ -498,7 +498,7 @@ void sub_802C2EC(void)
{
DestroyMenuCursor();
PlaySE(SE_SELECT);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8));
dp11b_obj_free(gUnknown_03004344, 1);
PlayerBufferExecCompleted();
@@ -507,7 +507,7 @@ void sub_802C2EC(void)
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
gBattleBankFunc[gActiveBank] = sub_802C68C;
dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
@@ -516,7 +516,7 @@ void sub_802C2EC(void)
else if (gMain.newKeys & 0x60)
{
PlaySE(SE_SELECT);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
do
{
u8 var = GetBankIdentity(gUnknown_03004344);
@@ -557,13 +557,13 @@ void sub_802C2EC(void)
if (gAbsentBankFlags & gBitTable[gUnknown_03004344])
i = 0;
} while (i == 0);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520;
}
//_0802C540
else if (gMain.newKeys & 0x90)
{
PlaySE(SE_SELECT);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
do
{
u8 var = GetBankIdentity(gUnknown_03004344);
@@ -603,7 +603,7 @@ void sub_802C2EC(void)
if (gAbsentBankFlags & gBitTable[gUnknown_03004344])
i = 0;
} while (i == 0);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520;
}
}
@@ -679,7 +679,7 @@ void sub_802C68C(void)
gUnknown_03004344 = GetBankByIdentity(3);
else
gUnknown_03004344 = GetBankByIdentity(1);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520;
}
}
else if (gMain.newKeys & B_BUTTON)
@@ -1684,24 +1684,24 @@ void debug_sub_803107C(void)
void sub_802D204(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
PlayerBufferExecCompleted();
}
// duplicate of sub_802D204
void sub_802D23C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
PlayerBufferExecCompleted();
}
void sub_802D274(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
{
nullsub_10(gSaveBlock2.playerGender);
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
PlayerBufferExecCompleted();
}
}
@@ -2176,13 +2176,13 @@ void sub_802DDC4(u8 taskId)
void sub_802DE10(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
{
u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
nullsub_9(species);
- FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
PlayerBufferExecCompleted();
}
@@ -2192,8 +2192,8 @@ void sub_802DEAC(void)
{
if (!ewram17810[gActiveBank].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
PlayerBufferExecCompleted();
}
@@ -2260,7 +2260,7 @@ void bx_wait_t1(void)
void bx_blink_t1(void)
{
- u8 spriteId = gObjectBankIDs[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBank];
if (gSprites[spriteId].data[1] == 32)
{
@@ -3020,7 +3020,7 @@ void PlayerHandlecmd3(void)
void PlayerHandleLoadPokeSprite(void)
{
BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
gBattleBankFunc[gActiveBank] = bx_0802E404;
}
@@ -3044,18 +3044,18 @@ void sub_802F934(u8 bank, u8 b)
species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
- gObjectBankIDs[bank] = CreateSprite(
+ gBankSpriteIds[bank] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(bank, 2),
sub_8077F68(bank),
sub_8079E90(bank));
- gSprites[gUnknown_0300434C[bank]].data[1] = gObjectBankIDs[bank];
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
- gSprites[gObjectBankIDs[bank]].data[2] = species;
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
- gSprites[gObjectBankIDs[bank]].invisible = TRUE;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ gSprites[gBankSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_0300434C[bank]].data[0] = sub_8046400(0, 0xFF);
}
@@ -3068,8 +3068,8 @@ void PlayerHandleReturnPokeToBall(void)
}
else
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
PlayerBufferExecCompleted();
}
@@ -3111,15 +3111,15 @@ void PlayerHandleTrainerThrow(void)
}
LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
r7 + 80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_802D204;
}
@@ -3127,27 +3127,27 @@ void PlayerHandleTrainerSlide(void)
{
LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
30);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_802D23C;
}
void PlayerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ 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 = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
gBattleBankFunc[gActiveBank] = sub_802D274;
}
@@ -3166,9 +3166,9 @@ void PlayerHandlecmd10(void)
ewram17810[gActiveBank].unk4 = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
PlaySE12WithPanning(SE_POKE_DEAD, -64);
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 5;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80105EC;
gBattleBankFunc[gActiveBank] = sub_802DE10;
}
}
@@ -3540,14 +3540,14 @@ void PlayerHandlecmd40(void)
void PlayerHandleHitAnimation(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
{
PlayerBufferExecCompleted();
}
else
{
gDoingBattleAnim = 1;
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
sub_8047858(gActiveBank);
gBattleBankFunc[gActiveBank] = bx_blink_t1;
}
@@ -3596,17 +3596,17 @@ void PlayerHandleTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gActiveBank;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ 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 = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
taskId = CreateTask(task05_08033660, 5);
gTasks[taskId].data[0] = gActiveBank;
if (ewram17810[gActiveBank].unk0_0)
@@ -3623,7 +3623,7 @@ void sub_8030E38(struct Sprite *sprite)
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
DestroySprite(sprite);
BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4);
- StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[r4]], 0);
}
void task05_08033660(u8 taskId)
@@ -3702,7 +3702,7 @@ void PlayerHandleSpriteInvisibility(void)
{
if (IsBankSpritePresent(gActiveBank))
{
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
}
PlayerBufferExecCompleted();
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
index 5896e5e18..e9425e7e7 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle/battle_controller_safari.c
@@ -28,7 +28,7 @@ extern u16 gBattle_BG0_Y;
extern u16 gBattle_BG0_X;
extern u8 gBattleBufferA[][0x200];
extern bool8 gDoingBattleAnim;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern struct SpriteTemplate gUnknown_02024E8C;
extern u16 gBattleTypeFlags;
extern u32 gBattleExecBuffer;
@@ -288,7 +288,7 @@ void bx_battle_menu_t6_2(void)
void sub_812B65C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
SafariBufferExecCompleted();
}
@@ -399,15 +399,15 @@ void SafariHandleTrainerThrow(void)
{
LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
30);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_812B65C;
}
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
index 49f530129..c590b487c 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle/battle_controller_wally.c
@@ -31,7 +31,7 @@ extern u8 gActiveBank;
extern void (*gBattleBankFunc[])(void);
extern u32 gBattleExecBuffer;
extern u8 gBattleBufferA[][0x200];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern MainCallback gPreBattleCallback1;
extern bool8 gDoingBattleAnim;
extern u16 gBattlePartyID[];
@@ -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();
@@ -325,7 +325,7 @@ void sub_81372BC(void)
void sub_813741C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
WallyBufferExecCompleted();
}
@@ -436,7 +436,7 @@ void sub_81377B0(void)
void bx_blink_t5(void)
{
- u8 spriteId = gObjectBankIDs[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBank];
if (gSprites[spriteId].data[1] == 32)
{
@@ -457,8 +457,8 @@ void sub_813789C(void)
{
if (!ewram17810[gActiveBank].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
WallyBufferExecCompleted();
}
@@ -467,7 +467,7 @@ void sub_813789C(void)
// Duplicate of sub_813741C
void sub_8137908(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
WallyBufferExecCompleted();
}
@@ -1093,8 +1093,8 @@ void WallyHandleReturnPokeToBall(void)
}
else
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
WallyBufferExecCompleted();
}
@@ -1104,14 +1104,14 @@ void WallyHandleTrainerThrow(void)
{
LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
30);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_813741C;
}
@@ -1119,14 +1119,14 @@ void WallyHandleTrainerSlide(void)
{
LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
30);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_8137908;
}
@@ -1432,14 +1432,14 @@ void WallyHandlecmd40(void)
void WallyHandleHitAnimation(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
{
WallyBufferExecCompleted();
}
else
{
gDoingBattleAnim = 1;
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
sub_8047858(gActiveBank);
gBattleBankFunc[gActiveBank] = bx_blink_t5;
}
@@ -1480,17 +1480,17 @@ void WallyHandleTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gActiveBank;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ 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 = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
LoadCompressedPalette(gTrainerBackPicPaletteTable[2].data, 0x100 + paletteNum * 16, 32);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
taskId = CreateTask(sub_8139A2C, 5);
gTasks[taskId].data[0] = gActiveBank;
if (ewram17810[gActiveBank].unk0_0)
@@ -1508,18 +1508,18 @@ void sub_81398BC(u8 bank)
species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
- gObjectBankIDs[bank] = CreateSprite(
+ gBankSpriteIds[bank] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(bank, 2),
sub_8077F68(bank),
sub_8079E90(bank));
- gSprites[gUnknown_0300434C[bank]].data[1] = gObjectBankIDs[bank];
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
- gSprites[gObjectBankIDs[bank]].data[2] = species;
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
- gSprites[gObjectBankIDs[bank]].invisible = TRUE;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ gSprites[gBankSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_0300434C[bank]].data[0] = sub_8046400(0, 0xFF);
}
diff --git a/src/battle/pokeball.c b/src/battle/pokeball.c
index 6f27469ce..3a47e0204 100644
--- a/src/battle/pokeball.c
+++ b/src/battle/pokeball.c
@@ -21,7 +21,7 @@ extern u16 gBattleTypeFlags;
extern u8 gBankTarget;
extern u8 gActiveBank;
extern u16 gBattlePartyID[];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u8 gDoingBattleAnim;
extern u8 gHealthboxIDs[];
@@ -298,7 +298,7 @@ const struct SpriteTemplate gBallSpriteTemplates[] =
extern u32 ball_number_to_ball_processing_index(u16); // not sure of return type
extern void sub_80786EC();
-extern bool8 sub_8078718(struct Sprite *);
+extern bool8 TranslateAnimSpriteLinearAndSine(struct Sprite *);
extern u8 sub_814086C(u8, u8, int, int, u8);
extern u8 sub_8141314(u8, u8, int, u8);
@@ -406,7 +406,7 @@ static void sub_8046464(u8 taskId)
static void objc_0804ABD4(struct Sprite *sprite)
{
- if (sub_8078718(sprite))
+ if (TranslateAnimSpriteLinearAndSine(sprite))
{
u8 taskId = sprite->oam.affineParam;
u8 r5 = gTasks[taskId].data[4];
@@ -442,9 +442,9 @@ static void sub_80466F4(struct Sprite *sprite)
{
sprite->data[5] = 0;
sprite->callback = sub_8046760;
- StartSpriteAffineAnim(&gSprites[gObjectBankIDs[sprite->data[6]]], 2);
- AnimateSprite(&gSprites[gObjectBankIDs[sprite->data[6]]]);
- gSprites[gObjectBankIDs[sprite->data[6]]].data[1] = 0;
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->data[6]]], 2);
+ AnimateSprite(&gSprites[gBankSpriteIds[sprite->data[6]]]);
+ gSprites[gBankSpriteIds[sprite->data[6]]].data[1] = 0;
}
}
@@ -453,17 +453,17 @@ static void sub_8046760(struct Sprite *sprite)
sprite->data[5]++;
if (sprite->data[5] == 11)
PlaySE(SE_SUIKOMU);
- if (gSprites[gObjectBankIDs[sprite->data[6]]].affineAnimEnded)
+ if (gSprites[gBankSpriteIds[sprite->data[6]]].affineAnimEnded)
{
StartSpriteAnim(sprite, 2);
- gSprites[gObjectBankIDs[sprite->data[6]]].invisible = TRUE;
+ gSprites[gBankSpriteIds[sprite->data[6]]].invisible = TRUE;
sprite->data[5] = 0;
sprite->callback = sub_80467F8;
}
else
{
- gSprites[gObjectBankIDs[sprite->data[6]]].data[1] += 0x60;
- gSprites[gObjectBankIDs[sprite->data[6]]].pos2.y = -gSprites[gObjectBankIDs[sprite->data[6]]].data[1] >> 8;
+ gSprites[gBankSpriteIds[sprite->data[6]]].data[1] += 0x60;
+ gSprites[gBankSpriteIds[sprite->data[6]]].pos2.y = -gSprites[gBankSpriteIds[sprite->data[6]]].data[1] >> 8;
}
}
@@ -747,9 +747,9 @@ static void sub_8046C78(struct Sprite *sprite)
gTasks[taskId].data[2] = r4_2;
gTasks[taskId].data[15] = 0;
}
- StartSpriteAffineAnim(&gSprites[gObjectBankIDs[sprite->data[6]]], 1);
- AnimateSprite(&gSprites[gObjectBankIDs[sprite->data[6]]]);
- gSprites[gObjectBankIDs[sprite->data[6]]].data[1] = 0x1000;
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->data[6]]], 1);
+ AnimateSprite(&gSprites[gBankSpriteIds[sprite->data[6]]]);
+ gSprites[gBankSpriteIds[sprite->data[6]]].data[1] = 0x1000;
}
static void sub_8046E7C(struct Sprite *sprite)
@@ -766,25 +766,25 @@ static void sub_8046E9C(struct Sprite *sprite)
bool8 r7 = FALSE;
u8 r4 = sprite->data[6];
- gSprites[gObjectBankIDs[r4]].invisible = FALSE;
+ gSprites[gBankSpriteIds[r4]].invisible = FALSE;
if (sprite->animEnded)
sprite->invisible = TRUE;
- if (gSprites[gObjectBankIDs[r4]].affineAnimEnded)
+ if (gSprites[gBankSpriteIds[r4]].affineAnimEnded)
{
- StartSpriteAffineAnim(&gSprites[gObjectBankIDs[r4]], 0);
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[r4]], 0);
r7 = TRUE;
}
else
{
- gSprites[gObjectBankIDs[r4]].data[1] -= 288;
- gSprites[gObjectBankIDs[r4]].pos2.y = gSprites[gObjectBankIDs[r4]].data[1] >> 8;
+ gSprites[gBankSpriteIds[r4]].data[1] -= 288;
+ gSprites[gBankSpriteIds[r4]].pos2.y = gSprites[gBankSpriteIds[r4]].data[1] >> 8;
}
if (sprite->animEnded && r7)
{
s32 i;
u32 r3;
- gSprites[gObjectBankIDs[r4]].pos2.y = 0;
+ gSprites[gBankSpriteIds[r4]].pos2.y = 0;
gDoingBattleAnim = 0;
ewram17810[r4].unk0_3 = 0;
FreeSpriteOamMatrix(sprite);
@@ -819,8 +819,8 @@ static void sub_8046FBC(struct Sprite *sprite)
}
else if (sprite->data[4] == 315)
{
- FreeOamMatrix(gSprites[gObjectBankIDs[sprite->data[6]]].oam.matrixNum);
- DestroySprite(&gSprites[gObjectBankIDs[sprite->data[6]]]);
+ FreeOamMatrix(gSprites[gBankSpriteIds[sprite->data[6]]].oam.matrixNum);
+ DestroySprite(&gSprites[gBankSpriteIds[sprite->data[6]]]);
DestroySpriteAndFreeResources(sprite);
if (gMain.inBattle)
ewram17810[r7].unk0_3 = 0;
@@ -858,7 +858,7 @@ static void sub_80470C4(struct Sprite *sprite)
StartSpriteAffineAnim(sprite, 4);
}
r4 = sprite->data[0];
- sub_8078B5C(sprite);
+ TranslateAnimSpriteByDeltas(sprite);
sprite->data[7] += sprite->data[6] / 3;
sprite->pos2.y += Sin(HIBYTE(sprite->data[7]), sprite->data[5]);
sprite->oam.affineParam += 0x100;
@@ -876,7 +876,7 @@ static void sub_80470C4(struct Sprite *sprite)
}
else
{
- if (sub_8078718(sprite))
+ if (TranslateAnimSpriteLinearAndSine(sprite))
{
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c
index a78cb20df..0da29441e 100644
--- a/src/battle/reshow_battle_screen.c
+++ b/src/battle/reshow_battle_screen.c
@@ -25,7 +25,7 @@ extern u8 gBankInMenu;
extern u16 gBattlePartyID[4];
extern u8 gNoOfAllBanks;
extern u16 gBattleTypeFlags;
-extern u8 gObjectBankIDs[4];
+extern u8 gBankSpriteIds[4];
extern u8 gBattleMonForms[4];
extern u8 gHealthboxIDs[4];
@@ -243,46 +243,46 @@ static void sub_807B184(u8 bank)
if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
return;
GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
- gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank));
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
- gSprites[gObjectBankIDs[bank]].data[2] = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
- StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
}
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
{
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(0));
- gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
sub_8079E90(0));
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
{
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(0));
- gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
(8 - gTrainerBackPicCoords[2].coords) * 4 + 80,
sub_8079E90(0));
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
}
else
{
if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
return;
GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
- gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank));
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
- gSprites[gObjectBankIDs[bank]].data[2] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
- StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
}
- gSprites[gObjectBankIDs[bank]].invisible = ewram17800[bank].invisible;
+ gSprites[gBankSpriteIds[bank]].invisible = ewram17800[bank].invisible;
}
}