diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/battle/anim/ice.c | 425 |
1 files changed, 86 insertions, 339 deletions
diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c index 215f77853..d072b7712 100644 --- a/src/battle/anim/ice.c +++ b/src/battle/anim/ice.c @@ -53,7 +53,7 @@ static void sub_80D8F74(struct Sprite *sprite); static void sub_80D81E0(u8 taskId); static void sub_80D851C(u8 taskId); static void sub_80D8AF8(u8 taskId); -void sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4); +bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4); const union AnimCmd gSpriteAnim_83D9B58[] = { @@ -797,35 +797,28 @@ void sub_80D7888(struct Sprite *sprite) { sprite->data[5] += sprite->data[1]; sprite->data[6] += sprite->data[2]; - sprite->pos2.x = sprite->data[5]; sprite->pos2.y = sprite->data[6]; - sprite->pos2.x += Sin(sprite->data[7], sprite->data[3]); sprite->pos2.y += Sin(sprite->data[7], sprite->data[3]); - sprite->data[7] = (sprite->data[7] + sprite->data[4]) & 0xFF; - sprite->data[0] -= 1; } - else + { DestroyAnimSprite(sprite); + } } static void sub_80D78EC(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[0]; - sprite->data[1] = 60; sprite->data[2] = 9; sprite->data[3] = 30; sprite->data[4] = 65024; - StoreSpriteCallbackInData(sprite, DestroyAnimSprite); - sprite->callback = sub_8078174; - sub_8078174(sprite); } @@ -836,13 +829,11 @@ static void sub_80D792C(struct Sprite *sprite) if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) sprite->data[2] -= gBattleAnimArgs[2]; - else sprite->data[2] += gBattleAnimArgs[2]; sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3]; sprite->data[0] = gBattleAnimArgs[4]; - StoreSpriteCallbackInData(sprite, DestroyAnimSprite); sprite->callback = StartAnimLinearTranslation; } @@ -850,12 +841,12 @@ static void sub_80D792C(struct Sprite *sprite) static void sub_80D79B4(struct Sprite *sprite) { if (gBattleAnimArgs[2] == 0) + { sub_8078764(sprite, 1); - + } else { SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->pos1.x, &sprite->pos1.y); - if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; @@ -870,9 +861,7 @@ static void sub_80D79B4(struct Sprite *sprite) static void sub_80D7A28(struct Sprite *sprite) { sprite->invisible ^= 1; - sprite->data[0] += 1; - if (sprite->data[0] == 20) move_anim_8074EE0(sprite); } @@ -894,11 +883,12 @@ static void sub_80D7A64(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3]; } else + { SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); + } if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) sprite->data[2] -= gBattleAnimArgs[2]; - else sprite->data[2] += gBattleAnimArgs[2]; @@ -906,11 +896,10 @@ static void sub_80D7A64(struct Sprite *sprite) tempDataHolder[i] = sprite->data[i]; sub_8078D60(sprite); - sprite->data[1] ^= 1; sprite->data[2] ^= 1; - for (;;) + while (1) { sprite->data[0] = 1; sub_8078CE8(sprite); @@ -920,9 +909,9 @@ static void sub_80D7A64(struct Sprite *sprite) || sprite->pos1.y + sprite->pos2.y < -16) break; } + sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; - sprite->pos2.y = 0; sprite->pos2.x = 0; @@ -939,10 +928,8 @@ static void sub_80D7BA0(struct Sprite *sprite) sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; - sprite->pos2.y = 0; sprite->pos2.x = 0; - sprite->data[0] = 128; tempVar = GetBattlerSide(gAnimBankAttacker) != 0 ? 20 : 65516; @@ -950,7 +937,6 @@ static void sub_80D7BA0(struct Sprite *sprite) sprite->data[3] = Sin(sprite->data[0], tempVar); sprite->data[4] = Cos(sprite->data[0], 0xF); sprite->data[5] = 0; - sprite->callback = sub_80D7C08; sub_80D7C08(sprite); } @@ -964,7 +950,6 @@ static void sub_80D7C08(struct Sprite *sprite) { sprite->pos2.x = Sin(sprite->data[0], tempVar) - sprite->data[3]; sprite->pos2.y = Cos(sprite->data[0], 15) - sprite->data[4]; - sprite->data[0] = (sprite->data[0] + 16) & 0xFF; sprite->data[5] += 1; } @@ -972,13 +957,10 @@ static void sub_80D7C08(struct Sprite *sprite) { sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; - sprite->pos2.y = 0; sprite->pos2.x = 0; - sprite->data[4] = 0; sprite->data[3] = 0; - sprite->callback = sub_80D7C8C; } } @@ -1011,28 +993,27 @@ static void sub_80D7CD4(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); } else + { SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); + } if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) sprite->data[2] -= gBattleAnimArgs[2]; - else sprite->data[2] += gBattleAnimArgs[2]; sprite->data[4] += gBattleAnimArgs[3]; sub_8078D60(sprite); - for (i = 0; i < 8; i++) tempDataHolder[i] = sprite->data[i]; sprite->data[1] ^= 1; sprite->data[2] ^= 1; - for (;;) + while (1) { sprite->data[0] = 1; sub_8078CE8(sprite); - if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > 272 || sprite->pos1.y + sprite->pos2.y > 160 || sprite->pos1.y + sprite->pos2.y < -16) @@ -1049,20 +1030,17 @@ static void sub_80D7CD4(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[5]; sprite->data[6] = gBattleAnimArgs[6]; - sprite->callback = sub_80D7E18; } static void sub_80D7E18(struct Sprite *sprite) { sub_8078CE8(sprite); - if (sprite->data[0] == 0) sprite->data[0] = 1; sprite->pos2.y += Sin(sprite->data[7], sprite->data[5]); sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF; - if (sprite->data[0] == 1) { if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > 272 @@ -1077,8 +1055,9 @@ static void sub_80D7E88(struct Sprite *sprite) if (sprite->data[0] == 0) { if (gBattleAnimArgs[2] == 0) + { sub_8078764(sprite, 0); - + } else { SetAverageBattlerPositions(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y); @@ -1089,11 +1068,14 @@ static void sub_80D7E88(struct Sprite *sprite) sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; } - sprite->data[0] += 1; + + sprite->data[0]++; } else + { if (sprite->animEnded) DestroyAnimSprite(sprite); + } } static void sub_80D7F10(struct Sprite *sprite) @@ -1104,51 +1086,49 @@ static void sub_80D7F10(struct Sprite *sprite) if (gBattleAnimArgs[4] == 0) { if (gBattleAnimArgs[5] == 0) + { InitAnimSpritePos(sprite, 0); - + } else { SetAverageBattlerPositions(gAnimBankAttacker, 0, &sprite->pos1.x, &sprite->pos1.y); - if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) sprite->pos1.x -= gBattleAnimArgs[0]; - else sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; } + battler = gAnimBankAttacker; } else { if (gBattleAnimArgs[5] == 0) + { sub_8078764(sprite, 0); - + } else { SetAverageBattlerPositions(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y); - if (GetBattlerSide(gAnimBankTarget) != B_SIDE_PLAYER) sprite->pos1.x -= gBattleAnimArgs[0]; - else sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; } + battler = gAnimBankTarget; } - sprite->data[7] = battler; - if (gBattleAnimArgs[5] == 0 || IsDoubleBattle() == 0) + sprite->data[7] = battler; + if (gBattleAnimArgs[5] == 0 || !IsDoubleBattle()) tempVar = 0x20; - else tempVar = 0x40; sprite->data[6] = tempVar; - if (GetBattlerSide(gAnimBankTarget) == B_SIDE_PLAYER) sprite->pos1.y += 8; @@ -1161,28 +1141,28 @@ static void sub_80D7F10(struct Sprite *sprite) InitAnimLinearTranslation(sprite); sprite->data[5] = 64; - sprite->callback = sub_80D8048; sub_80D8048(sprite); } static void sub_80D8048(struct Sprite *sprite) { - if (TranslateAnimLinear(sprite) == 0) + if (!TranslateAnimLinear(sprite)) { sprite->pos2.x += Sin(sprite->data[5], sprite->data[6]); sprite->pos2.y += Cos(sprite->data[5], -6); if ((u16)(sprite->data[5] - 64) <= 0x7F) sprite->oam.priority = sub_8079ED4(sprite->data[7]); - else sprite->oam.priority = sub_8079ED4(sprite->data[7]) + 1; sprite->data[5] = (sprite->data[5] + 3) & 0xFF; } else + { DestroyAnimSprite(sprite); + } } // Used in haze @@ -1192,9 +1172,7 @@ void sub_80D80E0(u8 taskId) REG_BLDCNT = 0x3F42; REG_BLDALPHA = 0x1000; - REG_BG1CNT_BITFIELD.priority = 1; - REG_BG1CNT_BITFIELD.screenSize = 0; if (!IsContest()) @@ -1202,17 +1180,13 @@ void sub_80D80E0(u8 taskId) gBattle_BG1_X = 0; gBattle_BG1_Y = 0; - REG_BG1HOFS = 0; REG_BG1VOFS = 0; sub_8078914(&subStruct); - DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000); DmaCopy16Defvars(3, &gWeatherFog1Tiles, subStruct.field_0, 0x800); - LZDecompressVram(&gBattleAnimFogTilemap, subStruct.field_4); - LoadPalette(&gUnknown_083970E8, subStruct.field_8 * 16, 32); if (IsContest()) @@ -1228,85 +1202,59 @@ static void sub_80D81E0(u8 taskId) gBattle_BG1_X += 0xFFFF; gBattle_BG1_Y += 0; - switch(gTasks[taskId].data[12]) + switch (gTasks[taskId].data[12]) { case 0: - - gTasks[taskId].data[10] += 1; - - if (gTasks[taskId].data[10] != 4) - break; - - else + if (++gTasks[taskId].data[10] == 4) { gTasks[taskId].data[10] = 0; - gTasks[taskId].data[9] += 1; - + gTasks[taskId].data[9]++; gTasks[taskId].data[11] = gUnknown_083D9D6C[gTasks[taskId].data[9]]; REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); - - if (gTasks[taskId].data[11] != 9) - break; - - else + if (gTasks[taskId].data[11] == 9) { - gTasks[taskId].data[12] += 1; + gTasks[taskId].data[12]++; gTasks[taskId].data[11] = 0; - break; } } - + break; case 1: - - gTasks[taskId].data[11] += 1; - - if (gTasks[taskId].data[11] == 0x51) + if (++gTasks[taskId].data[11] == 0x51) { gTasks[taskId].data[11] = 9; - gTasks[taskId].data[12] += 1; + gTasks[taskId].data[12]++; } break; - case 2: - - gTasks[taskId].data[10] += 1; - - if (gTasks[taskId].data[10] == 4) + if (++gTasks[taskId].data[10] == 4) { gTasks[taskId].data[10] = 0; - gTasks[taskId].data[11] -= 1; + gTasks[taskId].data[11]--; REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); - if (gTasks[taskId].data[11] == 0) { - gTasks[taskId].data[12] += 1; + gTasks[taskId].data[12]++; gTasks[taskId].data[11] = 0; } } break; - case 3: - sub_8078914(&subStruct); - DmaFill32Large(3, 0, subStruct.field_0, 0x2000, 0x1000); DmaClear32(3, subStruct.field_4, 0x800); if (!IsContest()) REG_BG1CNT_BITFIELD.charBaseBlock = 0; - gTasks[taskId].data[12] += 1; - + gTasks[taskId].data[12]++; + // fall through case 4: - gBattle_BG1_X = 0; gBattle_BG1_Y = 0; - REG_BLDCNT = 0; REG_BLDALPHA = 0; - REG_BG1CNT_BITFIELD.priority = 1; DestroyAnimVisualTask(taskId); } @@ -1316,7 +1264,6 @@ static void sub_80D83E0(struct Sprite *sprite) { sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3); - sprite->callback = TranslateAnimSpriteToTargetMonLocation; } @@ -1326,7 +1273,6 @@ void sub_80D8414(u8 taskId) REG_BLDCNT = 0x3F42; REG_BLDALPHA = 0x1000; - REG_BG1CNT_BITFIELD.priority = 1; REG_BG1CNT_BITFIELD.screenSize = 0; @@ -1335,23 +1281,19 @@ void sub_80D8414(u8 taskId) gBattle_BG1_X = 0; gBattle_BG1_Y = 0; - REG_BG1HOFS = 0; REG_BG1VOFS = 0; sub_8078914(&subStruct); - DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000); DmaCopy16Defvars(3, &gWeatherFog1Tiles, subStruct.field_0, 0x800); - LZDecompressVram(&gBattleAnimFogTilemap, subStruct.field_4); - LoadPalette(&gUnknown_083970E8, subStruct.field_8 * 16, 32); if (IsContest()) sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); - gTasks[taskId].data[15] = 0xFFFF; + gTasks[taskId].data[15] = -1; gTasks[taskId].func = sub_80D851C; } @@ -1365,71 +1307,51 @@ static void sub_80D851C(u8 taskId) switch (gTasks[taskId].data[12]) { case 0: - gTasks[taskId].data[9] += 1; gTasks[taskId].data[11] = gUnknown_083D9D98[gTasks[taskId].data[9]]; - REG_BLDALPHA = gTasks[taskId].data[11] | ((17 - gTasks[taskId].data[11]) << 8); - if (gTasks[taskId].data[11] == 5) { - gTasks[taskId].data[12] += 1; + gTasks[taskId].data[12]++; gTasks[taskId].data[11] = 0; } break; - case 1: - - gTasks[taskId].data[11] += 1; - - if (gTasks[taskId].data[11] == 0x51) + if (++gTasks[taskId].data[11] == 0x51) { gTasks[taskId].data[11] = 5; - gTasks[taskId].data[12] += 1; + gTasks[taskId].data[12]++; } break; - case 2: - - gTasks[taskId].data[10] += 1; - - if (gTasks[taskId].data[10] == 4) + if (++gTasks[taskId].data[10] == 4) { gTasks[taskId].data[10] = 0; gTasks[taskId].data[11] -= 1; - REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); - if (gTasks[taskId].data[11] == 0) { - gTasks[taskId].data[12] += 1; + gTasks[taskId].data[12]++; gTasks[taskId].data[11] = 0; } } break; - case 3: - sub_8078914(&subStruct); - DmaFill32Large(3, 0, subStruct.field_0, 0x2000, 0x1000); DmaClear32(3, subStruct.field_4, 0x800); if (!IsContest()) REG_BG1CNT_BITFIELD.charBaseBlock = 0; - gTasks[taskId].data[12] += 1; - + gTasks[taskId].data[12]++; + // fall through case 4: - gBattle_BG1_X = 0; gBattle_BG1_Y = 0; - REG_BLDCNT = 0; REG_BLDALPHA = 0; - REG_BG1CNT_BITFIELD.priority = 1; - DestroyAnimVisualTask(taskId); } } @@ -1438,26 +1360,22 @@ static void sub_80D8700(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[0]; - if ((u8)(GetBattlerSpriteCoord(gAnimBankAttacker, 2)) < - (u8)(GetBattlerSpriteCoord(gAnimBankTarget, 2))) - + if (GetBattlerSpriteCoord(gAnimBankAttacker, 2) < GetBattlerSpriteCoord(gAnimBankTarget, 2)) sprite->data[7] = 0x8000; - if ((gBanksBySide[gAnimBankTarget] & 1) == 0) + if (!(gBanksBySide[gAnimBankTarget] & 1)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; - if ((sprite->data[7] & 0x8000) != 0 - && (gBanksBySide[gAnimBankAttacker] & 1) == 0) - + if ((sprite->data[7] & 0x8000) && !(gBanksBySide[gAnimBankAttacker] & 1)) sprite->subpriority = gSprites[GetAnimBattlerSpriteId(1)].subpriority + 1; sprite->data[6] = 1; } + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3); - if (gBattleAnimArgs[7]) { sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1]; @@ -1475,7 +1393,7 @@ static void sub_80D8700(struct Sprite *sprite) sprite->data[7] |= sub_8079ED4(gAnimBankTarget) << 8; } - if (IsContest() != 0) + if (IsContest()) { sprite->data[6] = 1; sprite->subpriority = 0x80; @@ -1483,7 +1401,6 @@ static void sub_80D8700(struct Sprite *sprite) InitAnimLinearTranslation(sprite); sprite->callback = sub_80D8874; - } /* @@ -2001,206 +1918,49 @@ void sub_80D8ADC(u8 taskId) task->func = sub_80D8AF8; } -/* -// Also probably not equivalent static void sub_80D8AF8(u8 taskId) { - // struct Task *task = &gTasks[taskId]; - - s32 comp = task->data[0]; - - //* - if (comp != 1) // cmp 1 != + switch (task->data[0]) { - // - if (comp <= 1) // cmp 2 > + case 0: + if (++task->data[4] > 2) { - // - if (comp == 0) // cmp 3 == - { - //return; - task->data[4] += 1; - - if (task->data[4] > 2) // cmp 5 > - { - // ... - task->data[4] = comp; - task->data[5] = comp; - task->data[2] = comp; - } - } - // _26 - else - { - return; - } - + task->data[4] = 0; + task->data[5] = 0; + task->data[2] = 0; + task->data[0]++; } - else // cmp 2 <= + break; + case 1: + if (task->data[5] == 0) { - // _20 - if (comp == 2) // cmp 4 == - { - // _92 - if (task->data[1] == 0) // cmp 10 == - { - // destroy stuff - DestroyAnimVisualTask(taskId); - } - } - return; + if (sub_80D8BA8(task->data[3], task->data[2], taskId, 1)) + task->data[1]++; - } - } - else // cmp 1 == - { - // _3C - if (task->data[5] == 0) // cmp 6 == - { - // - sub_80D8BA8(task->data[3], task->data[2], taskId, 1); - - if (task->data[3] << 24 != 0) // cmp 7 != - { - // ... - task->data[1] += 1; - } - // _5C - //... - task->data[2] += 1; - - if ((s16)(task->data[2]) == 3) // cmp 8 == + if (++task->data[2] == 3) { - //... - task->data[3] += 1; - - if (task->data[3] != 0xA) // cmp 9 != // cast to signed? - { - // _80 - //... - task->data[0] += 1; - return; - } + if (++task->data[3] == 10) + task->data[0]++; + else + task->data[0]--; } else { - // _88 - //... - task->data[5] = comp;//task->data[0]; - return; + task->data[5] = 1; } + } - else // cmp 6 != + else { - // _8C - //... - task->data[5] -= 1; - return; + task->data[5]--; } + break; + case 2: + if (task->data[1] == 0) + DestroyAnimVisualTask(taskId); + break; } - // _78 - task->data[0] += 1; - return; -} -//*/ - -NAKED static void sub_80D8AF8(u8 taskId) -{ - asm_unified("\tpush {r4,r5,lr}\n" - "\tlsls r0, 24\n" - "\tlsrs r2, r0, 24\n" - "\tlsls r0, r2, 2\n" - "\tadds r0, r2\n" - "\tlsls r0, 3\n" - "\tldr r1, _080D8B1C @ =gTasks\n" - "\tadds r4, r0, r1\n" - "\tmovs r0, 0x8\n" - "\tldrsh r5, [r4, r0]\n" - "\tcmp r5, 0x1\n" - "\tbeq _080D8B3C\n" - "\tcmp r5, 0x1\n" - "\tbgt _080D8B20\n" - "\tcmp r5, 0\n" - "\tbeq _080D8B26\n" - "\tb _080D8BA0\n" - "\t.align 2, 0\n" - "_080D8B1C: .4byte gTasks\n" - "_080D8B20:\n" - "\tcmp r5, 0x2\n" - "\tbeq _080D8B92\n" - "\tb _080D8BA0\n" - "_080D8B26:\n" - "\tldrh r0, [r4, 0x10]\n" - "\tadds r0, 0x1\n" - "\tstrh r0, [r4, 0x10]\n" - "\tlsls r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _080D8BA0\n" - "\tstrh r5, [r4, 0x10]\n" - "\tstrh r5, [r4, 0x12]\n" - "\tstrh r5, [r4, 0xC]\n" - "\tb _080D8B78\n" - "_080D8B3C:\n" - "\tldrh r1, [r4, 0x12]\n" - "\tmovs r3, 0x12\n" - "\tldrsh r0, [r4, r3]\n" - "\tcmp r0, 0\n" - "\tbne _080D8B8C\n" - "\tldrb r0, [r4, 0xE]\n" - "\tldrb r1, [r4, 0xC]\n" - "\tmovs r3, 0x1\n" - "\tbl sub_80D8BA8\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _080D8B5C\n" - "\tldrh r0, [r4, 0xA]\n" - "\tadds r0, 0x1\n" - "\tstrh r0, [r4, 0xA]\n" - "_080D8B5C:\n" - "\tldrh r0, [r4, 0xC]\n" - "\tadds r0, 0x1\n" - "\tstrh r0, [r4, 0xC]\n" - "\tlsls r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x3\n" - "\tbne _080D8B88\n" - "\tldrh r0, [r4, 0xE]\n" - "\tadds r0, 0x1\n" - "\tstrh r0, [r4, 0xE]\n" - "\tlsls r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0xA\n" - "\tbne _080D8B80\n" - "_080D8B78:\n" - "\tldrh r0, [r4, 0x8]\n" - "\tadds r0, 0x1\n" - "\tstrh r0, [r4, 0x8]\n" - "\tb _080D8BA0\n" - "_080D8B80:\n" - "\tldrh r0, [r4, 0x8]\n" - "\tsubs r0, 0x1\n" - "\tstrh r0, [r4, 0x8]\n" - "\tb _080D8BA0\n" - "_080D8B88:\n" - "\tstrh r5, [r4, 0x12]\n" - "\tb _080D8BA0\n" - "_080D8B8C:\n" - "\tsubs r0, r1, 0x1\n" - "\tstrh r0, [r4, 0x12]\n" - "\tb _080D8BA0\n" - "_080D8B92:\n" - "\tmovs r1, 0xA\n" - "\tldrsh r0, [r4, r1]\n" - "\tcmp r0, 0\n" - "\tbne _080D8BA0\n" - "\tadds r0, r2, 0\n" - "\tbl DestroyAnimVisualTask\n" - "_080D8BA0:\n" - "\tpop {r4,r5}\n" - "\tpop {r0}\n" - "\tbx r0"); } /* @@ -2226,7 +1986,7 @@ void sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4)//(u8 spriteId, u8 taskId, u8 a3)//( } */ -NAKED void sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4) +NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" @@ -2413,8 +2173,7 @@ static void sub_80D8D1C(struct Sprite *sprite) sprite->pos1.x += 4; sprite->pos1.y += 8; - if ((s16)sprite->pos1.x < sprite->data[3] - && (s16)sprite->pos1.y < sprite->data[4]) + if (sprite->pos1.x < sprite->data[3] && sprite->pos1.y < sprite->data[4]) return; if (sprite->data[0] == 1 && sprite->data[5] == 0) @@ -2423,21 +2182,19 @@ static void sub_80D8D1C(struct Sprite *sprite) sprite->data[3], sprite->data[4], sprite->subpriority); sprite->data[0] = spriteId; - if (spriteId != 64) { gSprites[sprite->data[0]].callback = sub_80D8E00; - gSprites[sprite->data[0]].data[6] = sprite->data[6]; gSprites[sprite->data[0]].data[7] = sprite->data[7]; } + FreeOamMatrix(sprite->oam.matrixNum); DestroySprite(sprite); } else { gTasks[sprite->data[6]].data[sprite->data[7]]--; - FreeOamMatrix(sprite->oam.matrixNum); DestroySprite(sprite); } @@ -2445,12 +2202,9 @@ static void sub_80D8D1C(struct Sprite *sprite) static void sub_80D8E00(struct Sprite *sprite) { - sprite->data[0]++; - - if (sprite->data[0] == 20) + if (++sprite->data[0] == 20) { gTasks[sprite->data[6]].data[sprite->data[7]]--; - FreeOamMatrix(sprite->oam.matrixNum); DestroySprite(sprite); } @@ -2487,9 +2241,7 @@ static void sub_80D8EE0(struct Sprite *sprite) return; StartSpriteAnim(sprite, 1); - sprite->callback = sub_8078600; - StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -2498,7 +2250,6 @@ static void sub_80D8F10(struct Sprite *sprite) s16 randA, randB; sprite->oam.tileNum += 8; - sub_8078764(sprite, 1); randA = (Random() & 0xFF) + 256; @@ -2509,7 +2260,6 @@ static void sub_80D8F10(struct Sprite *sprite) sprite->data[1] = randA; sprite->data[2] = randB; - sprite->callback = sub_80D8F74; } @@ -2520,12 +2270,10 @@ static void sub_80D8F74(struct Sprite *sprite) if (sprite->data[1] & 1) sprite->pos2.x = -(sprite->data[3] >> 8); - else sprite->pos2.x = sprite->data[3] >> 8; sprite->pos2.y = sprite->data[4] >> 8; - if (++sprite->data[0] == 21) DestroyAnimSprite(sprite); } @@ -2535,7 +2283,6 @@ void sub_80D8FC0(u8 taskId) { u8 arg = gBattleAnimArgs[0]; - gBattleAnimArgs[arg] = gAnimDisableStructPtr->rolloutTimer2 - gAnimDisableStructPtr->rolloutTimer1 - 1; - + gBattleAnimArgs[arg] = gAnimDisableStructPtr->rolloutTimer2 - gAnimDisableStructPtr->rolloutTimer1 - 1; DestroyAnimVisualTask(taskId); } |