void sub_80DCF60(struct Sprite *sprite) { StartSpriteAnim(sprite, gBattleAnimArgs[5]); AnimateSprite(sprite); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) sprite->pos1.x -= gBattleAnimArgs[0]; else sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[4]; sprite->data[1] = sprite->pos1.x; sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; sprite->data[3] = sprite->pos1.y; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3]; InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = 0; sprite->data[4] = 0; sprite->callback = sub_8078394; StoreSpriteCallbackInData(sprite, move_anim_8074EE0); }
void sub_80CAA14(struct Sprite* sprite) { u16 a = Random(); u16 b; StartSpriteAnim(sprite, a & 7); sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3); if (GetBattlerSide(gAnimBankAttacker)) { sprite->pos1.x -= 20; } else { sprite->pos1.x += 20; } b = Random(); sprite->data[0] = (b & 31) + 64; sprite->data[1] = sprite->pos1.x; sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); sprite->data[3] = sprite->pos1.y; sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); sub_8078D60(sprite); sprite->data[5] = Random() & 0xFF; sprite->data[6] = sprite->subpriority; sprite->callback = sub_80CAACC; sub_80CAACC(sprite); }
static void sub_80CC358(struct Task* task, u8 taskId) { task->data[14]++; if (task->data[14] > 0) { u8 spriteId; s16 spriteX; s16 spriteY; task->data[14] = 0; spriteX = gSprites[task->data[2]].pos1.x + gSprites[task->data[2]].pos2.x; spriteY = gSprites[task->data[2]].pos1.y + gSprites[task->data[2]].pos2.y; spriteId = CreateSprite(&gSpriteTemplate_83D6884, spriteX, spriteY, task->data[4]); if (spriteId != 0x40) { gSprites[spriteId].data[6] = taskId; gSprites[spriteId].data[7] = 12; gTasks[taskId].data[12]++; gSprites[spriteId].data[0] = task->data[13] & 1; gTasks[taskId].data[13]++; StartSpriteAnim(&gSprites[spriteId], task->data[3]); gSprites[spriteId].subpriority = task->data[4]; gSprites[spriteId].callback = sub_80CC408; } } }
void sub_80CEB0C(struct Sprite* sprite) { u8 index; u8 a; u8 b; sub_8078650(sprite); StartSpriteAnim(sprite, gBattleAnimArgs[0]); if ((index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[1]][0])) != 0xFF) sprite->oam.paletteNum = index; sprite->data[1] = gBattleAnimArgs[1]; sprite->data[2] = 0; sprite->data[3] = gBattleAnimArgs[2]; if (IsContest()) { a = 0x30; b = 0x28; } else { a = GetBattlerSpriteCoord(gAnimBankTarget, 2); b = GetBattlerSpriteCoord(gAnimBankTarget, 3); } sprite->data[4] = sprite->pos1.x << 4; sprite->data[5] = sprite->pos1.y << 4; sub_80CEBC4(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data[6], &sprite->data[7], 0x28); sprite->callback = sub_80CEC1C; }
void sub_80CA800(struct Sprite* sprite) { InitAnimSpritePos(sprite, 1); StartSpriteAnim(sprite, gBattleAnimArgs[3]); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); }
void sub_80DD8E8(struct Sprite *sprite) { StartSpriteAnim(sprite, gBattleAnimArgs[4]); sprite->pos2.x = gBattleAnimArgs[0]; sprite->data[2] = gBattleAnimArgs[1]; sprite->data[3] -= gBattleAnimArgs[2]; sprite->data[0] = 3; sprite->data[1] = gBattleAnimArgs[3]; sprite->callback = sub_80DD928; sprite->invisible = 1; }
// Animates the rising rocks in Ancient Power. // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: terminal y offset // arg 3: duration // arg 4: sprite size [1,5] void AnimRaiseSprite(struct Sprite *sprite) { StartSpriteAnim(sprite, gBattleAnimArgs[4]); InitAnimSpritePos(sprite, 0); sprite->data[0] = gBattleAnimArgs[3]; sprite->data[2] = sprite->pos1.x; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2]; sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); }
void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) { sprite->oam.priority = 1; sprite->coordOffsetEnabled = 1; sprite->data0 = gUnknown_0202FF84[0]; sprite->data1 = gUnknown_0202FF84[1]; sprite->data2 = gUnknown_0202FF84[2]; sprite->data3 = -5; sprite->data7 = a2; StartSpriteAnim(sprite, a3); }
void sub_80DD9A4(struct Sprite *sprite) { sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[1] = gBattleAnimArgs[0]; sprite->data[2] = gBattleAnimArgs[1]; sprite->data[5] = gBattleAnimArgs[2]; StartSpriteAnim(sprite, gBattleAnimArgs[3]); sprite->callback = sub_80DD9FC; }
static void sub_810B428(u8 taskId) { if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON)) { gFieldEffectArguments[1] = GetPlayerFacingDirection(); if (gFieldEffectArguments[1] == 1) gFieldEffectArguments[2] = 0; if (gFieldEffectArguments[1] == 2) gFieldEffectArguments[2] = 1; if (gFieldEffectArguments[1] == 3) gFieldEffectArguments[2] = 2; if (gFieldEffectArguments[1] == 4) gFieldEffectArguments[2] = 3; sub_805B980(&gEventObjects[gPlayerAvatar.eventObjectId], GetPlayerAvatarGraphicsIdByCurrentState()); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]); FieldEffectActiveListRemove(6); gTasks[taskId].func = sub_810B4CC; } }
void sub_80CECE8(struct Sprite* sprite) { int a; if (GetBattlerSide(gAnimBankAttacker) == 1) { a = gBattleAnimArgs[1]; (u16)gBattleAnimArgs[1] = -a; } sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + gBattleAnimArgs[1]; sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[2]; StartSpriteAnim(sprite, gBattleAnimArgs[0]); sprite->data[2] = 0; sprite->data[3] = 0; sprite->data[4] = sprite->pos1.x << 4; sprite->data[5] = sprite->pos1.y << 4; sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5; sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5; sprite->callback = sub_80CED78; }
void sub_80CEE60(struct Sprite* sprite) { s16 a; u8 index; sub_8078650(sprite); sprite->pos1.y += 8; StartSpriteAnim(sprite, gBattleAnimArgs[1]); index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[2]][0]); if (index != 0xFF) sprite->oam.paletteNum = index; a = (gBattleAnimArgs[0] == 0) ? 0xFFE0 : 0x20; sprite->data[0] = 40; sprite->data[1] = sprite->pos1.x; sprite->data[2] = a + sprite->data[1]; sprite->data[3] = sprite->pos1.y; sprite->data[4] = sprite->data[3] - 40; InitAnimSpriteTranslationDeltas(sprite); sprite->data[5] = gBattleAnimArgs[3]; sprite->callback = sub_80CEEE8; }
void sub_80DCE9C(struct Sprite *sprite) { if (gBattleAnimArgs[3] != 0) SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y); sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += 14; StartSpriteAnim(sprite, gBattleAnimArgs[1]); AnimateSprite(sprite); sprite->data[0] = 0; sprite->data[1] = 0; sprite->data[2] = 4; sprite->data[3] = 16; sprite->data[4] = -70; sprite->data[5] = gBattleAnimArgs[2]; StoreSpriteCallbackInData(sprite, sub_80DCF1C); sprite->callback = sub_8078278; sprite->callback(sprite); }
void sub_81398BC(u8 bank) { u16 species; ewram17800[bank].transformedSpecies = 0; gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1]; species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES); gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0); GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(bank)); gBankSpriteIds[bank] = CreateSprite( &gUnknown_02024E8C, GetBattlerSpriteCoord(bank, 2), sub_8077F68(bank), sub_8079E90(bank)); gSprites[gUnknown_0300434C[bank]].data[1] = gBankSpriteIds[bank]; gSprites[gBankSpriteIds[bank]].data[0] = bank; gSprites[gBankSpriteIds[bank]].data[2] = species; gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank; StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]); gSprites[gBankSpriteIds[bank]].invisible = TRUE; gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; gSprites[gUnknown_0300434C[bank]].data[0] = sub_8046400(0, 0xFF); }
void sub_80D0178(struct Sprite* sprite) { s16 r7 = 32; s16 r4 = -32; s16 r8 = 16; s16 r6 = -16; if (gBattleAnimArgs[0] != 0) { r7 = r4; r4 = 32; r8 = r6; r6 = 16; StartSpriteAnim(sprite, 1); } sprite->pos1.x += r7; sprite->pos1.y += r4; sprite->data[0] = 6; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + r8; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + r6; sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData(sprite, sub_80D020C); }
void WallyHandleTrainerBallThrow(void) { u8 paletteNum; u8 taskId; oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]); gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50; gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40; gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y; gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas; gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gActiveBattler; StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8030E38); StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1); paletteNum = AllocSpritePalette(0xD6F8); LoadCompressedPalette(gTrainerBackPicPaletteTable[2].data, 0x100 + paletteNum * 16, 32); gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum; taskId = CreateTask(sub_8139A2C, 5); gTasks[taskId].data[0] = gActiveBattler; if (ewram17810[gActiveBattler].unk0_0) gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0; ewram17810[4].unk9 |= 1; gBattleBankFunc[gActiveBattler] = nullsub_91; }
static void sub_80CBF5C(u8 taskId) { struct Task* task = &gTasks[taskId]; struct Sprite* sprite = &gSprites[task->data[2]]; int a = task->data[0]; switch (a) { case 4: sub_80CC358(task, taskId); if (TranslateAnimArc(sprite) == 0) { break; } else { task->data[15] = 5; task->data[0] = 0xFF; } break; case 8: sub_80CC358(task, taskId); if (TranslateAnimArc(sprite) == 0) { break; } else { task->data[15] = 9; task->data[0] = 0xFF; } break; case 0: sub_80CC358(task, taskId); if (TranslateAnimArc(sprite) == 0) break; task->data[15] = 1; task->data[0] = 0xFF; break; case 1: sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; sprite->pos2.x = 0; sprite->pos2.y = 0; sprite->data[0] = 10; sprite->data[1] = sprite->pos1.x; sprite->data[2] = task->data[6]; sprite->data[3] = sprite->pos1.y; sprite->data[4] = task->data[7]; sprite->data[5] = sub_80CC338(sprite); task->data[4] += 2; task->data[3] = a; sprite->subpriority = task->data[4]; StartSpriteAnim(sprite, task->data[3]); InitAnimArcTranslation(sprite); task->data[0]++; break; case 2: sub_80CC358(task, taskId); if (TranslateAnimArc(sprite) == 0) break; task->data[15] = 3; task->data[0] = 0xFF; break; case 3: sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; sprite->pos2.x = 0; sprite->pos2.y = 0; sprite->data[0] = 10; sprite->data[1] = sprite->pos1.x; sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; sprite->data[3] = sprite->pos1.y; sprite->data[4] = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5]; sprite->data[5] = sub_80CC338(sprite); task->data[3] = 2; sprite->subpriority = task->data[4]; StartSpriteAnim(sprite, task->data[3]); InitAnimArcTranslation(sprite); task->data[0]++; break; case 5: sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; sprite->pos2.x = 0; sprite->pos2.y = 0; sprite->data[0] = 10; sprite->data[1] = sprite->pos1.x; sprite->data[2] = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5]; sprite->data[3] = sprite->pos1.y; sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; sprite->data[5] = sub_80CC338(sprite); task->data[4] -= 2; task->data[3] = 3; sprite->subpriority = task->data[4]; StartSpriteAnim(sprite, task->data[3]); InitAnimArcTranslation(sprite); task->data[0]++; break; case 6: sub_80CC358(task, taskId); if (TranslateAnimArc(sprite) == 0) break; task->data[15] = 7; task->data[0] = 0xFF; break; case 7: sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; sprite->pos2.x = 0; sprite->pos2.y = 0; sprite->data[0] = 10; sprite->data[1] = sprite->pos1.x; sprite->data[2] = task->data[6]; sprite->data[3] = sprite->pos1.y; sprite->data[4] = task->data[7]; sprite->data[5] = sub_80CC338(sprite); task->data[4] += 2; task->data[3] = 4; sprite->subpriority = task->data[4]; StartSpriteAnim(sprite, task->data[3]); InitAnimArcTranslation(sprite); task->data[0]++; break; case 9: sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; sprite->pos2.x = 0; sprite->pos2.y = 0; sprite->data[0] = 10; sprite->data[1] = sprite->pos1.x; sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; sprite->data[3] = sprite->pos1.y; sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; sprite->data[5] = sub_80CC338(sprite); task->data[3] = 5; sprite->subpriority = task->data[4]; StartSpriteAnim(sprite, task->data[3]); InitAnimArcTranslation(sprite); task->data[0]++; break; case 10: sub_80CC358(task, taskId); if (TranslateAnimArc(sprite) == 0) { break; } else { task->data[15] = 11; task->data[0] = 0xFF; } break; case 11: { sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; sprite->pos2.x = 0; sprite->pos2.y = 0; sprite->data[0] = 10; sprite->data[1] = sprite->pos1.x; sprite->data[2] = task->data[8]; sprite->data[3] = sprite->pos1.y; sprite->data[4] = task->data[9]; sprite->data[5] = sub_80CC338(sprite); task->data[4] -= 2; task->data[3] = 6; sprite->subpriority = task->data[4]; StartSpriteAnim(sprite, task->data[3]); InitAnimArcTranslation(sprite); task->data[0]++; break; } case 12: sub_80CC358(task, taskId); if (TranslateAnimArc(sprite) != 0) { DestroySprite(sprite); task->data[0]++; } break; case 13: if (task->data[12] == 0) { DestroyAnimVisualTask(taskId); } break; case 255: task->data[1]++; if (task->data[1] > 5) { task->data[1] = 0; task->data[0] = task->data[15]; } break; } }