diff options
Diffstat (limited to 'asm/rock.s')
-rw-r--r-- | asm/rock.s | 1558 |
1 files changed, 1558 insertions, 0 deletions
diff --git a/asm/rock.s b/asm/rock.s new file mode 100644 index 000000000..50687a86e --- /dev/null +++ b/asm/rock.s @@ -0,0 +1,1558 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80B4634 +sub_80B4634: @ 80B4634 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080B46A0 @ =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080B4654 + ldr r0, _080B46A4 @ =gBattleAnimTarget + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_8076D9C +_080B4654: + ldrh r0, [r6] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r4, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + adds r0, 0xE + strh r0, [r5, 0x22] + ldrb r1, [r6, 0x2] + adds r0, r5, 0 + bl StartSpriteAnim + adds r0, r5, 0 + bl AnimateSprite + strh r4, [r5, 0x2E] + strh r4, [r5, 0x30] + movs r0, 0x4 + strh r0, [r5, 0x32] + movs r0, 0x10 + strh r0, [r5, 0x34] + ldr r0, _080B46A8 @ =0x0000ffba + strh r0, [r5, 0x36] + ldrh r0, [r6, 0x4] + strh r0, [r5, 0x38] + ldr r1, _080B46AC @ =sub_80B46B4 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r1, _080B46B0 @ =sub_8074BE4 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B46A0: .4byte gBattleAnimArgs +_080B46A4: .4byte gBattleAnimTarget +_080B46A8: .4byte 0x0000ffba +_080B46AC: .4byte sub_80B46B4 +_080B46B0: .4byte sub_8074BE4 + thumb_func_end sub_80B4634 + + thumb_func_start sub_80B46B4 +sub_80B46B4: @ 80B46B4 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x38] + ldrh r2, [r4, 0x20] + adds r0, r1, r2 + strh r0, [r4, 0x20] + movs r0, 0xC0 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r0, 0x4 + strh r0, [r4, 0x32] + movs r0, 0x20 + strh r0, [r4, 0x34] + ldr r0, _080B46EC @ =0x0000ffe8 + strh r0, [r4, 0x36] + ldr r1, _080B46F0 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r1, _080B46F4 @ =sub_8074BE4 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B46EC: .4byte 0x0000ffe8 +_080B46F0: .4byte move_anim_8074EE0 +_080B46F4: .4byte sub_8074BE4 + thumb_func_end sub_80B46B4 + + thumb_func_start sub_80B46F8 +sub_80B46F8: @ 80B46F8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080B4720 @ =gBattleAnimArgs + ldrb r1, [r4, 0xA] + bl StartSpriteAnim + adds r0, r5, 0 + bl AnimateSprite + ldr r0, _080B4724 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080B4728 + ldrh r0, [r5, 0x20] + ldrh r1, [r4] + subs r0, r1 + b _080B472E + .align 2, 0 +_080B4720: .4byte gBattleAnimArgs +_080B4724: .4byte gBattleAnimAttacker +_080B4728: + ldrh r0, [r4] + ldrh r1, [r5, 0x20] + adds r0, r1 +_080B472E: + strh r0, [r5, 0x20] + ldr r3, _080B4770 @ =gBattleAnimArgs + ldrh r2, [r3, 0x2] + ldrh r0, [r5, 0x22] + adds r2, r0 + movs r4, 0 + strh r2, [r5, 0x22] + ldrh r0, [r3, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldrh r1, [r3, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + strh r2, [r5, 0x34] + ldrh r0, [r3, 0x6] + adds r2, r0 + strh r2, [r5, 0x36] + adds r0, r5, 0 + bl sub_80754B8 + strh r4, [r5, 0x34] + strh r4, [r5, 0x36] + ldr r0, _080B4774 @ =sub_8074D00 + str r0, [r5, 0x1C] + ldr r1, _080B4778 @ =move_anim_8074EE0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B4770: .4byte gBattleAnimArgs +_080B4774: .4byte sub_8074D00 +_080B4778: .4byte move_anim_8074EE0 + thumb_func_end sub_80B46F8 + + thumb_func_start sub_80B477C +sub_80B477C: @ 80B477C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080B4794 @ =gBattleAnimArgs + movs r1, 0xC + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B4798 + adds r0, r4, 0 + movs r1, 0 + bl sub_8075160 + b _080B47A0 + .align 2, 0 +_080B4794: .4byte gBattleAnimArgs +_080B4798: + adds r0, r4, 0 + movs r1, 0 + bl sub_8075114 +_080B47A0: + ldr r1, _080B47BC @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x34] + ldr r0, _080B47C0 @ =sub_80B47C4 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B47BC: .4byte gBattleAnimArgs +_080B47C0: .4byte sub_80B47C4 + thumb_func_end sub_80B477C + + thumb_func_start sub_80B47C4 +sub_80B47C4: @ 80B47C4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x36] + adds r0, r1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x26] + movs r2, 0x38 + ldrsh r0, [r4, r2] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x32] + ldrh r1, [r4, 0x38] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080B480A + adds r0, r4, 0 + bl DestroyAnimSprite +_080B480A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B47C4 + + thumb_func_start do_boulder_dust +do_boulder_dust: @ 80B4810 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r1, _080B48E4 @ =0x00003f42 + movs r0, 0x50 + bl SetGpuReg + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl SetGpuReg + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl SetAnimBgAttribute + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl SetAnimBgAttribute + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B4854 + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0x1 + bl SetAnimBgAttribute +_080B4854: + ldr r0, _080B48E8 @ =gBattle_BG1_X + strh r5, [r0] + ldr r4, _080B48EC @ =gBattle_BG1_Y + strh r5, [r4] + movs r0, 0x14 + movs r1, 0 + bl SetGpuReg + ldrh r1, [r4] + movs r0, 0x16 + bl SetGpuReg + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080B48F0 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap + bl sub_807543C + mov r0, sp + ldrb r0, [r0, 0x9] + ldr r1, _080B48F4 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet + mov r2, sp + ldrh r2, [r2, 0xA] + bl sub_80753B4 + ldr r0, _080B48F8 @ =gFile_graphics_battle_anims_sprites_261_palette + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080B48B0 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80730C0 +_080B48B0: + ldr r0, _080B48FC @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080B48CA + ldr r0, _080B4900 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080B48CA + movs r5, 0x1 +_080B48CA: + ldr r0, _080B4904 @ =gTasks + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + strh r5, [r1, 0x8] + ldr r0, _080B4908 @ =sub_80B490C + str r0, [r1] + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B48E4: .4byte 0x00003f42 +_080B48E8: .4byte gBattle_BG1_X +_080B48EC: .4byte gBattle_BG1_Y +_080B48F0: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap +_080B48F4: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet +_080B48F8: .4byte gFile_graphics_battle_anims_sprites_261_palette +_080B48FC: .4byte gBattleAnimArgs +_080B4900: .4byte gBattleAnimAttacker +_080B4904: .4byte gTasks +_080B4908: .4byte sub_80B490C + thumb_func_end do_boulder_dust + + thumb_func_start sub_80B490C +sub_80B490C: @ 80B490C + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080B4934 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0 + bne _080B4940 + ldr r1, _080B4938 @ =gBattle_BG1_X + ldr r3, _080B493C @ =0x0000fffa + adds r0, r3, 0 + ldrh r3, [r1] + adds r0, r3 + b _080B4946 + .align 2, 0 +_080B4934: .4byte gTasks +_080B4938: .4byte gBattle_BG1_X +_080B493C: .4byte 0x0000fffa +_080B4940: + ldr r1, _080B4974 @ =gBattle_BG1_X + ldrh r0, [r1] + adds r0, 0x6 +_080B4946: + strh r0, [r1] + ldr r1, _080B4978 @ =gBattle_BG1_Y + ldr r3, _080B497C @ =0x0000ffff + adds r0, r3, 0 + ldrh r3, [r1] + adds r0, r3 + strh r0, [r1] + lsls r1, r5, 2 + adds r0, r1, r5 + lsls r0, 3 + adds r0, r2 + movs r3, 0x20 + ldrsh r0, [r0, r3] + adds r4, r1, 0 + cmp r0, 0x4 + bls _080B4968 + b _080B4A96 +_080B4968: + lsls r0, 2 + ldr r1, _080B4980 @ =_080B4984 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B4974: .4byte gBattle_BG1_X +_080B4978: .4byte gBattle_BG1_Y +_080B497C: .4byte 0x0000ffff +_080B4980: .4byte _080B4984 + .align 2, 0 +_080B4984: + .4byte _080B4998 + .4byte _080B49DA + .4byte _080B49F4 + .4byte _080B4A36 + .4byte _080B4A58 +_080B4998: + adds r0, r4, r5 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080B4A96 + strh r5, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + adds r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0x7 + bne _080B4A96 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r5, [r4, 0x1E] + b _080B4A96 +_080B49DA: + adds r0, r4, r5 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x65 + bne _080B4A96 + movs r0, 0x7 + strh r0, [r1, 0x1E] + b _080B4A4C +_080B49F4: + adds r0, r4, r5 + lsls r0, 3 + adds r4, r0, r2 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080B4A96 + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + subs r1, 0x1 + strh r1, [r4, 0x1E] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r2, 0x1E + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080B4A96 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r1, [r4, 0x1E] + b _080B4A96 +_080B4A36: + mov r0, sp + bl sub_80752A0 + mov r0, sp + ldrb r0, [r0, 0x9] + bl sub_8075358 + ldr r0, _080B4A54 @ =gTasks + adds r1, r4, r5 + lsls r1, 3 + adds r1, r0 +_080B4A4C: + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + b _080B4A96 + .align 2, 0 +_080B4A54: .4byte gTasks +_080B4A58: + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _080B4A6C + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + bl SetAnimBgAttribute +_080B4A6C: + ldr r0, _080B4AA0 @ =gBattle_BG1_X + movs r1, 0 + strh r1, [r0] + ldr r0, _080B4AA4 @ =gBattle_BG1_Y + strh r1, [r0] + movs r0, 0x50 + movs r1, 0 + bl SetGpuReg + movs r0, 0x52 + movs r1, 0 + bl SetGpuReg + movs r0, 0x1 + movs r1, 0x4 + movs r2, 0x1 + bl SetAnimBgAttribute + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080B4A96: + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B4AA0: .4byte gBattle_BG1_X +_080B4AA4: .4byte gBattle_BG1_Y + thumb_func_end sub_80B490C + + thumb_func_start sub_80B4AA8 +sub_80B4AA8: @ 80B4AA8 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080B4B24 + ldr r4, _080B4AEC @ =gBattleAnimArgs + movs r2, 0x6 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080B4AF4 + ldr r0, _080B4AF0 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080B4AF4 + movs r0, 0x98 + lsls r0, 1 + strh r0, [r5, 0x20] + ldrh r0, [r4, 0x2] + negs r0, r0 + strh r0, [r4, 0x2] + movs r0, 0x1 + strh r0, [r5, 0x38] + ldrb r1, [r5, 0x3] + subs r0, 0x40 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r5, 0x3] + b _080B4AF8 + .align 2, 0 +_080B4AEC: .4byte gBattleAnimArgs +_080B4AF0: .4byte gBattleAnimAttacker +_080B4AF4: + ldr r0, _080B4B18 @ =0x0000ffc0 + strh r0, [r5, 0x20] +_080B4AF8: + ldr r4, _080B4B1C @ =gBattleAnimArgs + ldrh r0, [r4] + strh r0, [r5, 0x22] + ldr r1, _080B4B20 @ =gUnknown_83E7470 + adds r0, r5, 0 + bl SetSubspriteTables + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x30] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080B4B80 + .align 2, 0 +_080B4B18: .4byte 0x0000ffc0 +_080B4B1C: .4byte gBattleAnimArgs +_080B4B20: .4byte gUnknown_83E7470 +_080B4B24: + ldrh r1, [r5, 0x30] + ldrh r3, [r5, 0x34] + adds r1, r3 + ldrh r2, [r5, 0x32] + ldrh r0, [r5, 0x36] + adds r2, r0 + lsls r0, r1, 16 + asrs r0, 24 + ldrh r3, [r5, 0x24] + adds r0, r3 + strh r0, [r5, 0x24] + lsls r0, r2, 16 + asrs r0, 24 + ldrh r3, [r5, 0x26] + adds r0, r3 + strh r0, [r5, 0x26] + movs r0, 0xFF + ands r1, r0 + strh r1, [r5, 0x34] + ands r2, r0 + strh r2, [r5, 0x36] + movs r1, 0x38 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080B4B6A + movs r2, 0x20 + ldrsh r0, [r5, r2] + movs r3, 0x24 + ldrsh r1, [r5, r3] + adds r0, r1 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + ble _080B4B80 + b _080B4B7C +_080B4B6A: + movs r1, 0x20 + ldrsh r0, [r5, r1] + movs r2, 0x24 + ldrsh r1, [r5, r2] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _080B4B80 +_080B4B7C: + ldr r0, _080B4B88 @ =DestroyAnimSprite + str r0, [r5, 0x1C] +_080B4B80: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B4B88: .4byte DestroyAnimSprite + thumb_func_end sub_80B4AA8 + + thumb_func_start sub_80B4B8C +sub_80B4B8C: @ 80B4B8C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B4BC4 @ =gBattleAnimArgs + ldrb r1, [r5, 0x8] + bl StartSpriteAnim + adds r0, r4, 0 + movs r1, 0 + bl sub_8075160 + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x32] + ldrh r0, [r5, 0x4] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x36] + ldr r0, _080B4BC8 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080B4BCC @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B4BC4: .4byte gBattleAnimArgs +_080B4BC8: .4byte sub_8075590 +_080B4BCC: .4byte DestroyAnimSprite + thumb_func_end sub_80B4B8C + + thumb_func_start sub_80B4BD0 +sub_80B4BD0: @ 80B4BD0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080B4C50 @ =gTasks + adds r6, r1, r0 + ldr r5, _080B4C54 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r1, 0xC0 + lsls r1, 13 + adds r0, r1 + lsrs r7, r0, 16 + ldr r4, _080B4C58 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r2, 0xC0 + lsls r2, 13 + adds r0, r2 + lsrs r0, 16 + mov r8, r0 + ldrb r1, [r5] + movs r0, 0x2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _080B4C40 + mov r8, r7 +_080B4C40: + bl sub_80B4FB8 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bne _080B4C5C + movs r0, 0x20 + b _080B4C62 + .align 2, 0 +_080B4C50: .4byte gTasks +_080B4C54: .4byte gBattleAnimAttacker +_080B4C58: .4byte gBattleAnimTarget +_080B4C5C: + lsls r1, r5, 3 + movs r0, 0x30 + subs r0, r1 +_080B4C62: + strh r0, [r6, 0x18] + movs r4, 0 + strh r4, [r6, 0x8] + strh r4, [r6, 0x1E] + strh r4, [r6, 0x1A] + movs r0, 0x1 + strh r0, [r6, 0x20] + movs r1, 0x18 + ldrsh r0, [r6, r1] + cmp r0, 0 + bge _080B4C7A + adds r0, 0x7 +_080B4C7A: + asrs r0, 3 + subs r0, 0x1 + strh r0, [r6, 0x1C] + mov r2, r9 + lsls r0, r2, 3 + strh r0, [r6, 0xC] + lsls r0, r7, 3 + strh r0, [r6, 0xE] + mov r1, r10 + subs r0, r1, r2 + lsls r0, 3 + movs r2, 0x18 + ldrsh r1, [r6, r2] + bl __divsi3 + strh r0, [r6, 0x10] + mov r1, r8 + subs r0, r1, r7 + lsls r0, 3 + movs r2, 0x18 + ldrsh r1, [r6, r2] + bl __divsi3 + strh r0, [r6, 0x12] + strh r4, [r6, 0x14] + strh r4, [r6, 0x16] + movs r0, 0x40 + negs r0, r0 + bl sub_8073A44 + adds r4, r0, 0 + lsls r4, 24 + asrs r4, 8 + lsrs r4, 16 + movs r0, 0x3F + bl sub_8073A44 + lsls r0, 24 + strh r4, [r6, 0x22] + asrs r0, 24 + lsls r4, 16 + asrs r4, 16 + subs r0, r4 + movs r2, 0x18 + ldrsh r1, [r6, r2] + bl __divsi3 + strh r0, [r6, 0x24] + strh r5, [r6, 0xA] + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x26] + ldr r0, _080B4CFC @ =sub_80B4D00 + str r0, [r6] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B4CFC: .4byte sub_80B4D00 + thumb_func_end sub_80B4BD0 + + thumb_func_start sub_80B4D00 +sub_80B4D00: @ 80B4D00 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B4D24 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080B4D1A + b _080B4E68 +_080B4D1A: + lsls r0, 2 + ldr r1, _080B4D28 @ =_080B4D2C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B4D24: .4byte gTasks +_080B4D28: .4byte _080B4D2C + .align 2, 0 +_080B4D2C: + .4byte _080B4D40 + .4byte _080B4DA4 + .4byte _080B4DAC + .4byte _080B4E08 + .4byte _080B4E5A +_080B4D40: + ldrh r2, [r4, 0x14] + ldrh r0, [r4, 0x10] + subs r2, r0 + strh r2, [r4, 0x14] + ldrh r0, [r4, 0x16] + ldrh r1, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0x16] + ldr r3, _080B4DA0 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + lsls r2, 16 + asrs r2, 19 + strh r2, [r0, 0x24] + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r0, [r4, 0x16] + lsls r0, 16 + asrs r0, 19 + strh r0, [r1, 0x26] + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080B4D90 + movs r0, 0x14 + strh r0, [r4, 0x1E] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080B4D90: + ldrh r1, [r4, 0x22] + lsls r1, 24 + asrs r1, 24 + movs r0, 0x9B + bl PlaySE12WithPanning + b _080B4E68 + .align 2, 0 +_080B4DA0: .4byte gSprites +_080B4DA4: + ldrh r0, [r4, 0x1E] + subs r0, 0x1 + strh r0, [r4, 0x1E] + b _080B4E4C +_080B4DAC: + ldrh r0, [r4, 0x1A] + subs r0, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + beq _080B4DCC + ldrh r0, [r4, 0x10] + ldrh r2, [r4, 0x14] + adds r0, r2 + strh r0, [r4, 0x14] + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x16] + adds r0, r1 + strh r0, [r4, 0x16] + b _080B4DD6 +_080B4DCC: + strh r0, [r4, 0x14] + strh r0, [r4, 0x16] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080B4DD6: + ldr r2, _080B4E04 @ =gSprites + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r4, 0x14] + lsls r0, 16 + asrs r0, 19 + strh r0, [r1, 0x24] + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r4, 0x16] + lsls r0, 16 + asrs r0, 19 + strh r0, [r1, 0x26] + b _080B4E68 + .align 2, 0 +_080B4E04: .4byte gSprites +_080B4E08: + ldrh r0, [r4, 0x10] + ldrh r2, [r4, 0xC] + adds r0, r2 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0xE] + adds r0, r1 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x1C + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080B4E46 + movs r0, 0 + strh r0, [r4, 0x1A] + adds r0, r4, 0 + bl sub_80B4E70 + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x22] + adds r1, r0 + strh r1, [r4, 0x22] + lsls r1, 24 + asrs r1, 24 + movs r0, 0xA8 + bl PlaySE12WithPanning +_080B4E46: + ldrh r0, [r4, 0x18] + subs r0, 0x1 + strh r0, [r4, 0x18] +_080B4E4C: + lsls r0, 16 + cmp r0, 0 + bne _080B4E68 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B4E68 +_080B4E5A: + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B4E68 + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080B4E68: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B4D00 + + thumb_func_start sub_80B4E70 +sub_80B4E70: @ 80B4E70 + push {r4-r7,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bhi _080B4F60 + lsls r0, 2 + ldr r1, _080B4E8C @ =_080B4E90 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B4E8C: .4byte _080B4E90 + .align 2, 0 +_080B4E90: + .4byte _080B4EA4 + .4byte _080B4EB0 + .4byte _080B4EB0 + .4byte _080B4EBC + .4byte _080B4EC8 +_080B4EA4: + ldr r3, _080B4EAC @ =gUnknown_83E74D8 + movs r5, 0 + b _080B4ECC + .align 2, 0 +_080B4EAC: .4byte gUnknown_83E74D8 +_080B4EB0: + ldr r3, _080B4EB8 @ =gUnknown_83E74F0 + movs r5, 0x50 + b _080B4ECC + .align 2, 0 +_080B4EB8: .4byte gUnknown_83E74F0 +_080B4EBC: + ldr r3, _080B4EC4 @ =gUnknown_83E74F0 + movs r5, 0x40 + b _080B4ECC + .align 2, 0 +_080B4EC4: .4byte gUnknown_83E74F0 +_080B4EC8: + ldr r3, _080B4F68 @ =gUnknown_83E74F0 + movs r5, 0x30 +_080B4ECC: + ldrh r1, [r4, 0xC] + lsls r1, 16 + asrs r1, 19 + lsls r1, 16 + lsrs r1, 16 + ldrh r2, [r4, 0xE] + lsls r2, 16 + asrs r2, 19 + lsls r2, 16 + movs r6, 0x20 + ldrsh r0, [r4, r6] + lsls r0, 2 + adds r1, r0 + lsls r1, 16 + lsrs r6, r1, 16 + asrs r1, 16 + lsrs r7, r2, 16 + asrs r2, 16 + adds r0, r3, 0 + movs r3, 0x23 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080B4F58 + ldr r1, _080B4F6C @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0x12 + strh r1, [r0, 0x2E] + movs r2, 0x20 + ldrsh r1, [r4, r2] + lsls r2, r1, 2 + adds r2, r1 + lsls r2, 2 + adds r2, r6, r2 + movs r6, 0xA + ldrsh r3, [r4, r6] + lsls r1, r3, 1 + adds r1, r3 + adds r2, r1 + strh r2, [r0, 0x32] + strh r7, [r0, 0x36] + movs r1, 0xA + ldrsh r2, [r4, r1] + lsls r2, 1 + movs r3, 0x10 + negs r3, r3 + adds r1, r3, 0 + subs r1, r2 + strh r1, [r0, 0x38] + ldrh r3, [r0, 0x4] + lsls r2, r3, 22 + lsrs r2, 22 + adds r2, r5 + ldr r5, _080B4F70 @ =0x000003ff + adds r1, r5, 0 + ands r2, r1 + ldr r1, _080B4F74 @ =0xfffffc00 + ands r1, r3 + orrs r1, r2 + strh r1, [r0, 0x4] + bl sub_8075068 + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] +_080B4F58: + movs r6, 0x20 + ldrsh r0, [r4, r6] + negs r0, r0 + strh r0, [r4, 0x20] +_080B4F60: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B4F68: .4byte gUnknown_83E74F0 +_080B4F6C: .4byte gSprites +_080B4F70: .4byte 0x000003ff +_080B4F74: .4byte 0xfffffc00 + thumb_func_end sub_80B4E70 + + thumb_func_start sub_80B4F78 +sub_80B4F78: @ 80B4F78 + push {r4,lr} + adds r4, r0, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _080B4FAA + ldr r0, _080B4FB0 @ =sub_80B4D00 + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080B4FA4 + ldr r0, _080B4FB4 @ =gTasks + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x1E] + subs r0, 0x1 + strh r0, [r1, 0x1E] +_080B4FA4: + adds r0, r4, 0 + bl DestroySprite +_080B4FAA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B4FB0: .4byte sub_80B4D00 +_080B4FB4: .4byte gTasks + thumb_func_end sub_80B4F78 + + thumb_func_start sub_80B4FB8 +sub_80B4FB8: @ 80B4FB8 + push {lr} + ldr r0, _080B4FE0 @ =gAnimDisableStructPtr + ldr r0, [r0] + ldrb r1, [r0, 0x11] + lsrs r0, r1, 4 + lsls r1, 28 + lsrs r1, 28 + subs r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xFF + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x4 + bls _080B4FDA + movs r1, 0x1 +_080B4FDA: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_080B4FE0: .4byte gAnimDisableStructPtr + thumb_func_end sub_80B4FB8 + + thumb_func_start sub_80B4FE4 +sub_80B4FE4: @ 80B4FE4 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B501C @ =gBattleAnimArgs + ldrb r1, [r5, 0x8] + bl StartSpriteAnim + ldrh r0, [r5] + strh r0, [r4, 0x24] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + ldrh r1, [r5, 0x4] + subs r0, r1 + strh r0, [r4, 0x34] + movs r0, 0x3 + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080B5020 @ =sub_80B5024 + str r0, [r4, 0x1C] + adds r4, 0x3E + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B501C: .4byte gBattleAnimArgs +_080B5020: .4byte sub_80B5024 + thumb_func_end sub_80B4FE4 + + thumb_func_start sub_80B5024 +sub_80B5024: @ 80B5024 + push {lr} + adds r2, r0, 0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r3] + ldrh r1, [r2, 0x34] + movs r3, 0x34 + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _080B505C + ldrh r3, [r2, 0x32] + adds r0, r1, r3 + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x2E] + adds r1, r0 + strh r1, [r2, 0x34] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r1, 16 + cmp r1, 0 + ble _080B506E + movs r0, 0 + strh r0, [r2, 0x34] + b _080B506E +_080B505C: + ldrh r0, [r2, 0x30] + subs r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _080B506E + adds r0, r2, 0 + bl DestroyAnimSprite +_080B506E: + pop {r0} + bx r0 + thumb_func_end sub_80B5024 + + thumb_func_start sub_80B5074 +sub_80B5074: @ 80B5074 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080B509C @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B5090 + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim +_080B5090: + adds r0, r4, 0 + bl sub_8075DF4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B509C: .4byte gBattleAnimAttacker + thumb_func_end sub_80B5074 + + thumb_func_start sub_80B50A0 +sub_80B50A0: @ 80B50A0 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B50EC @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B50F0 @ =gBattleAnimArgs + ldrh r3, [r2] + ldrh r5, [r4, 0x20] + adds r1, r3, r5 + strh r1, [r4, 0x20] + ldrh r1, [r2, 0x2] + adds r0, r1 + strh r0, [r4, 0x22] + strh r3, [r4, 0x30] + strh r1, [r4, 0x32] + ldrh r0, [r2, 0x4] + strh r0, [r4, 0x38] + ldrb r1, [r2, 0x6] + adds r0, r4, 0 + bl StartSpriteAnim + ldr r0, _080B50F4 @ =sub_80B50F8 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B50EC: .4byte gBattleAnimTarget +_080B50F0: .4byte gBattleAnimArgs +_080B50F4: .4byte sub_80B50F8 + thumb_func_end sub_80B50A0 + + thumb_func_start sub_80B50F8 +sub_80B50F8: @ 80B50F8 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x8 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r1, 0x28 + bl __divsi3 + ldrh r1, [r4, 0x24] + adds r1, r0 + strh r1, [r4, 0x24] + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x26] + subs r1, r0 + strh r1, [r4, 0x26] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x8C + ble _080B5142 + adds r0, r4, 0 + bl DestroyAnimSprite +_080B5142: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B50F8 + + thumb_func_start sub_80B5148 +sub_80B5148: @ 80B5148 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080B5180 @ =gUnknown_2037EE8 + ldr r0, [r2] + cmp r0, 0x20 + bgt _080B515C + ldr r1, _080B5184 @ =gBattleAnimArgs + movs r0, 0 + strh r0, [r1, 0xE] +_080B515C: + ldr r2, [r2] + adds r0, r2, 0 + subs r0, 0x21 + cmp r0, 0x20 + bhi _080B516C + ldr r1, _080B5184 @ =gBattleAnimArgs + movs r0, 0x1 + strh r0, [r1, 0xE] +_080B516C: + cmp r2, 0x41 + ble _080B5176 + ldr r1, _080B5184 @ =gBattleAnimArgs + movs r0, 0x2 + strh r0, [r1, 0xE] +_080B5176: + adds r0, r3, 0 + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080B5180: .4byte gUnknown_2037EE8 +_080B5184: .4byte gBattleAnimArgs + thumb_func_end sub_80B5148 + + thumb_func_start sub_80B5188 +sub_80B5188: @ 80B5188 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080B51E4 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080B51AA + movs r0, 0 + bl sub_8075458 + movs r0, 0xC8 + strh r0, [r5, 0xA] +_080B51AA: + ldr r4, _080B51E8 @ =gBattle_BG3_Y + movs r1, 0xA + ldrsh r0, [r5, r1] + movs r1, 0xA + bl __divsi3 + ldrh r1, [r4] + adds r1, r0 + strh r1, [r4] + ldrh r0, [r5, 0xA] + subs r0, 0x3 + strh r0, [r5, 0xA] + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x78 + bne _080B51D6 + movs r0, 0x1 + bl sub_8075458 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080B51D6: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B51E4: .4byte gTasks +_080B51E8: .4byte gBattle_BG3_Y + thumb_func_end sub_80B5188 + + thumb_func_start sub_80B51EC +sub_80B51EC: @ 80B51EC + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080B5258 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B5218 + movs r0, 0 + bl sub_8075458 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + ldr r0, _080B525C @ =gBattle_BG3_Y + ldrh r0, [r0] + strh r0, [r4, 0xC] +_080B5218: + ldrh r0, [r4, 0xA] + adds r0, 0x50 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0xA] + ldr r6, _080B525C @ =gBattle_BG3_Y + movs r2, 0xA + ldrsh r1, [r4, r2] + movs r0, 0x4 + bl Cos + ldrh r4, [r4, 0xC] + adds r0, r4 + strh r0, [r6] + ldr r0, _080B5260 @ =gBattleAnimArgs + movs r2, 0xE + ldrsh r1, [r0, r2] + ldr r0, _080B5264 @ =0x00000fff + cmp r1, r0 + bne _080B5250 + movs r0, 0 + strh r0, [r6] + movs r0, 0x1 + bl sub_8075458 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080B5250: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B5258: .4byte gTasks +_080B525C: .4byte gBattle_BG3_Y +_080B5260: .4byte gBattleAnimArgs +_080B5264: .4byte 0x00000fff + thumb_func_end sub_80B51EC + + .align 2, 0 @ Don't pad with nop. |