Some nonmatchings

This commit is contained in:
DizzyEggg
2019-04-11 12:05:56 +02:00
committed by huderlem
parent 5bc640da9b
commit 518f9c0638
5 changed files with 331 additions and 1725 deletions
+70 -438
View File
@@ -47,7 +47,7 @@ void AnimIceBallParticle(struct Sprite *);
void AnimTask_Haze2(u8);
void AnimTask_OverlayFogTiles(u8);
void AnimTask_Hail2(u8);
bool8 GenerateHailParticle(u8, u8, u8, u8);
bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c);
const union AnimCmd gUnknown_08595A48[] =
{
@@ -522,37 +522,33 @@ const struct SpriteTemplate gUnknown_08595DFC =
.callback = InitIceBallParticle,
};
// probably unused
#ifdef NONMATCHING
static void sub_810B6C4(struct Sprite *sprite)
{
s16 targetX, targetY, attackerX, attackerY;
s16 i;
sprite->oam.tileNum += 7;
targetX = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
targetY = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = gBattleAnimArgs[0] + attackerX;
sprite->data[2] = gBattleAnimArgs[2] + targetX;
sprite->data[3] = gBattleAnimArgs[1] + attackerY;
sprite->data[4] = gBattleAnimArgs[3] + targetY;
sub_80A64EC(sprite);
while ((targetX >= -32 && targetX <= 272) && (targetY >= -32 && targetY <= 192))
{
targetX += sprite->data[1];
targetY += sprite->data[2];
}
for (;(targetX >= -32 && targetX <= 272) && (targetY >= -32 && targetY <= 192);
targetX += sprite->data[1], targetY += sprite->data[2])
;
sprite->data[1] = -sprite->data[1];
sprite->data[2] = -sprite->data[2];
while ((attackerX >= -32 && attackerX <= 272) && (attackerY >= -32 && attackerY <= 192))
{
attackerX += sprite->data[1];
attackerY += sprite->data[2];
}
for (;(attackerX >= -32 && attackerX <= 272) && (attackerY >= -32 && attackerY <= 192);
attackerX += sprite->data[1], attackerY += sprite->data[2])
;
sprite->pos1.x = attackerX;
sprite->pos1.y = attackerY;
sprite->data[0] = gBattleAnimArgs[4];
@@ -565,195 +561,6 @@ static void sub_810B6C4(struct Sprite *sprite)
sprite->data[4] = gBattleAnimArgs[6];
sprite->callback = sub_810B848;
}
#else
NAKED
static void sub_810B6C4(struct Sprite *sprite)
{
asm_unified("push {r4-r7,lr}\n\
mov r7, r10\n\
mov r6, r9\n\
mov r5, r8\n\
push {r5-r7}\n\
sub sp, 0x4\n\
adds r5, r0, 0\n\
ldrh r2, [r5, 0x4]\n\
lsls r1, r2, 22\n\
lsrs r1, 22\n\
adds r1, 0x7\n\
ldr r3, =0x000003ff\n\
adds r0, r3, 0\n\
ands r1, r0\n\
ldr r0, =0xfffffc00\n\
ands r0, r2\n\
orrs r0, r1\n\
strh r0, [r5, 0x4]\n\
ldr r4, =gBattleAnimTarget\n\
ldrb r0, [r4]\n\
movs r1, 0x2\n\
bl GetBattlerSpriteCoord\n\
lsls r0, 24\n\
lsrs r0, 24\n\
mov r9, r0\n\
ldrb r0, [r4]\n\
movs r1, 0x3\n\
bl GetBattlerSpriteCoord\n\
lsls r0, 24\n\
lsrs r0, 24\n\
mov r8, r0\n\
ldr r4, =gBattleAnimAttacker\n\
ldrb r0, [r4]\n\
movs r1, 0x2\n\
bl GetBattlerSpriteCoord\n\
lsls r0, 24\n\
lsrs r3, r0, 24\n\
ldrb r0, [r4]\n\
movs r1, 0x3\n\
str r3, [sp]\n\
bl GetBattlerSpriteCoord\n\
lsls r0, 24\n\
lsrs r6, r0, 24\n\
ldr r1, =gBattleAnimArgs\n\
ldrh r0, [r1, 0x8]\n\
strh r0, [r5, 0x2E]\n\
ldrh r0, [r1]\n\
ldr r3, [sp]\n\
adds r0, r3\n\
strh r0, [r5, 0x30]\n\
ldrh r0, [r1, 0x4]\n\
mov r4, r9\n\
adds r0, r4, r0\n\
strh r0, [r5, 0x32]\n\
ldrh r0, [r1, 0x2]\n\
adds r0, r6\n\
strh r0, [r5, 0x34]\n\
ldrh r0, [r1, 0x6]\n\
mov r7, r8\n\
adds r0, r7, r0\n\
strh r0, [r5, 0x36]\n\
adds r0, r5, 0\n\
bl sub_80A64EC\n\
adds r4, 0x20\n\
movs r0, 0x98\n\
lsls r0, 1\n\
mov r12, r0\n\
ldr r3, [sp]\n\
cmp r4, r12\n\
bhi _0810B79E\n\
adds r0, r7, 0\n\
adds r0, 0x20\n\
ldrh r1, [r5, 0x30]\n\
ldrh r2, [r5, 0x32]\n\
cmp r0, 0xE0\n\
bhi _0810B79E\n\
adds r4, r1, 0\n\
mov r10, r12\n\
_0810B76A:\n\
mov r7, r9\n\
lsls r1, r7, 16\n\
asrs r1, 16\n\
adds r1, r4\n\
lsls r1, 16\n\
mov r7, r8\n\
lsls r0, r7, 16\n\
asrs r0, 16\n\
adds r0, r2\n\
lsls r0, 16\n\
lsrs r0, 16\n\
mov r8, r0\n\
lsrs r0, r1, 16\n\
mov r9, r0\n\
movs r7, 0x80\n\
lsls r7, 14\n\
adds r1, r7\n\
lsrs r1, 16\n\
cmp r1, r10\n\
bhi _0810B79E\n\
mov r1, r8\n\
lsls r0, r1, 16\n\
adds r0, r7\n\
lsrs r0, 16\n\
cmp r0, 0xE0\n\
bls _0810B76A\n\
_0810B79E:\n\
ldrh r0, [r5, 0x30]\n\
negs r7, r0\n\
strh r7, [r5, 0x30]\n\
ldrh r0, [r5, 0x32]\n\
negs r4, r0\n\
strh r4, [r5, 0x32]\n\
lsls r0, r3, 16\n\
movs r1, 0x80\n\
lsls r1, 14\n\
adds r0, r1\n\
lsrs r0, 16\n\
movs r2, 0x98\n\
lsls r2, 1\n\
mov r12, r2\n\
ldr r1, =gBattleAnimArgs\n\
mov r10, r1\n\
cmp r0, r12\n\
bhi _0810B80A\n\
lsls r1, r6, 16\n\
movs r2, 0x80\n\
lsls r2, 14\n\
adds r0, r1, r2\n\
b _0810B802\n\
.pool\n\
_0810B7E0:\n\
lsls r1, r3, 16\n\
asrs r1, 16\n\
adds r1, r7\n\
lsls r1, 16\n\
asrs r0, r2, 16\n\
adds r0, r4\n\
lsls r0, 16\n\
lsrs r6, r0, 16\n\
lsrs r3, r1, 16\n\
movs r0, 0x80\n\
lsls r0, 14\n\
adds r1, r0\n\
lsrs r1, 16\n\
cmp r1, r12\n\
bhi _0810B80A\n\
lsls r1, r6, 16\n\
adds r0, r1, r0\n\
_0810B802:\n\
lsrs r0, 16\n\
adds r2, r1, 0\n\
cmp r0, 0xE0\n\
bls _0810B7E0\n\
_0810B80A:\n\
strh r3, [r5, 0x20]\n\
strh r6, [r5, 0x22]\n\
mov r1, r10\n\
ldrh r0, [r1, 0x8]\n\
strh r0, [r5, 0x2E]\n\
strh r3, [r5, 0x30]\n\
mov r2, r9\n\
strh r2, [r5, 0x32]\n\
strh r6, [r5, 0x34]\n\
mov r3, r8\n\
strh r3, [r5, 0x36]\n\
adds r0, r5, 0\n\
bl sub_80A64EC\n\
mov r7, r10\n\
ldrh r0, [r7, 0xA]\n\
strh r0, [r5, 0x34]\n\
ldrh r0, [r7, 0xC]\n\
strh r0, [r5, 0x36]\n\
ldr r0, =sub_810B848\n\
str r0, [r5, 0x1C]\n\
add sp, 0x4\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\
.pool\n");
}
#endif
void sub_810B848(struct Sprite *sprite)
{
@@ -797,14 +604,14 @@ void AnimIcePunchSwirlingParticle(struct Sprite *sprite)
void AnimIceBeamParticle(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
sprite->data[2] -= gBattleAnimArgs[2];
else
sprite->data[2] += gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
sprite->data[0] = gBattleAnimArgs[4];
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
sprite->callback = StartAnimLinearTranslation;
@@ -863,8 +670,8 @@ void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
if (!gBattleAnimArgs[5])
{
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
}
else
{
@@ -983,8 +790,8 @@ void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
if (!gBattleAnimArgs[7])
{
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
}
else
{
@@ -1274,8 +1081,8 @@ void AnimTask_Haze2(u8 taskId)
// arg 5: ??? unknown (seems to vibrate target mon somehow)
void AnimThrowMistBall(struct Sprite *sprite)
{
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
}
@@ -1380,7 +1187,7 @@ void InitPoisonGasCloudAnim(struct Sprite *sprite)
{
sprite->data[0] = gBattleAnimArgs[0];
if (GetBattlerSpriteCoord(gBattleAnimAttacker, 2) < GetBattlerSpriteCoord(gBattleAnimTarget, 2))
if (GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2))
sprite->data[7] = 0x8000;
if (!(gBattlerPositions[gBattleAnimTarget] & 1))
@@ -1394,22 +1201,22 @@ void InitPoisonGasCloudAnim(struct Sprite *sprite)
sprite->data[6] = 1;
}
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
if (gBattleAnimArgs[7])
{
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[3];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[3];
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[4];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[4];
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
}
else
{
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[3];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[3];
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[4];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[4];
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
}
@@ -1441,7 +1248,7 @@ void MovePoisonGasCloud(struct Sprite *sprite)
if (sprite->data[0] <= 0)
{
sprite->data[0] = 80;
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
sprite->data[1] = sprite->pos1.x;
sprite->data[2] = sprite->pos1.x;
sprite->pos1.y += sprite->pos2.y;
@@ -1575,238 +1382,63 @@ void AnimTask_Hail2(u8 taskId)
}
}
#ifdef NONMATCHING
bool8 GenerateHailParticle(u8 a, u8 b, u8 taskId, u8 c)
bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c)
{
bool8 possibleBool = FALSE;
// s8 unk = gUnknown_08595CB4[a].unk3;
const struct HailStruct *hailData = &gUnknown_08595CB4[a];
s8 unk = hailData->unk3;
u8 battler;
u8 id;
s16 battlerX, battlerY;
u8 spriteId;
// struct Sprite *sprite;
s16 spriteX;
bool8 possibleBool = FALSE;
s8 unk = gUnknown_08595CB4[hailStructId].unk3;
if (unk != 2)
{
battler = GetBattlerAtPosition(hailData->unk2);
if (IsBattlerSpriteVisible(battler))
id = GetBattlerAtPosition(gUnknown_08595CB4[hailStructId].unk2);
if (IsBattlerSpriteVisible(id))
{
possibleBool = TRUE;
battlerX = GetBattlerSpriteCoord(battler, 2);
battlerY = GetBattlerSpriteCoord(battler, 3);
battlerX = GetBattlerSpriteCoord(id, BATTLER_COORD_X_2);
battlerY = GetBattlerSpriteCoord(id, BATTLER_COORD_Y_PIC_OFFSET);
switch (unk)
{
case 0:
battlerX -= GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 6;
battlerY -= GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 6;
break;
case 1:
battlerX += GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 6;
battlerY += GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 6;
break;
case 0:
battlerX -= GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_WIDTH) / 6;
battlerY -= GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_HEIGHT) / 6;
break;
case 1:
battlerX += GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_WIDTH) / 6;
battlerY += GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_HEIGHT) / 6;
break;
}
}
else
{
battlerX = (gUnknown_08595CB4[hailStructId].unk0);
battlerY = (gUnknown_08595CB4[hailStructId].unk1);
}
}
else
{
battlerX = (hailData->unk0);
battlerY = (hailData->unk1);
battlerX = (gUnknown_08595CB4[hailStructId].unk0);
battlerY = (gUnknown_08595CB4[hailStructId].unk1);
}
spriteX = battlerX - ((battlerY + 8) / 2);
spriteId = CreateSprite(&gUnknown_08595D2C, spriteX, -8, 18);
if (spriteId == MAX_SPRITES)
id = CreateSprite(&gUnknown_08595D2C, spriteX, -8, 18);
if (id == MAX_SPRITES)
{
return FALSE;
// sprite = &gSprites[spriteId];
StartSpriteAffineAnim(&gSprites[spriteId], b);
gSprites[spriteId].data[0] = possibleBool;
gSprites[spriteId].data[3] = battlerX;
gSprites[spriteId].data[4] = battlerY;
gSprites[spriteId].data[5] = b;
gSprites[spriteId].data[6] = taskId;
gSprites[spriteId].data[7] = c;
return TRUE;
}
else
{
StartSpriteAffineAnim(&gSprites[id], affineAnimNum);
gSprites[id].data[0] = possibleBool;
gSprites[id].data[3] = battlerX;
gSprites[id].data[4] = battlerY;
gSprites[id].data[5] = affineAnimNum;
gSprites[id].data[6] = taskId;
gSprites[id].data[7] = c;
return TRUE;
}
}
#else
NAKED
bool8 GenerateHailParticle(u8 a, u8 b, u8 taskId, u8 c)
{
asm_unified("push {r4-r7,lr}\n\
mov r7, r10\n\
mov r6, r9\n\
mov r5, r8\n\
push {r5-r7}\n\
sub sp, 0x8\n\
lsls r0, 24\n\
lsls r1, 24\n\
lsrs r1, 24\n\
mov r9, r1\n\
lsls r2, 24\n\
lsrs r2, 24\n\
str r2, [sp]\n\
lsls r3, 24\n\
lsrs r3, 24\n\
mov r10, r3\n\
movs r1, 0\n\
str r1, [sp, 0x4]\n\
ldr r1, =gUnknown_08595CB4\n\
lsrs r0, 22\n\
adds r4, r0, r1\n\
ldrb r0, [r4, 0x3]\n\
lsls r0, 24\n\
asrs r0, 28\n\
mov r8, r0\n\
cmp r0, 0x2\n\
beq _0810CAD0\n\
ldrh r0, [r4, 0x2]\n\
lsls r0, 20\n\
lsrs r0, 24\n\
bl GetBattlerAtPosition\n\
lsls r0, 24\n\
lsrs r5, r0, 24\n\
adds r0, r5, 0\n\
bl IsBattlerSpriteVisible\n\
lsls r0, 24\n\
cmp r0, 0\n\
beq _0810CAD0\n\
movs r0, 0x1\n\
str r0, [sp, 0x4]\n\
adds r0, r5, 0\n\
movs r1, 0x2\n\
bl GetBattlerSpriteCoord\n\
lsls r0, 24\n\
lsrs r7, r0, 24\n\
adds r0, r5, 0\n\
movs r1, 0x3\n\
bl GetBattlerSpriteCoord\n\
lsls r0, 24\n\
lsrs r6, r0, 24\n\
mov r1, r8\n\
cmp r1, 0\n\
beq _0810CA60\n\
cmp r1, 0x1\n\
beq _0810CA96\n\
b _0810CAE2\n\
.pool\n\
_0810CA60:\n\
adds r0, r5, 0\n\
movs r1, 0x1\n\
bl GetBattlerSpriteCoordAttr\n\
lsls r0, 16\n\
asrs r0, 16\n\
movs r1, 0x6\n\
bl __divsi3\n\
lsls r1, r7, 16\n\
asrs r1, 16\n\
subs r1, r0\n\
lsls r1, 16\n\
lsrs r7, r1, 16\n\
adds r0, r5, 0\n\
movs r1, 0\n\
bl GetBattlerSpriteCoordAttr\n\
lsls r0, 16\n\
asrs r0, 16\n\
movs r1, 0x6\n\
bl __divsi3\n\
lsls r1, r6, 16\n\
asrs r1, 16\n\
subs r1, r0\n\
b _0810CACA\n\
_0810CA96:\n\
adds r0, r5, 0\n\
movs r1, 0x1\n\
bl GetBattlerSpriteCoordAttr\n\
lsls r0, 16\n\
asrs r0, 16\n\
movs r1, 0x6\n\
bl __divsi3\n\
lsls r1, r7, 16\n\
asrs r1, 16\n\
adds r1, r0\n\
lsls r1, 16\n\
lsrs r7, r1, 16\n\
adds r0, r5, 0\n\
movs r1, 0\n\
bl GetBattlerSpriteCoordAttr\n\
lsls r0, 16\n\
asrs r0, 16\n\
movs r1, 0x6\n\
bl __divsi3\n\
lsls r1, r6, 16\n\
asrs r1, 16\n\
adds r1, r0\n\
_0810CACA:\n\
lsls r1, 16\n\
lsrs r6, r1, 16\n\
b _0810CAE2\n\
_0810CAD0:\n\
ldrh r0, [r4]\n\
lsls r0, 22\n\
asrs r0, 6\n\
lsrs r7, r0, 16\n\
ldr r0, [r4]\n\
lsls r0, 12\n\
asrs r0, 22\n\
lsls r0, 16\n\
lsrs r6, r0, 16\n\
_0810CAE2:\n\
lsls r0, r6, 16\n\
asrs r0, 16\n\
adds r0, 0x8\n\
lsrs r1, r0, 31\n\
adds r0, r1\n\
asrs r0, 1\n\
lsls r1, r7, 16\n\
asrs r1, 16\n\
subs r1, r0\n\
ldr r0, =gUnknown_08595D2C\n\
lsls r1, 16\n\
asrs r1, 16\n\
movs r2, 0x8\n\
negs r2, r2\n\
movs r3, 0x12\n\
bl CreateSprite\n\
lsls r0, 24\n\
lsrs r5, r0, 24\n\
cmp r5, 0x40\n\
beq _0810CB44\n\
lsls r4, r5, 4\n\
adds r4, r5\n\
lsls r4, 2\n\
ldr r0, =gSprites\n\
adds r4, r0\n\
adds r0, r4, 0\n\
mov r1, r9\n\
bl StartSpriteAffineAnim\n\
mov r0, sp\n\
ldrh r0, [r0, 0x4]\n\
strh r0, [r4, 0x2E]\n\
strh r7, [r4, 0x34]\n\
strh r6, [r4, 0x36]\n\
mov r1, r9\n\
strh r1, [r4, 0x38]\n\
mov r0, sp\n\
ldrh r0, [r0]\n\
strh r0, [r4, 0x3A]\n\
mov r1, r10\n\
strh r1, [r4, 0x3C]\n\
movs r0, 0x1\n\
b _0810CB46\n\
.pool\n\
_0810CB44:\n\
movs r0, 0\n\
_0810CB46:\n\
add sp, 0x8\n\
pop {r3-r5}\n\
mov r8, r3\n\
mov r9, r4\n\
mov r10, r5\n\
pop {r4-r7}\n\
pop {r1}\n\
bx r1\n");
}
#endif
void AnimHailBegin(struct Sprite *sprite)
{
@@ -1874,8 +1506,8 @@ void InitIceBallAnim(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
InitAnimArcTranslation(sprite);