diff options
Diffstat (limited to 'src/ice.c')
-rw-r--r-- | src/ice.c | 508 |
1 files changed, 70 insertions, 438 deletions
@@ -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 -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"); + } + 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; + } } -#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); |