summaryrefslogtreecommitdiff
path: root/src/battle_anim_effects_3.c
diff options
context:
space:
mode:
authorEvan <eroelke@gmail.com>2019-12-04 18:53:21 -0700
committerEvan <eroelke@gmail.com>2019-12-04 18:53:21 -0700
commit6581fdb69ddb2be974aa2278381c334b71a4a5ff (patch)
tree8a555086f6e6494f951e08efc0ee5ceab6913d31 /src/battle_anim_effects_3.c
parent661a581176ecb6ad28e9d795fe02c3178c50b660 (diff)
almost all matching
Diffstat (limited to 'src/battle_anim_effects_3.c')
-rw-r--r--src/battle_anim_effects_3.c810
1 files changed, 805 insertions, 5 deletions
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index ec99a9f95..a1484739e 100644
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -4931,14 +4931,160 @@ void AnimTask_GetReturnPowerLevel(u8 taskId)
// Makes the mon run out of screen, run past the opposing mon, and return to its original position.
// No args.
+/*
+attempt..
void AnimTask_SnatchOpposingMonMove(u8 taskId)
{
u8 spriteId, spriteId2;
- int personality;
- int otId;
+ u32 personality;
+ u32 otId;
u16 species;
u8 subpriority;
- u8 isBackPic;
+ //bool8 isBackPic;
+ s16 x;
+
+ u16 tSpecies;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ spriteId = GetAnimBattlerSpriteId(ANIM_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 (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
+
+ tSpecies = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
+ if (tSpecies == SPECIES_NONE)
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
+ else
+ species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
+
+ subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
+ //isBackPic = FALSE;
+ //x = 272;
+ spriteId = sub_80768D0(species, FALSE, 0, 272, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId, gBattleAnimAttacker, 0);
+ }
+ else
+ {
+ personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
+
+ tSpecies = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
+ if (tSpecies == SPECIES_NONE)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
+ else
+ species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
+
+ subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1;
+ //isBackPic = TRUE;
+ //x = -32;
+ spriteId = sub_80768D0(species, TRUE, 0, -32, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId, gBattleAnimAttacker, 0);
+ }
+
+ if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies != SPECIES_NONE)
+ BlendPalette((gSprites[spriteId].oam.paletteNum * 16) | 0x100, 16, 6, RGB_WHITE);
+
+ gTasks[taskId].data[15] = spriteId;
+ 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_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_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;
+ }
+}
+*/
+
+#ifdef NONMATCHING
+// `species` variable getting loaded into r6 instead of r5
+//https://cexplore.karathan.at/z/0gMuxf
+void AnimTask_SnatchOpposingMonMove(u8 taskId)
+{
+ u8 spriteId, spriteId2;
+ u32 personality;
+ u32 otId;
+ u16 species;
+ u8 subpriority;
+ bool8 isBackPic;
s16 x;
switch (gTasks[taskId].data[0])
@@ -4964,13 +5110,14 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
{
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
+
if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
else
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
- isBackPic = 0;
+ isBackPic = FALSE;
x = 272;
}
else
@@ -4983,7 +5130,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1;
- isBackPic = 1;
+ isBackPic = TRUE;
x = -32;
}
@@ -5063,6 +5210,659 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
break;
}
}
+#else
+NAKED
+void AnimTask_SnatchOpposingMonMove(u8 taskId)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x1C\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tmov r8, r0\n"
+ "\tldr r1, _080E395C @ =gTasks\n"
+ "\tlsls r0, 2\n"
+ "\tadd r0, r8\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r1\n"
+ "\tmovs r1, 0x8\n"
+ "\tldrsh r0, [r0, r1]\n"
+ "\tcmp r0, 0x4\n"
+ "\tbls _080E3952\n"
+ "\tb _080E3E6C\n"
+ "_080E3952:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _080E3960 @ =_080E3964\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_080E395C: .4byte gTasks\n"
+ "_080E3960: .4byte _080E3964\n"
+ "\t.align 2, 0\n"
+ "_080E3964:\n"
+ "\t.4byte _080E3978\n"
+ "\t.4byte _080E3A2C\n"
+ "\t.4byte _080E3BEC\n"
+ "\t.4byte _080E3D0C\n"
+ "\t.4byte _080E3D90\n"
+ "_080E3978:\n"
+ "\tmovs r0, 0\n"
+ "\tbl GetAnimBattlerSpriteId\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r7, r0, 24\n"
+ "\tldr r1, _080E39C4 @ =gTasks\n"
+ "\tmov r2, r8\n"
+ "\tlsls r4, r2, 2\n"
+ "\tadds r0, r4, r2\n"
+ "\tlsls r0, 3\n"
+ "\tadds r6, r0, r1\n"
+ "\tmovs r3, 0x80\n"
+ "\tlsls r3, 4\n"
+ "\tadds r0, r3, 0\n"
+ "\tldrh r1, [r6, 0xA]\n"
+ "\tadds r0, r1\n"
+ "\tstrh r0, [r6, 0xA]\n"
+ "\tldr r0, _080E39C8 @ =gBattleAnimAttacker\n"
+ "\tldrb r0, [r0]\n"
+ "\tbl GetBattlerSide\n"
+ "\tlsls r0, 24\n"
+ "\tmov r9, r4\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080E39D0\n"
+ "\tldr r2, _080E39CC @ =gSprites\n"
+ "\tlsls r3, r7, 4\n"
+ "\tadds r1, r3, r7\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r2\n"
+ "\tldrh r0, [r6, 0xA]\n"
+ "\tlsls r0, 16\n"
+ "\tasrs r0, 24\n"
+ "\tldrh r4, [r1, 0x24]\n"
+ "\tadds r0, r4\n"
+ "\tstrh r0, [r1, 0x24]\n"
+ "\tb _080E39EA\n"
+ "\t.align 2, 0\n"
+ "_080E39C4: .4byte gTasks\n"
+ "_080E39C8: .4byte gBattleAnimAttacker\n"
+ "_080E39CC: .4byte gSprites\n"
+ "_080E39D0:\n"
+ "\tldr r3, _080E3A24 @ =gSprites\n"
+ "\tlsls r4, r7, 4\n"
+ "\tadds r2, r4, r7\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r3\n"
+ "\tldrh r1, [r6, 0xA]\n"
+ "\tlsls r1, 16\n"
+ "\tasrs r1, 24\n"
+ "\tldrh r0, [r2, 0x24]\n"
+ "\tsubs r0, r1\n"
+ "\tstrh r0, [r2, 0x24]\n"
+ "\tadds r2, r3, 0\n"
+ "\tadds r3, r4, 0\n"
+ "_080E39EA:\n"
+ "\tldr r1, _080E3A28 @ =gTasks\n"
+ "\tmov r0, r9\n"
+ "\tadd r0, r8\n"
+ "\tlsls r0, 3\n"
+ "\tadds r4, r0, r1\n"
+ "\tldrb r0, [r4, 0xA]\n"
+ "\tstrh r0, [r4, 0xA]\n"
+ "\tadds r1, r3, r7\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r2\n"
+ "\tldrh r0, [r1, 0x24]\n"
+ "\tldrh r1, [r1, 0x20]\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 16\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 14\n"
+ "\tadds r0, r1\n"
+ "\tmovs r1, 0x98\n"
+ "\tlsls r1, 17\n"
+ "\tcmp r0, r1\n"
+ "\tbhi _080E3A16\n"
+ "\tb _080E3E6C\n"
+ "_080E3A16:\n"
+ "\tmovs r0, 0\n"
+ "\tstrh r0, [r4, 0xA]\n"
+ "\tldrh r0, [r4, 0x8]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r4, 0x8]\n"
+ "\tb _080E3E6C\n"
+ "\t.align 2, 0\n"
+ "_080E3A24: .4byte gSprites\n"
+ "_080E3A28: .4byte gTasks\n"
+ "_080E3A2C:\n"
+ "\tldr r4, _080E3A90 @ =gBattleAnimAttacker\n"
+ "\tldrb r0, [r4]\n"
+ "\tbl GetBattlerSide\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080E3ACC\n"
+ "\tldr r7, _080E3A94 @ =gBattlerPartyIndexes\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, r7\n"
+ "\tldrh r0, [r0]\n"
+ "\tmovs r6, 0x64\n"
+ "\tmuls r0, r6\n"
+ "\tldr r5, _080E3A98 @ =gPlayerParty\n"
+ "\tadds r0, r5\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetMonData\n"
+ "\tmov r10, r0\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, r7\n"
+ "\tldrh r0, [r0]\n"
+ "\tmuls r0, r6\n"
+ "\tadds r0, r5\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl GetMonData\n"
+ "\tmov r9, r0\n"
+ "\tldr r0, _080E3A9C @ =gBattleSpritesDataPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tldrb r2, [r4]\n"
+ "\tldr r1, [r0]\n"
+ "\tlsls r0, r2, 2\n"
+ "\tadds r1, r0, r1\n"
+ "\tldrh r0, [r1, 0x2]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080E3AA0\n"
+ "\tlsls r0, r2, 1\n"
+ "\tadds r0, r7\n"
+ "\tldrh r0, [r0]\n"
+ "\tmuls r0, r6\n"
+ "\tadds r0, r5\n"
+ "\tmovs r1, 0xB\n"
+ "\tbl GetMonData\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tb _080E3AA2\n"
+ "\t.align 2, 0\n"
+ "_080E3A90: .4byte gBattleAnimAttacker\n"
+ "_080E3A94: .4byte gBattlerPartyIndexes\n"
+ "_080E3A98: .4byte gPlayerParty\n"
+ "_080E3A9C: .4byte gBattleSpritesDataPtr\n"
+ "_080E3AA0:\n"
+ "\tldrh r5, [r1, 0x2]\n"
+ "_080E3AA2:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl GetAnimBattlerSpriteId\n"
+ "\tldr r2, _080E3AC8 @ =gSprites\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tlsls r1, r0, 4\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r2\n"
+ "\tadds r1, 0x43\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tmovs r7, 0\n"
+ "\tmovs r6, 0x88\n"
+ "\tlsls r6, 1\n"
+ "\tb _080E3B54\n"
+ "\t.align 2, 0\n"
+ "_080E3AC8: .4byte gSprites\n"
+ "_080E3ACC:\n"
+ "\tldr r7, _080E3B24 @ =gBattlerPartyIndexes\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, r7\n"
+ "\tldrh r0, [r0]\n"
+ "\tmovs r6, 0x64\n"
+ "\tmuls r0, r6\n"
+ "\tldr r5, _080E3B28 @ =gEnemyParty\n"
+ "\tadds r0, r5\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetMonData\n"
+ "\tmov r10, r0\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, r7\n"
+ "\tldrh r0, [r0]\n"
+ "\tmuls r0, r6\n"
+ "\tadds r0, r5\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl GetMonData\n"
+ "\tmov r9, r0\n"
+ "\tldr r0, _080E3B2C @ =gBattleSpritesDataPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tldrb r2, [r4]\n"
+ "\tldr r1, [r0]\n"
+ "\tlsls r0, r2, 2\n"
+ "\tadds r1, r0, r1\n"
+ "\tldrh r0, [r1, 0x2]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080E3B30\n"
+ "\tlsls r0, r2, 1\n"
+ "\tadds r0, r7\n"
+ "\tldrh r0, [r0]\n"
+ "\tmuls r0, r6\n"
+ "\tadds r0, r5\n"
+ "\tmovs r1, 0xB\n"
+ "\tbl GetMonData\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tb _080E3B32\n"
+ "\t.align 2, 0\n"
+ "_080E3B24: .4byte gBattlerPartyIndexes\n"
+ "_080E3B28: .4byte gEnemyParty\n"
+ "_080E3B2C: .4byte gBattleSpritesDataPtr\n"
+ "_080E3B30:\n"
+ "\tldrh r5, [r1, 0x2]\n"
+ "_080E3B32:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl GetAnimBattlerSpriteId\n"
+ "\tldr r2, _080E3BD0 @ =gSprites\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tlsls r1, r0, 4\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r2\n"
+ "\tadds r1, 0x43\n"
+ "\tldrb r0, [r1]\n"
+ "\tsubs r0, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tmovs r7, 0x1\n"
+ "\tldr r6, _080E3BD4 @ =0x0000ffe0\n"
+ "_080E3B54:\n"
+ "\tldr r0, _080E3BD8 @ =gBattleAnimTarget\n"
+ "\tldrb r0, [r0]\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl GetBattlerSpriteCoord\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tlsls r3, r6, 16\n"
+ "\tasrs r3, 16\n"
+ "\tstr r0, [sp]\n"
+ "\tstr r4, [sp, 0x4]\n"
+ "\tmov r2, r10\n"
+ "\tstr r2, [sp, 0x8]\n"
+ "\tmov r4, r9\n"
+ "\tstr r4, [sp, 0xC]\n"
+ "\tldr r4, _080E3BDC @ =gBattleAnimAttacker\n"
+ "\tldrb r0, [r4]\n"
+ "\tstr r0, [sp, 0x10]\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [sp, 0x14]\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r1, r7, 0\n"
+ "\tmovs r2, 0\n"
+ "\tbl sub_80768D0\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tldr r0, _080E3BE0 @ =gBattleSpritesDataPtr\n"
+ "\tldr r1, [r0]\n"
+ "\tldrb r0, [r4]\n"
+ "\tldr r1, [r1]\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r1\n"
+ "\tldrh r0, [r0, 0x2]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080E3BBE\n"
+ "\tldr r1, _080E3BD0 @ =gSprites\n"
+ "\tlsls r0, r5, 4\n"
+ "\tadds r0, r5\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0, 0x5]\n"
+ "\tlsrs r0, 4\n"
+ "\tlsls r0, 4\n"
+ "\tmovs r2, 0x80\n"
+ "\tlsls r2, 1\n"
+ "\tadds r1, r2, 0\n"
+ "\torrs r0, r1\n"
+ "\tldr r3, _080E3BE4 @ =0x00007fff\n"
+ "\tmovs r1, 0x10\n"
+ "\tmovs r2, 0x6\n"
+ "\tbl BlendPalette\n"
+ "_080E3BBE:\n"
+ "\tldr r0, _080E3BE8 @ =gTasks\n"
+ "\tmov r3, r8\n"
+ "\tlsls r1, r3, 2\n"
+ "\tadd r1, r8\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, r0\n"
+ "\tstrh r5, [r1, 0x26]\n"
+ "\tb _080E3D82\n"
+ "\t.align 2, 0\n"
+ "_080E3BD0: .4byte gSprites\n"
+ "_080E3BD4: .4byte 0x0000ffe0\n"
+ "_080E3BD8: .4byte gBattleAnimTarget\n"
+ "_080E3BDC: .4byte gBattleAnimAttacker\n"
+ "_080E3BE0: .4byte gBattleSpritesDataPtr\n"
+ "_080E3BE4: .4byte 0x00007fff\n"
+ "_080E3BE8: .4byte gTasks\n"
+ "_080E3BEC:\n"
+ "\tldr r1, _080E3C38 @ =gTasks\n"
+ "\tmov r0, r8\n"
+ "\tlsls r4, r0, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tlsls r0, 3\n"
+ "\tadds r6, r0, r1\n"
+ "\tldrh r0, [r6, 0x26]\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 4\n"
+ "\tadds r0, r1, 0\n"
+ "\tldrh r2, [r6, 0xA]\n"
+ "\tadds r0, r2\n"
+ "\tstrh r0, [r6, 0xA]\n"
+ "\tldr r0, _080E3C3C @ =gBattleAnimAttacker\n"
+ "\tldrb r0, [r0]\n"
+ "\tbl GetBattlerSide\n"
+ "\tlsls r0, 24\n"
+ "\tmov r9, r4\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080E3C44\n"
+ "\tldr r3, _080E3C40 @ =gSprites\n"
+ "\tlsls r4, r5, 4\n"
+ "\tadds r2, r4, r5\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r3\n"
+ "\tldrh r1, [r6, 0xA]\n"
+ "\tlsls r1, 16\n"
+ "\tasrs r1, 24\n"
+ "\tldrh r0, [r2, 0x24]\n"
+ "\tsubs r0, r1\n"
+ "\tstrh r0, [r2, 0x24]\n"
+ "\tadds r2, r3, 0\n"
+ "\tadds r3, r4, 0\n"
+ "\tb _080E3C5A\n"
+ "\t.align 2, 0\n"
+ "_080E3C38: .4byte gTasks\n"
+ "_080E3C3C: .4byte gBattleAnimAttacker\n"
+ "_080E3C40: .4byte gSprites\n"
+ "_080E3C44:\n"
+ "\tldr r2, _080E3CA8 @ =gSprites\n"
+ "\tlsls r3, r5, 4\n"
+ "\tadds r1, r3, r5\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r2\n"
+ "\tldrh r0, [r6, 0xA]\n"
+ "\tlsls r0, 16\n"
+ "\tasrs r0, 24\n"
+ "\tldrh r4, [r1, 0x24]\n"
+ "\tadds r0, r4\n"
+ "\tstrh r0, [r1, 0x24]\n"
+ "_080E3C5A:\n"
+ "\tldr r1, _080E3CAC @ =gTasks\n"
+ "\tmov r0, r9\n"
+ "\tadd r0, r8\n"
+ "\tlsls r0, 3\n"
+ "\tadds r6, r0, r1\n"
+ "\tldrb r0, [r6, 0xA]\n"
+ "\tstrh r0, [r6, 0xA]\n"
+ "\tadds r1, r3, r5\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r2\n"
+ "\tldrh r0, [r1, 0x24]\n"
+ "\tldrh r1, [r1, 0x20]\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tmovs r1, 0x24\n"
+ "\tldrsh r0, [r6, r1]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080E3CDA\n"
+ "\tldr r0, _080E3CB0 @ =gBattleAnimAttacker\n"
+ "\tldrb r0, [r0]\n"
+ "\tbl GetBattlerSide\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080E3CB8\n"
+ "\tlsls r4, r5, 16\n"
+ "\tasrs r4, 16\n"
+ "\tldr r0, _080E3CB4 @ =gBattleAnimTarget\n"
+ "\tldrb r0, [r0]\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetBattlerSpriteCoord\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r4, r0\n"
+ "\tbge _080E3CDA\n"
+ "\tb _080E3CCE\n"
+ "\t.align 2, 0\n"
+ "_080E3CA8: .4byte gSprites\n"
+ "_080E3CAC: .4byte gTasks\n"
+ "_080E3CB0: .4byte gBattleAnimAttacker\n"
+ "_080E3CB4: .4byte gBattleAnimTarget\n"
+ "_080E3CB8:\n"
+ "\tlsls r4, r5, 16\n"
+ "\tasrs r4, 16\n"
+ "\tldr r0, _080E3CFC @ =gBattleAnimTarget\n"
+ "\tldrb r0, [r0]\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetBattlerSpriteCoord\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r4, r0\n"
+ "\tble _080E3CDA\n"
+ "_080E3CCE:\n"
+ "\tldrh r0, [r6, 0x24]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r6, 0x24]\n"
+ "\tldr r1, _080E3D00 @ =gBattleAnimArgs\n"
+ "\tldr r0, _080E3D04 @ =0x0000ffff\n"
+ "\tstrh r0, [r1, 0xE]\n"
+ "_080E3CDA:\n"
+ "\tlsls r0, r5, 16\n"
+ "\tmovs r2, 0x80\n"
+ "\tlsls r2, 14\n"
+ "\tadds r0, r2\n"
+ "\tmovs r1, 0x98\n"
+ "\tlsls r1, 17\n"
+ "\tcmp r0, r1\n"
+ "\tbhi _080E3CEC\n"
+ "\tb _080E3E6C\n"
+ "_080E3CEC:\n"
+ "\tldr r0, _080E3D08 @ =gTasks\n"
+ "\tmov r1, r9\n"
+ "\tadd r1, r8\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, r0\n"
+ "\tmovs r0, 0\n"
+ "\tstrh r0, [r1, 0xA]\n"
+ "\tb _080E3D82\n"
+ "\t.align 2, 0\n"
+ "_080E3CFC: .4byte gBattleAnimTarget\n"
+ "_080E3D00: .4byte gBattleAnimArgs\n"
+ "_080E3D04: .4byte 0x0000ffff\n"
+ "_080E3D08: .4byte gTasks\n"
+ "_080E3D0C:\n"
+ "\tmovs r0, 0\n"
+ "\tbl GetAnimBattlerSpriteId\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r7, r0, 24\n"
+ "\tldr r1, _080E3D58 @ =gTasks\n"
+ "\tmov r3, r8\n"
+ "\tlsls r4, r3, 2\n"
+ "\tadds r0, r4, r3\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r1\n"
+ "\tldrh r0, [r0, 0x26]\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tlsls r0, r5, 4\n"
+ "\tadds r0, r5\n"
+ "\tlsls r0, 2\n"
+ "\tldr r5, _080E3D5C @ =gSprites\n"
+ "\tadds r0, r5\n"
+ "\tbl DestroySpriteAndFreeResources_\n"
+ "\tldr r0, _080E3D60 @ =gBattleAnimAttacker\n"
+ "\tldrb r0, [r0]\n"
+ "\tbl GetBattlerSide\n"
+ "\tlsls r0, 24\n"
+ "\tmov r9, r4\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080E3D64\n"
+ "\tlsls r1, r7, 4\n"
+ "\tadds r1, r7\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r5\n"
+ "\tldrh r0, [r1, 0x20]\n"
+ "\tnegs r0, r0\n"
+ "\tsubs r0, 0x20\n"
+ "\tstrh r0, [r1, 0x24]\n"
+ "\tb _080E3D78\n"
+ "\t.align 2, 0\n"
+ "_080E3D58: .4byte gTasks\n"
+ "_080E3D5C: .4byte gSprites\n"
+ "_080E3D60: .4byte gBattleAnimAttacker\n"
+ "_080E3D64:\n"
+ "\tlsls r0, r7, 4\n"
+ "\tadds r0, r7\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r5\n"
+ "\tldrh r2, [r0, 0x20]\n"
+ "\tmovs r4, 0x88\n"
+ "\tlsls r4, 1\n"
+ "\tadds r1, r4, 0\n"
+ "\tsubs r1, r2\n"
+ "\tstrh r1, [r0, 0x24]\n"
+ "_080E3D78:\n"
+ "\tldr r0, _080E3D8C @ =gTasks\n"
+ "\tmov r1, r9\n"
+ "\tadd r1, r8\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, r0\n"
+ "_080E3D82:\n"
+ "\tldrh r0, [r1, 0x8]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r1, 0x8]\n"
+ "\tb _080E3E6C\n"
+ "\t.align 2, 0\n"
+ "_080E3D8C: .4byte gTasks\n"
+ "_080E3D90:\n"
+ "\tmovs r0, 0\n"
+ "\tbl GetAnimBattlerSpriteId\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r7, r0, 24\n"
+ "\tldr r1, _080E3E04 @ =gTasks\n"
+ "\tmov r0, r8\n"
+ "\tlsls r4, r0, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tlsls r0, 3\n"
+ "\tadds r2, r0, r1\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 4\n"
+ "\tadds r0, r1, 0\n"
+ "\tldrh r3, [r2, 0xA]\n"
+ "\tadds r0, r3\n"
+ "\tstrh r0, [r2, 0xA]\n"
+ "\tldr r0, _080E3E08 @ =gBattleAnimAttacker\n"
+ "\tmov r10, r0\n"
+ "\tldrb r0, [r0]\n"
+ "\tstr r2, [sp, 0x18]\n"
+ "\tbl GetBattlerSide\n"
+ "\tlsls r0, 24\n"
+ "\tmov r9, r4\n"
+ "\tldr r2, [sp, 0x18]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080E3E10\n"
+ "\tldr r1, _080E3E0C @ =gSprites\n"
+ "\tlsls r5, r7, 4\n"
+ "\tadds r0, r5, r7\n"
+ "\tlsls r0, 2\n"
+ "\tadds r6, r0, r1\n"
+ "\tldrh r0, [r2, 0xA]\n"
+ "\tlsls r0, 16\n"
+ "\tasrs r0, 24\n"
+ "\tldrh r1, [r6, 0x24]\n"
+ "\tadds r0, r1\n"
+ "\tstrh r0, [r6, 0x24]\n"
+ "\tmovs r2, 0x24\n"
+ "\tldrsh r4, [r6, r2]\n"
+ "\tmovs r3, 0x20\n"
+ "\tldrsh r0, [r6, r3]\n"
+ "\tadds r4, r0\n"
+ "\tmov r1, r10\n"
+ "\tldrb r0, [r1]\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetBattlerSpriteCoord\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tadds r3, r5, 0\n"
+ "\tcmp r4, r0\n"
+ "\tblt _080E3E48\n"
+ "\tmovs r2, 0\n"
+ "\tstrh r2, [r6, 0x24]\n"
+ "\tb _080E3E48\n"
+ "\t.align 2, 0\n"
+ "_080E3E04: .4byte gTasks\n"
+ "_080E3E08: .4byte gBattleAnimAttacker\n"
+ "_080E3E0C: .4byte gSprites\n"
+ "_080E3E10:\n"
+ "\tldr r1, _080E3E7C @ =gSprites\n"
+ "\tlsls r5, r7, 4\n"
+ "\tadds r0, r5, r7\n"
+ "\tlsls r0, 2\n"
+ "\tadds r6, r0, r1\n"
+ "\tldrh r1, [r2, 0xA]\n"
+ "\tlsls r1, 16\n"
+ "\tasrs r1, 24\n"
+ "\tldrh r0, [r6, 0x24]\n"
+ "\tsubs r0, r1\n"
+ "\tstrh r0, [r6, 0x24]\n"
+ "\tmovs r3, 0x24\n"
+ "\tldrsh r4, [r6, r3]\n"
+ "\tmovs r1, 0x20\n"
+ "\tldrsh r0, [r6, r1]\n"
+ "\tadds r4, r0\n"
+ "\tmov r2, r10\n"
+ "\tldrb r0, [r2]\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetBattlerSpriteCoord\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tadds r3, r5, 0\n"
+ "\tcmp r4, r0\n"
+ "\tbgt _080E3E48\n"
+ "\tmovs r4, 0\n"
+ "\tstrh r4, [r6, 0x24]\n"
+ "_080E3E48:\n"
+ "\tldr r1, _080E3E80 @ =gTasks\n"
+ "\tmov r0, r9\n"
+ "\tadd r0, r8\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r1\n"
+ "\tldrb r1, [r0, 0xA]\n"
+ "\tstrh r1, [r0, 0xA]\n"
+ "\tldr r1, _080E3E7C @ =gSprites\n"
+ "\tadds r0, r3, r7\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r1\n"
+ "\tmovs r1, 0x24\n"
+ "\tldrsh r0, [r0, r1]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080E3E6C\n"
+ "\tmov r0, r8\n"
+ "\tbl DestroyAnimVisualTask\n"
+ "_080E3E6C:\n"
+ "\tadd sp, 0x1C\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_080E3E7C: .4byte gSprites\n"
+ "_080E3E80: .4byte gTasks\n");
+}
+#endif
void sub_80E3E84(struct Sprite *sprite)
{