Some nonmatchings
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user