diff options
Diffstat (limited to 'asm/dark.s')
-rwxr-xr-x | asm/dark.s | 2014 |
1 files changed, 2014 insertions, 0 deletions
diff --git a/asm/dark.s b/asm/dark.s new file mode 100755 index 000000000..f4ef9cc1a --- /dev/null +++ b/asm/dark.s @@ -0,0 +1,2014 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ dark + + thumb_func_start sub_80DFF1C +sub_80DFF1C: @ 80DFF1C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080DFF50 @ =gBattleAnimArgs + ldrh r0, [r5] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrb r1, [r5, 0x4] + adds r0, r4, 0 + bl StartSpriteAffineAnim + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x32] + ldr r0, _080DFF54 @ =sub_80DFF58 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DFF50: .4byte gBattleAnimArgs +_080DFF54: .4byte sub_80DFF58 + thumb_func_end sub_80DFF1C + + thumb_func_start sub_80DFF58 +sub_80DFF58: @ 80DFF58 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x36] + adds r0, r1 + strh r0, [r2, 0x36] + ldrh r1, [r2, 0x30] + ldrh r3, [r2, 0x38] + adds r1, r3 + strh r1, [r2, 0x38] + lsls r0, 16 + asrs r0, 24 + strh r0, [r2, 0x24] + lsls r1, 16 + asrs r1, 24 + strh r1, [r2, 0x26] + ldrh r0, [r2, 0x34] + adds r0, 0x1 + strh r0, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x32 + ldrsh r1, [r2, r3] + cmp r0, r1 + bne _080DFF8E + ldr r0, _080DFF94 @ =sub_80DFF98 + str r0, [r2, 0x1C] +_080DFF8E: + pop {r0} + bx r0 + .align 2, 0 +_080DFF94: .4byte sub_80DFF98 + thumb_func_end sub_80DFF58 + + thumb_func_start sub_80DFF98 +sub_80DFF98: @ 80DFF98 + push {lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x36] + ldrh r0, [r3, 0x2E] + subs r1, r0 + strh r1, [r3, 0x36] + ldrh r0, [r3, 0x38] + ldrh r2, [r3, 0x30] + subs r0, r2 + strh r0, [r3, 0x38] + lsls r1, 16 + asrs r1, 24 + strh r1, [r3, 0x24] + lsls r0, 16 + asrs r0, 24 + strh r0, [r3, 0x26] + ldrh r0, [r3, 0x34] + subs r0, 0x1 + strh r0, [r3, 0x34] + lsls r0, 16 + cmp r0, 0 + bne _080DFFCA + adds r0, r3, 0 + bl move_anim_8074EE0 +_080DFFCA: + pop {r0} + bx r0 + thumb_func_end sub_80DFF98 + + thumb_func_start sub_80DFFD0 +sub_80DFFD0: @ 80DFFD0 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _080DFFE4 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + adds r3, r0, 0 + cmp r1, 0 + bne _080DFFEC + ldr r0, _080DFFE8 @ =gBattleAnimBankAttacker + b _080DFFEE + .align 2, 0 +_080DFFE4: .4byte gBattleAnimArgs +_080DFFE8: .4byte gBattleAnimBankAttacker +_080DFFEC: + ldr r0, _080E001C @ =gBattleAnimBankTarget +_080DFFEE: + ldrb r5, [r0] + movs r6, 0x14 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x4 + ldr r7, _080E0020 @ =0x000003ff + adds r0, r7, 0 + ands r1, r0 + ldr r0, _080E0024 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + movs r1, 0x2 + ldrsh r0, [r3, r1] + cmp r0, 0x1 + beq _080E004C + cmp r0, 0x1 + bgt _080E0028 + cmp r0, 0 + beq _080E0032 + b _080E00A0 + .align 2, 0 +_080E001C: .4byte gBattleAnimBankTarget +_080E0020: .4byte 0x000003ff +_080E0024: .4byte 0xfffffc00 +_080E0028: + cmp r0, 0x2 + beq _080E0066 + cmp r0, 0x3 + beq _080E007E + b _080E00A0 +_080E0032: + adds r0, r5, 0 + movs r1, 0x5 + bl sub_807A100 + subs r0, 0x8 + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x8 + strh r0, [r4, 0x22] + b _080E00A0 +_080E004C: + adds r0, r5, 0 + movs r1, 0x5 + bl sub_807A100 + subs r0, 0xE + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x10 + strh r0, [r4, 0x22] + b _080E00A0 +_080E0066: + adds r0, r5, 0 + movs r1, 0x4 + bl sub_807A100 + adds r0, 0x8 + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x8 + b _080E0094 +_080E007E: + adds r0, r5, 0 + movs r1, 0x4 + bl sub_807A100 + adds r0, 0xE + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x10 +_080E0094: + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + movs r6, 0xEC +_080E00A0: + movs r0, 0x20 + strh r0, [r4, 0x2E] + lsls r0, r6, 24 + asrs r0, 24 + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + adds r0, 0xC + strh r0, [r4, 0x36] + ldr r0, _080E00C8 @ =0x0000fff4 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_80786EC + ldr r0, _080E00CC @ =sub_80E00D0 + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E00C8: .4byte 0x0000fff4 +_080E00CC: .4byte sub_80E00D0 + thumb_func_end sub_80DFFD0 + + thumb_func_start sub_80E00D0 +sub_80E00D0: @ 80E00D0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080E00E4 + adds r0, r4, 0 + bl move_anim_8074EE0 +_080E00E4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E00D0 + + thumb_func_start sub_80E00EC +sub_80E00EC: @ 80E00EC + push {r4-r7,lr} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080E0150 @ =gTasks + adds r5, r1, r0 + ldr r4, _080E0154 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1F + movs r6, 0 + strh r0, [r5, 0x16] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_807A100 + subs r0, 0x7 + strh r0, [r5, 0x14] + ldrh r1, [r5, 0x16] + strh r1, [r5, 0x12] + strh r0, [r5, 0x10] + subs r1, r0 + lsls r1, 8 + strh r1, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r5, 0x24] + adds r0, 0x20 + strh r0, [r5, 0x26] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080E015C + ldr r0, _080E0158 @ =0x0000fff4 + b _080E015E + .align 2, 0 +_080E0150: .4byte gTasks +_080E0154: .4byte gBattleAnimBankAttacker +_080E0158: .4byte 0x0000fff4 +_080E015C: + ldr r0, _080E01A8 @ =0x0000ffc0 +_080E015E: + strh r0, [r5, 0x18] + ldr r0, _080E01AC @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xE] + cmp r0, 0x1 + bne _080E01C4 + add r4, sp, 0xC + adds r0, r4, 0 + bl sub_8078914 + ldr r0, _080E01B0 @ =gUnknown_030041B4 + ldrh r0, [r0] + strh r0, [r5, 0x1C] + ldr r1, _080E01B4 @ =REG_BLDCNT + ldr r2, _080E01B8 @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + ldrb r1, [r4, 0x8] + lsls r1, 4 + movs r0, 0 + movs r2, 0x20 + bl FillPalette + ldr r0, _080E01BC @ =REG_BG1VOFS + str r0, [sp] + movs r7, 0x2 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E01F4 + ldr r1, _080E01C0 @ =gUnknown_03004288 + b _080E01EE + .align 2, 0 +_080E01A8: .4byte 0x0000ffc0 +_080E01AC: .4byte gBattleAnimBankAttacker +_080E01B0: .4byte gUnknown_030041B4 +_080E01B4: .4byte REG_BLDCNT +_080E01B8: .4byte 0x00003f42 +_080E01BC: .4byte REG_BG1VOFS +_080E01C0: .4byte gUnknown_03004288 +_080E01C4: + ldr r0, _080E0278 @ =gUnknown_03004280 + ldrh r0, [r0] + strh r0, [r5, 0x1C] + ldr r1, _080E027C @ =REG_BLDCNT + ldr r2, _080E0280 @ =0x00003f44 + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0 + movs r1, 0x90 + movs r2, 0x20 + bl FillPalette + ldr r0, _080E0284 @ =REG_BG2VOFS + str r0, [sp] + movs r7, 0x4 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E01F4 + ldr r1, _080E0288 @ =gUnknown_030042C0 +_080E01EE: + ldrh r0, [r1] + adds r0, 0xF0 + strh r0, [r1] +_080E01F4: + ldr r0, _080E028C @ =0xa2600001 + str r0, [sp, 0x4] + mov r2, sp + movs r1, 0 + movs r0, 0x1 + strb r0, [r2, 0x8] + mov r0, sp + strb r1, [r0, 0x9] + strh r1, [r5, 0x1E] + movs r0, 0x10 + strh r0, [r5, 0x20] + strh r1, [r5, 0x8] + strh r1, [r5, 0xA] + strh r1, [r5, 0xC] + movs r0, 0x3 + bl sub_80E08CC + movs r3, 0 + ldr r4, _080E0290 @ =gUnknown_03004DE0 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r4, r0 +_080E0220: + lsls r1, r3, 1 + adds r2, r1, r4 + ldrh r0, [r5, 0x1C] + strh r0, [r2] + adds r1, r6 + ldrh r0, [r5, 0x1C] + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x6F + bls _080E0220 + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_80895F8 + ldr r1, _080E0294 @ =REG_WINOUT + movs r0, 0x3F + eors r7, r0 + movs r2, 0xFC + lsls r2, 6 + adds r0, r2, 0 + orrs r7, r0 + strh r7, [r1] + subs r1, 0x2 + adds r2, 0x3F + adds r0, r2, 0 + strh r0, [r1] + ldr r2, _080E0298 @ =gUnknown_030042C4 + ldrh r0, [r5, 0x24] + lsls r0, 8 + ldrh r1, [r5, 0x26] + orrs r0, r1 + strh r0, [r2] + ldr r1, _080E029C @ =gUnknown_03004240 + movs r0, 0xA0 + strh r0, [r1] + ldr r0, _080E02A0 @ =sub_80E02A4 + str r0, [r5] + add sp, 0x18 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E0278: .4byte gUnknown_03004280 +_080E027C: .4byte REG_BLDCNT +_080E0280: .4byte 0x00003f44 +_080E0284: .4byte REG_BG2VOFS +_080E0288: .4byte gUnknown_030042C0 +_080E028C: .4byte 0xa2600001 +_080E0290: .4byte gUnknown_03004DE0 +_080E0294: .4byte REG_WINOUT +_080E0298: .4byte gUnknown_030042C4 +_080E029C: .4byte gUnknown_03004240 +_080E02A0: .4byte sub_80E02A4 + thumb_func_end sub_80E00EC + + thumb_func_start sub_80E02A4 +sub_80E02A4: @ 80E02A4 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E02C8 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080E02BE + b _080E03B6 +_080E02BE: + lsls r0, 2 + ldr r1, _080E02CC @ =_080E02D0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E02C8: .4byte gTasks +_080E02CC: .4byte _080E02D0 + .align 2, 0 +_080E02D0: + .4byte _080E02E4 + .4byte _080E0344 + .4byte _080E035E + .4byte _080E039C + .4byte _080E03B0 +_080E02E4: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E03B6 + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080E0314 + ldrh r1, [r4, 0x1E] + movs r2, 0x1E + ldrsh r0, [r4, r2] + cmp r0, 0xC + beq _080E0322 + adds r0, r1, 0x1 + strh r0, [r4, 0x1E] + b _080E0322 +_080E0314: + ldrh r1, [r4, 0x20] + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x8 + beq _080E0322 + subs r0, r1, 0x1 + strh r0, [r4, 0x20] +_080E0322: + ldr r2, _080E0340 @ =REG_BLDALPHA + ldrh r0, [r4, 0x20] + lsls r0, 8 + ldrh r1, [r4, 0x1E] + orrs r0, r1 + strh r0, [r2] + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0xC + bne _080E03B6 + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x8 + bne _080E03B6 + b _080E03A2 + .align 2, 0 +_080E0340: .4byte REG_BLDALPHA +_080E0344: + ldrh r0, [r4, 0x10] + subs r0, 0x8 + strh r0, [r4, 0x10] + adds r0, r4, 0 + bl sub_80E079C + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r1, r0 + bge _080E03B6 + b _080E03A2 +_080E035E: + ldrh r0, [r4, 0x10] + subs r0, 0x8 + strh r0, [r4, 0x10] + adds r0, r4, 0 + bl sub_80E079C + ldrh r1, [r4, 0x24] + adds r1, 0x4 + strh r1, [r4, 0x24] + ldrh r0, [r4, 0x26] + subs r2, r0, 0x4 + strh r2, [r4, 0x26] + lsls r1, 16 + lsls r0, r2, 16 + cmp r1, r0 + blt _080E0380 + strh r2, [r4, 0x24] +_080E0380: + ldr r3, _080E0398 @ =gUnknown_030042C4 + ldrh r2, [r4, 0x24] + lsls r0, r2, 8 + ldrh r1, [r4, 0x26] + orrs r0, r1 + strh r0, [r3] + lsls r2, 16 + lsls r1, 16 + cmp r2, r1 + bne _080E03B6 + b _080E03A2 + .align 2, 0 +_080E0398: .4byte gUnknown_030042C4 +_080E039C: + ldr r1, _080E03AC @ =gUnknown_03004DC0 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080E03A2: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E03B6 + .align 2, 0 +_080E03AC: .4byte gUnknown_03004DC0 +_080E03B0: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E03B6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E02A4 + + thumb_func_start sub_80E03BC +sub_80E03BC: @ 80E03BC + push {r4-r7,lr} + sub sp, 0x18 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080E03E4 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bls _080E03D8 + b _080E05F2 +_080E03D8: + lsls r0, 2 + ldr r1, _080E03E8 @ =_080E03EC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E03E4: .4byte gTasks +_080E03E8: .4byte _080E03EC + .align 2, 0 +_080E03EC: + .4byte _080E0400 + .4byte _080E048C + .4byte _080E04D0 + .4byte _080E053C + .4byte _080E05A4 +_080E0400: + bl NotInBattle + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E043C + ldr r0, _080E042C @ =gUnknown_030042C4 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E0430 @ =gUnknown_03004240 + strh r1, [r0] + ldr r0, _080E0434 @ =REG_WININ + ldr r2, _080E0438 @ =0x00003f3f + adds r1, r2, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080E05F2 + .align 2, 0 +_080E042C: .4byte gUnknown_030042C4 +_080E0430: .4byte gUnknown_03004240 +_080E0434: .4byte REG_WININ +_080E0438: .4byte 0x00003f3f +_080E043C: + ldr r0, _080E045C @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xE] + cmp r0, 0x1 + bne _080E046C + ldr r1, _080E0460 @ =REG_BLDCNT + ldr r2, _080E0464 @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080E0468 @ =gUnknown_03004288 + b _080E0476 + .align 2, 0 +_080E045C: .4byte gBattleAnimBankTarget +_080E0460: .4byte REG_BLDCNT +_080E0464: .4byte 0x00003f42 +_080E0468: .4byte gUnknown_03004288 +_080E046C: + ldr r1, _080E0480 @ =REG_BLDCNT + ldr r2, _080E0484 @ =0x00003f44 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080E0488 @ =gUnknown_030042C0 +_080E0476: + ldrh r0, [r1] + adds r0, 0xF0 + strh r0, [r1] + b _080E0590 + .align 2, 0 +_080E0480: .4byte REG_BLDCNT +_080E0484: .4byte 0x00003f44 +_080E0488: .4byte gUnknown_030042C0 +_080E048C: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080E04B4 + mov r0, sp + bl sub_8078914 + ldr r0, _080E04B0 @ =gUnknown_030041B4 + ldrh r0, [r0] + strh r0, [r5, 0x1C] + mov r0, sp + ldrb r1, [r0, 0x8] + lsls r1, 4 + movs r0, 0 + movs r2, 0x20 + bl FillPalette + b _080E04C4 + .align 2, 0 +_080E04B0: .4byte gUnknown_030041B4 +_080E04B4: + ldr r0, _080E04CC @ =gUnknown_03004280 + ldrh r0, [r0] + strh r0, [r5, 0x1C] + movs r0, 0 + movs r1, 0x90 + movs r2, 0x20 + bl FillPalette +_080E04C4: + movs r0, 0x3 + bl sub_80E08CC + b _080E0590 + .align 2, 0 +_080E04CC: .4byte gUnknown_03004280 +_080E04D0: + ldr r4, _080E051C @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1F + movs r6, 0 + strh r0, [r5, 0x16] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_807A100 + subs r0, 0x7 + strh r0, [r5, 0x14] + ldrh r1, [r5, 0x16] + subs r1, r0 + lsls r1, 8 + strh r1, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + subs r1, r0, 0x4 + strh r1, [r5, 0x24] + adds r0, 0x4 + strh r0, [r5, 0x26] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080E0524 + ldr r0, _080E0520 @ =0x0000fff4 + b _080E0526 + .align 2, 0 +_080E051C: .4byte gBattleAnimBankTarget +_080E0520: .4byte 0x0000fff4 +_080E0524: + ldr r0, _080E0538 @ =0x0000ffc0 +_080E0526: + strh r0, [r5, 0x18] + ldrh r0, [r5, 0x18] + strh r0, [r5, 0x10] + strh r0, [r5, 0x12] + movs r0, 0xC + strh r0, [r5, 0x1E] + movs r0, 0x8 + strh r0, [r5, 0x20] + b _080E0590 + .align 2, 0 +_080E0538: .4byte 0x0000ffc0 +_080E053C: + movs r2, 0xE + ldrsh r0, [r5, r2] + cmp r0, 0x1 + bne _080E054C + ldr r0, _080E0548 @ =REG_BG1VOFS + b _080E054E + .align 2, 0 +_080E0548: .4byte REG_BG1VOFS +_080E054C: + ldr r0, _080E0598 @ =REG_BG2VOFS +_080E054E: + str r0, [sp, 0xC] + movs r3, 0 + add r4, sp, 0xC + ldr r6, _080E059C @ =gUnknown_03004DE0 + movs r0, 0xF0 + lsls r0, 3 + adds r7, r6, r0 +_080E055C: + lsls r1, r3, 1 + adds r2, r1, r6 + ldrh r0, [r5, 0x1C] + adds r0, 0x9F + subs r0, r3 + strh r0, [r2] + adds r1, r7 + ldrh r0, [r5, 0x1C] + adds r0, 0x9F + subs r0, r3 + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x6F + bls _080E055C + ldr r1, _080E05A0 @ =0xa2600001 + str r1, [r4, 0x4] + movs r2, 0 + movs r0, 0x1 + strb r0, [r4, 0x8] + strb r2, [r4, 0x9] + ldr r0, [sp, 0xC] + ldr r2, [r4, 0x8] + bl sub_80895F8 +_080E0590: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080E05F2 + .align 2, 0 +_080E0598: .4byte REG_BG2VOFS +_080E059C: .4byte gUnknown_03004DE0 +_080E05A0: .4byte 0xa2600001 +_080E05A4: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080E05BC + ldr r1, _080E05B4 @ =REG_WINOUT + ldr r2, _080E05B8 @ =0x00003f3d + b _080E05C0 + .align 2, 0 +_080E05B4: .4byte REG_WINOUT +_080E05B8: .4byte 0x00003f3d +_080E05BC: + ldr r1, _080E05FC @ =REG_WINOUT + ldr r2, _080E0600 @ =0x00003f3b +_080E05C0: + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080E0604 @ =REG_WININ + ldr r2, _080E0608 @ =0x00003f3f + adds r0, r2, 0 + strh r0, [r1] + ldr r2, _080E060C @ =gUnknown_030042C4 + ldrh r0, [r5, 0x24] + lsls r0, 8 + ldrh r1, [r5, 0x26] + orrs r0, r1 + strh r0, [r2] + ldr r1, _080E0610 @ =gUnknown_03004240 + movs r0, 0xA0 + strh r0, [r1] + movs r0, 0 + strh r0, [r5, 0x8] + strh r0, [r5, 0xA] + strh r0, [r5, 0xC] + ldr r1, _080E0614 @ =REG_BLDALPHA + ldr r2, _080E0618 @ =0x0000080c + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _080E061C @ =sub_80E0620 + str r0, [r5] +_080E05F2: + add sp, 0x18 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E05FC: .4byte REG_WINOUT +_080E0600: .4byte 0x00003f3b +_080E0604: .4byte REG_WININ +_080E0608: .4byte 0x00003f3f +_080E060C: .4byte gUnknown_030042C4 +_080E0610: .4byte gUnknown_03004240 +_080E0614: .4byte REG_BLDALPHA +_080E0618: .4byte 0x0000080c +_080E061C: .4byte sub_80E0620 + thumb_func_end sub_80E03BC + + thumb_func_start sub_80E0620 +sub_80E0620: @ 80E0620 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E0644 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080E063A + b _080E0784 +_080E063A: + lsls r0, 2 + ldr r1, _080E0648 @ =_080E064C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E0644: .4byte gTasks +_080E0648: .4byte _080E064C + .align 2, 0 +_080E064C: + .4byte _080E0660 + .4byte _080E068C + .4byte _080E06F4 + .4byte _080E0754 + .4byte _080E0768 +_080E0660: + ldrh r0, [r4, 0x12] + adds r0, 0x8 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r4, 0x16] + movs r3, 0x16 + ldrsh r1, [r4, r3] + cmp r0, r1 + blt _080E0676 + strh r2, [r4, 0x12] +_080E0676: + adds r0, r4, 0 + bl sub_80E079C + movs r0, 0x12 + ldrsh r1, [r4, r0] + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _080E068A + b _080E0784 +_080E068A: + b _080E075A +_080E068C: + movs r3, 0x26 + ldrsh r0, [r4, r3] + movs r2, 0x24 + ldrsh r1, [r4, r2] + subs r0, r1 + cmp r0, 0x3F + bgt _080E06A8 + ldrh r0, [r4, 0x24] + subs r0, 0x4 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x26] + adds r0, 0x4 + strh r0, [r4, 0x26] + b _080E06AC +_080E06A8: + movs r0, 0x1 + strh r0, [r4, 0xA] +_080E06AC: + ldr r2, _080E06F0 @ =gUnknown_030042C4 + ldrh r0, [r4, 0x24] + lsls r0, 8 + ldrh r1, [r4, 0x26] + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r4, 0x10] + adds r0, 0x8 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r4, 0x14] + movs r3, 0x14 + ldrsh r1, [r4, r3] + cmp r0, r1 + blt _080E06CE + strh r2, [r4, 0x10] +_080E06CE: + adds r0, r4, 0 + bl sub_80E079C + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080E0784 + movs r3, 0xA + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080E0784 + movs r0, 0 + strh r0, [r4, 0xA] + b _080E075A + .align 2, 0 +_080E06F0: .4byte gUnknown_030042C4 +_080E06F4: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E0784 + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080E0724 + ldrh r1, [r4, 0x1E] + movs r2, 0x1E + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080E0732 + subs r0, r1, 0x1 + strh r0, [r4, 0x1E] + b _080E0732 +_080E0724: + ldrh r1, [r4, 0x20] + movs r3, 0x20 + ldrsh r0, [r4, r3] + cmp r0, 0xF + bgt _080E0732 + adds r0, r1, 0x1 + strh r0, [r4, 0x20] +_080E0732: + ldr r2, _080E0750 @ =REG_BLDALPHA + ldrh r0, [r4, 0x20] + lsls r0, 8 + ldrh r1, [r4, 0x1E] + orrs r0, r1 + strh r0, [r2] + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E0784 + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x10 + bne _080E0784 + b _080E075A + .align 2, 0 +_080E0750: .4byte REG_BLDALPHA +_080E0754: + ldr r1, _080E0764 @ =gUnknown_03004DC0 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080E075A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E0784 + .align 2, 0 +_080E0764: .4byte gUnknown_03004DC0 +_080E0768: + ldr r0, _080E078C @ =gUnknown_030042C4 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E0790 @ =gUnknown_03004240 + strh r1, [r0] + ldr r0, _080E0794 @ =REG_WININ + ldr r3, _080E0798 @ =0x00003f3f + adds r1, r3, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E0784: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E078C: .4byte gUnknown_030042C4 +_080E0790: .4byte gUnknown_03004240 +_080E0794: .4byte REG_WININ +_080E0798: .4byte 0x00003f3f + thumb_func_end sub_80E0620 + + thumb_func_start sub_80E079C +sub_80E079C: @ 80E079C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldrh r0, [r6, 0x12] + ldrh r4, [r6, 0x10] + subs r0, r4 + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0 + beq _080E0890 + movs r2, 0x22 + ldrsh r0, [r6, r2] + bl __divsi3 + mov r8, r0 + movs r3, 0x14 + ldrsh r0, [r6, r3] + lsls r5, r0, 8 + lsls r0, r4, 16 + movs r4, 0 + cmp r0, 0 + ble _080E07FC + ldr r0, _080E0888 @ =gUnknown_03004DE0 + mov r12, r0 + ldr r7, _080E088C @ =gUnknown_03004DC0 +_080E07D0: + lsls r2, r4, 16 + asrs r2, 16 + lsls r3, r2, 1 + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r3, r0 + add r3, r12 + adds r1, r2, 0 + subs r1, 0x9F + ldrh r0, [r6, 0x1C] + subs r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + lsrs r4, r2, 16 + asrs r2, 16 + movs r1, 0x10 + ldrsh r0, [r6, r1] + cmp r2, r0 + blt _080E07D0 +_080E07FC: + ldrh r4, [r6, 0x10] + lsls r3, r4, 16 + asrs r1, r3, 16 + movs r2, 0x12 + ldrsh r0, [r6, r2] + cmp r1, r0 + bgt _080E0846 + ldr r0, _080E0888 @ =gUnknown_03004DE0 + mov r12, r0 + ldr r7, _080E088C @ =gUnknown_03004DC0 +_080E0810: + asrs r4, r3, 16 + cmp r4, 0 + blt _080E0832 + asrs r1, r5, 8 + subs r1, r4 + lsls r3, r4, 1 + ldrb r2, [r7, 0x14] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 7 + adds r3, r0 + add r3, r12 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r6, 0x1C] + adds r1, r2 + strh r1, [r3] +_080E0832: + add r5, r8 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + lsls r3, r4, 16 + asrs r1, r3, 16 + movs r2, 0x12 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _080E0810 +_080E0846: + movs r3, 0x1C + ldrsh r0, [r6, r3] + adds r0, 0x9F + lsls r2, r4, 16 + asrs r1, r2, 16 + subs r5, r0, r1 + movs r3, 0x16 + ldrsh r0, [r6, r3] + cmp r1, r0 + bge _080E08BE + ldr r7, _080E0888 @ =gUnknown_03004DE0 + ldr r4, _080E088C @ =gUnknown_03004DC0 +_080E085E: + asrs r3, r2, 16 + cmp r3, 0 + blt _080E0876 + lsls r2, r3, 1 + ldrb r1, [r4, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r7 + strh r5, [r2] + subs r5, 0x1 +_080E0876: + adds r0, r3, 0x1 + lsls r2, r0, 16 + asrs r1, r2, 16 + movs r3, 0x16 + ldrsh r0, [r6, r3] + cmp r1, r0 + blt _080E085E + b _080E08BE + .align 2, 0 +_080E0888: .4byte gUnknown_03004DE0 +_080E088C: .4byte gUnknown_03004DC0 +_080E0890: + movs r1, 0x1C + ldrsh r0, [r6, r1] + adds r5, r0, 0 + adds r5, 0x9F + movs r4, 0 + ldr r3, _080E08C8 @ =gUnknown_03004DE0 + movs r2, 0xF0 + lsls r2, 3 + adds r6, r3, r2 +_080E08A2: + lsls r0, r4, 16 + asrs r0, 16 + lsls r2, r0, 1 + adds r1, r2, r3 + strh r5, [r1] + adds r2, r6 + strh r5, [r2] + subs r5, 0x1 + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + asrs r0, 16 + cmp r0, 0x6F + ble _080E08A2 +_080E08BE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E08C8: .4byte gUnknown_03004DE0 + thumb_func_end sub_80E079C + + thumb_func_start sub_80E08CC +sub_80E08CC: @ 80E08CC + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + movs r4, 0 + ldr r7, _080E0914 @ =gSprites + movs r1, 0x3 + ands r0, r1 + lsls r5, r0, 2 + movs r0, 0xD + negs r0, r0 + adds r6, r0, 0 +_080E08E2: + lsls r0, r4, 24 + lsrs r0, 24 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080E0902 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r7 + ldrb r0, [r1, 0x5] + ands r0, r6 + orrs r0, r5 + strb r0, [r1, 0x5] +_080E0902: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _080E08E2 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E0914: .4byte gSprites + thumb_func_end sub_80E08CC + + thumb_func_start sub_80E0918 +sub_80E0918: @ 80E0918 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r6, _080E09B8 @ =gBattleAnimBankAttacker + ldrb r0, [r6] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r4, r1, 31 + ldrb r0, [r6] + adds r1, r4, 0 + bl sub_8076034 + ldr r0, _080E09BC @ =gSprites + mov r9, r0 + ldr r0, _080E09C0 @ =gObjectBankIDs + mov r8, r0 + ldrb r0, [r6] + add r0, r8 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r9 + adds r1, 0x3E + ldrb r2, [r1] + movs r7, 0x5 + negs r7, r7 + adds r0, r7, 0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080E09A2 + ldrb r0, [r6] + eors r0, r5 + movs r1, 0x1 + eors r4, r1 + adds r1, r4, 0 + bl sub_8076034 + ldrb r0, [r6] + eors r0, r5 + add r0, r8 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r9 + adds r0, 0x3E + ldrb r2, [r0] + adds r1, r7, 0 + ands r1, r2 + strb r1, [r0] +_080E09A2: + mov r0, r10 + bl DestroyAnimVisualTask + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E09B8: .4byte gBattleAnimBankAttacker +_080E09BC: .4byte gSprites +_080E09C0: .4byte gObjectBankIDs + thumb_func_end sub_80E0918 + + thumb_func_start sub_80E09C4 +sub_80E09C4: @ 80E09C4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r4, _080E0A0C @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r5, r1, 31 + adds r0, r5, 0 + bl sub_8076464 + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080E0A00 + movs r0, 0x1 + eors r5, r0 + adds r0, r5, 0 + bl sub_8076464 +_080E0A00: + adds r0, r6, 0 + bl DestroyAnimVisualTask + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E0A0C: .4byte gBattleAnimBankAttacker + thumb_func_end sub_80E09C4 + + thumb_func_start sub_80E0A10 +sub_80E0A10: @ 80E0A10 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080E0A40 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrb r1, [r1, 0x4] + adds r0, r4, 0 + bl StartSpriteAnim + ldr r0, _080E0A44 @ =sub_8078600 + str r0, [r4, 0x1C] + ldr r1, _080E0A48 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E0A40: .4byte gBattleAnimArgs +_080E0A44: .4byte sub_8078600 +_080E0A48: .4byte move_anim_8072740 + thumb_func_end sub_80E0A10 + + thumb_func_start sub_80E0A4C +sub_80E0A4C: @ 80E0A4C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r7, 0 + ldr r0, _080E0B50 @ =gUnknown_030042C4 + strh r7, [r0] + ldr r0, _080E0B54 @ =gUnknown_03004240 + strh r7, [r0] + ldr r1, _080E0B58 @ =REG_WININ + ldr r2, _080E0B5C @ =0x00003f3f + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r3, _080E0B60 @ =0x00003f3d + adds r0, r3, 0 + strh r0, [r1] + movs r2, 0x80 + lsls r2, 19 + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _080E0B64 @ =REG_BLDCNT + ldr r2, _080E0B68 @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r3, _080E0B6C @ =0x00000c08 + adds r0, r3, 0 + strh r0, [r1] + ldr r5, _080E0B70 @ =REG_BG1CNT + ldrb r1, [r5] + movs r0, 0x4 + negs r0, r0 + mov r8, r0 + ands r0, r1 + strb r0, [r5] + ldrb r1, [r5, 0x1] + movs r0, 0x3F + ands r0, r1 + strb r0, [r5, 0x1] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E0AC4 + ldrb r0, [r5] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r5] +_080E0AC4: + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + beq _080E0B40 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E0B40 + ldr r4, _080E0B74 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _080E0AF4 + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + cmp r0, 0 + bne _080E0B40 +_080E0AF4: + ldrb r0, [r4] + movs r6, 0x2 + eors r0, r6 + bl IsAnimBankSpriteVisible + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E0B40 + ldr r3, _080E0B78 @ =gSprites + ldr r1, _080E0B7C @ =gObjectBankIDs + ldrb r0, [r4] + eors r0, r6 + adds r0, r1 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldrb r1, [r5] + mov r0, r8 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r5] + movs r7, 0x1 +_080E0B40: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E0B84 + ldr r0, _080E0B80 @ =gSharedMem + 0x19348 + ldrh r5, [r0] + b _080E0BCC + .align 2, 0 +_080E0B50: .4byte gUnknown_030042C4 +_080E0B54: .4byte gUnknown_03004240 +_080E0B58: .4byte REG_WININ +_080E0B5C: .4byte 0x00003f3f +_080E0B60: .4byte 0x00003f3d +_080E0B64: .4byte REG_BLDCNT +_080E0B68: .4byte 0x00003f42 +_080E0B6C: .4byte 0x00000c08 +_080E0B70: .4byte REG_BG1CNT +_080E0B74: .4byte gBattleAnimBankAttacker +_080E0B78: .4byte gSprites +_080E0B7C: .4byte gObjectBankIDs +_080E0B80: .4byte gSharedMem + 0x19348 +_080E0B84: + ldr r4, _080E0BA4 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080E0BB0 + ldr r1, _080E0BA8 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E0BAC @ =gEnemyParty + b _080E0BC0 + .align 2, 0 +_080E0BA4: .4byte gBattleAnimBankAttacker +_080E0BA8: .4byte gBattlePartyID +_080E0BAC: .4byte gEnemyParty +_080E0BB0: + ldr r1, _080E0C58 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E0C5C @ =gPlayerParty +_080E0BC0: + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r5, r0, 16 +_080E0BCC: + movs r0, 0 + bl GetAnimBankSpriteId + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080E0C60 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_807A4A0 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, sp + bl sub_8078914 + ldr r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0xC] + ldr r2, _080E0C64 @ =0x040000d4 + add r0, sp, 0xC + str r0, [r2] + str r1, [r2, 0x4] + ldr r0, _080E0C68 @ =0x85000400 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + ldr r0, _080E0C6C @ =gUnknown_08D1D574 + bl LZDecompressVram + ldr r0, _080E0C70 @ =gUnknown_08D1D410 + ldr r1, [sp] + bl LZDecompressVram + ldr r0, _080E0C74 @ =gUnknown_08D1D54C + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette + ldr r2, _080E0C78 @ =gUnknown_030042C0 + ldr r0, _080E0C7C @ =gSprites + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x20] + negs r0, r0 + adds r0, 0x60 + strh r0, [r2] + ldr r2, _080E0C80 @ =gUnknown_030041B4 + ldrh r0, [r1, 0x22] + negs r0, r0 + adds r0, 0x20 + strh r0, [r2] + ldrb r0, [r1, 0x5] + lsrs r0, 4 + adds r0, 0x10 + adds r1, r0, 0 + ldr r2, _080E0C84 @ =gBattleAnimArgs + movs r3, 0x2 + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _080E0C88 + adds r0, r1, 0 + movs r1, 0 + bl sub_8079108 + b _080E0C94 + .align 2, 0 +_080E0C58: .4byte gBattlePartyID +_080E0C5C: .4byte gPlayerParty +_080E0C60: .4byte gBattleAnimBankAttacker +_080E0C64: .4byte 0x040000d4 +_080E0C68: .4byte 0x85000400 +_080E0C6C: .4byte gUnknown_08D1D574 +_080E0C70: .4byte gUnknown_08D1D410 +_080E0C74: .4byte gUnknown_08D1D54C +_080E0C78: .4byte gUnknown_030042C0 +_080E0C7C: .4byte gSprites +_080E0C80: .4byte gUnknown_030041B4 +_080E0C84: .4byte gBattleAnimArgs +_080E0C88: + lsls r0, r1, 4 + ldrh r3, [r2, 0x4] + movs r1, 0x10 + movs r2, 0xB + bl BlendPalette +_080E0C94: + ldr r1, _080E0CC4 @ =gTasks + mov r2, r9 + lsls r0, r2, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + strh r5, [r0, 0x8] + ldr r2, _080E0CC8 @ =gBattleAnimArgs + ldrh r1, [r2] + strh r1, [r0, 0xA] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0xC] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0xE] + strh r7, [r0, 0x14] + ldr r1, _080E0CCC @ =sub_80E0CD0 + str r1, [r0] + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E0CC4: .4byte gTasks +_080E0CC8: .4byte gBattleAnimArgs +_080E0CCC: .4byte sub_80E0CD0 + thumb_func_end sub_80E0A4C + + thumb_func_start sub_80E0CD0 +sub_80E0CD0: @ 80E0CD0 + push {r4-r7,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080E0DF0 @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x1C] + adds r0, 0x4 + movs r5, 0 + strh r0, [r4, 0x1C] + ldr r2, _080E0DF4 @ =gUnknown_030042C0 + ldrh r3, [r2] + subs r1, r3, 0x4 + strh r1, [r2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x80 + bne _080E0DE8 + strh r5, [r4, 0x1C] + adds r0, r3, 0 + adds r0, 0x7C + strh r0, [r2] + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080E0DE8 + movs r0, 0 + bl sub_8076464 + ldr r0, _080E0DF8 @ =gUnknown_030042C4 + strh r5, [r0] + ldr r0, _080E0DFC @ =gUnknown_03004240 + strh r5, [r0] + ldr r0, _080E0E00 @ =REG_WININ + ldr r2, _080E0E04 @ =0x00003f3f + adds r1, r2, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E0D40 + ldr r2, _080E0E08 @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080E0D40: + movs r2, 0x80 + lsls r2, 19 + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + eors r0, r1 + strh r0, [r2] + ldr r0, _080E0E0C @ =REG_BLDCNT + strh r5, [r0] + adds r0, 0x2 + strh r5, [r0] + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldr r6, _080E0E10 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1, 0x5] + lsrs r0, 4 + adds r0, 0x10 + adds r1, r0, 0 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080E0D84 + adds r0, r1, 0 + movs r1, 0x1 + bl sub_8079108 +_080E0D84: + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl DestroySprite + mov r0, sp + bl sub_8078914 + ldr r2, [sp, 0x4] + str r5, [sp, 0xC] + ldr r1, _080E0E14 @ =0x040000d4 + add r0, sp, 0xC + str r0, [r1] + str r2, [r1, 0x4] + ldr r0, _080E0E18 @ =0x85000200 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080E0DE2 + ldr r2, _080E0E1C @ =gObjectBankIDs + ldr r0, _080E0E20 @ =gBattleAnimBankAttacker + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + adds r0, r2 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r6 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] +_080E0DE2: + adds r0, r7, 0 + bl DestroyAnimVisualTask +_080E0DE8: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E0DF0: .4byte gTasks +_080E0DF4: .4byte gUnknown_030042C0 +_080E0DF8: .4byte gUnknown_030042C4 +_080E0DFC: .4byte gUnknown_03004240 +_080E0E00: .4byte REG_WININ +_080E0E04: .4byte 0x00003f3f +_080E0E08: .4byte REG_BG1CNT +_080E0E0C: .4byte REG_BLDCNT +_080E0E10: .4byte gSprites +_080E0E14: .4byte 0x040000d4 +_080E0E18: .4byte 0x85000200 +_080E0E1C: .4byte gObjectBankIDs +_080E0E20: .4byte gBattleAnimBankAttacker + thumb_func_end sub_80E0CD0 + + thumb_func_start sub_80E0E24 +sub_80E0E24: @ 80E0E24 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r0, _080E0E44 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + adds r2, r0, 0 + cmp r1, 0x7 + bhi _080E0E88 + lsls r0, r1, 2 + ldr r1, _080E0E48 @ =_080E0E4C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E0E44: .4byte gBattleAnimArgs +_080E0E48: .4byte _080E0E4C + .align 2, 0 +_080E0E4C: + .4byte _080E0E6C + .4byte _080E0E6C + .4byte _080E0E6C + .4byte _080E0E6C + .4byte _080E0E78 + .4byte _080E0E7C + .4byte _080E0E80 + .4byte _080E0E84 +_080E0E6C: + ldrb r0, [r2] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r2, r0, 24 + b _080E0E8A +_080E0E78: + movs r4, 0 + b _080E0E90 +_080E0E7C: + movs r4, 0x2 + b _080E0E90 +_080E0E80: + movs r4, 0x1 + b _080E0E90 +_080E0E84: + movs r4, 0x3 + b _080E0E90 +_080E0E88: + movs r2, 0xFF +_080E0E8A: + movs r0, 0 + cmp r0, 0 + beq _080E0EB6 +_080E0E90: + adds r0, r4, 0 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080E0EB4 + ldr r0, _080E0EB0 @ =gObjectBankIDs + adds r0, r4, r0 + ldrb r2, [r0] + b _080E0EB6 + .align 2, 0 +_080E0EB0: .4byte gObjectBankIDs +_080E0EB4: + movs r2, 0xFF +_080E0EB6: + cmp r2, 0xFF + beq _080E0ED2 + ldr r1, _080E0EE0 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + ldr r1, _080E0EE4 @ =gBattleAnimArgs + ldrb r1, [r1, 0x2] + bl sub_8079108 +_080E0ED2: + adds r0, r5, 0 + bl DestroyAnimVisualTask + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E0EE0: .4byte gSprites +_080E0EE4: .4byte gBattleAnimArgs + thumb_func_end sub_80E0E24 + + thumb_func_start sub_80E0EE8 +sub_80E0EE8: @ 80E0EE8 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080E0F14 @ =gUnknown_0202F7C4 + ldrb r0, [r2] + cmp r0, 0x1 + bhi _080E0EFC + ldr r1, _080E0F18 @ =gBattleAnimArgs + movs r0, 0 + strh r0, [r1, 0xE] +_080E0EFC: + ldrb r0, [r2] + cmp r0, 0x2 + bne _080E0F08 + ldr r1, _080E0F18 @ =gBattleAnimArgs + movs r0, 0x1 + strh r0, [r1, 0xE] +_080E0F08: + adds r0, r3, 0 + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080E0F14: .4byte gUnknown_0202F7C4 +_080E0F18: .4byte gBattleAnimArgs + thumb_func_end sub_80E0EE8 + + .align 2, 0 @ Don't pad with nop. |