diff options
Diffstat (limited to 'asm/ground.s')
-rw-r--r-- | asm/ground.s | 1787 |
1 files changed, 1787 insertions, 0 deletions
diff --git a/asm/ground.s b/asm/ground.s new file mode 100644 index 000000000..4009c7056 --- /dev/null +++ b/asm/ground.s @@ -0,0 +1,1787 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80B8B6C +sub_80B8B6C: @ 80B8B6C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080B8BC4 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + movs r0, 0x14 + strh r0, [r4, 0x2E] + ldr r5, _080B8BC8 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080B8BCC @ =0x0000ffd8 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_8075068 + ldr r0, _080B8BD0 @ =sub_80B8BD4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B8BC4: .4byte gBattleAnimAttacker +_080B8BC8: .4byte gBattleAnimTarget +_080B8BCC: .4byte 0x0000ffd8 +_080B8BD0: .4byte sub_80B8BD4 + thumb_func_end sub_80B8B6C + + thumb_func_start sub_80B8BD4 +sub_80B8BD4: @ 80B8BD4 + push {r4,r5,lr} + adds r5, r0, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _080B8C28 + ldrh r0, [r5, 0x24] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r1, [r5, 0x26] + strh r1, [r5, 0x24] + movs r0, 0x14 + strh r0, [r5, 0x2E] + ldr r4, _080B8C30 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + movs r0, 0x28 + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_8075068 + ldr r0, _080B8C34 @ =sub_80B8C38 + str r0, [r5, 0x1C] +_080B8C28: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B8C30: .4byte gBattleAnimAttacker +_080B8C34: .4byte sub_80B8C38 + thumb_func_end sub_80B8BD4 + + thumb_func_start sub_80B8C38 +sub_80B8C38: @ 80B8C38 + push {r4,lr} + adds r4, r0, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _080B8C4C + adds r0, r4, 0 + bl DestroyAnimSprite +_080B8C4C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B8C38 + + thumb_func_start sub_80B8C54 +sub_80B8C54: @ 80B8C54 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8075114 + ldr r0, _080B8CB4 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080B8C74 + ldr r1, _080B8CB8 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080B8C74: + ldr r4, _080B8CB8 @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _080B8CBC @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r6, 0x36] + ldr r0, _080B8CC0 @ =sub_8075590 + str r0, [r6, 0x1C] + ldr r1, _080B8CC4 @ =DestroyAnimSprite + adds r0, r6, 0 + bl StoreSpriteCallbackInData6 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B8CB4: .4byte gBattleAnimAttacker +_080B8CB8: .4byte gBattleAnimArgs +_080B8CBC: .4byte gBattleAnimTarget +_080B8CC0: .4byte sub_8075590 +_080B8CC4: .4byte DestroyAnimSprite + thumb_func_end sub_80B8C54 + + thumb_func_start sub_80B8CC8 +sub_80B8CC8: @ 80B8CC8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r4, _080B8D48 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074844 + lsls r0, 24 + lsrs r7, r0, 24 + bl Random + movs r4, 0x1F + adds r5, r4, 0 + ands r5, r0 + bl Random + ands r4, r0 + adds r1, r5, 0 + cmp r1, 0x10 + ble _080B8D10 + movs r0, 0x10 + subs r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 +_080B8D10: + lsls r0, r4, 16 + asrs r1, r0, 16 + cmp r1, 0x10 + ble _080B8D20 + movs r0, 0x10 + subs r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_080B8D20: + ldr r0, _080B8D4C @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r6, 0x2E] + mov r1, r8 + adds r0, r1, r5 + strh r0, [r6, 0x32] + adds r0, r7, r4 + strh r0, [r6, 0x36] + ldr r0, _080B8D50 @ =sub_8075590 + str r0, [r6, 0x1C] + ldr r1, _080B8D54 @ =move_anim_8074EE0 + adds r0, r6, 0 + bl StoreSpriteCallbackInData6 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B8D48: .4byte gBattleAnimTarget +_080B8D4C: .4byte gBattleAnimArgs +_080B8D50: .4byte sub_8075590 +_080B8D54: .4byte move_anim_8074EE0 + thumb_func_end sub_80B8CC8 + + thumb_func_start sub_80B8D58 +sub_80B8D58: @ 80B8D58 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x1 + ldr r3, _080B8DB8 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080B8DBC @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r6, _080B8DC0 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080B8DCC + ldr r4, _080B8DC4 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r6, 0x2] + adds r0, r2 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r3, [r6, 0x4] + adds r0, r3 + strh r0, [r5, 0x22] + movs r1, 0x2 + ldrsh r0, [r6, r1] + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + ble _080B8DB2 + movs r1, 0x1 +_080B8DB2: + strh r1, [r5, 0x2E] + ldr r0, _080B8DC8 @ =sub_80B8DE8 + b _080B8DDA + .align 2, 0 +_080B8DB8: .4byte 0x000003ff +_080B8DBC: .4byte 0xfffffc00 +_080B8DC0: .4byte gBattleAnimArgs +_080B8DC4: .4byte gBattleAnimAttacker +_080B8DC8: .4byte sub_80B8DE8 +_080B8DCC: + ldrh r0, [r6, 0x2] + strh r0, [r5, 0x20] + ldrh r0, [r6, 0x4] + strh r0, [r5, 0x22] + negs r0, r0 + strh r0, [r5, 0x26] + ldr r0, _080B8DE4 @ =sub_80B8E24 +_080B8DDA: + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B8DE4: .4byte sub_80B8E24 + thumb_func_end sub_80B8D58 + + thumb_func_start sub_80B8DE8 +sub_80B8DE8: @ 80B8DE8 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B8E06 + movs r0, 0 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x20] + adds r0, r1 + strh r0, [r2, 0x20] +_080B8E06: + ldrh r0, [r2, 0x22] + subs r0, 0x4 + strh r0, [r2, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x4 + negs r1, r1 + cmp r0, r1 + bge _080B8E1E + adds r0, r2, 0 + bl DestroyAnimSprite +_080B8E1E: + pop {r0} + bx r0 + thumb_func_end sub_80B8DE8 + + thumb_func_start sub_80B8E24 +sub_80B8E24: @ 80B8E24 + push {lr} + adds r3, r0, 0 + movs r0, 0x2E + ldrsh r1, [r3, r0] + cmp r1, 0 + beq _080B8E36 + cmp r1, 0x1 + beq _080B8E4C + b _080B8E8E +_080B8E36: + ldrh r0, [r3, 0x26] + adds r0, 0x4 + strh r0, [r3, 0x26] + lsls r0, 16 + cmp r0, 0 + blt _080B8E8E + strh r1, [r3, 0x26] + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + b _080B8E8E +_080B8E4C: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + cmp r0, 0 + ble _080B8E8E + movs r0, 0 + strh r0, [r3, 0x30] + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + ldrb r2, [r1] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080B8E8E + adds r0, r3, 0 + bl DestroyAnimSprite +_080B8E8E: + pop {r0} + bx r0 + thumb_func_end sub_80B8E24 + + thumb_func_start sub_80B8E94 +sub_80B8E94: @ 80B8E94 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B8EB4 @ =gTasks + adds r1, r0, r1 + ldr r0, _080B8EB8 @ =gBattleAnimArgs + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, 0 + bne _080B8EC0 + ldr r0, _080B8EBC @ =sub_80B8ED4 + b _080B8EC2 + .align 2, 0 +_080B8EB4: .4byte gTasks +_080B8EB8: .4byte gBattleAnimArgs +_080B8EBC: .4byte sub_80B8ED4 +_080B8EC0: + ldr r0, _080B8ED0 @ =sub_80B908C +_080B8EC2: + str r0, [r1] + ldr r1, [r1] + adds r0, r2, 0 + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B8ED0: .4byte sub_80B908C + thumb_func_end sub_80B8E94 + + thumb_func_start sub_80B8ED4 +sub_80B8ED4: @ 80B8ED4 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B8EF8 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080B8EEE + b _080B9082 +_080B8EEE: + lsls r0, 2 + ldr r1, _080B8EFC @ =_080B8F00 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B8EF8: .4byte gTasks +_080B8EFC: .4byte _080B8F00 + .align 2, 0 +_080B8F00: + .4byte _080B8F14 + .4byte _080B8F9C + .4byte _080B8FAC + .4byte _080B9050 + .4byte _080B9064 +_080B8F14: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r0, _080B8F3C @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1E] + cmp r0, 0x1 + bne _080B8F48 + ldr r0, _080B8F40 @ =gBattle_BG1_X + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080B8F44 @ =gBattle_BG1_Y + b _080B8F50 + .align 2, 0 +_080B8F3C: .4byte gBattleAnimAttacker +_080B8F40: .4byte gBattle_BG1_X +_080B8F44: .4byte gBattle_BG1_Y +_080B8F48: + ldr r0, _080B8F8C @ =gBattle_BG2_X + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080B8F90 @ =gBattle_BG2_Y +_080B8F50: + ldrh r0, [r0] + strh r0, [r4, 0x22] + ldr r0, _080B8F94 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r4, 0x24] + adds r0, 0x20 + strh r0, [r4, 0x26] + cmp r1, 0 + bge _080B8F72 + movs r0, 0 + strh r0, [r4, 0x24] +_080B8F72: + ldr r2, _080B8F98 @ =gSprites + movs r3, 0x1C + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + b _080B9056 + .align 2, 0 +_080B8F8C: .4byte gBattle_BG2_X +_080B8F90: .4byte gBattle_BG2_Y +_080B8F94: .4byte gBattleAnimAttacker +_080B8F98: .4byte gSprites +_080B8F9C: + ldrb r0, [r4, 0x1E] + movs r2, 0x24 + ldrsh r1, [r4, r2] + movs r3, 0x26 + ldrsh r2, [r4, r3] + bl sub_80B92B8 + b _080B9056 +_080B8FAC: + ldrh r0, [r4, 0xC] + adds r0, 0x6 + movs r1, 0x7F + ands r0, r1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080B8FCE + movs r0, 0 + strh r0, [r4, 0x10] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] +_080B8FCE: + ldr r1, _080B8FF0 @ =gSineTable + movs r2, 0xC + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 20 + ldrh r3, [r4, 0xE] + adds r2, r0, r3 + strh r2, [r4, 0x12] + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080B8FF8 + ldr r1, _080B8FF4 @ =gBattle_BG1_Y + b _080B8FFA + .align 2, 0 +_080B8FF0: .4byte gSineTable +_080B8FF4: .4byte gBattle_BG1_Y +_080B8FF8: + ldr r1, _080B901C @ =gBattle_BG2_Y +_080B8FFA: + ldrh r0, [r4, 0x22] + subs r0, r2 + strh r0, [r1] + movs r2, 0x12 + ldrsh r0, [r4, r2] + cmp r0, 0x3F + ble _080B9082 + ldrh r0, [r4, 0x24] + movs r1, 0x78 + subs r2, r1, r0 + strh r2, [r4, 0x12] + movs r3, 0x1E + ldrsh r0, [r4, r3] + cmp r0, 0x1 + bne _080B9024 + ldr r1, _080B9020 @ =gBattle_BG1_Y + b _080B9026 + .align 2, 0 +_080B901C: .4byte gBattle_BG2_Y +_080B9020: .4byte gBattle_BG1_Y +_080B9024: + ldr r1, _080B9048 @ =gBattle_BG2_Y +_080B9026: + ldrh r0, [r4, 0x22] + subs r0, r2 + strh r0, [r1] + ldr r2, _080B904C @ =gSprites + movs r1, 0x1C + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r2, [r1, 0x20] + movs r3, 0x88 + lsls r3, 1 + adds r0, r3, 0 + subs r0, r2 + strh r0, [r1, 0x24] + b _080B9056 + .align 2, 0 +_080B9048: .4byte gBattle_BG2_Y +_080B904C: .4byte gSprites +_080B9050: + ldr r1, _080B9060 @ =gScanlineEffect + movs r0, 0x3 + strb r0, [r1, 0x15] +_080B9056: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B9082 + .align 2, 0 +_080B9060: .4byte gScanlineEffect +_080B9064: + adds r0, r2, 0 + bl DestroyAnimVisualTask + ldr r2, _080B9088 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080B9082: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B9088: .4byte gSprites + thumb_func_end sub_80B8ED4 + + thumb_func_start sub_80B908C +sub_80B908C: @ 80B908C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B90CC @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r3] + movs r4, 0 + strh r4, [r1, 0x24] + strh r4, [r1, 0x26] + ldr r0, _080B90D0 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B90D8 + ldr r0, _080B90D4 @ =gBattle_BG1_Y + b _080B90DA + .align 2, 0 +_080B90CC: .4byte gSprites +_080B90D0: .4byte gBattleAnimAttacker +_080B90D4: .4byte gBattle_BG1_Y +_080B90D8: + ldr r0, _080B90E8 @ =gBattle_BG2_Y +_080B90DA: + strh r4, [r0] + adds r0, r5, 0 + bl DestroyAnimVisualTask + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B90E8: .4byte gBattle_BG2_Y + thumb_func_end sub_80B908C + + thumb_func_start sub_80B90EC +sub_80B90EC: @ 80B90EC + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B910C @ =gTasks + adds r1, r0, r1 + ldr r0, _080B9110 @ =gBattleAnimArgs + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, 0 + bne _080B9118 + ldr r0, _080B9114 @ =sub_80B912C + b _080B911A + .align 2, 0 +_080B910C: .4byte gTasks +_080B9110: .4byte gBattleAnimArgs +_080B9114: .4byte sub_80B912C +_080B9118: + ldr r0, _080B9128 @ =sub_80B91B0 +_080B911A: + str r0, [r1] + ldr r1, [r1] + adds r0, r2, 0 + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B9128: .4byte sub_80B91B0 + thumb_func_end sub_80B90EC + + thumb_func_start sub_80B912C +sub_80B912C: @ 80B912C + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B914C @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r5, [r4, r0] + cmp r5, 0 + beq _080B9150 + cmp r5, 0x1 + beq _080B91A4 + b _080B91AA + .align 2, 0 +_080B914C: .4byte gTasks +_080B9150: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r3, _080B91A0 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r5, [r0, 0x24] + movs r1, 0x1C + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r2, [r1, 0x22] + movs r0, 0xA0 + subs r0, r2 + strh r0, [r1, 0x26] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B91AA + .align 2, 0 +_080B91A0: .4byte gSprites +_080B91A4: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080B91AA: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B912C + + thumb_func_start sub_80B91B0 +sub_80B91B0: @ 80B91B0 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B91D4 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bhi _080B92B2 + lsls r0, 2 + ldr r1, _080B91D8 @ =_080B91DC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B91D4: .4byte gTasks +_080B91D8: .4byte _080B91DC + .align 2, 0 +_080B91DC: + .4byte _080B91F0 + .4byte _080B9244 + .4byte _080B9252 + .4byte _080B926C + .4byte _080B92AC +_080B91F0: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r0, _080B9214 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1E] + cmp r0, 0x1 + bne _080B921C + ldr r0, _080B9218 @ =gBattle_BG1_X + b _080B921E + .align 2, 0 +_080B9214: .4byte gBattleAnimAttacker +_080B9218: .4byte gBattle_BG1_X +_080B921C: + ldr r0, _080B923C @ =gBattle_BG2_X +_080B921E: + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080B9240 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r4, 0x24] + adds r0, 0x20 + strh r0, [r4, 0x26] + b _080B929A + .align 2, 0 +_080B923C: .4byte gBattle_BG2_X +_080B9240: .4byte gBattleAnimAttacker +_080B9244: + ldrb r0, [r4, 0x1E] + movs r1, 0x26 + ldrsh r2, [r4, r1] + movs r1, 0 + bl sub_80B92B8 + b _080B929A +_080B9252: + ldr r2, _080B9268 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x60 + strh r1, [r0, 0x26] + b _080B929A + .align 2, 0 +_080B9268: .4byte gSprites +_080B926C: + ldr r2, _080B92A4 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x8 + strh r1, [r0, 0x26] + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x26 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B92B2 + ldr r1, _080B92A8 @ =gScanlineEffect + movs r0, 0x3 + strb r0, [r1, 0x15] +_080B929A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B92B2 + .align 2, 0 +_080B92A4: .4byte gSprites +_080B92A8: .4byte gScanlineEffect +_080B92AC: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080B92B2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B91B0 + + thumb_func_start sub_80B92B8 +sub_80B92B8: @ 80B92B8 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r4, r2, 16 + cmp r0, 0x1 + bne _080B92DC + ldr r0, _080B92D4 @ =gBattle_BG1_X + ldrh r3, [r0] + ldr r0, _080B92D8 @ =0x04000014 + b _080B92E2 + .align 2, 0 +_080B92D4: .4byte gBattle_BG1_X +_080B92D8: .4byte 0x04000014 +_080B92DC: + ldr r0, _080B9368 @ =gBattle_BG2_X + ldrh r3, [r0] + ldr r0, _080B936C @ =0x04000018 +_080B92E2: + str r0, [sp] + lsls r0, r1, 16 + cmp r0, 0 + bge _080B92EC + movs r1, 0 +_080B92EC: + lsls r2, r1, 16 + lsls r0, r4, 16 + asrs r4, r0, 16 + cmp r2, r0 + bge _080B9318 + ldr r5, _080B9370 @ =gScanlineEffectRegBuffers + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 +_080B92FE: + asrs r2, 16 + lsls r1, r2, 1 + adds r0, r1, r5 + strh r3, [r0] + adds r1, r6 + strh r3, [r1] + adds r2, 0x1 + lsls r2, 16 + lsrs r1, r2, 16 + lsls r2, r1, 16 + asrs r0, r2, 16 + cmp r0, r4 + blt _080B92FE +_080B9318: + lsls r1, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _080B9346 + ldr r4, _080B9370 @ =gScanlineEffectRegBuffers + lsls r0, r3, 16 + asrs r0, 16 + adds r3, r0, 0 + adds r3, 0xF0 + movs r0, 0xF0 + lsls r0, 3 + adds r5, r4, r0 +_080B9330: + asrs r2, r1, 16 + lsls r1, r2, 1 + adds r0, r1, r4 + strh r3, [r0] + adds r1, r5 + strh r3, [r1] + adds r2, 0x1 + lsls r1, r2, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _080B9330 +_080B9346: + ldr r0, _080B9374 @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl ScanlineEffect_SetParams + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B9368: .4byte gBattle_BG2_X +_080B936C: .4byte 0x04000018 +_080B9370: .4byte gScanlineEffectRegBuffers +_080B9374: .4byte 0xa2600001 + thumb_func_end sub_80B92B8 + + thumb_func_start sub_80B9378 +sub_80B9378: @ 80B9378 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _080B938C @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + adds r7, r0, 0 + cmp r1, 0 + bne _080B9394 + ldr r0, _080B9390 @ =gBattleAnimAttacker + b _080B9396 + .align 2, 0 +_080B938C: .4byte gBattleAnimArgs +_080B9390: .4byte gBattleAnimAttacker +_080B9394: + ldr r0, _080B93F8 @ =gBattleAnimTarget +_080B9396: + ldrb r4, [r0] + movs r6, 0x18 + adds r1, r7, 0 + movs r2, 0x2 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + bne _080B93B2 + negs r0, r6 + lsls r0, 16 + lsrs r6, r0, 16 + movs r2, 0x4 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x4] +_080B93B2: + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x20] + adds r0, r4, 0 + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1E + strh r0, [r5, 0x22] + ldrh r1, [r7, 0xA] + strh r1, [r5, 0x2E] + ldrh r1, [r7, 0x4] + ldrh r2, [r5, 0x20] + adds r1, r2 + strh r1, [r5, 0x32] + ldrh r1, [r7, 0x6] + adds r0, r1 + strh r0, [r5, 0x36] + ldrh r0, [r7, 0x8] + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_8075068 + ldr r0, _080B93FC @ =sub_80B9400 + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B93F8: .4byte gBattleAnimTarget +_080B93FC: .4byte sub_80B9400 + thumb_func_end sub_80B9378 + + thumb_func_start sub_80B9400 +sub_80B9400: @ 80B9400 + push {r4,lr} + adds r4, r0, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _080B9414 + adds r0, r4, 0 + bl DestroyAnimSprite +_080B9414: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B9400 + + thumb_func_start sub_80B941C +sub_80B941C: @ 80B941C + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _080B9430 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080B9438 + ldr r0, _080B9434 @ =gBattleAnimAttacker + b _080B943A + .align 2, 0 +_080B9430: .4byte gBattleAnimArgs +_080B9434: .4byte gBattleAnimAttacker +_080B9438: + ldr r0, _080B9498 @ =gBattleAnimTarget +_080B943A: + ldrb r5, [r0] + adds r0, r5, 0 + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B949C @ =0x0000fff0 + adds r0, r2 + ldr r4, _080B94A0 @ =gBattleAnimArgs + movs r3, 0x2 + ldrsh r1, [r4, r3] + lsls r1, 5 + adds r0, r1 + strh r0, [r6, 0x20] + adds r0, r5, 0 + bl sub_807492C + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r6, 0x22] + ldrh r2, [r6, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0x2 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r1, r0 + ldr r3, _080B94A4 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080B94A8 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r6, 0x4] + ldr r1, _080B94AC @ =DestroyAnimSprite + adds r0, r6, 0 + bl StoreSpriteCallbackInData6 + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x2E] + ldr r0, _080B94B0 @ =sub_8074C44 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B9498: .4byte gBattleAnimTarget +_080B949C: .4byte 0x0000fff0 +_080B94A0: .4byte gBattleAnimArgs +_080B94A4: .4byte 0x000003ff +_080B94A8: .4byte 0xfffffc00 +_080B94AC: .4byte DestroyAnimSprite +_080B94B0: .4byte sub_8074C44 + thumb_func_end sub_80B941C + + thumb_func_start sub_80B94B4 +sub_80B94B4: @ 80B94B4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080B94D8 @ =gTasks + adds r4, r0, r1 + ldr r0, _080B94DC @ =gBattleAnimArgs + ldrh r2, [r0, 0x2] + movs r3, 0x2 + ldrsh r1, [r0, r3] + adds r6, r0, 0 + cmp r1, 0 + beq _080B94E0 + adds r0, r2, 0x3 + b _080B94EC + .align 2, 0 +_080B94D8: .4byte gTasks +_080B94DC: .4byte gBattleAnimArgs +_080B94E0: + ldr r0, _080B950C @ =gUnknown_2037EEC + ldrh r0, [r0] + movs r1, 0xA + bl __udivsi3 + adds r0, 0x3 +_080B94EC: + strh r0, [r4, 0x26] + strh r0, [r4, 0x24] + adds r1, r6, 0 + ldrh r0, [r1, 0x4] + strh r0, [r4, 0xE] + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0x4 + beq _080B9518 + cmp r0, 0x5 + bne _080B9558 + ldr r0, _080B9510 @ =gBattle_BG3_X + ldrh r0, [r0] + strh r0, [r4, 0x22] + ldr r0, _080B9514 @ =sub_80B9584 + b _080B9576 + .align 2, 0 +_080B950C: .4byte gUnknown_2037EEC +_080B9510: .4byte gBattle_BG3_X +_080B9514: .4byte sub_80B9584 +_080B9518: + movs r0, 0 + strh r0, [r4, 0x22] + movs r5, 0 +_080B951E: + lsls r0, r5, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080B9548 + movs r3, 0x22 + ldrsh r0, [r4, r3] + adds r0, 0x9 + lsls r0, 1 + adds r1, r4, 0 + adds r1, 0x8 + adds r1, r0 + ldr r0, _080B9554 @ =gBattlerSpriteIds + adds r0, r5, r0 + ldrb r0, [r0] + strh r0, [r1] + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] +_080B9548: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _080B951E + b _080B9574 + .align 2, 0 +_080B9554: .4byte gBattlerSpriteIds +_080B9558: + ldrb r0, [r6] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1A] + cmp r0, 0xFF + bne _080B9570 + adds r0, r5, 0 + bl DestroyAnimVisualTask + b _080B9578 +_080B9570: + movs r0, 0x1 + strh r0, [r4, 0x22] +_080B9574: + ldr r0, _080B9580 @ =sub_80B967C +_080B9576: + str r0, [r4] +_080B9578: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B9580: .4byte sub_80B967C + thumb_func_end sub_80B94B4 + + thumb_func_start sub_80B9584 +sub_80B9584: @ 80B9584 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080B95A8 @ =gTasks + adds r3, r0, r1 + movs r0, 0x8 + ldrsh r1, [r3, r0] + cmp r1, 0x1 + beq _080B9608 + cmp r1, 0x1 + bgt _080B95AC + cmp r1, 0 + beq _080B95B2 + b _080B9674 + .align 2, 0 +_080B95A8: .4byte gTasks +_080B95AC: + cmp r1, 0x2 + beq _080B9668 + b _080B9674 +_080B95B2: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B9674 + strh r1, [r3, 0xA] + ldrh r1, [r3, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080B95DC + ldr r1, _080B95D8 @ =gBattle_BG3_X + ldrh r0, [r3, 0x26] + ldrh r2, [r3, 0x22] + adds r0, r2 + strh r0, [r1] + b _080B95E6 + .align 2, 0 +_080B95D8: .4byte gBattle_BG3_X +_080B95DC: + ldr r0, _080B9604 @ =gBattle_BG3_X + ldrh r1, [r3, 0x22] + ldrh r2, [r3, 0x26] + subs r1, r2 + strh r1, [r0] +_080B95E6: + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xE + ldrsh r1, [r3, r2] + cmp r0, r1 + bne _080B9674 + movs r0, 0 + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x24] + subs r0, 0x1 + strh r0, [r3, 0x24] + b _080B965C + .align 2, 0 +_080B9604: .4byte gBattle_BG3_X +_080B9608: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B9674 + movs r0, 0 + strh r0, [r3, 0xA] + ldrh r0, [r3, 0xC] + ands r1, r0 + cmp r1, 0 + bne _080B9634 + ldr r1, _080B9630 @ =gBattle_BG3_X + ldrh r0, [r3, 0x24] + ldrh r2, [r3, 0x22] + adds r0, r2 + strh r0, [r1] + b _080B963E + .align 2, 0 +_080B9630: .4byte gBattle_BG3_X +_080B9634: + ldr r0, _080B9664 @ =gBattle_BG3_X + ldrh r1, [r3, 0x22] + ldrh r2, [r3, 0x24] + subs r1, r2 + strh r1, [r0] +_080B963E: + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080B9674 + movs r0, 0 + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x24] + subs r0, 0x1 + strh r0, [r3, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _080B9674 +_080B965C: + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + b _080B9674 + .align 2, 0 +_080B9664: .4byte gBattle_BG3_X +_080B9668: + ldr r1, _080B9678 @ =gBattle_BG3_X + ldrh r0, [r3, 0x22] + strh r0, [r1] + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080B9674: + pop {r0} + bx r0 + .align 2, 0 +_080B9678: .4byte gBattle_BG3_X + thumb_func_end sub_80B9584 + + thumb_func_start sub_80B967C +sub_80B967C: @ 80B967C + push {r4-r7,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080B96A0 @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080B96DC + cmp r5, 0x1 + bgt _080B96A4 + cmp r5, 0 + beq _080B96AA + b _080B9756 + .align 2, 0 +_080B96A0: .4byte gTasks +_080B96A4: + cmp r5, 0x2 + beq _080B9718 + b _080B9756 +_080B96AA: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B9756 + strh r5, [r4, 0xA] + adds r0, r4, 0 + bl sub_80B9760 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080B9756 + strh r5, [r4, 0xC] + ldrh r0, [r4, 0x24] + subs r0, 0x1 + strh r0, [r4, 0x24] + b _080B9710 +_080B96DC: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080B9756 + strh r5, [r4, 0xA] + adds r0, r4, 0 + bl sub_80B9760 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080B9756 + strh r5, [r4, 0xC] + ldrh r0, [r4, 0x24] + subs r0, 0x1 + strh r0, [r4, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _080B9756 +_080B9710: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B9756 +_080B9718: + movs r2, 0 + movs r7, 0x22 + ldrsh r0, [r4, r7] + cmp r2, r0 + bge _080B9750 + ldr r0, _080B975C @ =gSprites + mov r12, r0 + adds r5, r4, 0 + adds r5, 0x8 + movs r6, 0 +_080B972C: + adds r0, r2, 0 + adds r0, 0x9 + lsls r0, 1 + adds r0, r5, r0 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r12 + strh r6, [r0, 0x24] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0x22 + ldrsh r0, [r4, r1] + cmp r2, r0 + blt _080B972C +_080B9750: + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080B9756: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B975C: .4byte gSprites + thumb_func_end sub_80B967C + + thumb_func_start sub_80B9760 +sub_80B9760: @ 80B9760 + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0xC] + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _080B9788 + movs r0, 0x24 + ldrsh r1, [r3, r0] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r2, [r3, 0x24] + adds r0, r4, 0 + ands r0, r2 + adds r1, r0 + lsls r1, 16 + lsrs r4, r1, 16 + b _080B9798 +_080B9788: + movs r1, 0x24 + ldrsh r0, [r3, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + negs r0, r0 + lsls r0, 16 + lsrs r4, r0, 16 +_080B9798: + movs r2, 0 + movs r7, 0x22 + ldrsh r0, [r3, r7] + cmp r2, r0 + bge _080B97CC + ldr r6, _080B97D4 @ =gSprites + adds r5, r3, 0 + adds r5, 0x8 +_080B97A8: + adds r0, r2, 0 + adds r0, 0x9 + lsls r0, 1 + adds r0, r5, r0 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r4, [r0, 0x24] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0x22 + ldrsh r0, [r3, r1] + cmp r2, r0 + blt _080B97A8 +_080B97CC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B97D4: .4byte gSprites + thumb_func_end sub_80B9760 + + thumb_func_start sub_80B97D8 +sub_80B97D8: @ 80B97D8 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r3, _080B97F8 @ =gBattleAnimArgs + movs r2, 0 + ldr r0, _080B97FC @ =gUnknown_2037EEC + ldrh r0, [r0] + cmp r0, 0x63 + bls _080B97EC + movs r2, 0x1 +_080B97EC: + strh r2, [r3, 0x1E] + adds r0, r1, 0 + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080B97F8: .4byte gBattleAnimArgs +_080B97FC: .4byte gUnknown_2037EEC + thumb_func_end sub_80B97D8 + + thumb_func_start sub_80B9800 +sub_80B9800: @ 80B9800 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r2, _080B9818 @ =gBattleAnimArgs + ldrh r1, [r2] + movs r0, 0x1 + ands r0, r1 + adds r6, r2, 0 + cmp r0, 0 + beq _080B9820 + ldr r0, _080B981C @ =gBattleAnimTarget + b _080B9822 + .align 2, 0 +_080B9818: .4byte gBattleAnimArgs +_080B981C: .4byte gBattleAnimTarget +_080B9820: + ldr r0, _080B9890 @ =gBattleAnimAttacker +_080B9822: + ldrb r0, [r0] + adds r5, r0, 0 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + ble _080B9832 + movs r0, 0x2 + eors r5, r0 +_080B9832: + ldr r0, _080B9894 @ =sub_80B98A8 + ldrb r1, [r6, 0x2] + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080B9898 @ =gTasks + adds r4, r0 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x20 + subs r1, r0 + ldr r2, _080B989C @ =0x000001ff + adds r0, r2, 0 + ands r1, r0 + strh r1, [r4, 0xA] + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x40 + subs r1, r0 + movs r0, 0xFF + ands r1, r0 + strh r1, [r4, 0xC] + ldr r2, _080B98A0 @ =gBattle_BG3_X + ldrh r0, [r4, 0xA] + strh r0, [r2] + ldr r0, _080B98A4 @ =gBattle_BG3_Y + strh r1, [r0] + ldrh r0, [r6, 0x4] + strh r0, [r4, 0xE] + adds r0, r7, 0 + bl DestroyAnimVisualTask + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B9890: .4byte gBattleAnimAttacker +_080B9894: .4byte sub_80B98A8 +_080B9898: .4byte gTasks +_080B989C: .4byte 0x000001ff +_080B98A0: .4byte gBattle_BG3_X +_080B98A4: .4byte gBattle_BG3_Y + thumb_func_end sub_80B9800 + + thumb_func_start sub_80B98A8 +sub_80B98A8: @ 80B98A8 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080B98D8 @ =gTasks + adds r2, r0, r1 + ldr r0, _080B98DC @ =gBattleAnimArgs + movs r4, 0xE + ldrsh r1, [r0, r4] + movs r4, 0xE + ldrsh r0, [r2, r4] + cmp r1, r0 + bne _080B98E8 + ldr r0, _080B98E0 @ =gBattle_BG3_X + movs r1, 0 + strh r1, [r0] + ldr r0, _080B98E4 @ =gBattle_BG3_Y + strh r1, [r0] + adds r0, r3, 0 + bl DestroyTask + b _080B98F4 + .align 2, 0 +_080B98D8: .4byte gTasks +_080B98DC: .4byte gBattleAnimArgs +_080B98E0: .4byte gBattle_BG3_X +_080B98E4: .4byte gBattle_BG3_Y +_080B98E8: + ldr r1, _080B98FC @ =gBattle_BG3_X + ldrh r0, [r2, 0xA] + strh r0, [r1] + ldr r1, _080B9900 @ =gBattle_BG3_Y + ldrh r0, [r2, 0xC] + strh r0, [r1] +_080B98F4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B98FC: .4byte gBattle_BG3_X +_080B9900: .4byte gBattle_BG3_Y + thumb_func_end sub_80B98A8 + + .align 2, 0 @ Don't pad with nop. |