diff options
Diffstat (limited to 'asm/poison.s')
-rw-r--r-- | asm/poison.s | 306 |
1 files changed, 306 insertions, 0 deletions
diff --git a/asm/poison.s b/asm/poison.s new file mode 100644 index 000000000..22f6c3971 --- /dev/null +++ b/asm/poison.s @@ -0,0 +1,306 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_810DBAC +sub_810DBAC: @ 810DBAC + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0810DBC2 + adds r0, r5, 0 + movs r1, 0x2 + bl StartSpriteAnim +_0810DBC2: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80A69CC + ldrh r0, [r4, 0x4] + 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, =0x0000ffe2 + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_80A68D4 + ldr r0, =sub_810DC10 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810DBAC + + thumb_func_start sub_810DC10 +sub_810DC10: @ 810DC10 + push {r4,lr} + adds r4, r0, 0 + bl TranslateAnimArc + lsls r0, 24 + cmp r0, 0 + beq _0810DC24 + adds r0, r4, 0 + bl DestroyAnimSprite +_0810DC24: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_810DC10 + + thumb_func_start sub_810DC2C +sub_810DC2C: @ 810DC2C + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldr r5, =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0810DC44 + adds r0, r4, 0 + movs r1, 0x2 + bl StartSpriteAnim +_0810DC44: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80A69CC + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + mov r6, sp + adds r6, 0x2 + movs r1, 0x1 + mov r2, sp + adds r3, r6, 0 + bl SetAverageBattlerPositions + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _0810DC72 + ldrh r0, [r5, 0x8] + negs r0, r0 + strh r0, [r5, 0x8] +_0810DC72: + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + mov r1, sp + ldrh r0, [r5, 0x8] + ldrh r1, [r1] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r0, [r5, 0xA] + ldrh r6, [r6] + adds r0, r6 + strh r0, [r4, 0x36] + ldr r0, =0x0000ffe2 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_80A68D4 + ldr r0, =sub_810DCB4 + str r0, [r4, 0x1C] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810DC2C + + thumb_func_start sub_810DCB4 +sub_810DCB4: @ 810DCB4 + push {r4,lr} + adds r4, r0, 0 + bl TranslateAnimArc + lsls r0, 24 + cmp r0, 0 + beq _0810DCC8 + adds r0, r4, 0 + bl DestroyAnimSprite +_0810DCC8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_810DCB4 + + thumb_func_start sub_810DCD0 +sub_810DCD0: @ 810DCD0 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, =gBattleAnimArgs + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r1, [r5] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrh r1, [r5, 0x2] + adds r0, r1 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80A6E14 + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r2, 0x4 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r4, 0x38] + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r2, 0x4 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r4, 0x3A] + ldr r0, =sub_810DD24 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810DCD0 + + thumb_func_start sub_810DD24 +sub_810DD24: @ 810DD24 + push {r4,lr} + adds r4, r0, 0 + bl sub_80A656C + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x38] + subs r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + ldrh r1, [r4, 0x3A] + subs r0, r1 + strh r0, [r4, 0x32] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0810DD4A + adds r0, r4, 0 + bl DestroyAnimSprite +_0810DD4A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_810DD24 + + thumb_func_start sub_810DD50 +sub_810DD50: @ 810DD50 + push {r4,lr} + adds r4, r0, 0 + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl SetAverageBattlerPositions + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _0810DD7C + ldr r1, =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_0810DD7C: + ldr r0, =gBattleAnimArgs + ldrh r2, [r0] + ldrh r1, [r4, 0x20] + adds r2, r1 + strh r2, [r4, 0x20] + ldrh r1, [r0, 0x2] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + ldrh r3, [r0, 0x8] + strh r3, [r4, 0x2E] + ldrh r0, [r0, 0x4] + adds r2, r0 + strh r2, [r4, 0x32] + adds r1, r3 + strh r1, [r4, 0x36] + ldr r0, =sub_80A6EEC + str r0, [r4, 0x1C] + ldr r1, =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810DD50 + + thumb_func_start sub_810DDC4 +sub_810DDC4: @ 810DDC4 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0810DDE0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80A6980 + b _0810DE16 + .pool +_0810DDE0: + ldr r0, =gBattleAnimTarget + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl SetAverageBattlerPositions + ldr r0, =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _0810DE06 + ldrh r0, [r5] + negs r0, r0 + strh r0, [r5] +_0810DE06: + ldrh r0, [r5] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] +_0810DE16: + ldr r0, =sub_810DE2C + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_810DDC4 + + .align 2, 0 |