diff options
author | ultima-soul <akshayjhanji@hotmail.com> | 2019-04-07 14:19:02 -0700 |
---|---|---|
committer | ultima-soul <akshayjhanji@hotmail.com> | 2019-04-07 14:19:02 -0700 |
commit | aabc181b325f1be3388001f21f0c9173ef1c980a (patch) | |
tree | e55162aca184cb88ed0e47e95a35a4b343e2c4ea /src | |
parent | 963d165e06f4428605fca5c1369c9f417e8e7156 (diff) |
Decompile/port rest of battle_anim plus fix 1 NONMATCHING.
Diffstat (limited to 'src')
42 files changed, 1368 insertions, 504 deletions
diff --git a/src/battle/anim/anger.c b/src/battle/anim/anger.c index 6ed40ad3c..041d35803 100644 --- a/src/battle/anim/anger.c +++ b/src/battle/anim/anger.c @@ -54,6 +54,6 @@ void sub_80D09C0(struct Sprite* sprite) if (sprite->pos1.y <= 7) sprite->pos1.y = 8; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_80785E4; } diff --git a/src/battle/anim/beta_beat_up.c b/src/battle/anim/beta_beat_up.c index 5671755b8..be712e87a 100644 --- a/src/battle/anim/beta_beat_up.c +++ b/src/battle/anim/beta_beat_up.c @@ -54,6 +54,6 @@ static void sub_80D6278(struct Sprite *sprite) { if (sprite->affineAnimEnded) { - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } } diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c index 1870b786d..168a65d88 100644 --- a/src/battle/anim/bubble.c +++ b/src/battle/anim/bubble.c @@ -135,5 +135,5 @@ static void sub_80D3398(struct Sprite *sprite) { sprite->data[0] = 10; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); } diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c index 65b45b6cc..e693541bc 100644 --- a/src/battle/anim/bug.c +++ b/src/battle/anim/bug.c @@ -494,6 +494,6 @@ void sub_80DCE40(struct Sprite *sprite) sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18; } - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_80785E4; } diff --git a/src/battle/anim/current.c b/src/battle/anim/current.c index 8621ca523..9b447ce5a 100644 --- a/src/battle/anim/current.c +++ b/src/battle/anim/current.c @@ -913,7 +913,7 @@ void sub_80D6D18(struct Sprite *sprite) sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3); } - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_80785E4; } @@ -963,7 +963,7 @@ static void sub_80D6E38(struct Sprite *sprite) gSprites[sprite->data[6]].pos2.x += sprite->data[7]; if ((u16)(sprite->pos1.x + 80) > 400) { - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } break; } @@ -1154,7 +1154,7 @@ void sub_80D727C(struct Sprite *sprite) break; case 1: if (sprite->affineAnimEnded) - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); break; } } diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 45ef7b831..47f86b744 100644 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -357,7 +357,7 @@ static void sub_80DFF98(struct Sprite *sprite) sprite->pos2.y = sprite->data[5] >> 8; if (--sprite->data[3] == 0) - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } void sub_80DFFD0(struct Sprite *sprite) @@ -376,22 +376,22 @@ void sub_80DFFD0(struct Sprite *sprite) switch (gBattleAnimArgs[1]) { case 0: - sprite->pos1.x = sub_807A100(bank, 5) - 8; - sprite->pos1.y = sub_807A100(bank, 2) + 8; + sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 5) - 8; + sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 8; break; case 1: - sprite->pos1.x = sub_807A100(bank, 5) - 14; - sprite->pos1.y = sub_807A100(bank, 2) + 16; + sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 5) - 14; + sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 16; break; case 2: - sprite->pos1.x = sub_807A100(bank, 4) + 8; - sprite->pos1.y = sub_807A100(bank, 2) + 8; + sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 4) + 8; + sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 8; StartSpriteAffineAnim(sprite, 1); xOffset = -20; break; case 3: - sprite->pos1.x = sub_807A100(bank, 4) + 14; - sprite->pos1.y = sub_807A100(bank, 2) + 16; + sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 4) + 14; + sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 16; StartSpriteAffineAnim(sprite, 1); xOffset = -20; break; @@ -409,7 +409,7 @@ void sub_80DFFD0(struct Sprite *sprite) static void sub_80E00D0(struct Sprite *sprite) { if (TranslateAnimArc(sprite)) - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } void sub_80E00EC(u8 taskId) @@ -422,7 +422,7 @@ void sub_80E00EC(u8 taskId) struct Task *task = &gTasks[taskId]; task->data[7] = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 31; - task->data[6] = sub_807A100(gBattleAnimAttacker, 2) - 7; + task->data[6] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 2) - 7; task->data[5] = task->data[7]; task->data[4] = task->data[6]; task->data[13] = (task->data[7] - task->data[6]) << 8; @@ -600,7 +600,7 @@ void sub_80E03BC(u8 taskId) break; case 2: task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 31; - task->data[6] = sub_807A100(gBattleAnimTarget, 2) - 7; + task->data[6] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 2) - 7; task->data[13] = (task->data[7] - task->data[6]) << 8; pos = GetBattlerSpriteCoord(gBattleAnimTarget, 0); task->data[14] = pos - 4; diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c index cfb7576d6..b59e8aff4 100644 --- a/src/battle/anim/dragon.c +++ b/src/battle/anim/dragon.c @@ -215,7 +215,7 @@ void sub_80DF5A0(struct Sprite *sprite) sprite->data[3] = gBattleAnimArgs[4]; sprite->data[5] = gBattleAnimArgs[5]; sprite->invisible = 1; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_8078504; } @@ -243,7 +243,7 @@ void sub_80DF63C(struct Sprite *sprite) } sprite->data[0] = gBattleAnimArgs[4]; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); } // Dragon Rage @@ -263,7 +263,7 @@ void sub_80DF6F0(struct Sprite *sprite) sub_807867C(sprite, gBattleAnimArgs[1]); sprite->pos1.y += gBattleAnimArgs[2]; sprite->callback = sub_8078600; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); } // Dragon Breath init @@ -286,8 +286,8 @@ void sub_80DF78C(struct Sprite *sprite) sprite->data[4] = 0; sprite->data[5] = 1; sprite->data[6] = gBattleAnimArgs[0]; - r5 = sub_807A100(gBankAttacker, 0); - r0 = sub_807A100(gBankAttacker, 1); + r5 = GetBattlerSpriteCoordAttr(gBankAttacker, 0); + r0 = GetBattlerSpriteCoordAttr(gBankAttacker, 1); if (r5 > r0) sprite->data[7] = r5 / 2; else diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index 90a27eae6..34f661f6a 100644 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -42,7 +42,7 @@ void sub_80D0C88(u8 taskId) task->data[3] = 0; task->data[4] = 0; task->data[5] = 0; - task->data[15] = sub_807A100(gBattleAnimTarget, 0); + task->data[15] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 0); if (GetBattlerPosition_permutated(gBattleAnimTarget) == 1) { @@ -127,7 +127,7 @@ void sub_80D0E30(struct Sprite* sprite) sprite->data[2] = 0; sprite->data[3] = 16; sprite->data[4] = 0; - sprite->data[5] = sub_807A100(gBattleAnimTarget, 0) + 2; + sprite->data[5] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 0) + 2; sprite->data[6] = BattleAnimAdjustPanning(SOUND_PAN_TARGET); sprite->callback = sub_80D0E8C; } diff --git a/src/battle/anim/espeed.c b/src/battle/anim/espeed.c index 143510f3f..cd3b70542 100644 --- a/src/battle/anim/espeed.c +++ b/src/battle/anim/espeed.c @@ -63,14 +63,14 @@ void sub_80D15A4(u8 taskId) struct Task* task = &gTasks[taskId]; u8 spriteId = GetAnimBattlerSpriteId(0); task->data[0] = spriteId; - sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D79BC); + PrepareAffineAnimInTaskData(task, spriteId, &gSpriteAffineAnim_83D79BC); task->func = sub_80D15E0; } void sub_80D15E0(u8 taskId) { struct Task* task = &gTasks[taskId]; - if (sub_807992C(task) == 0) + if (RunAffineAnimFromTaskData(task) == 0) { gSprites[task->data[0]].pos2.y = 0; gSprites[task->data[0]].invisible = 1; diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c index 499cb0c98..f51a5c56c 100644 --- a/src/battle/anim/fight.c +++ b/src/battle/anim/fight.c @@ -505,8 +505,8 @@ void sub_80D90F4(struct Sprite *sprite) sprite->pos1.x = GetBattlerSpriteCoord(bank, 2); sprite->pos1.y = GetBattlerSpriteCoord(bank, 3); - xMod = sub_807A100(bank, 1) / 2; - yMod = sub_807A100(bank, 0) / 4; + xMod = GetBattlerSpriteCoordAttr(bank, 1) / 2; + yMod = GetBattlerSpriteCoordAttr(bank, 0) / 4; x = Random() % xMod; y = Random() % yMod; @@ -819,12 +819,12 @@ void sub_80D97CC(struct Sprite *sprite) { sprite->pos1.x = GetBattlerSpriteCoord(gBankAttacker, 2); sprite->pos1.y = GetBattlerSpriteCoord(gBankAttacker, 3); - sprite->oam.priority = sub_8079ED4(gBattleAnimAttacker); + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); sprite->data[7] = gBattleAnimTarget; } else { - sprite->oam.priority = sub_8079ED4(gBattleAnimTarget); + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); sprite->data[7] = gBattleAnimAttacker; } @@ -847,7 +847,7 @@ static void sub_80D986C(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3); InitAnimLinearTranslation(sprite); - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = TranslateAnimLinearUntil; } } @@ -922,12 +922,12 @@ void sub_80D9A38(struct Sprite *sprite) sprite->pos1.x = GetBattlerSpriteCoord(gBankAttacker, 2); sprite->pos1.y = GetBattlerSpriteCoord(gBankAttacker, 3); bank = gBattleAnimTarget; - sprite->oam.priority = sub_8079ED4(gBattleAnimAttacker); + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); } else { bank = gBattleAnimAttacker; - sprite->oam.priority = sub_8079ED4(gBattleAnimTarget); + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); } if (IsContest()) diff --git a/src/battle/anim/finger.c b/src/battle/anim/finger.c index 46e493de0..95e33ece5 100644 --- a/src/battle/anim/finger.c +++ b/src/battle/anim/finger.c @@ -153,7 +153,7 @@ static void sub_80CF088(struct Sprite* sprite) if (++sprite->data[0] > 16) { StartSpriteAffineAnim(sprite, 1); - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_80785E4; } } @@ -167,7 +167,7 @@ void sub_80CF0BC(struct Sprite* sprite) bank = gBattleAnimTarget; sprite->pos1.x = GetBattlerSpriteCoord(bank, 0); - sprite->pos1.y = sub_807A100(bank, 2); + sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2); if (sprite->pos1.y <= 9) sprite->pos1.y = 10; diff --git a/src/battle/anim/fire.c b/src/battle/anim/fire.c index 09e83813b..795f68d8d 100644 --- a/src/battle/anim/fire.c +++ b/src/battle/anim/fire.c @@ -253,7 +253,7 @@ static void sub_80D5038(struct Sprite *sprite) } if (sprite->data[0] == sprite->data[1]) - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } void sub_80D5074(struct Sprite *sprite) @@ -303,6 +303,6 @@ static void sub_80D50E8(struct Sprite *sprite) } else { - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } } diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index f9f328283..1f36c933a 100644 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -627,11 +627,11 @@ void sub_80DA4D8(struct Sprite *sprite) { if (gMain.inBattle) { - sprite->oam.priority = sub_8079ED4(slot) + 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(slot) + 1; } else { - sprite->oam.priority = sub_8079ED4(slot); + sprite->oam.priority = GetBattlerSpriteBGPriority(slot); } ((u8 *) data)[14] = data[7] & -2; @@ -647,7 +647,7 @@ void sub_80DA4D8(struct Sprite *sprite) } else { - sprite->oam.priority = sub_8079ED4(slot); + sprite->oam.priority = GetBattlerSpriteBGPriority(slot); ((u8 *) data)[14] |= 1; if (data[2] & 0x8000) @@ -1881,7 +1881,7 @@ _080DAD2C: .4byte sub_80DA48C\n"); void sub_80DAD30(struct Sprite *sprite) { - sprite->oam.priority = sub_8079ED4(gBattleAnimTarget); + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); sprite->callback = TranslateAnimSpriteToTargetMonLocation; @@ -1911,12 +1911,12 @@ void sub_80DAD84(struct Sprite * sprite) if (gBattleAnimArgs[4]) { - sprite->oam.priority = sub_8079ED4(gBattleAnimTarget) + 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1; // 080dae24 } else { - sprite->oam.priority = sub_8079ED4(gBattleAnimTarget); + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); } } else @@ -2655,7 +2655,7 @@ void sub_80DB6A0(struct Sprite *sprite) if ((u16) (sprite->pos1.x + 0x2d) > 0x14a || sprite->pos1.y > 0x9d || sprite->pos1.y < -0x2d) { - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } } diff --git a/src/battle/anim/flying_path.c b/src/battle/anim/flying_path.c index 6e7dd03f1..989cb598c 100644 --- a/src/battle/anim/flying_path.c +++ b/src/battle/anim/flying_path.c @@ -87,8 +87,8 @@ void sub_80CBDF4(u8 taskId) task->data[4] = GetBattlerSubpriority(gBattleAnimTarget) - 1; task->data[6] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); - task->data[10] = sub_807A100(gBattleAnimTarget, 1); - task->data[11] = sub_807A100(gBattleAnimTarget, 0); + task->data[10] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 1); + task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 0); task->data[5] = (GetBattlerSide(gBattleAnimTarget) == 1) ? 1 : -1; task->data[9] = 0x38 - (task->data[5] * 64); task->data[8] = task->data[7] - task->data[9] + task->data[6]; diff --git a/src/battle/anim/flying_petals.c b/src/battle/anim/flying_petals.c index 4d06b994e..7c70cc158 100644 --- a/src/battle/anim/flying_petals.c +++ b/src/battle/anim/flying_petals.c @@ -139,20 +139,20 @@ void sub_80CC474(struct Sprite* sprite) { case 0: sprite->pos1.y = gBattleAnimArgs[0]; - sprite->oam.priority = sub_8079ED4(bank); + sprite->oam.priority = GetBattlerSpriteBGPriority(bank); break; case 1: sprite->pos1.y = gBattleAnimArgs[0]; - sprite->oam.priority = sub_8079ED4(bank) + 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(bank) + 1; break; case 2: sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[0]; - sprite->oam.priority = sub_8079ED4(bank); + sprite->oam.priority = GetBattlerSpriteBGPriority(bank); break; case 3: sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[0]; GetAnimBattlerSpriteId(1); - sprite->oam.priority = sub_8079ED4(bank) + 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(bank) + 1; break; } @@ -177,5 +177,5 @@ static void sub_80CC580(struct Sprite* sprite) return; } - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c index 6ff44ed15..0fc4f1dfe 100644 --- a/src/battle/anim/ghost.c +++ b/src/battle/anim/ghost.c @@ -461,7 +461,7 @@ static void AnimShadowBallStep(struct Sprite *sprite) sprite->data[0] += 1; break; case 3: - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); break; } } @@ -852,7 +852,7 @@ void sub_80DE918(u8 taskId) task->data[10] = gBattleAnimArgs[0]; baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - baseY = sub_807A100(gBattleAnimAttacker, 3); + baseY = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 3); if (!IsContest()) { for (battler = 0; battler < 4; battler++) @@ -865,7 +865,7 @@ void sub_80DE918(u8 taskId) if (spriteId != MAX_SPRITES) { x = GetBattlerSpriteCoord(battler, 2); - y = sub_807A100(battler, 3); + y = GetBattlerSpriteCoordAttr(battler, 3); gSprites[spriteId].data[0] = baseX << 4; gSprites[spriteId].data[1] = baseY << 4; gSprites[spriteId].data[2] = ((x - baseX) << 4) / gBattleAnimArgs[1]; @@ -1216,9 +1216,9 @@ void sub_80DF1A4(u8 taskId) task->data[1] = 16; task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); task->data[10] = sub_8077FC0(gBattleAnimAttacker); - task->data[11] = (sub_807A100(gBattleAnimAttacker, 1) / 2) + 8; + task->data[11] = (GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 1) / 2) + 8; task->data[7] = 0; - task->data[5] = sub_8079ED4(gBattleAnimAttacker); + task->data[5] = GetBattlerSpriteBGPriority(gBattleAnimAttacker); task->data[6] = GetBattlerSubpriority(gBattleAnimAttacker) - 2; task->data[3] = 0; task->data[4] = 16; @@ -1370,6 +1370,6 @@ static void sub_80DF4F4(struct Sprite *sprite) gSprites[sprite->data[5]].pos2.x = 0; gSprites[sprite->data[5]].pos2.y = 0; gSprites[sprite->data[5]].pos1.y -= 8; - sprite->callback = move_anim_8074EE0; + sprite->callback = DestroySpriteAndMatrix; } } diff --git a/src/battle/anim/ground.c b/src/battle/anim/ground.c index 8c8e1d2a7..2828be7be 100644 --- a/src/battle/anim/ground.c +++ b/src/battle/anim/ground.c @@ -234,7 +234,7 @@ static void AnimDirtScatter(struct Sprite *sprite) sprite->data[2] = targetXPos + xOffset; sprite->data[4] = targetYPos + yOffset; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); } // Moves a particle of dirt in the Mud Sport animation. diff --git a/src/battle/anim/grow.c b/src/battle/anim/grow.c index aeaeb2c30..65a1ce745 100644 --- a/src/battle/anim/grow.c +++ b/src/battle/anim/grow.c @@ -25,13 +25,13 @@ void sub_80D08C8(u8 taskId) { struct Task* task = &gTasks[taskId]; u8 spriteId = GetAnimBattlerSpriteId(0); - sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D7714); + PrepareAffineAnimInTaskData(task, spriteId, &gSpriteAffineAnim_83D7714); task->func = sub_80D0904; } static void sub_80D0904(u8 taskId) { struct Task* task = &gTasks[taskId]; - if (!sub_807992C(task)) + if (!RunAffineAnimFromTaskData(task)) DestroyAnimVisualTask(taskId); } diff --git a/src/battle/anim/homing.c b/src/battle/anim/homing.c index 874b9ea4e..1b71ebd7a 100644 --- a/src/battle/anim/homing.c +++ b/src/battle/anim/homing.c @@ -93,6 +93,6 @@ static void sub_80CC7D4(struct Sprite* sprite) } else { - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } } diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c index b9f8f2f2c..fed21ebe9 100644 --- a/src/battle/anim/ice.c +++ b/src/battle/anim/ice.c @@ -872,7 +872,7 @@ static void AnimFlickerIceEffectParticle(struct Sprite *sprite) sprite->invisible ^= 1; sprite->data[0] += 1; if (sprite->data[0] == 20) - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } // Animates the small snowballs that swirl around the target in Blizzard and Icy Wind. @@ -1192,9 +1192,9 @@ static void AnimSwirlingFogAnim(struct Sprite *sprite) sprite->pos2.y += Cos(sprite->data[5], -6); if ((u16)(sprite->data[5] - 64) <= 0x7F) - sprite->oam.priority = sub_8079ED4(sprite->data[7]); + sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]); else - sprite->oam.priority = sub_8079ED4(sprite->data[7]) + 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]) + 1; sprite->data[5] = (sprite->data[5] + 3) & 0xFF; } @@ -1438,7 +1438,7 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite) sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[3]; sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2]; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[4]; - sprite->data[7] |= sub_8079ED4(gBattleAnimTarget) << 8; + sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8; } else { @@ -1446,7 +1446,7 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite) sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[3]; sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2]; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[4]; - sprite->data[7] |= sub_8079ED4(gBattleAnimTarget) << 8; + sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8; } if (IsContest()) @@ -1968,13 +1968,13 @@ bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4)//(u8 spriteId, u8 taskId, u8 a3)// { case 0: // - r7 -= sub_807A100(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 1) / 6; - r6 -= sub_807A100(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 0) / 6; + r7 -= GetBattlerSpriteCoordAttr(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 1) / 6; + r6 -= GetBattlerSpriteCoordAttr(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 0) / 6; break; case 1: // - r7 += sub_807A100(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 1) / 6; - r6 += sub_807A100(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 0) / 6; + r7 += GetBattlerSpriteCoordAttr(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 1) / 6; + r6 += GetBattlerSpriteCoordAttr(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 0) / 6; } } @@ -2072,7 +2072,7 @@ NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4) "_080D8C24:\n" "\tadds r0, r5, 0\n" "\tmovs r1, 0x1\n" - "\tbl sub_807A100\n" + "\tbl GetBattlerSpriteCoordAttr\n" "\tlsls r0, 16\n" "\tasrs r0, 16\n" "\tmovs r1, 0x6\n" @@ -2084,7 +2084,7 @@ NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4) "\tlsrs r7, r1, 16\n" "\tadds r0, r5, 0\n" "\tmovs r1, 0\n" - "\tbl sub_807A100\n" + "\tbl GetBattlerSpriteCoordAttr\n" "\tlsls r0, 16\n" "\tasrs r0, 16\n" "\tmovs r1, 0x6\n" @@ -2096,7 +2096,7 @@ NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4) "_080D8C5A:\n" "\tadds r0, r5, 0\n" "\tmovs r1, 0x1\n" - "\tbl sub_807A100\n" + "\tbl GetBattlerSpriteCoordAttr\n" "\tlsls r0, 16\n" "\tasrs r0, 16\n" "\tmovs r1, 0x6\n" @@ -2108,7 +2108,7 @@ NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4) "\tlsrs r7, r1, 16\n" "\tadds r0, r5, 0\n" "\tmovs r1, 0\n" - "\tbl sub_807A100\n" + "\tbl GetBattlerSpriteCoordAttr\n" "\tlsls r0, 16\n" "\tasrs r0, 16\n" "\tmovs r1, 0x6\n" diff --git a/src/battle/anim/leaf.c b/src/battle/anim/leaf.c index 5f7f9d288..5b4c75080 100644 --- a/src/battle/anim/leaf.c +++ b/src/battle/anim/leaf.c @@ -295,11 +295,11 @@ static void AnimMoveTwisterParticleStep(struct Sprite* sprite) sprite->pos2.y = Sin(sprite->data[5], 5); if (sprite->data[5] <= 0x7F) { - sprite->oam.priority = sub_8079ED4(gBattleAnimTarget) - 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) - 1; } else { - sprite->oam.priority = sub_8079ED4(gBattleAnimTarget) + 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1; } sprite->data[0]--; diff --git a/src/battle/anim/musical.c b/src/battle/anim/musical.c index 5e4e3e97b..1e559d975 100644 --- a/src/battle/anim/musical.c +++ b/src/battle/anim/musical.c @@ -265,7 +265,7 @@ static void sub_80CEC1C(struct Sprite* sprite) if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80) { - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } else { @@ -322,7 +322,7 @@ static void sub_80CED78(struct Sprite* sprite) } if (++sprite->data[0] == 0x30) - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } // drum (using hands to slap the Pokemon's belly in a rhythm.) diff --git a/src/battle/anim/normal.c b/src/battle/anim/normal.c index d42549fc7..4ac8737ad 100644 --- a/src/battle/anim/normal.c +++ b/src/battle/anim/normal.c @@ -457,7 +457,7 @@ static void sub_80E1F3C(struct Sprite *sprite) sprite->data[3] = 40; sprite->data[4] = 112; sprite->data[5] = 0; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_8078174; sprite->callback(sprite); } @@ -895,7 +895,7 @@ static void sub_80E2870(struct Sprite *sprite) sprite->pos2.x += (Random() % 48) - 24; sprite->pos2.y += (Random() % 24) - 12; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_80785E4; } @@ -907,7 +907,7 @@ static void sub_80E2908(struct Sprite *sprite) sprite->pos2.x = gBattleAnimArgs[1]; sprite->pos2.y = gBattleAnimArgs[2]; StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_80785E4; } diff --git a/src/battle/anim/orbit.c b/src/battle/anim/orbit.c index 4d937a114..3f72d9246 100644 --- a/src/battle/anim/orbit.c +++ b/src/battle/anim/orbit.c @@ -110,11 +110,11 @@ static void sub_80CAC44(struct Sprite* sprite) sprite->pos2.y = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8); if ((u16)(sprite->data[1] - 0x40) < 0x80) { - sprite->oam.priority = (sub_8079ED4(gBattleAnimTarget) & 3); + sprite->oam.priority = (GetBattlerSpriteBGPriority(gBattleAnimTarget) & 3); } else { - var1 = sub_8079ED4(gBattleAnimTarget) + 1; + var1 = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1; if (var1 > 3) { var1 = 3; diff --git a/src/battle/anim/orbs.c b/src/battle/anim/orbs.c index 80cf97a5c..d0a5d26dc 100644 --- a/src/battle/anim/orbs.c +++ b/src/battle/anim/orbs.c @@ -197,7 +197,7 @@ void sub_80CA7B0(struct Sprite* sprite) sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); } void sub_80CA800(struct Sprite* sprite) diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c index 42a2ce387..84673097e 100644 --- a/src/battle/anim/psychic.c +++ b/src/battle/anim/psychic.c @@ -592,7 +592,7 @@ void sub_80DBA4C(struct Sprite *sprite) else { if (sprite->animEnded || sprite->affineAnimEnded) - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } } @@ -621,8 +621,8 @@ void sub_80DBAF4(struct Sprite *sprite) void sub_80DBB70(struct Sprite *sprite) { - s16 x = sub_807A100(gBattleAnimAttacker, 1) / 2; - s16 y = sub_807A100(gBattleAnimAttacker, 0) / -2; + s16 x = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 1) / 2; + s16 y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / -2; if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) { @@ -677,13 +677,13 @@ void sub_80DBC94(u8 taskId) struct Task *task = &gTasks[taskId]; u8 spriteId = GetAnimBattlerSpriteId(0); task->data[0] = spriteId; - sub_80798F4(task, spriteId, &gSpriteAffineAnim_083DA8A4); + PrepareAffineAnimInTaskData(task, spriteId, &gSpriteAffineAnim_083DA8A4); task->func = sub_80DBCD0; } static void sub_80DBCD0(u8 taskId) { - if (!sub_807992C(&gTasks[taskId])) + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) { DestroyAnimVisualTask(taskId); } @@ -698,7 +698,7 @@ void sub_80DBCFC(u8 taskId) task->data[2] = 0; task->data[3] = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 4 : 8; - sub_80798F4(task, task->data[0], &gSpriteAffineAnim_083DA8C4); + PrepareAffineAnimInTaskData(task, task->data[0], &gSpriteAffineAnim_083DA8C4); task->func = sub_80DBD58; } @@ -709,7 +709,7 @@ static void sub_80DBD58(u8 taskId) switch (task->data[1]) { case 0: - sub_807992C(task); + RunAffineAnimFromTaskData(task); if (++task->data[2] > 19) task->data[1]++; break; @@ -741,8 +741,8 @@ void sub_80DBE00(u8 taskId) task->data[13] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); - var0 = sub_807A100(gBattleAnimAttacker, 1) / 3; - var1 = sub_807A100(gBattleAnimAttacker, 0) / 3; + var0 = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 1) / 3; + var1 = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / 3; task->data[12] = var0 > var1 ? var0 : var1; REG_BLDCNT = 0x3F40; @@ -855,18 +855,18 @@ void sub_80DC0B0(u8 taskId) if (gBattleAnimArgs[0] == 1) { task->data[10] = -10; - task->data[11] = sub_807A100(gBattleAnimTarget, 5) - 8; - task->data[12] = sub_807A100(gBattleAnimTarget, 2) + 8; - task->data[13] = sub_807A100(gBattleAnimAttacker, 5) - 8; - task->data[14] = sub_807A100(gBattleAnimAttacker, 2) + 8; + task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 5) - 8; + task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 2) + 8; + task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 5) - 8; + task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 2) + 8; } else { task->data[10] = 10; - task->data[11] = sub_807A100(gBattleAnimAttacker, 4) + 8; - task->data[12] = sub_807A100(gBattleAnimAttacker, 3) - 8; - task->data[13] = sub_807A100(gBattleAnimTarget, 4) + 8; - task->data[14] = sub_807A100(gBattleAnimTarget, 3) - 8; + task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 4) + 8; + task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 3) - 8; + task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 4) + 8; + task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 3) - 8; } } else @@ -874,18 +874,18 @@ void sub_80DC0B0(u8 taskId) if (gBattleAnimArgs[0] == 1) { task->data[10] = -10; - task->data[11] = sub_807A100(gBattleAnimTarget, 4) + 8; - task->data[12] = sub_807A100(gBattleAnimTarget, 2) + 8; - task->data[13] = sub_807A100(gBattleAnimAttacker, 4) + 8; - task->data[14] = sub_807A100(gBattleAnimAttacker, 2) + 8; + task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 4) + 8; + task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 2) + 8; + task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 4) + 8; + task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 2) + 8; } else { task->data[10] = 10; - task->data[11] = sub_807A100(gBattleAnimAttacker, 5) - 8; - task->data[12] = sub_807A100(gBattleAnimAttacker, 3) - 8; - task->data[13] = sub_807A100(gBattleAnimTarget, 5) - 8; - task->data[14] = sub_807A100(gBattleAnimTarget, 3) - 8; + task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 5) - 8; + task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 3) - 8; + task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 5) - 8; + task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 3) - 8; } } diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c index 386ddfac7..d97076e89 100644 --- a/src/battle/anim/rock.c +++ b/src/battle/anim/rock.c @@ -351,7 +351,7 @@ static void sub_80DCF1C(struct Sprite *sprite) sprite->data[3] = 32; sprite->data[4] = -24; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_8078278; sprite->callback(sprite); } @@ -379,7 +379,7 @@ void sub_80DCF60(struct Sprite *sprite) sprite->data[4] = 0; sprite->callback = sub_8078394; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); } void sub_80DCFE4(struct Sprite *sprite) diff --git a/src/battle/anim/shield.c b/src/battle/anim/shield.c index 9500d66c9..6e601efa3 100644 --- a/src/battle/anim/shield.c +++ b/src/battle/anim/shield.c @@ -36,9 +36,9 @@ void sub_80CCD24(struct Sprite* sprite) sprite->pos1.x = sub_8077EE4(gBattleAnimAttacker, 0) + gBattleAnimArgs[0]; sprite->pos1.y = sub_8077EE4(gBattleAnimAttacker, 1) + gBattleAnimArgs[1]; if (GetBattlerSide(gBattleAnimAttacker) == 0 || IsContest()) - sprite->oam.priority = sub_8079ED4(gBattleAnimAttacker) + 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker) + 1; else - sprite->oam.priority = sub_8079ED4(gBattleAnimAttacker); + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = (IndexOfSpritePaletteTag(0x2828) << 4) + 0x100; diff --git a/src/battle/anim/shock.c b/src/battle/anim/shock.c index 4459e43b8..c6dfd09cc 100644 --- a/src/battle/anim/shock.c +++ b/src/battle/anim/shock.c @@ -85,7 +85,7 @@ void sub_80D6294(struct Sprite *sprite) sprite->data[2] = gBattleAnimArgs[3]; sprite->data[3] = gBattleAnimArgs[4]; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_8078114; } @@ -142,7 +142,7 @@ void sub_80D6328(struct Sprite *sprite) if (gBattleAnimArgs[6] & 1) { - sprite->oam.priority = sub_8079ED4(slot) + 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(slot) + 1; } matrixNum = sprite->oam.matrixNum; diff --git a/src/battle/anim/sleep.c b/src/battle/anim/sleep.c index 82822c931..7e202b8bb 100644 --- a/src/battle/anim/sleep.c +++ b/src/battle/anim/sleep.c @@ -97,5 +97,5 @@ static void sub_80CD394(struct Sprite* sprite) sprite->data[4] += sprite->data[3] * 2; sprite->data[0] += sprite->data[1]; if (++sprite->data[1] > 0x3C) - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } diff --git a/src/battle/anim/splash.c b/src/battle/anim/splash.c index 6bf59bc54..ad0fddd3f 100644 --- a/src/battle/anim/splash.c +++ b/src/battle/anim/splash.c @@ -39,7 +39,7 @@ void AnimTask_Splash(u8 taskId) task->data[2] = gBattleAnimArgs[1]; task->data[3] = 0; task->data[4] = 0; - sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D76F4); + PrepareAffineAnimInTaskData(task, spriteId, &gSpriteAffineAnim_83D76F4); task->func = AnimTask_SplashStep; } } @@ -50,7 +50,7 @@ void AnimTask_SplashStep(u8 taskId) switch (task->data[1]) { case 0: - sub_807992C(task); + RunAffineAnimFromTaskData(task); task->data[4] += 3; gSprites[task->data[0]].pos2.y += task->data[4]; if (++task->data[3] > 7) @@ -60,7 +60,7 @@ void AnimTask_SplashStep(u8 taskId) } break; case 1: - sub_807992C(task); + RunAffineAnimFromTaskData(task); gSprites[task->data[0]].pos2.y += task->data[4]; if (++task->data[3] > 7) { @@ -78,7 +78,7 @@ void AnimTask_SplashStep(u8 taskId) task->data[1]++; break; case 3: - if (!sub_807992C(task)) + if (!RunAffineAnimFromTaskData(task)) { if (--task->data[2] == 0) { @@ -87,7 +87,7 @@ void AnimTask_SplashStep(u8 taskId) } else { - sub_80798F4(task, task->data[0], &gSpriteAffineAnim_83D76F4); + PrepareAffineAnimInTaskData(task, task->data[0], &gSpriteAffineAnim_83D76F4); task->data[1] = 0; } } diff --git a/src/battle/anim/startle.c b/src/battle/anim/startle.c index fb1e0f375..c9a692318 100644 --- a/src/battle/anim/startle.c +++ b/src/battle/anim/startle.c @@ -24,13 +24,13 @@ void sub_80D1E38(u8 taskId) u8 spriteId = GetAnimBattlerSpriteId(1); if (++gTasks[taskId].data[0] == 1) { - sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(1), &gSpriteAffineAnim_83D7A98); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(1), &gSpriteAffineAnim_83D7A98); gSprites[spriteId].pos2.x = 4; } else { gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; - if (sub_807992C(&gTasks[taskId]) == 0) + if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0) { gSprites[spriteId].pos2.x = 0; gSprites[spriteId].pos2.y = 0; @@ -45,13 +45,13 @@ void sub_80D1EC8(u8 taskId) u8 spriteId = GetAnimBattlerSpriteId(0); if (++gTasks[taskId].data[0] == 1) { - sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gSpriteAffineAnim_83D7A98); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gSpriteAffineAnim_83D7A98); gSprites[spriteId].pos2.x = 4; } else { gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; - if (sub_807992C(&gTasks[taskId]) == 0) + if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0) { gSprites[spriteId].pos2.x = 0; gSprites[spriteId].pos2.y = 0; diff --git a/src/battle/anim/thought.c b/src/battle/anim/thought.c index ee387040f..ff5b62181 100644 --- a/src/battle/anim/thought.c +++ b/src/battle/anim/thought.c @@ -72,11 +72,11 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220 = void sub_80CEF44(u8 bank, struct Sprite* sprite) { if (GetBattlerSide(bank) == 0) - sprite->pos1.x = sub_807A100(bank, 5) + 8; + sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 5) + 8; else - sprite->pos1.x = sub_807A100(bank, 4) - 8; + sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 4) - 8; - sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) - (s16)sub_807A100(bank, 0) / 4; + sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) - (s16)GetBattlerSpriteCoordAttr(bank, 0) / 4; } void sub_80CEF9C(struct Sprite* sprite) diff --git a/src/battle/anim/thrashing.c b/src/battle/anim/thrashing.c index 2f00b1acc..f73c7e9bf 100644 --- a/src/battle/anim/thrashing.c +++ b/src/battle/anim/thrashing.c @@ -31,14 +31,14 @@ void sub_80D0A4C(u8 taskId) u8 spriteId = GetAnimBattlerSpriteId(0); task->data[0] = spriteId; task->data[1] = 0; - sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D77B0); + PrepareAffineAnimInTaskData(task, spriteId, &gSpriteAffineAnim_83D77B0); task->func = sub_80D0A8C; } static void sub_80D0A8C(u8 taskId) { struct Task* task = &gTasks[taskId]; - if (!sub_807992C(task)) + if (!RunAffineAnimFromTaskData(task)) DestroyAnimVisualTask(taskId); } diff --git a/src/battle/anim/unused_1.c b/src/battle/anim/unused_1.c index c9712de8f..b4af9fc00 100644 --- a/src/battle/anim/unused_1.c +++ b/src/battle/anim/unused_1.c @@ -84,6 +84,6 @@ void sub_80CC8C8(struct Sprite* sprite) sprite->data[3] = gBattleAnimArgs[4]; sprite->data[5] = gBattleAnimArgs[5]; StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]); - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_8078504; } diff --git a/src/battle/anim/unused_5.c b/src/battle/anim/unused_5.c index 98cd62bd0..9f7ce35ff 100644 --- a/src/battle/anim/unused_5.c +++ b/src/battle/anim/unused_5.c @@ -32,7 +32,7 @@ void sub_80CF280(struct Sprite* sprite) sprite->data[2] = gBattleAnimArgs[4]; sprite->data[3] = gBattleAnimArgs[5]; sprite->data[4] = gBattleAnimArgs[3]; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_8078278; sub_8078278(sprite); } diff --git a/src/battle/anim/unused_7.c b/src/battle/anim/unused_7.c index d2ce1f0a8..f4acbbf7e 100644 --- a/src/battle/anim/unused_7.c +++ b/src/battle/anim/unused_7.c @@ -34,7 +34,7 @@ static void sub_80CF374(struct Sprite* sprite) if (sprite->data[0] == 0) { gSprites[sprite->data[2]].pos2.x = 0; - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } sprite->data[0]--; diff --git a/src/battle/anim/uproar.c b/src/battle/anim/uproar.c index c78f89fef..b074cd729 100644 --- a/src/battle/anim/uproar.c +++ b/src/battle/anim/uproar.c @@ -20,12 +20,12 @@ void sub_80D2CF8(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - sub_80798F4(&gTasks[taskId], spriteId, gSpriteAffineAnim_83D7CA8); + PrepareAffineAnimInTaskData(&gTasks[taskId], spriteId, gSpriteAffineAnim_83D7CA8); gTasks[taskId].func = sub_80D2D3C; } static void sub_80D2D3C(u8 taskId) { - if (!sub_807992C(&gTasks[taskId])) + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) DestroyAnimVisualTask(taskId); } diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c index 714f59d71..f089c799a 100644 --- a/src/battle/anim/wisp_fire.c +++ b/src/battle/anim/wisp_fire.c @@ -68,9 +68,9 @@ void sub_80D5CC0(struct Sprite *sprite) if (gMain.inBattle) { if (sprite->data[1] < 64 || sprite->data[1] > 195) - sprite->oam.priority = sub_8079ED4(gBattleAnimTarget); + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); else - sprite->oam.priority = sub_8079ED4(gBattleAnimTarget) + 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1; } else { diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c index dd04e258c..d1f25c09d 100644 --- a/src/battle/anim/wisp_orb.c +++ b/src/battle/anim/wisp_orb.c @@ -81,7 +81,7 @@ void sub_80D5B0C(struct Sprite *sprite) sprite->data[4] = -4; } - sprite->oam.priority = sub_8079ED4(gBattleAnimTarget); + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); sprite->data[0]++; break; case 1: diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c index 4a5533dce..90e7d8e2c 100644 --- a/src/battle/battle_anim_812C144.c +++ b/src/battle/battle_anim_812C144.c @@ -29,6 +29,7 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; +extern u16 gWeatherMoveAnim; extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220; extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18[]; @@ -76,7 +77,7 @@ static void sub_812E8B4(u8 taskId); static void sub_812ED24(struct Sprite *sprite); static void sub_812EE00(struct Sprite *sprite); static void sub_812EEEC(struct Sprite *sprite); -/*static*/ void sub_812F238(u8 taskId); +static void AnimTask_RolePlaySilhouetteStep1(u8 taskId); static void sub_812F290(u8 taskId); static void sub_812F474(u8 taskId); static void sub_812F76C(u8 taskId); @@ -135,10 +136,13 @@ static void sub_8130F5C(struct Sprite *sprite); static void sub_8131264(struct Sprite *sprite); extern void sub_80D1FDC(struct Sprite *sprite);// kiss_fountain.c static void sub_8131564(struct Sprite *sprite); +static void AnimTask_TeeterDanceMovementStep(u8); /*static*/ void sub_8131EB8(struct Sprite *sprite);// rest not yet decompiled -/*static*/ void sub_8132370(struct Sprite *sprite); -/*static*/ void sub_81323E0(struct Sprite *sprite); +void AnimKnockOffStrike(struct Sprite *sprite); +void AnimRecycle(struct Sprite *sprite); +static void AnimRecycleStep(struct Sprite *sprite); +static void AnimTask_SlackOffSquishStep(u8 taskId); const union AnimCmd gSpriteAnim_8402164[] = { @@ -1142,7 +1146,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_8402AE4 = .anims = gSpriteAnimTable_8402AA8, .images = NULL, .affineAnims = gSpriteAffineAnimTable_8402ADC, - .callback = sub_8132370, + .callback = AnimKnockOffStrike, }; const union AffineAnimCmd gSpriteAffineAnim_8402AFC[] = @@ -1164,10 +1168,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_8402B10 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gSpriteAffineAnimTable_8402B0C, - .callback = sub_81323E0, + .callback = AnimRecycle, }; -const union AffineAnimCmd gUnknown_08402B28[] = +const union AffineAnimCmd gSlackOffSquishAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(0, 16, 0, 4), AFFINEANIMCMD_FRAME(-2, 0, 0, 8), @@ -1945,12 +1949,12 @@ static void sub_812D06C(u8 taskId) task->data[5] -= 6; } - sub_80798F4(task, task->data[15], gUnknown_08402400); + PrepareAffineAnimInTaskData(task, task->data[15], gUnknown_08402400); task->data[1]++; task->data[0] = 1; break; case 1: - if (sub_807992C(task) == 0) + if (RunAffineAnimFromTaskData(task) == 0) { if (task->data[1] == 6) { @@ -2051,11 +2055,11 @@ void sub_812D350(u8 taskId) switch (gTasks[taskId].data[0]) { case 0: - sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_084024B0); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_084024B0); gTasks[taskId].data[0]++; break; case 1: - if (sub_807992C(&gTasks[taskId]) == 0) + if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0) DestroyAnimVisualTask(taskId); break; } @@ -2193,12 +2197,12 @@ void sub_812D674(u8 taskId) { if (gTasks[taskId].data[0] == 0) { - sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402518); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402518); gTasks[taskId].data[0]++; } else { - if (sub_807992C(&gTasks[taskId]) == 0) + if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0) DestroyAnimVisualTask(taskId); } } @@ -2207,12 +2211,12 @@ void sub_812D6CC(u8 taskId) { if (gTasks[taskId].data[0] == 0) { - sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402540); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402540); gTasks[taskId].data[0]++; } else { - if (sub_807992C(&gTasks[taskId]) == 0) + if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0) DestroyAnimVisualTask(taskId); } } @@ -2240,12 +2244,12 @@ void sub_812D790(u8 taskId) { if (gTasks[taskId].data[0] == 0) { - sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402590); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402590); gTasks[taskId].data[0]++; } else { - if (sub_807992C(&gTasks[taskId]) == 0) + if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0) DestroyAnimVisualTask(taskId); } } @@ -2682,12 +2686,12 @@ void sub_812E498(u8 taskId) { if (gTasks[taskId].data[0] == 0) { - sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402610); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402610); gTasks[taskId].data[0]++; } else { - if (!sub_807992C(&gTasks[taskId])) + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) { DestroyAnimVisualTask(taskId); } @@ -3175,8 +3179,8 @@ static void sub_812EEEC(struct Sprite *sprite) } } -#ifdef NONMATCHING // functionally equivalent, but seems to be missing a temporary variable -void sub_812EFC8(u8 taskId) +// Copies the target mon's sprite, and makes a white silhouette that shrinks away. +void AnimTask_RolePlaySilhouette(u8 taskId) { u8 isBackPic; u32 personality; @@ -3187,7 +3191,7 @@ void sub_812EFC8(u8 taskId) u8 spriteId; s16 coord1, coord2; - GetAnimBattlerSpriteId(0); + GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER); if (IsContest()) { isBackPic = 1; @@ -3195,6 +3199,7 @@ void sub_812EFC8(u8 taskId) otId = eWRAM_19348Struct->otId; species = eWRAM_19348Struct->species; xOffset = 20; + priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); } else { @@ -3216,6 +3221,7 @@ void sub_812EFC8(u8 taskId) } xOffset = 20; + priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); } else { @@ -3235,325 +3241,26 @@ void sub_812EFC8(u8 taskId) } xOffset = -20; + priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); } } - priority = sub_8079ED4(gBattleAnimAttacker); coord1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); coord2 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); spriteId = sub_8079F44(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, otId); gSprites[spriteId].oam.priority = priority; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; - FillPalette(RGB(31, 31, 31), (gSprites[spriteId].oam.paletteNum << 4) + 0x100, 32); + FillPalette(RGB_WHITE, (gSprites[spriteId].oam.paletteNum << 4) + 0x100, 32); gSprites[spriteId].oam.priority = priority; - REG_BLDCNT = 0x3F40; - REG_BLDALPHA = ((16 - gTasks[taskId].data[1]) << 8) | gTasks[taskId].data[1]; + REG_BLDCNT = BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL; + REG_BLDALPHA = BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1]); gTasks[taskId].data[0] = spriteId; - gTasks[taskId].func = sub_812F238; + gTasks[taskId].func = AnimTask_RolePlaySilhouetteStep1; } -#else -NAKED -void sub_812EFC8(u8 taskId) -{ - asm(".syntax unified\n\ - .equ REG_BLDCNT, 0x4000050\n\ - .equ REG_BLDALPHA, 0x4000052\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x18\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x10]\n\ - movs r0, 0\n\ - bl GetAnimBattlerSpriteId\n\ - bl IsContest\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0812F004\n\ - movs r0, 0x1\n\ - str r0, [sp, 0x14]\n\ - ldr r0, _0812F000 @ =gSharedMem + 0x19348\n\ - ldr r1, [r0, 0x10]\n\ - mov r9, r1\n\ - ldr r2, [r0, 0xC]\n\ - mov r8, r2\n\ - ldrh r6, [r0, 0x2]\n\ - movs r3, 0x14\n\ - b _0812F13C\n\ - .align 2, 0\n\ -_0812F000: .4byte gSharedMem + 0x19348\n\ -_0812F004:\n\ - ldr r0, _0812F070 @ =gBattleAnimAttacker\n\ - ldrb r0, [r0]\n\ - bl GetBattlerSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0812F0AC\n\ - movs r0, 0\n\ - str r0, [sp, 0x14]\n\ - ldr r6, _0812F074 @ =gBattlerPartyIndexes\n\ - ldr r4, _0812F078 @ =gBattleAnimTarget\n\ - ldrb r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - ldrh r0, [r0]\n\ - movs r5, 0x64\n\ - muls r0, r5\n\ - ldr r7, _0812F07C @ =gPlayerParty\n\ - adds r0, r7\n\ - movs r1, 0\n\ - bl GetMonData\n\ - mov r9, r0\n\ - ldrb r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - ldrh r0, [r0]\n\ - muls r0, r5\n\ - adds r0, r7\n\ - movs r1, 0x1\n\ - bl GetMonData\n\ - mov r8, r0\n\ - ldrb r2, [r4]\n\ - lsls r1, r2, 2\n\ - ldr r0, _0812F080 @ =gSharedMem + 0x17800\n\ - adds r1, r0\n\ - ldrh r0, [r1, 0x2]\n\ - cmp r0, 0\n\ - bne _0812F0A4\n\ - adds r0, r2, 0\n\ - bl GetBattlerSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0812F084\n\ - ldrb r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - ldrh r0, [r0]\n\ - muls r0, r5\n\ - adds r0, r7\n\ - b _0812F092\n\ - .align 2, 0\n\ -_0812F070: .4byte gBattleAnimAttacker\n\ -_0812F074: .4byte gBattlerPartyIndexes\n\ -_0812F078: .4byte gBattleAnimTarget\n\ -_0812F07C: .4byte gPlayerParty\n\ -_0812F080: .4byte gSharedMem + 0x17800\n\ -_0812F084:\n\ - ldrb r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - ldrh r0, [r0]\n\ - muls r0, r5\n\ - ldr r1, _0812F0A0 @ =gEnemyParty\n\ - adds r0, r1\n\ -_0812F092:\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - b _0812F0A6\n\ - .align 2, 0\n\ -_0812F0A0: .4byte gEnemyParty\n\ -_0812F0A4:\n\ - ldrh r6, [r1, 0x2]\n\ -_0812F0A6:\n\ - movs r1, 0x14\n\ - mov r10, r1\n\ - b _0812F13E\n\ -_0812F0AC:\n\ - movs r2, 0x1\n\ - str r2, [sp, 0x14]\n\ - ldr r6, _0812F10C @ =gBattlerPartyIndexes\n\ - ldr r4, _0812F110 @ =gBattleAnimTarget\n\ - ldrb r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - ldrh r0, [r0]\n\ - movs r5, 0x64\n\ - muls r0, r5\n\ - ldr r7, _0812F114 @ =gEnemyParty\n\ - adds r0, r7\n\ - movs r1, 0\n\ - bl GetMonData\n\ - mov r9, r0\n\ - ldrb r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - ldrh r0, [r0]\n\ - muls r0, r5\n\ - adds r0, r7\n\ - movs r1, 0x1\n\ - bl GetMonData\n\ - mov r8, r0\n\ - ldrb r2, [r4]\n\ - lsls r1, r2, 2\n\ - ldr r0, _0812F118 @ =gSharedMem + 0x17800\n\ - adds r1, r0\n\ - ldrh r0, [r1, 0x2]\n\ - cmp r0, 0\n\ - bne _0812F138\n\ - adds r0, r2, 0\n\ - bl GetBattlerSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0812F120\n\ - ldrb r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - ldrh r0, [r0]\n\ - muls r0, r5\n\ - ldr r1, _0812F11C @ =gPlayerParty\n\ - adds r0, r1\n\ - b _0812F12C\n\ - .align 2, 0\n\ -_0812F10C: .4byte gBattlerPartyIndexes\n\ -_0812F110: .4byte gBattleAnimTarget\n\ -_0812F114: .4byte gEnemyParty\n\ -_0812F118: .4byte gSharedMem + 0x17800\n\ -_0812F11C: .4byte gPlayerParty\n\ -_0812F120:\n\ - ldrb r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - ldrh r0, [r0]\n\ - muls r0, r5\n\ - adds r0, r7\n\ -_0812F12C:\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - b _0812F13A\n\ -_0812F138:\n\ - ldrh r6, [r1, 0x2]\n\ -_0812F13A:\n\ - ldr r3, _0812F218 @ =0x0000ffec\n\ -_0812F13C:\n\ - mov r10, r3\n\ -_0812F13E:\n\ - ldr r0, _0812F21C @ =gBattleAnimAttacker\n\ - ldrb r0, [r0]\n\ - bl sub_8079ED4\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - ldr r5, _0812F21C @ =gBattleAnimAttacker\n\ - ldrb r0, [r5]\n\ - movs r1, 0\n\ - bl GetBattlerSpriteCoord\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - ldrb r0, [r5]\n\ - movs r1, 0x1\n\ - bl GetBattlerSpriteCoord\n\ - lsls r0, 24\n\ - mov r2, r10\n\ - lsls r1, r2, 16\n\ - asrs r1, 16\n\ - adds r4, r1\n\ - lsls r4, 16\n\ - asrs r4, 16\n\ - lsrs r0, 24\n\ - str r0, [sp]\n\ - movs r0, 0x5\n\ - str r0, [sp, 0x4]\n\ - mov r3, r9\n\ - str r3, [sp, 0x8]\n\ - mov r0, r8\n\ - str r0, [sp, 0xC]\n\ - adds r0, r6, 0\n\ - ldr r1, [sp, 0x14]\n\ - movs r2, 0\n\ - adds r3, r4, 0\n\ - bl sub_8079F44\n\ - adds r6, r0, 0\n\ - lsls r6, 24\n\ - lsrs r6, 24\n\ - ldr r0, _0812F220 @ =gSprites\n\ - lsls r5, r6, 4\n\ - adds r5, r6\n\ - lsls r5, 2\n\ - adds r5, r0\n\ - movs r0, 0x3\n\ - ands r7, r0\n\ - lsls r7, 2\n\ - mov r8, r7\n\ - ldrb r0, [r5, 0x5]\n\ - movs r4, 0xD\n\ - negs r4, r4\n\ - adds r1, r4, 0\n\ - ands r1, r0\n\ - mov r2, r8\n\ - orrs r1, r2\n\ - strb r1, [r5, 0x5]\n\ - ldrb r2, [r5, 0x1]\n\ - adds r0, r4, 0\n\ - ands r0, r2\n\ - movs r2, 0x4\n\ - orrs r0, r2\n\ - strb r0, [r5, 0x1]\n\ - ldr r0, _0812F224 @ =0x00007fff\n\ - lsrs r1, 4\n\ - lsls r1, 4\n\ - movs r3, 0x80\n\ - lsls r3, 1\n\ - adds r2, r3, 0\n\ - orrs r1, r2\n\ - movs r2, 0x20\n\ - bl FillPalette\n\ - ldrb r0, [r5, 0x5]\n\ - ands r4, r0\n\ - mov r0, r8\n\ - orrs r4, r0\n\ - strb r4, [r5, 0x5]\n\ - ldr r1, _0812F228 @ =REG_BLDCNT\n\ - movs r2, 0xFD\n\ - lsls r2, 6\n\ - adds r0, r2, 0\n\ - strh r0, [r1]\n\ - ldr r3, _0812F22C @ =REG_BLDALPHA\n\ - ldr r0, _0812F230 @ =gTasks\n\ - ldr r2, [sp, 0x10]\n\ - lsls r1, r2, 2\n\ - adds r1, r2\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldrh r2, [r1, 0xA]\n\ - movs r0, 0x10\n\ - subs r0, r2\n\ - lsls r0, 8\n\ - orrs r0, r2\n\ - strh r0, [r3]\n\ - strh r6, [r1, 0x8]\n\ - ldr r0, _0812F234 @ =sub_812F238\n\ - str r0, [r1]\n\ - add sp, 0x18\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0812F218: .4byte 0x0000ffec\n\ -_0812F21C: .4byte gBattleAnimAttacker\n\ -_0812F220: .4byte gSprites\n\ -_0812F224: .4byte 0x00007fff\n\ -_0812F228: .4byte REG_BLDCNT\n\ -_0812F22C: .4byte REG_BLDALPHA\n\ -_0812F230: .4byte gTasks\n\ -_0812F234: .4byte sub_812F238\n\ - .syntax divided\n"); -} -#endif // NONMATCHING -/*static*/ void sub_812F238(u8 taskId) +static void AnimTask_RolePlaySilhouetteStep1(u8 taskId) { if (gTasks[taskId].data[10]++ > 1) { @@ -3579,7 +3286,7 @@ static void sub_812F290(u8 taskId) if (++gTasks[taskId].data[12] == 9) { sub_8079098(&gSprites[spriteId]); - sub_807A0F4(&gSprites[spriteId]); + DestroySpriteAndFreeResources_(&gSprites[spriteId]); gTasks[taskId].func = sub_8078634; } } @@ -3765,7 +3472,7 @@ void sub_812F724(u8 taskId) struct Task *task = &gTasks[taskId]; task->data[0] = 0; task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - sub_80798F4(&gTasks[taskId], task->data[15], &gUnknown_08402750); + PrepareAffineAnimInTaskData(&gTasks[taskId], task->data[15], &gUnknown_08402750); task->func = sub_812F76C; } @@ -3794,7 +3501,7 @@ static void sub_812F76C(u8 taskId) gSprites[task->data[15]].pos2.x = 0; } - if (!sub_807992C(&gTasks[taskId])) + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) DestroyAnimVisualTask(taskId); } @@ -3844,7 +3551,7 @@ static void sub_812F8DC(struct Sprite *sprite) sprite->data[2]++; sprite->invisible = sprite->data[2] & 1; if (sprite->data[2] > 3) - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } } } @@ -4019,7 +3726,7 @@ void sub_812FD7C(u8 taskId) task->data[5] = GetBattlerSpriteCoord(battler, 1); task->data[6] = GetBattlerSubpriority(battler); task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - sub_80798F4(task, task->data[15], &gUnknown_084028AC); + PrepareAffineAnimInTaskData(task, task->data[15], &gUnknown_084028AC); task->func = sub_812FE20; } @@ -4036,7 +3743,7 @@ static void sub_812FE20(u8 taskId) if (task->data[1] == 18) sub_812FEB8(taskId, FALSE); - if (!sub_807992C(task)) + if (!RunAffineAnimFromTaskData(task)) { if (--task->data[3] == 0) { @@ -4045,7 +3752,7 @@ static void sub_812FE20(u8 taskId) else { task->data[1] = 0; - sub_80798F4(task, task->data[15], &gUnknown_084028AC); + PrepareAffineAnimInTaskData(task, task->data[15], &gUnknown_084028AC); } } break; @@ -4214,11 +3921,11 @@ void sub_81301EC(u8 taskId) } if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + sub_807A100(gBattleAnimAttacker, 0) / 4; + task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / 4; else - task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - sub_807A100(gBattleAnimAttacker, 0) / 4; + task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / 4; - task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - sub_807A100(gBattleAnimAttacker, 0) / 4; + task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / 4; task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); task->func = sub_81302E4; @@ -4345,7 +4052,7 @@ void sub_8130554(u8 taskId) task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + sub_807A100(gBattleAnimTarget, 0) / 4; + task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + GetBattlerSpriteCoordAttr(gBattleAnimTarget, 0) / 4; task->data[15] = CreateSprite(&gSpriteTemplate_84029AC, task->data[11], task->data[12], GetBattlerSubpriority(gBattleAnimTarget) - 5); if (task->data[15] != MAX_SPRITES) { @@ -4424,11 +4131,11 @@ static void sub_81307B0(struct Sprite *sprite) if (gBattleAnimArgs[1] == 0) { sprite->oam.matrixNum |= 0x8; - sprite->pos1.x = sub_807A100(battler, 4) - 8; + sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, 4) - 8; } else { - sprite->pos1.x = sub_807A100(battler, 5) + 8; + sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, 5) + 8; } sprite->callback = sub_813085C; @@ -4490,7 +4197,7 @@ void sub_8130918(u8 taskId) { gTasks[taskId].data[0] = gBattleAnimArgs[1]; gTasks[taskId].data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - sub_80798F4(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC); + PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC); gTasks[taskId].func = sub_8130970; } } @@ -4508,12 +4215,12 @@ static void sub_8130970(u8 taskId) gSprites[task->data[15]].pos2.x = -2; } - if (!sub_807992C(task)) + if (!RunAffineAnimFromTaskData(task)) { gSprites[task->data[15]].pos2.x = 0; if (--task->data[0]) { - sub_80798F4(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC); + PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC); task->data[1] = 0; task->data[2] = 0; } @@ -4529,12 +4236,12 @@ static void sub_8130A2C(struct Sprite *sprite) if (gBattleAnimArgs[0] == 0) { sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->pos1.y = sub_807A100(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 2); } else { sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->pos1.y = sub_807A100(gBattleAnimTarget, 2); + sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 2); } if (sprite->pos1.y < 8) @@ -4789,7 +4496,7 @@ static void sub_8130F5C(struct Sprite *sprite) if (GetBattlerSide(sprite->data[7]) == B_SIDE_OPPONENT) sprite->oam.matrixNum = 8; - sprite->oam.priority = sub_8079ED4(sprite->data[7]); + sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]); sprite->oam.objMode = ST_OAM_OBJ_BLEND; sprite->callback = sub_8130FE0; } @@ -4807,20 +4514,20 @@ static void sub_8130FE0(struct Sprite *sprite) sprite->data[6] = 0; case 0: case 4: - x = sub_807A100(sprite->data[7], 5) - 4; - y = sub_807A100(sprite->data[7], 3) - 4; + x = GetBattlerSpriteCoordAttr(sprite->data[7], 5) - 4; + y = GetBattlerSpriteCoordAttr(sprite->data[7], 3) - 4; break; case 1: - x = sub_807A100(sprite->data[7], 5) - 4; - y = sub_807A100(sprite->data[7], 2) + 4; + x = GetBattlerSpriteCoordAttr(sprite->data[7], 5) - 4; + y = GetBattlerSpriteCoordAttr(sprite->data[7], 2) + 4; break; case 2: - x = sub_807A100(sprite->data[7], 4) + 4; - y = sub_807A100(sprite->data[7], 3) - 4; + x = GetBattlerSpriteCoordAttr(sprite->data[7], 4) + 4; + y = GetBattlerSpriteCoordAttr(sprite->data[7], 3) - 4; break; case 3: - x = sub_807A100(sprite->data[7], 4) + 4; - y = sub_807A100(sprite->data[7], 2) - 4; + x = GetBattlerSpriteCoordAttr(sprite->data[7], 4) + 4; + y = GetBattlerSpriteCoordAttr(sprite->data[7], 2) - 4; break; case 5: x = GetBattlerSpriteCoord(sprite->data[7], 2); @@ -5199,3 +4906,1160 @@ static void sub_8131838(struct Sprite *sprite) break; } } + +void AnimTask_GetReturnPowerLevel(u8 taskId) +{ + gBattleAnimArgs[7] = 0; + if (gAnimFriendship < 60) + gBattleAnimArgs[7] = 0; + if (gAnimFriendship > 60 && gAnimFriendship < 92) + gBattleAnimArgs[7] = 1; + if (gAnimFriendship > 91 && gAnimFriendship < 201) + gBattleAnimArgs[7] = 2; + if (gAnimFriendship > 200) + gBattleAnimArgs[7] = 3; + + DestroyAnimVisualTask(taskId); +} + +#ifdef NONMATCHING +// Makes the mon run out of screen, run past the opposing mon, and return to its original position. +// No args. +void AnimTask_SnatchOpposingMonMove(u8 taskId) +{ + u8 spriteId, spriteId2; + u32 personality; + u32 otId; + u16 species; + u8 subpriority; + u8 isBackPic; + s16 x; + + switch (gTasks[taskId].data[0]) + { + case 0: + spriteId = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER); + gTasks[taskId].data[1] += 0x800; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8); + else + gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8); + + gTasks[taskId].data[1] &= 0xFF; + x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; + if ((u16)(x + 32) > 304) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + break; + case 1: + if (IsContest()) + { + personality = eWRAM_19348Struct->personality; + otId = eWRAM_19348Struct->otId; + species = eWRAM_19348Struct->species; + subpriority = GetBattlerSubpriority(gBattleAnimAttacker); + isBackPic = 0; + x = -32; + } + else + { + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY); + otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID); + if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); + else + species = eTransformStatuses[gBattleAnimTarget].species; + + subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority + 1; + isBackPic = 0; + x = 272; + } + else + { + personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY); + otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID); + if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); + else + species = eTransformStatuses[gBattleAnimTarget].species; + + subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority - 1; + isBackPic = 1; + x = -32; + } + } + + spriteId2 = sub_8079F44(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId); + if (eTransformStatuses[gBattleAnimTarget].species != SPECIES_NONE) + BlendPalette((gSprites[spriteId2].oam.paletteNum * 16) | 0x100, 16, 6, RGB_WHITE); + + gTasks[taskId].data[15] = spriteId2; + gTasks[taskId].data[0]++; + break; + case 2: + spriteId2 = gTasks[taskId].data[15]; + gTasks[taskId].data[1] += 0x800; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + gSprites[spriteId2].pos2.x -= (gTasks[taskId].data[1] >> 8); + else + gSprites[spriteId2].pos2.x += (gTasks[taskId].data[1] >> 8); + + gTasks[taskId].data[1] &= 0xFF; + x = gSprites[spriteId2].pos1.x + gSprites[spriteId2].pos2.x; + if (gTasks[taskId].data[14] == 0) + { + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + if (x < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X)) + { + gTasks[taskId].data[14]++; + gBattleAnimArgs[7] = 0xFFFF; + } + } + else + { + if (x > GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X)) + { + gTasks[taskId].data[14]++; + gBattleAnimArgs[7] = 0xFFFF; + } + } + } + + if ((u16)(x + 32) > 304) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + break; + case 3: + spriteId = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER); + spriteId2 = gTasks[taskId].data[15]; + DestroySpriteAndFreeResources_(&gSprites[spriteId2]); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos1.x - 32; + else + gSprites[spriteId].pos2.x = 272 - gSprites[spriteId].pos1.x; + + gTasks[taskId].data[0]++; + break; + case 4: + spriteId = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER); + gTasks[taskId].data[1] += 0x800; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8); + if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x >= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X)) + gSprites[spriteId].pos2.x = 0; + } + else + { + gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8); + if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x <= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X)) + gSprites[spriteId].pos2.x = 0; + } + + gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1]; + if (gSprites[spriteId].pos2.x == 0) + DestroyAnimVisualTask(taskId); + break; + } +} +#else +NAKED +void AnimTask_SnatchOpposingMonMove(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + ldr r1, _08131974 @ =gTasks\n\ + lsls r0, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x8\n\ + ldrsh r0, [r0, r1]\n\ + cmp r0, 0x4\n\ + bls _0813196A\n\ + b _08131EA0\n\ +_0813196A:\n\ + lsls r0, 2\n\ + ldr r1, _08131978 @ =_0813197C\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08131974: .4byte gTasks\n\ +_08131978: .4byte _0813197C\n\ + .align 2, 0\n\ +_0813197C:\n\ + .4byte _08131990\n\ + .4byte _08131A44\n\ + .4byte _08131C20\n\ + .4byte _08131D40\n\ + .4byte _08131DC4\n\ +_08131990:\n\ + movs r0, 0\n\ + bl GetAnimBattlerSpriteId\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r1, _081319DC @ =gTasks\n\ + mov r2, r8\n\ + lsls r4, r2, 2\n\ + adds r0, r4, r2\n\ + lsls r0, 3\n\ + adds r6, r0, r1\n\ + movs r3, 0x80\n\ + lsls r3, 4\n\ + adds r0, r3, 0\n\ + ldrh r1, [r6, 0xA]\n\ + adds r0, r1\n\ + strh r0, [r6, 0xA]\n\ + ldr r0, _081319E0 @ =gBattleAnimAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBattlerSide\n\ + lsls r0, 24\n\ + mov r9, r4\n\ + cmp r0, 0\n\ + bne _081319E8\n\ + ldr r2, _081319E4 @ =gSprites\n\ + lsls r3, r7, 4\n\ + adds r1, r3, r7\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + ldrh r0, [r6, 0xA]\n\ + lsls r0, 16\n\ + asrs r0, 24\n\ + ldrh r4, [r1, 0x24]\n\ + adds r0, r4\n\ + strh r0, [r1, 0x24]\n\ + b _08131A02\n\ + .align 2, 0\n\ +_081319DC: .4byte gTasks\n\ +_081319E0: .4byte gBattleAnimAttacker\n\ +_081319E4: .4byte gSprites\n\ +_081319E8:\n\ + ldr r3, _08131A3C @ =gSprites\n\ + lsls r4, r7, 4\n\ + adds r2, r4, r7\n\ + lsls r2, 2\n\ + adds r2, r3\n\ + ldrh r1, [r6, 0xA]\n\ + lsls r1, 16\n\ + asrs r1, 24\n\ + ldrh r0, [r2, 0x24]\n\ + subs r0, r1\n\ + strh r0, [r2, 0x24]\n\ + adds r2, r3, 0\n\ + adds r3, r4, 0\n\ +_08131A02:\n\ + ldr r1, _08131A40 @ =gTasks\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r4, r0, r1\n\ + ldrb r0, [r4, 0xA]\n\ + strh r0, [r4, 0xA]\n\ + adds r1, r3, r7\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + ldrh r0, [r1, 0x24]\n\ + ldrh r1, [r1, 0x20]\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + movs r1, 0x80\n\ + lsls r1, 14\n\ + adds r0, r1\n\ + movs r1, 0x98\n\ + lsls r1, 17\n\ + cmp r0, r1\n\ + bhi _08131A2E\n\ + b _08131EA0\n\ +_08131A2E:\n\ + movs r0, 0\n\ + strh r0, [r4, 0xA]\n\ + ldrh r0, [r4, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x8]\n\ + b _08131EA0\n\ + .align 2, 0\n\ +_08131A3C: .4byte gSprites\n\ +_08131A40: .4byte gTasks\n\ +_08131A44:\n\ + bl IsContest\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08131A74\n\ + ldr r0, _08131A6C @ =gSharedMem + 0x19348\n\ + ldr r2, [r0, 0x8]\n\ + mov r10, r2\n\ + ldr r3, [r0, 0xC]\n\ + mov r9, r3\n\ + ldrh r5, [r0]\n\ + ldr r0, _08131A70 @ =gBattleAnimAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBattlerSubpriority\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + movs r7, 0\n\ + b _08131B92\n\ + .align 2, 0\n\ +_08131A6C: .4byte gSharedMem + 0x19348\n\ +_08131A70: .4byte gBattleAnimAttacker\n\ +_08131A74:\n\ + ldr r4, _08131AD4 @ =gBattleAnimAttacker\n\ + ldrb r0, [r4]\n\ + bl GetBattlerSide\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08131B10\n\ + ldr r7, _08131AD8 @ =gBattlerPartyIndexes\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r7\n\ + ldrh r0, [r0]\n\ + movs r6, 0x64\n\ + muls r0, r6\n\ + ldr r5, _08131ADC @ =gPlayerParty\n\ + adds r0, r5\n\ + movs r1, 0\n\ + bl GetMonData\n\ + mov r10, r0\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r7\n\ + ldrh r0, [r0]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x1\n\ + bl GetMonData\n\ + mov r9, r0\n\ + ldrb r2, [r4]\n\ + lsls r1, r2, 2\n\ + ldr r0, _08131AE0 @ =gSharedMem + 0x17800\n\ + adds r1, r0\n\ + ldrh r0, [r1, 0x2]\n\ + cmp r0, 0\n\ + bne _08131AE4\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + ldrh r0, [r0]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + b _08131AE6\n\ + .align 2, 0\n\ +_08131AD4: .4byte gBattleAnimAttacker\n\ +_08131AD8: .4byte gBattlerPartyIndexes\n\ +_08131ADC: .4byte gPlayerParty\n\ +_08131AE0: .4byte gSharedMem + 0x17800\n\ +_08131AE4:\n\ + ldrh r5, [r1, 0x2]\n\ +_08131AE6:\n\ + movs r0, 0x1\n\ + bl GetAnimBattlerSpriteId\n\ + ldr r2, _08131B0C @ =gSprites\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, r0, 4\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + adds r1, 0x43\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + movs r7, 0\n\ + movs r6, 0x88\n\ + lsls r6, 1\n\ + b _08131B94\n\ + .align 2, 0\n\ +_08131B0C: .4byte gSprites\n\ +_08131B10:\n\ + ldr r7, _08131B64 @ =gBattlerPartyIndexes\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r7\n\ + ldrh r0, [r0]\n\ + movs r6, 0x64\n\ + muls r0, r6\n\ + ldr r5, _08131B68 @ =gEnemyParty\n\ + adds r0, r5\n\ + movs r1, 0\n\ + bl GetMonData\n\ + mov r10, r0\n\ + ldrb r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r7\n\ + ldrh r0, [r0]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0x1\n\ + bl GetMonData\n\ + mov r9, r0\n\ + ldrb r2, [r4]\n\ + lsls r1, r2, 2\n\ + ldr r0, _08131B6C @ =gSharedMem + 0x17800\n\ + adds r1, r0\n\ + ldrh r0, [r1, 0x2]\n\ + cmp r0, 0\n\ + bne _08131B70\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + ldrh r0, [r0]\n\ + muls r0, r6\n\ + adds r0, r5\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + b _08131B72\n\ + .align 2, 0\n\ +_08131B64: .4byte gBattlerPartyIndexes\n\ +_08131B68: .4byte gEnemyParty\n\ +_08131B6C: .4byte gSharedMem + 0x17800\n\ +_08131B70:\n\ + ldrh r5, [r1, 0x2]\n\ +_08131B72:\n\ + movs r0, 0x1\n\ + bl GetAnimBattlerSpriteId\n\ + ldr r2, _08131C04 @ =gSprites\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, r0, 4\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + adds r1, 0x43\n\ + ldrb r0, [r1]\n\ + subs r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + movs r7, 0x1\n\ +_08131B92:\n\ + ldr r6, _08131C08 @ =0x0000ffe0\n\ +_08131B94:\n\ + ldr r0, _08131C0C @ =gBattleAnimTarget\n\ + ldrb r0, [r0]\n\ + movs r1, 0x1\n\ + bl GetBattlerSpriteCoord\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r3, r6, 16\n\ + asrs r3, 16\n\ + str r0, [sp]\n\ + str r4, [sp, 0x4]\n\ + mov r4, r10\n\ + str r4, [sp, 0x8]\n\ + mov r0, r9\n\ + str r0, [sp, 0xC]\n\ + adds r0, r5, 0\n\ + adds r1, r7, 0\n\ + movs r2, 0\n\ + bl sub_8079F44\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r0, _08131C10 @ =gBattleAnimAttacker\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + ldr r1, _08131C14 @ =gSharedMem + 0x17800\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + cmp r0, 0\n\ + beq _08131BF2\n\ + ldr r1, _08131C04 @ =gSprites\n\ + lsls r0, r5, 4\n\ + adds r0, r5\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x5]\n\ + lsrs r0, 4\n\ + lsls r0, 4\n\ + movs r2, 0x80\n\ + lsls r2, 1\n\ + adds r1, r2, 0\n\ + orrs r0, r1\n\ + ldr r3, _08131C18 @ =0x00007fff\n\ + movs r1, 0x10\n\ + movs r2, 0x6\n\ + bl BlendPalette\n\ +_08131BF2:\n\ + ldr r0, _08131C1C @ =gTasks\n\ + mov r3, r8\n\ + lsls r1, r3, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + strh r5, [r1, 0x26]\n\ + b _08131DB6\n\ + .align 2, 0\n\ +_08131C04: .4byte gSprites\n\ +_08131C08: .4byte 0x0000ffe0\n\ +_08131C0C: .4byte gBattleAnimTarget\n\ +_08131C10: .4byte gBattleAnimAttacker\n\ +_08131C14: .4byte gSharedMem + 0x17800\n\ +_08131C18: .4byte 0x00007fff\n\ +_08131C1C: .4byte gTasks\n\ +_08131C20:\n\ + ldr r1, _08131C6C @ =gTasks\n\ + mov r0, r8\n\ + lsls r4, r0, 2\n\ + adds r0, r4, r0\n\ + lsls r0, 3\n\ + adds r6, r0, r1\n\ + ldrh r0, [r6, 0x26]\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r1, 0x80\n\ + lsls r1, 4\n\ + adds r0, r1, 0\n\ + ldrh r2, [r6, 0xA]\n\ + adds r0, r2\n\ + strh r0, [r6, 0xA]\n\ + ldr r0, _08131C70 @ =gBattleAnimAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBattlerSide\n\ + lsls r0, 24\n\ + mov r9, r4\n\ + cmp r0, 0\n\ + bne _08131C78\n\ + ldr r3, _08131C74 @ =gSprites\n\ + lsls r4, r5, 4\n\ + adds r2, r4, r5\n\ + lsls r2, 2\n\ + adds r2, r3\n\ + ldrh r1, [r6, 0xA]\n\ + lsls r1, 16\n\ + asrs r1, 24\n\ + ldrh r0, [r2, 0x24]\n\ + subs r0, r1\n\ + strh r0, [r2, 0x24]\n\ + adds r2, r3, 0\n\ + adds r3, r4, 0\n\ + b _08131C8E\n\ + .align 2, 0\n\ +_08131C6C: .4byte gTasks\n\ +_08131C70: .4byte gBattleAnimAttacker\n\ +_08131C74: .4byte gSprites\n\ +_08131C78:\n\ + ldr r2, _08131CDC @ =gSprites\n\ + lsls r3, r5, 4\n\ + adds r1, r3, r5\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + ldrh r0, [r6, 0xA]\n\ + lsls r0, 16\n\ + asrs r0, 24\n\ + ldrh r4, [r1, 0x24]\n\ + adds r0, r4\n\ + strh r0, [r1, 0x24]\n\ +_08131C8E:\n\ + ldr r1, _08131CE0 @ =gTasks\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r6, r0, r1\n\ + ldrb r0, [r6, 0xA]\n\ + strh r0, [r6, 0xA]\n\ + adds r1, r3, r5\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + ldrh r0, [r1, 0x24]\n\ + ldrh r1, [r1, 0x20]\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + movs r1, 0x24\n\ + ldrsh r0, [r6, r1]\n\ + cmp r0, 0\n\ + bne _08131D0E\n\ + ldr r0, _08131CE4 @ =gBattleAnimAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBattlerSide\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08131CEC\n\ + lsls r4, r5, 16\n\ + asrs r4, 16\n\ + ldr r0, _08131CE8 @ =gBattleAnimTarget\n\ + ldrb r0, [r0]\n\ + movs r1, 0\n\ + bl GetBattlerSpriteCoord\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r4, r0\n\ + bge _08131D0E\n\ + b _08131D02\n\ + .align 2, 0\n\ +_08131CDC: .4byte gSprites\n\ +_08131CE0: .4byte gTasks\n\ +_08131CE4: .4byte gBattleAnimAttacker\n\ +_08131CE8: .4byte gBattleAnimTarget\n\ +_08131CEC:\n\ + lsls r4, r5, 16\n\ + asrs r4, 16\n\ + ldr r0, _08131D30 @ =gBattleAnimTarget\n\ + ldrb r0, [r0]\n\ + movs r1, 0\n\ + bl GetBattlerSpriteCoord\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r4, r0\n\ + ble _08131D0E\n\ +_08131D02:\n\ + ldrh r0, [r6, 0x24]\n\ + adds r0, 0x1\n\ + strh r0, [r6, 0x24]\n\ + ldr r1, _08131D34 @ =gBattleAnimArgs\n\ + ldr r0, _08131D38 @ =0x0000ffff\n\ + strh r0, [r1, 0xE]\n\ +_08131D0E:\n\ + lsls r0, r5, 16\n\ + movs r2, 0x80\n\ + lsls r2, 14\n\ + adds r0, r2\n\ + movs r1, 0x98\n\ + lsls r1, 17\n\ + cmp r0, r1\n\ + bhi _08131D20\n\ + b _08131EA0\n\ +_08131D20:\n\ + ldr r0, _08131D3C @ =gTasks\n\ + mov r1, r9\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0\n\ + strh r0, [r1, 0xA]\n\ + b _08131DB6\n\ + .align 2, 0\n\ +_08131D30: .4byte gBattleAnimTarget\n\ +_08131D34: .4byte gBattleAnimArgs\n\ +_08131D38: .4byte 0x0000ffff\n\ +_08131D3C: .4byte gTasks\n\ +_08131D40:\n\ + movs r0, 0\n\ + bl GetAnimBattlerSpriteId\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r1, _08131D8C @ =gTasks\n\ + mov r3, r8\n\ + lsls r4, r3, 2\n\ + adds r0, r4, r3\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x26]\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r0, r5, 4\n\ + adds r0, r5\n\ + lsls r0, 2\n\ + ldr r5, _08131D90 @ =gSprites\n\ + adds r0, r5\n\ + bl DestroySpriteAndFreeResources_\n\ + ldr r0, _08131D94 @ =gBattleAnimAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBattlerSide\n\ + lsls r0, 24\n\ + mov r9, r4\n\ + cmp r0, 0\n\ + bne _08131D98\n\ + lsls r1, r7, 4\n\ + adds r1, r7\n\ + lsls r1, 2\n\ + adds r1, r5\n\ + ldrh r0, [r1, 0x20]\n\ + negs r0, r0\n\ + subs r0, 0x20\n\ + strh r0, [r1, 0x24]\n\ + b _08131DAC\n\ + .align 2, 0\n\ +_08131D8C: .4byte gTasks\n\ +_08131D90: .4byte gSprites\n\ +_08131D94: .4byte gBattleAnimAttacker\n\ +_08131D98:\n\ + lsls r0, r7, 4\n\ + adds r0, r7\n\ + lsls r0, 2\n\ + adds r0, r5\n\ + ldrh r2, [r0, 0x20]\n\ + movs r4, 0x88\n\ + lsls r4, 1\n\ + adds r1, r4, 0\n\ + subs r1, r2\n\ + strh r1, [r0, 0x24]\n\ +_08131DAC:\n\ + ldr r0, _08131DC0 @ =gTasks\n\ + mov r1, r9\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ +_08131DB6:\n\ + ldrh r0, [r1, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r1, 0x8]\n\ + b _08131EA0\n\ + .align 2, 0\n\ +_08131DC0: .4byte gTasks\n\ +_08131DC4:\n\ + movs r0, 0\n\ + bl GetAnimBattlerSpriteId\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r1, _08131E38 @ =gTasks\n\ + mov r0, r8\n\ + lsls r4, r0, 2\n\ + adds r0, r4, r0\n\ + lsls r0, 3\n\ + adds r2, r0, r1\n\ + movs r1, 0x80\n\ + lsls r1, 4\n\ + adds r0, r1, 0\n\ + ldrh r3, [r2, 0xA]\n\ + adds r0, r3\n\ + strh r0, [r2, 0xA]\n\ + ldr r0, _08131E3C @ =gBattleAnimAttacker\n\ + mov r10, r0\n\ + ldrb r0, [r0]\n\ + str r2, [sp, 0x10]\n\ + bl GetBattlerSide\n\ + lsls r0, 24\n\ + mov r9, r4\n\ + ldr r2, [sp, 0x10]\n\ + cmp r0, 0\n\ + bne _08131E44\n\ + ldr r1, _08131E40 @ =gSprites\n\ + lsls r5, r7, 4\n\ + adds r0, r5, r7\n\ + lsls r0, 2\n\ + adds r6, r0, r1\n\ + ldrh r0, [r2, 0xA]\n\ + lsls r0, 16\n\ + asrs r0, 24\n\ + ldrh r1, [r6, 0x24]\n\ + adds r0, r1\n\ + strh r0, [r6, 0x24]\n\ + movs r2, 0x24\n\ + ldrsh r4, [r6, r2]\n\ + movs r3, 0x20\n\ + ldrsh r0, [r6, r3]\n\ + adds r4, r0\n\ + mov r1, r10\n\ + ldrb r0, [r1]\n\ + movs r1, 0\n\ + bl GetBattlerSpriteCoord\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r3, r5, 0\n\ + cmp r4, r0\n\ + blt _08131E7C\n\ + movs r2, 0\n\ + strh r2, [r6, 0x24]\n\ + b _08131E7C\n\ + .align 2, 0\n\ +_08131E38: .4byte gTasks\n\ +_08131E3C: .4byte gBattleAnimAttacker\n\ +_08131E40: .4byte gSprites\n\ +_08131E44:\n\ + ldr r1, _08131EB0 @ =gSprites\n\ + lsls r5, r7, 4\n\ + adds r0, r5, r7\n\ + lsls r0, 2\n\ + adds r6, r0, r1\n\ + ldrh r1, [r2, 0xA]\n\ + lsls r1, 16\n\ + asrs r1, 24\n\ + ldrh r0, [r6, 0x24]\n\ + subs r0, r1\n\ + strh r0, [r6, 0x24]\n\ + movs r3, 0x24\n\ + ldrsh r4, [r6, r3]\n\ + movs r1, 0x20\n\ + ldrsh r0, [r6, r1]\n\ + adds r4, r0\n\ + mov r2, r10\n\ + ldrb r0, [r2]\n\ + movs r1, 0\n\ + bl GetBattlerSpriteCoord\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r3, r5, 0\n\ + cmp r4, r0\n\ + bgt _08131E7C\n\ + movs r4, 0\n\ + strh r4, [r6, 0x24]\n\ +_08131E7C:\n\ + ldr r1, _08131EB4 @ =gTasks\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0xA]\n\ + strh r1, [r0, 0xA]\n\ + ldr r1, _08131EB0 @ =gSprites\n\ + adds r0, r3, r7\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + movs r1, 0x24\n\ + ldrsh r0, [r0, r1]\n\ + cmp r0, 0\n\ + bne _08131EA0\n\ + mov r0, r8\n\ + bl DestroyAnimVisualTask\n\ +_08131EA0:\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08131EB0: .4byte gSprites\n\ +_08131EB4: .4byte gTasks\n\ + .syntax divided"); +} +#endif // NONMATCHING + +void sub_8131EB8(struct Sprite *sprite) +{ + switch (sprite->data[7]) + { + case 0: + if (gBattleAnimArgs[7] == -1) + { + PlaySE12WithPanning(SE_W233, BattleAnimAdjustPanning(63)); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16; + sprite->data[0] = -32; + sprite->data[7]++; + sprite->invisible = 0; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT && !IsContest()) + sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority - 1; + } + else + { + sprite->invisible = 1; + } + break; + case 1: + sprite->pos2.y = Sin(sprite->data[1], sprite->data[0]); + sprite->data[1] += 5; + if (sprite->data[1] > 0x7F) + { + sprite->data[0] = sprite->data[0] / 2; + sprite->data[3]++; + sprite->data[1] -= 0x7F; + } + + sprite->data[2] += 0x100; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + sprite->pos2.x -= (sprite->data[2] >> 8); + else + sprite->pos2.x += (sprite->data[2] >> 8); + + sprite->data[2] &= 0xFF; + if (sprite->data[3] == 2) + DestroyAnimSprite(sprite); + break; + } +} + +// Quickly moves the mon towards its partner and back. +// No args. +void AnimTask_SnatchPartnerMove(u8 taskId) +{ + s16 attackerX, targetX; + u8 spriteId; + + switch (gTasks[taskId].data[15]) + { + case 0: + attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + gTasks[taskId].data[0] = 6; + if (attackerX > targetX) + gTasks[taskId].data[0] *= -1; + + gTasks[taskId].data[1] = attackerX; + gTasks[taskId].data[2] = targetX; + gTasks[taskId].data[15]++; + break; + case 1: + spriteId = gBankSpriteIds[gBattleAnimAttacker]; + gSprites[spriteId].pos2.x += gTasks[taskId].data[0]; + if (gTasks[taskId].data[0] > 0) + { + if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x >= gTasks[taskId].data[2]) + gTasks[taskId].data[15]++; + } + else + { + if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x <= gTasks[taskId].data[2]) + gTasks[taskId].data[15]++; + } + break; + case 2: + gTasks[taskId].data[0] *= -1; + gTasks[taskId].data[15]++; + break; + case 3: + spriteId = gBankSpriteIds[gBattleAnimAttacker]; + gSprites[spriteId].pos2.x += gTasks[taskId].data[0]; + if (gTasks[taskId].data[0] < 0) + { + if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x <= gTasks[taskId].data[1]) + gTasks[taskId].data[15]++; + } + else + { + if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x >= gTasks[taskId].data[1]) + gTasks[taskId].data[15]++; + } + break; + case 4: + default: + spriteId = gBankSpriteIds[gBattleAnimAttacker]; + gSprites[spriteId].pos2.x = 0; + DestroyAnimVisualTask(taskId); + break; + } +} + +// Moves the mon's sprite back and forth in an unpredictable swaying motion. +// No args. +void AnimTask_TeeterDanceMovement(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + task->data[3] = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER); + task->data[4] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1; + task->data[6] = gSprites[task->data[3]].pos1.y; + task->data[5] = gSprites[task->data[3]].pos1.x; + task->data[9] = 0; + task->data[11] = 0; + task->data[10] = 1; + task->data[12] = 0; + task->func = AnimTask_TeeterDanceMovementStep; +} + +static void AnimTask_TeeterDanceMovementStep(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + task->data[11] += 8; + task->data[11] &= 0xFF; + gSprites[task->data[3]].pos2.x = gSineTable[task->data[11]] >> 5; + task->data[9] += 2; + task->data[9] &= 0xFF; + gSprites[task->data[3]].pos1.x = (gSineTable[task->data[9]] >> 3) * task->data[4] + task->data[5]; + if (task->data[9] == 0) + { + gSprites[task->data[3]].pos1.x = task->data[5]; + task->data[0]++; + } + break; + case 1: + task->data[11] += 8; + task->data[11] &= 0xFF; + gSprites[task->data[3]].pos2.x = gSineTable[task->data[11]] >> 5; + if (task->data[11] == 0) + { + gSprites[task->data[3]].pos2.x = 0; + task->data[0]++; + } + break; + case 2: + DestroyAnimVisualTask(taskId); + break; + } +} + +static void AnimKnockOffStrikeStep(struct Sprite *sprite) +{ + // These two cases are identical. + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + sprite->data[1] += sprite->data[0]; + sprite->data[1] &= 0xFF; + } + else + { + sprite->data[1] += sprite->data[0]; + sprite->data[1] &= 0xFF; + } + + sprite->pos2.x = Cos(sprite->data[1], 20); + sprite->pos2.y = Sin(sprite->data[1], 20); + if (sprite->animEnded) + DestroyAnimSprite(sprite); + + sprite->data[2]++; +} + +// Animates a strike that swipes downard at the target mon. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +void AnimKnockOffStrike(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = -11; + sprite->data[1] = 192; + StartSpriteAffineAnim(sprite, 1); + } + else + { + sprite->data[0] = 11; + sprite->data[1] = 192; + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + + sprite->callback = AnimKnockOffStrikeStep; +} + +// Gradually fades a rotating recyle arrow sprite in and back out. +// No args. +void AnimRecycle(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP); + if (sprite->pos1.y < 16) + sprite->pos1.y = 16; + + sprite->data[6] = 0; + sprite->data[7] = 16; + sprite->callback = AnimRecycleStep; + REG_BLDALPHA = BLDALPHA_BLEND(sprite->data[6], sprite->data[7]); +} + +static void AnimRecycleStep(struct Sprite *sprite) +{ + switch (sprite->data[2]) + { + case 0: + if (++sprite->data[0] > 1) + { + sprite->data[0] = 0; + if (!(sprite->data[1] & 1)) + { + if (sprite->data[6] < 16) + sprite->data[6]++; + } + else + { + if (sprite->data[7] != 0) + sprite->data[7]--; + } + + sprite->data[1]++; + REG_BLDALPHA = BLDALPHA_BLEND(sprite->data[6], sprite->data[7]); + if (sprite->data[7] == 0) + sprite->data[2]++; + } + break; + case 1: + if (++sprite->data[0] == 10) + { + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2]++; + } + break; + case 2: + if (++sprite->data[0] > 1) + { + sprite->data[0] = 0; + if (!(sprite->data[1] & 1)) + { + if (sprite->data[6] != 0) + sprite->data[6]--; + } + else + { + if (sprite->data[7] < 16) + sprite->data[7]++; + } + + sprite->data[1]++; + REG_BLDALPHA = BLDALPHA_BLEND(sprite->data[6], sprite->data[7]); + if (sprite->data[7] == 16) + sprite->data[2]++; + } + break; + case 3: + DestroySpriteAndMatrix(sprite); + break; + } +} + +void AnimTask_GetWeather(u8 taskId) +{ + gBattleAnimArgs[7] = ANIM_WEATHER_NONE; + if (gWeatherMoveAnim & WEATHER_SUN_ANY) + gBattleAnimArgs[7] = ANIM_WEATHER_SUN; + else if (gWeatherMoveAnim & WEATHER_RAIN_ANY) + gBattleAnimArgs[7] = ANIM_WEATHER_RAIN; + else if (gWeatherMoveAnim & WEATHER_SANDSTORM_ANY) + gBattleAnimArgs[7] = ANIM_WEATHER_SANDSTORM; + else if (gWeatherMoveAnim & WEATHER_HAIL_ANY) + gBattleAnimArgs[7] = ANIM_WEATHER_HAIL; + + DestroyAnimVisualTask(taskId); +} + +// Squishes the mon sprite vertically, and shakes it back and forth. +// arg 0: which battler +void AnimTask_SlackOffSquish(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + task->data[0] = 0; + task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + PrepareAffineAnimInTaskData(task, task->data[15], gSlackOffSquishAffineAnimCmds); + task->func = AnimTask_SlackOffSquishStep; +} + +static void AnimTask_SlackOffSquishStep(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] > 16 && gTasks[taskId].data[0] < 40) + { + if (++task->data[1] > 2) + { + task->data[1] = 0; + task->data[2]++; + if (!(task->data[2] & 1)) + gSprites[task->data[15]].pos2.x = -1; + else + gSprites[task->data[15]].pos2.x = 1; + } + } + else + { + gSprites[task->data[15]].pos2.x = 0; + } + + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); +}
\ No newline at end of file diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 1f73b64b1..278e5e459 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -685,7 +685,7 @@ void sub_8078504(struct Sprite *sprite) } } -void move_anim_8074EE0(struct Sprite *sprite) +void DestroySpriteAndMatrix(struct Sprite *sprite) { FreeSpriteOamMatrix(sprite); DestroyAnimSprite(sprite); @@ -703,7 +703,7 @@ void unref_sub_8078588(struct Sprite *sprite) void unref_sub_80785CC(struct Sprite *sprite) { ResetPaletteStructByUid(sprite->data[5]); - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } void sub_80785E4(struct Sprite *sprite) @@ -1386,7 +1386,7 @@ void sub_80793C4(struct Sprite *sprite) } else if (sprite->animEnded || sprite->affineAnimEnded) { - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } } @@ -1637,7 +1637,7 @@ void sub_80798AC(u8 task) AnimTask_BlendMonInAndOutSetup(&gTasks[task]); } -void sub_80798F4(struct Task *task, u8 a2, const void *a3) +void PrepareAffineAnimInTaskData(struct Task *task, u8 a2, const void *a3) { task->data[7] = 0; task->data[8] = 0; @@ -1650,7 +1650,7 @@ void sub_80798F4(struct Task *task, u8 a2, const void *a3) PrepareBattlerSpriteForRotScale(a2, 0); } -bool8 sub_807992C(struct Task *task) +bool8 RunAffineAnimFromTaskData(struct Task *task) { gUnknown_0202F7D4 = sub_8079BFC(task->data[13], task->data[14]) + (task->data[7] << 3); switch (gUnknown_0202F7D4->type) @@ -1903,7 +1903,7 @@ u8 GetBattlerSubpriority(u8 bank) return ret; } -u8 sub_8079ED4(u8 slot) +u8 GetBattlerSpriteBGPriority(u8 slot) { u8 status = GetBattlerPosition(slot); @@ -1930,7 +1930,7 @@ u8 GetBattlerPosition_permutated(u8 slot) return 1; } -u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u32 a8) +u8 sub_8079F44(u16 species, bool8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u32 a8) { u8 sprite; u16 sheet = LoadSpriteSheet(&gUnknown_0837F5E0[a3]); @@ -1980,12 +1980,12 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, return sprite; } -void sub_807A0F4(struct Sprite *sprite) +void DestroySpriteAndFreeResources_(struct Sprite *sprite) { DestroySpriteAndFreeResources(sprite); } -s16 sub_807A100(u8 slot, u8 a2) +s16 GetBattlerSpriteCoordAttr(u8 slot, u8 a2) { u16 species; u32 personality; @@ -2185,7 +2185,7 @@ void sub_807A544(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[3]; sprite->data[3] = gBattleAnimArgs[4]; sprite->data[5] = gBattleAnimArgs[5]; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_8078504; } @@ -2206,7 +2206,7 @@ void sub_807A5C4(struct Sprite *sprite) sprite->data[3] = gBattleAnimArgs[4]; sprite->data[5] = gBattleAnimArgs[5]; StartSpriteAnim(sprite, gBattleAnimArgs[6]); - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix); sprite->callback = sub_8078504; } |