diff options
Diffstat (limited to 'asm/shock.s')
-rwxr-xr-x | asm/shock.s | 260 |
1 files changed, 260 insertions, 0 deletions
diff --git a/asm/shock.s b/asm/shock.s new file mode 100755 index 000000000..10a79af34 --- /dev/null +++ b/asm/shock.s @@ -0,0 +1,260 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ shock + + thumb_func_start sub_80D6294 +sub_80D6294: @ 80D6294 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080D62D8 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r0, _080D62DC @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D62E4 + ldr r2, _080D62E0 @ =gBattleAnimArgs + ldrh r0, [r5, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + ldrh r1, [r2, 0x2] + subs r0, r1 + strh r0, [r5, 0x22] + b _080D62F8 + .align 2, 0 +_080D62D8: .4byte gBattleAnimBankTarget +_080D62DC: .4byte gBattleAnimBankAttacker +_080D62E0: .4byte gBattleAnimArgs +_080D62E4: + ldr r0, _080D631C @ =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r5, 0x20] + adds r1, r2 + strh r1, [r5, 0x20] + ldrh r1, [r0, 0x2] + ldrh r2, [r5, 0x22] + adds r1, r2 + strh r1, [r5, 0x22] + adds r2, r0, 0 +_080D62F8: + movs r0, 0 + strh r0, [r5, 0x2E] + ldrh r0, [r2, 0x4] + strh r0, [r5, 0x30] + ldrh r0, [r2, 0x6] + strh r0, [r5, 0x32] + ldrh r0, [r2, 0x8] + strh r0, [r5, 0x34] + ldr r1, _080D6320 @ =move_anim_8074EE0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D6324 @ =sub_8078114 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D631C: .4byte gBattleAnimArgs +_080D6320: .4byte move_anim_8074EE0 +_080D6324: .4byte sub_8078114 + thumb_func_end sub_80D6294 + + thumb_func_start sub_80D6328 +sub_80D6328: @ 80D6328 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _080D6340 @ =gBattleAnimArgs + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _080D63A0 + cmp r0, 0x1 + bgt _080D6344 + cmp r0, 0 + beq _080D634E + b _080D63A0 + .align 2, 0 +_080D6340: .4byte gBattleAnimArgs +_080D6344: + cmp r0, 0x2 + beq _080D6358 + cmp r0, 0x3 + beq _080D637C + b _080D63A0 +_080D634E: + ldr r0, _080D6354 @ =gBattleAnimBankAttacker + b _080D63A2 + .align 2, 0 +_080D6354: .4byte gBattleAnimBankAttacker +_080D6358: + ldr r4, _080D6370 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r6, 0x2 + eors r0, r6 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + bne _080D6374 + ldrb r4, [r4] + b _080D63A4 + .align 2, 0 +_080D6370: .4byte gBattleAnimBankAttacker +_080D6374: + ldrb r0, [r4] + adds r4, r6, 0 + eors r4, r0 + b _080D63A4 +_080D637C: + ldr r0, _080D6398 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + movs r4, 0x2 + eors r0, r4 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080D63A0 + ldr r0, _080D639C @ =gBattleAnimBankTarget + ldrb r0, [r0] + eors r4, r0 + b _080D63A4 + .align 2, 0 +_080D6398: .4byte gBattleAnimBankAttacker +_080D639C: .4byte gBattleAnimBankTarget +_080D63A0: + ldr r0, _080D63C4 @ =gBattleAnimBankTarget +_080D63A2: + ldrb r4, [r0] +_080D63A4: + ldr r0, _080D63C8 @ =gBattleAnimArgs + movs r2, 0xA + ldrsh r0, [r0, r2] + cmp r0, 0 + bne _080D63CC + adds r0, r4, 0 + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r4, 0 + movs r1, 0x1 + b _080D63DE + .align 2, 0 +_080D63C4: .4byte gBattleAnimBankTarget +_080D63C8: .4byte gBattleAnimArgs +_080D63CC: + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + adds r0, r4, 0 + movs r1, 0x3 +_080D63DE: + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r7, _080D647C @ =gSineTable + ldr r6, _080D6480 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + lsls r0, 1 + adds r0, r7 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r2, 0x2 + ldrsh r0, [r6, r2] + muls r0, r1 + asrs r0, 8 + strh r0, [r5, 0x24] + movs r1, 0 + ldrsh r0, [r6, r1] + adds r0, 0x40 + lsls r0, 1 + adds r0, r7 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r2, 0x2 + ldrsh r0, [r6, r2] + muls r0, r1 + asrs r0, 8 + strh r0, [r5, 0x26] + ldrh r1, [r6, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D6442 + adds r0, r4, 0 + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r5, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x5] +_080D6442: + ldrb r2, [r5, 0x3] + lsls r2, 26 + lsrs r2, 27 + movs r0, 0x4 + ldrsh r1, [r6, r0] + lsls r0, r1, 1 + adds r0, r7 + ldrh r0, [r0] + ldr r3, _080D6484 @ =gOamMatrices + lsls r2, 3 + adds r2, r3 + adds r1, 0x40 + lsls r1, 1 + adds r1, r7 + ldrh r1, [r1] + strh r1, [r2, 0x6] + strh r1, [r2] + strh r0, [r2, 0x2] + lsls r0, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r2, 0x4] + ldrh r0, [r6, 0x6] + strh r0, [r5, 0x2E] + ldr r0, _080D6488 @ =sub_80DA48C + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D647C: .4byte gSineTable +_080D6480: .4byte gBattleAnimArgs +_080D6484: .4byte gOamMatrices +_080D6488: .4byte sub_80DA48C + thumb_func_end sub_80D6328 + + .align 2, 0 @ Don't pad with nop. |