diff options
Diffstat (limited to 'asm/fight.s')
-rw-r--r-- | asm/fight.s | 1649 |
1 files changed, 1649 insertions, 0 deletions
diff --git a/asm/fight.s b/asm/fight.s new file mode 100644 index 000000000..508b942bc --- /dev/null +++ b/asm/fight.s @@ -0,0 +1,1649 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start unc_080B08A0 +unc_080B08A0: @ 810CE2C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_80A6864 + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + movs r0, 0xF + strh r0, [r4, 0x2E] + ldr r0, =sub_80A64B0 + str r0, [r4, 0x1C] + ldr r1, =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end unc_080B08A0 + + thumb_func_start sub_810CE68 +sub_810CE68: @ 810CE68 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, =gBattleAnimArgs + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _0810CE90 + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _0810CE90 + ldrh r0, [r4, 0x2] + negs r0, r0 + strh r0, [r4, 0x2] + ldrh r0, [r4, 0x6] + negs r0, r0 + strh r0, [r4, 0x6] +_0810CE90: + ldr r4, =gBattleAnimArgs + ldrb r1, [r4, 0xC] + adds r0, r5, 0 + bl StartSpriteAnim + movs r0, 0 + strh r0, [r4, 0xC] + adds r0, r5, 0 + bl sub_80A7938 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810CE68 + + thumb_func_start sub_810CEB4 +sub_810CEB4: @ 810CEB4 + push {r4,lr} + adds r4, r0, 0 + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _0810CED0 + ldr r0, =gBattleAnimArgs + ldrh r1, [r0, 0x2] + negs r1, r1 + strh r1, [r0, 0x2] + ldrh r1, [r0, 0x6] + negs r1, r1 + strh r1, [r0, 0x6] +_0810CED0: + adds r0, r4, 0 + bl sub_810CE68 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810CEB4 + + thumb_func_start sub_810CEE0 +sub_810CEE0: @ 810CEE0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, =gBattleAnimArgs + ldrb r1, [r4, 0x8] + bl StartSpriteAnim + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0810CF04 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80A69CC + b _0810CF0C + .pool +_0810CF04: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80A6980 +_0810CF0C: + ldr r0, =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x2E] + ldr r0, =sub_80A64B0 + str r0, [r5, 0x1C] + ldr r1, =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810CEE0 + + thumb_func_start sub_810CF30 +sub_810CF30: @ 810CF30 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + ldr r0, =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + mov r9, r0 + cmp r1, 0 + bne _0810CF54 + ldr r0, =gBattleAnimAttacker + b _0810CF56 + .pool +_0810CF54: + ldr r0, =gBattleAnimTarget +_0810CF56: + ldrb r0, [r0] + mov r8, r0 + mov r4, r9 + movs r3, 0x4 + ldrsh r0, [r4, r3] + cmp r0, 0 + bge _0810CF74 + bl Random2 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x5 + bl __umodsi3 + strh r0, [r4, 0x4] +_0810CF74: + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl StartSpriteAnim + mov r0, r8 + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + mov r0, r8 + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + mov r0, r8 + movs r1, 0x1 + bl sub_80A861C + lsls r0, 16 + asrs r1, r0, 16 + lsrs r0, 31 + adds r1, r0 + lsls r1, 15 + lsrs r6, r1, 16 + mov r0, r8 + movs r1, 0 + bl sub_80A861C + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _0810CFBE + adds r0, 0x3 +_0810CFBE: + lsls r4, r0, 14 + lsrs r4, 16 + bl Random2 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r6, 16 + asrs r1, 16 + bl __modsi3 + lsls r0, 16 + lsrs r6, r0, 16 + bl Random2 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 16 + asrs r4, 16 + adds r1, r4, 0 + bl __modsi3 + lsls r0, 16 + lsrs r4, r0, 16 + bl Random2 + movs r7, 0x1 + adds r1, r7, 0 + ands r1, r0 + cmp r1, 0 + beq _0810D000 + lsls r0, r6, 16 + negs r0, r0 + lsrs r6, r0, 16 +_0810D000: + bl Random2 + adds r1, r7, 0 + ands r1, r0 + cmp r1, 0 + beq _0810D012 + lsls r0, r4, 16 + negs r0, r0 + lsrs r4, r0, 16 +_0810D012: + ldr r0, =gBattlerPositions + add r0, r8 + ldrb r1, [r0] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _0810D028 + lsls r0, r4, 16 + ldr r1, =0xfff00000 + adds r0, r1 + lsrs r4, r0, 16 +_0810D028: + lsls r0, r6, 16 + asrs r0, 16 + ldrh r2, [r5, 0x20] + adds r0, r2 + strh r0, [r5, 0x20] + lsls r0, r4, 16 + asrs r0, 16 + ldrh r3, [r5, 0x22] + adds r0, r3 + strh r0, [r5, 0x22] + mov r1, r9 + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x2E] + ldr r0, =gBasicHitSplatSpriteTemplate + movs r2, 0x20 + ldrsh r1, [r5, r2] + movs r3, 0x22 + ldrsh r2, [r5, r3] + adds r3, r5, 0 + adds r3, 0x43 + ldrb r3, [r3] + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3C] + cmp r0, 0x40 + beq _0810D08C + movs r0, 0x3C + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, =gSprites + adds r0, r4 + movs r1, 0 + bl StartSpriteAffineAnim + movs r2, 0x3C + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, =SpriteCallbackDummy + str r1, [r0] +_0810D08C: + ldr r0, =sub_810D0B8 + str r0, [r5, 0x1C] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810CF30 + + thumb_func_start sub_810D0B8 +sub_810D0B8: @ 810D0B8 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x2E] + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _0810D100 + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0x40 + beq _0810D0F4 + ldr r4, =gSprites + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + movs r0, 0x3C + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl DestroySprite +_0810D0F4: + adds r0, r5, 0 + bl DestroyAnimSprite + b _0810D104 + .pool +_0810D100: + subs r0, r1, 0x1 + strh r0, [r5, 0x2E] +_0810D104: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_810D0B8 + + thumb_func_start sub_810D10C +sub_810D10C: @ 810D10C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80A6980 + movs r0, 0x1E + strh r0, [r4, 0x2E] + ldr r0, =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _0810D130 + ldrh r0, [r4, 0x20] + subs r0, 0x14 + strh r0, [r4, 0x32] + b _0810D142 + .pool +_0810D130: + ldrh r0, [r4, 0x20] + adds r0, 0x14 + strh r0, [r4, 0x32] + adds r2, r4, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_0810D142: + ldrh r0, [r4, 0x22] + subs r0, 0x14 + strh r0, [r4, 0x36] + ldr r0, =sub_80A6EEC + str r0, [r4, 0x1C] + ldr r1, =sub_810D164 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D10C + + thumb_func_start sub_810D164 +sub_810D164: @ 810D164 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x38] + adds r0, 0x1 + movs r6, 0 + strh r0, [r5, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB + bne _0810D1A4 + ldrh r2, [r5, 0x20] + ldrh r4, [r5, 0x24] + subs r0, r2, r4 + strh r0, [r5, 0x32] + ldrh r1, [r5, 0x22] + ldrh r3, [r5, 0x26] + subs r0, r1, r3 + strh r0, [r5, 0x36] + movs r0, 0x8 + strh r0, [r5, 0x2E] + adds r2, r4 + strh r2, [r5, 0x20] + adds r1, r3 + strh r1, [r5, 0x22] + strh r6, [r5, 0x26] + strh r6, [r5, 0x24] + ldr r0, =sub_80A6EEC + str r0, [r5, 0x1C] + ldr r1, =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 +_0810D1A4: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D164 + + thumb_func_start sub_810D1B4 +sub_810D1B4: @ 810D1B4 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, =gBattleAnimAttacker + ldrb r1, [r0] + movs r0, 0x2 + ldr r2, =gBattleAnimTarget + eors r0, r1 + ldrb r1, [r2] + cmp r0, r1 + bne _0810D1E0 + ldrb r0, [r2] + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0810D1E0 + ldr r1, =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1] +_0810D1E0: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_80A6980 + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _0810D1FE + ldr r1, =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_0810D1FE: + ldr r4, =gBattleAnimArgs + ldrh r0, [r4, 0x6] + movs r5, 0 + strh r0, [r6, 0x2E] + ldrh r0, [r6, 0x20] + strh r0, [r6, 0x30] + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrh r0, [r6, 0x22] + strh r0, [r6, 0x34] + strh r0, [r6, 0x36] + adds r0, r6, 0 + bl InitAnimLinearTranslation + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x3A] + strh r5, [r6, 0x3C] + ldr r0, =sub_810D240 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D1B4 + + thumb_func_start sub_810D240 +sub_810D240: @ 810D240 + push {r4,lr} + adds r4, r0, 0 + bl TranslateAnimLinear + lsls r0, 24 + cmp r0, 0 + bne _0810D26C + ldrh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r2, [r4, 0x3C] + adds r0, r2 + strh r0, [r4, 0x3C] + b _0810D272 +_0810D26C: + adds r0, r4, 0 + bl DestroyAnimSprite +_0810D272: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_810D240 + + thumb_func_start sub_810D278 +sub_810D278: @ 810D278 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80A6980 + ldr r5, =gBattleAnimArgs + ldrb r1, [r5, 0x4] + adds r0, r4, 0 + bl StartSpriteAnim + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldr r0, =sub_80A64B0 + str r0, [r4, 0x1C] + ldr r1, =sub_810D2B0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D278 + + thumb_func_start sub_810D2B0 +sub_810D2B0: @ 810D2B0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl StartSpriteAffineAnim + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x14 + strh r0, [r4, 0x2E] + ldr r0, =sub_80A64B0 + str r0, [r4, 0x1C] + ldr r1, =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D2B0 + + thumb_func_start sub_810D2E4 +sub_810D2E4: @ 810D2E4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80A6980 + ldr r0, =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r0, =sub_810D308 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D2E4 + + thumb_func_start sub_810D308 +sub_810D308: @ 810D308 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x2E] + subs r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _0810D34C + movs r0, 0x6 + strh r0, [r5, 0x2E] + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, =sub_80A6EEC + str r0, [r5, 0x1C] + ldr r1, =sub_810D360 + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 +_0810D34C: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D308 + + thumb_func_start sub_810D360 +sub_810D360: @ 810D360 + push {lr} + movs r1, 0xF + strh r1, [r0, 0x2E] + ldr r1, =sub_80A64B0 + str r1, [r0, 0x1C] + ldr r1, =DestroyAnimSprite + bl StoreSpriteCallbackInData6 + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D360 + + thumb_func_start sub_810D37C +sub_810D37C: @ 810D37C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0810D3A8 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80A6980 + ldr r1, =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _0810D404 + .pool +_0810D3A8: + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] + cmp r0, 0x64 + ble _0810D3F6 + movs r0, 0x34 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0810D3F6: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x78 + ble _0810D404 + adds r0, r4, 0 + bl DestroyAnimSprite +_0810D404: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_810D37C + + thumb_func_start sub_810D40C +sub_810D40C: @ 810D40C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _0810D428 + ldr r4, =gBattleAnimAttacker + b _0810D42A + .pool +_0810D428: + ldr r4, =gBattleAnimTarget +_0810D42A: + ldrb r0, [r4] + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, =gBattleAnimArgs + ldrh r0, [r1, 0x2] + ldrh r2, [r5, 0x20] + adds r0, r2 + movs r2, 0 + strh r0, [r5, 0x20] + ldrh r0, [r1, 0x4] + ldrh r3, [r5, 0x22] + adds r0, r3 + strh r0, [r5, 0x22] + strh r2, [r5, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x32] + strh r2, [r5, 0x34] + ldr r0, =sub_810D47C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D40C + + thumb_func_start sub_810D47C +sub_810D47C: @ 810D47C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + cmp r2, 0 + beq _0810D48E + cmp r2, 0x1 + beq _0810D4B2 + b _0810D4EC +_0810D48E: + ldrh r0, [r1, 0x30] + subs r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _0810D4EC + movs r2, 0x32 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _0810D4AA + adds r0, r1, 0 + bl DestroyAnimSprite + b _0810D4EC +_0810D4AA: + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + b _0810D4EC +_0810D4B2: + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _0810D4DA + movs r0, 0 + strh r0, [r1, 0x30] + ldrh r0, [r1, 0x34] + adds r0, 0x1 + strh r0, [r1, 0x34] + ands r0, r2 + lsls r0, 16 + cmp r0, 0 + beq _0810D4D6 + movs r0, 0x2 + b _0810D4D8 +_0810D4D6: + ldr r0, =0x0000fffe +_0810D4D8: + strh r0, [r1, 0x24] +_0810D4DA: + ldrh r0, [r1, 0x32] + subs r0, 0x1 + strh r0, [r1, 0x32] + lsls r0, 16 + cmp r0, 0 + bne _0810D4EC + adds r0, r1, 0 + bl DestroyAnimSprite +_0810D4EC: + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D47C + + thumb_func_start sub_810D4F4 +sub_810D4F4: @ 810D4F4 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _0810D520 + ldr r4, =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r6, 0x4] + adds r0, r2 + b _0810D532 + .pool +_0810D520: + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 +_0810D532: + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + strh r0, [r5, 0x22] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + ldr r3, =gBattleAnimArgs + movs r4, 0x2 + ldrsh r0, [r3, r4] + lsls r0, 4 + adds r1, r0 + ldr r4, =0x000003ff + adds r0, r4, 0 + ands r1, r0 + ldr r0, =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + movs r1, 0 + movs r0, 0 + strh r0, [r5, 0x2E] + movs r2, 0x2 + ldrsh r0, [r3, r2] + cmp r0, 0x1 + beq _0810D5A0 + cmp r0, 0x1 + bgt _0810D58C + cmp r0, 0 + beq _0810D596 + b _0810D5C6 + .pool +_0810D58C: + cmp r0, 0x2 + beq _0810D5B0 + cmp r0, 0x3 + beq _0810D5C0 + b _0810D5C6 +_0810D596: + ldr r0, =0x0000fffd + b _0810D5C0 + .pool +_0810D5A0: + movs r0, 0x3 + strh r0, [r5, 0x3A] + ldr r0, =0x0000fffd + strh r0, [r5, 0x3C] + b _0810D5CE + .pool +_0810D5B0: + ldr r0, =0x0000fffd + strh r0, [r5, 0x3A] + movs r0, 0x3 + strh r0, [r5, 0x3C] + b _0810D5CE + .pool +_0810D5C0: + strh r0, [r5, 0x3A] + strh r0, [r5, 0x3C] + b _0810D5CE +_0810D5C6: + adds r0, r5, 0 + bl DestroyAnimSprite + b _0810D5D2 +_0810D5CE: + ldr r0, =sub_810D5DC + str r0, [r5, 0x1C] +_0810D5D2: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D4F4 + + thumb_func_start sub_810D5DC +sub_810D5DC: @ 810D5DC + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x3A] + ldrh r2, [r1, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0x3C] + ldrh r2, [r1, 0x22] + adds r0, r2 + strh r0, [r1, 0x22] + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _0810D604 + adds r0, r1, 0 + bl DestroyAnimSprite +_0810D604: + pop {r0} + bx r0 + thumb_func_end sub_810D5DC + + thumb_func_start sub_810D608 +sub_810D608: @ 810D608 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _0810D664 + ldr r4, =gBattlerAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80A8328 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + ldr r0, =gBattleAnimTarget + b _0810D680 + .pool +_0810D664: + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl sub_80A8328 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + ldr r0, =gBattleAnimAttacker +_0810D680: + ldrb r0, [r0] + strh r0, [r5, 0x3C] + movs r0, 0 + strh r0, [r5, 0x2E] + movs r0, 0xC + strh r0, [r5, 0x30] + movs r0, 0x8 + strh r0, [r5, 0x32] + ldr r0, =sub_810D6A8 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D608 + + thumb_func_start sub_810D6A8 +sub_810D6A8: @ 810D6A8 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xB4 + bne _0810D704 + movs r0, 0x50 + movs r1, 0 + bl SetGpuReg + movs r0, 0x10 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl InitAnimLinearTranslation + ldr r1, =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A6F98 + str r0, [r4, 0x1C] +_0810D704: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D6A8 + + thumb_func_start sub_810D714 +sub_810D714: @ 810D714 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, =gBattleAnimArgs + ldrh r0, [r4] + strh r0, [r5, 0x20] + movs r2, 0x78 + strh r2, [r5, 0x22] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x2E] + adds r0, r5, 0 + adds r0, 0x36 + adds r1, r5, 0 + adds r1, 0x38 + lsls r2, 8 + bl sub_80A8048 + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x3A] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0x4 + ldrsh r0, [r4, r3] + lsls r0, 2 + adds r1, r0 + ldr r3, =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r0, =sub_810D770 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D714 + + thumb_func_start sub_810D770 +sub_810D770: @ 810D770 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + movs r1, 0x2E + ldrsh r0, [r7, r1] + cmp r0, 0 + beq _0810D7C2 + movs r2, 0x36 + ldrsh r0, [r7, r2] + movs r2, 0x38 + ldrsh r1, [r7, r2] + bl sub_80A8050 + adds r4, r0, 0 + movs r1, 0x3A + ldrsh r0, [r7, r1] + subs r4, r0 + adds r0, r7, 0 + adds r0, 0x36 + adds r1, r7, 0 + adds r1, 0x38 + adds r2, r4, 0 + bl sub_80A8048 + asrs r4, 8 + strh r4, [r7, 0x22] + lsls r4, 16 + asrs r4, 16 + movs r0, 0x8 + negs r0, r0 + cmp r4, r0 + bge _0810D7BA + adds r0, r7, 0 + bl DestroyAnimSprite + b _0810D818 +_0810D7BA: + ldrh r0, [r7, 0x2E] + subs r0, 0x1 + strh r0, [r7, 0x2E] + b _0810D818 +_0810D7C2: + ldr r4, =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r2, =gBattleAnimTarget + mov r8, r2 + ldrb r0, [r2] + movs r1, 0x2 + bl GetBattlerSpriteCoord + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + subs r4, r6 + strh r4, [r7, 0x2E] + lsrs r0, 24 + subs r0, r5 + strh r0, [r7, 0x30] + ldrh r0, [r7, 0x20] + lsls r0, 4 + strh r0, [r7, 0x32] + ldrh r0, [r7, 0x22] + lsls r0, 4 + strh r0, [r7, 0x34] + ldr r0, =sub_810D830 + str r0, [r7, 0x1C] +_0810D818: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D770 + + thumb_func_start sub_810D830 +sub_810D830: @ 810D830 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + ldrh r1, [r2, 0x30] + ldrh r3, [r2, 0x34] + adds r1, r3 + strh r1, [r2, 0x34] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r3, r1, 20 + strh r3, [r2, 0x22] + adds r0, 0x8 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 17 + cmp r0, r1 + bhi _0810D86A + adds r1, r3, 0 + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _0810D86A + cmp r1, 0x78 + ble _0810D870 +_0810D86A: + adds r0, r2, 0 + bl DestroyAnimSprite +_0810D870: + pop {r0} + bx r0 + thumb_func_end sub_810D830 + + thumb_func_start sub_810D874 +sub_810D874: @ 810D874 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _0810D8B8 + ldr r4, =gBattlerAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r0, =gBattleAnimTarget + ldrb r4, [r0] + ldr r0, =gBattleAnimAttacker + b _0810D8BE + .pool +_0810D8B8: + ldr r0, =gBattleAnimAttacker + ldrb r4, [r0] + ldr r0, =gBattleAnimTarget +_0810D8BE: + ldrb r0, [r0] + bl sub_80A8328 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _0810D8F8 + ldrb r2, [r5, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x8 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x47 + b _0810D912 + .pool +_0810D8F8: + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _0810D918 + ldrb r2, [r5, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x18 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x57 +_0810D912: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x3] +_0810D918: + movs r0, 0x10 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + adds r0, r4, 0 + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + adds r0, r4, 0 + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl InitAnimLinearTranslation + ldr r1, =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r0, =sub_80A6F98 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D874 + + thumb_func_start sub_810D960 +sub_810D960: @ 810D960 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r2, 0x36 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _0810D976 + adds r0, r4, 0 + bl DestroyAnimSprite +_0810D976: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_810D960 + + thumb_func_start sub_810D984 +sub_810D984: @ 810D984 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl GetBattlerSpriteCoord + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, =gBattleAnimArgs + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + ldrh r0, [r1] + strh r0, [r5, 0x32] + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x34] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x36] + ldr r0, =gAnimMoveTurn + ldrb r6, [r0] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _0810D9CE + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0810D9CE: + movs r0, 0x1 + ands r6, r0 + cmp r6, 0 + beq _0810D9E2 + ldrh r0, [r5, 0x32] + negs r0, r0 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x30] + adds r0, 0x1 + strh r0, [r5, 0x30] +_0810D9E2: + ldrh r1, [r5, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim + ldrh r0, [r5, 0x32] + strh r0, [r5, 0x24] + ldrh r0, [r5, 0x34] + strh r0, [r5, 0x26] + ldr r0, =sub_810D960 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810D984 + + thumb_func_start sub_810DA10 +sub_810DA10: @ 810DA10 + push {r4,lr} + adds r4, r0, 0 + ldr r0, =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _0810DA2C + adds r0, r4, 0 + movs r1, 0 + bl sub_80A69CC + b _0810DA34 + .pool +_0810DA2C: + adds r0, r4, 0 + movs r1, 0 + bl sub_80A6980 +_0810DA34: + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _0810DA48 + adds r0, r4, 0 + movs r1, 0x2 + bl StartSpriteAnim + b _0810DA5E +_0810DA48: + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _0810DA5E + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim +_0810DA5E: + ldr r0, =sub_80A67D8 + str r0, [r4, 0x1C] + ldr r1, =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810DA10 + + thumb_func_start sub_810DA7C +sub_810DA7C: @ 810DA7C + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0810DAB6 + ldrh r0, [r4, 0x30] + adds r0, 0x28 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x2 + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _0810DAB6 + adds r0, r4, 0 + bl DestroyAnimSprite +_0810DAB6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_810DA7C + + thumb_func_start sub_810DABC +sub_810DABC: @ 810DABC + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0810DAF4 + cmp r0, 0x1 + bgt _0810DB0E + cmp r0, 0 + bne _0810DB0E + movs r0, 0 + bl sub_80A6DAC + ldr r0, =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r4, 0x18] + b _0810DB06 + .pool +_0810DAF4: + ldrh r0, [r4, 0x18] + subs r0, 0x1 + strh r0, [r4, 0x18] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _0810DB1A +_0810DB06: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0810DB1A +_0810DB0E: + movs r2, 0xA0 + lsls r2, 3 + adds r0, r2, 0 + ldrh r1, [r4, 0x1A] + adds r0, r1 + strh r0, [r4, 0x1A] +_0810DB1A: + movs r2, 0xB0 + lsls r2, 4 + adds r0, r2, 0 + ldrh r1, [r4, 0x1C] + adds r0, r1 + strh r0, [r4, 0x1C] + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _0810DB50 + ldr r1, =gBattle_BG3_X + ldrh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 24 + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] + adds r7, r1, 0 + b _0810DB60 + .pool +_0810DB50: + ldr r2, =gBattle_BG3_X + ldrh r1, [r4, 0x1A] + lsls r1, 16 + asrs r1, 24 + ldrh r0, [r2] + subs r0, r1 + strh r0, [r2] + adds r7, r2, 0 +_0810DB60: + ldr r3, =gBattle_BG3_Y + ldrh r2, [r4, 0x1C] + lsls r0, r2, 16 + asrs r0, 24 + ldrh r1, [r3] + adds r0, r1 + strh r0, [r3] + movs r0, 0xFF + ldrb r1, [r4, 0x1A] + movs r5, 0 + strh r1, [r4, 0x1A] + ands r0, r2 + strh r0, [r4, 0x1C] + ldr r0, =gBattleAnimArgs + movs r2, 0xE + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _0810DB98 + strh r5, [r7] + strh r5, [r3] + movs r0, 0x1 + bl sub_80A6DAC + adds r0, r6, 0 + bl DestroyAnimVisualTask +_0810DB98: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810DABC + + .align 2, 0 |