diff options
Diffstat (limited to 'asm/bubble.s')
-rwxr-xr-x | asm/bubble.s | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/asm/bubble.s b/asm/bubble.s new file mode 100755 index 000000000..2bd45e8da --- /dev/null +++ b/asm/bubble.s @@ -0,0 +1,249 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ bubble + + thumb_func_start sub_80D31C8 +sub_80D31C8: @ 80D31C8 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r5, _080D31F0 @ =gBattleAnimBankAttacker + ldrb r0, [r5] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D31F8 + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080D31F4 @ =gBattleAnimArgs + ldrh r1, [r4] + subs r0, r1 + b _080D320A + .align 2, 0 +_080D31F0: .4byte gBattleAnimBankAttacker +_080D31F4: .4byte gBattleAnimArgs +_080D31F8: + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + ldr r4, _080D32D0 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 +_080D320A: + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r6, 0x22] + adds r2, r6, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080D32D4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D3240 + ldr r1, _080D32D0 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080D3240: + ldr r5, _080D32D0 @ =gBattleAnimArgs + ldrh r0, [r5, 0xC] + strh r0, [r6, 0x2E] + ldrh r0, [r6, 0x20] + strh r0, [r6, 0x30] + ldr r4, _080D32D8 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x32] + ldrh r0, [r6, 0x22] + strh r0, [r6, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x36] + adds r0, r6, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r0, _080D32DC @ =SpriteCallbackDummy + bl CreateInvisibleSpriteWithCallback + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + strh r4, [r6, 0x38] + ldrb r0, [r5, 0x8] + movs r2, 0x4 + ldrsh r1, [r5, r2] + bl Sin + ldrh r1, [r6, 0x20] + subs r1, r0 + strh r1, [r6, 0x20] + ldrb r0, [r5, 0x8] + movs r2, 0x6 + ldrsh r1, [r5, r2] + bl Cos + ldrh r1, [r6, 0x22] + subs r1, r0 + strh r1, [r6, 0x22] + ldr r0, _080D32E0 @ =gSprites + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r5, 0x4] + strh r0, [r1, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r1, 0x30] + ldrh r0, [r5, 0xA] + strh r0, [r1, 0x32] + ldrb r0, [r5, 0x8] + lsls r0, 8 + strh r0, [r1, 0x34] + ldrh r0, [r5, 0xC] + strh r0, [r1, 0x36] + ldr r1, _080D32E4 @ =sub_80D32E8 + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D32D0: .4byte gBattleAnimArgs +_080D32D4: .4byte gBattleAnimBankAttacker +_080D32D8: .4byte gBattleAnimBankTarget +_080D32DC: .4byte SpriteCallbackDummy +_080D32E0: .4byte gSprites +_080D32E4: .4byte sub_80D32E8 + thumb_func_end sub_80D31C8 + + thumb_func_start sub_80D32E8 +sub_80D32E8: @ 80D32E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r1, [r5, 0x38] + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080D3350 @ =gSprites + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r7, r0, r2 + ldrh r4, [r7, 0x36] + lsls r4, 24 + lsrs r4, 24 + ldrh r0, [r7, 0x34] + mov r8, r0 + movs r0, 0x1 + strh r0, [r5, 0x2E] + adds r0, r5, 0 + bl sub_8078B5C + mov r1, r8 + lsrs r6, r1, 8 + movs r0, 0x2E + ldrsh r1, [r7, r0] + adds r0, r6, 0 + bl Sin + ldrh r1, [r5, 0x24] + adds r0, r1 + strh r0, [r5, 0x24] + movs r0, 0x30 + ldrsh r1, [r7, r0] + adds r0, r6, 0 + bl Cos + ldrh r1, [r5, 0x26] + adds r0, r1 + strh r0, [r5, 0x26] + ldrh r0, [r7, 0x32] + mov r1, r8 + adds r1, r0 + strh r1, [r7, 0x34] + subs r4, 0x1 + lsls r4, 24 + lsrs r4, 24 + cmp r4, 0 + beq _080D3354 + strh r4, [r7, 0x36] + b _080D335E + .align 2, 0 +_080D3350: .4byte gSprites +_080D3354: + ldr r0, _080D336C @ =sub_80D3370 + str r0, [r5, 0x1C] + adds r0, r7, 0 + bl DestroySprite +_080D335E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D336C: .4byte sub_80D3370 + thumb_func_end sub_80D32E8 + + thumb_func_start sub_80D3370 +sub_80D3370: @ 80D3370 + push {lr} + adds r3, r0, 0 + adds r3, 0x2C + ldrb r2, [r3] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + strb r1, [r3] + ldr r1, _080D3390 @ =sub_8078600 + str r1, [r0, 0x1C] + ldr r1, _080D3394 @ =sub_80D3398 + bl StoreSpriteCallbackInData + pop {r0} + bx r0 + .align 2, 0 +_080D3390: .4byte sub_8078600 +_080D3394: .4byte sub_80D3398 + thumb_func_end sub_80D3370 + + thumb_func_start sub_80D3398 +sub_80D3398: @ 80D3398 + push {lr} + movs r1, 0xA + strh r1, [r0, 0x2E] + ldr r1, _080D33AC @ =sub_80782D8 + str r1, [r0, 0x1C] + ldr r1, _080D33B0 @ =move_anim_8074EE0 + bl StoreSpriteCallbackInData + pop {r0} + bx r0 + .align 2, 0 +_080D33AC: .4byte sub_80782D8 +_080D33B0: .4byte move_anim_8074EE0 + thumb_func_end sub_80D3398 + + .align 2, 0 @ Don't pad with nop. |