diff options
Diffstat (limited to 'asm/fire_2.s')
-rwxr-xr-x | asm/fire_2.s | 956 |
1 files changed, 956 insertions, 0 deletions
diff --git a/asm/fire_2.s b/asm/fire_2.s new file mode 100755 index 000000000..521c7fd3f --- /dev/null +++ b/asm/fire_2.s @@ -0,0 +1,956 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ fire_2 + + thumb_func_start sub_80D51A8 +sub_80D51A8: @ 80D51A8 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r5, _080D5200 @ =gBattleAnimBankAttacker + ldrb r0, [r5] + bl GetBankSide + adds r4, r0, 0 + ldr r0, _080D5204 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080D51EE + movs r0, 0x2 + bl GetBankByPlayerAI + ldrb r1, [r5] + lsls r0, 24 + lsrs r0, 24 + cmp r1, r0 + beq _080D51E6 + movs r0, 0x3 + bl GetBankByPlayerAI + ldrb r1, [r5] + lsls r0, 24 + lsrs r0, 24 + cmp r1, r0 + bne _080D51EE +_080D51E6: + ldr r1, _080D5208 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080D51EE: + ldr r1, _080D520C @ =sub_8079534 + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D5200: .4byte gBattleAnimBankAttacker +_080D5204: .4byte gBattleAnimBankTarget +_080D5208: .4byte gBattleAnimArgs +_080D520C: .4byte sub_8079534 + thumb_func_end sub_80D51A8 + + thumb_func_start sub_80D5210 +sub_80D5210: @ 80D5210 + ldr r2, _080D5224 @ =gBattleAnimArgs + ldrh r1, [r2] + negs r1, r1 + strh r1, [r2] + ldrh r1, [r2, 0x4] + negs r1, r1 + strh r1, [r2, 0x4] + ldr r1, _080D5228 @ =sub_8079534 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080D5224: .4byte gBattleAnimArgs +_080D5228: .4byte sub_8079534 + thumb_func_end sub_80D5210 + + thumb_func_start sub_80D522C +sub_80D522C: @ 80D522C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080D524C @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + movs r1, 0 + strh r0, [r4, 0x3C] + strh r1, [r4, 0x2E] + ldr r0, _080D5250 @ =sub_80D5254 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D524C: .4byte gBattleAnimArgs +_080D5250: .4byte sub_80D5254 + thumb_func_end sub_80D522C + + thumb_func_start sub_80D5254 +sub_80D5254: @ 80D5254 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_80D5348 + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x12 + bne _080D529E + movs r0, 0x19 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080D52A4 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r0, _080D52A8 @ =sub_80D52AC + str r0, [r5, 0x1C] +_080D529E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D52A4: .4byte gBattleAnimBankTarget +_080D52A8: .4byte sub_80D52AC + thumb_func_end sub_80D5254 + + thumb_func_start sub_80D52AC +sub_80D52AC: @ 80D52AC + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + beq _080D52F4 + movs r4, 0 + strh r4, [r6, 0x2E] + ldr r5, _080D52EC @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x22] + strh r4, [r6, 0x26] + strh r4, [r6, 0x24] + ldr r1, _080D52F0 @ =sub_80D5324 + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + b _080D531E + .align 2, 0 +_080D52EC: .4byte gBattleAnimBankTarget +_080D52F0: .4byte sub_80D5324 +_080D52F4: + movs r1, 0x3C + ldrsh r0, [r6, r1] + movs r1, 0x1C + bl Sin + ldrh r1, [r6, 0x24] + adds r0, r1 + strh r0, [r6, 0x24] + movs r1, 0x3C + ldrsh r0, [r6, r1] + movs r1, 0x1C + bl Cos + ldrh r1, [r6, 0x26] + adds r0, r1 + strh r0, [r6, 0x26] + ldrh r0, [r6, 0x3C] + adds r0, 0x14 + movs r1, 0xFF + ands r0, r1 + strh r0, [r6, 0x3C] +_080D531E: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80D52AC + + thumb_func_start sub_80D5324 +sub_80D5324: @ 80D5324 + push {r4,lr} + adds r4, r0, 0 + bl sub_80D5348 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080D5340 + adds r0, r4, 0 + bl move_anim_8072740 +_080D5340: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D5324 + + thumb_func_start sub_80D5348 +sub_80D5348: @ 80D5348 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r1, 0x1C + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r1, 0x1C + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3C] + adds r0, 0x14 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D5348 + + thumb_func_start sub_80D5374 +sub_80D5374: @ 80D5374 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080D53A8 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x32] + ldr r1, _080D53AC @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D53B0 @ =sub_8078364 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D53A8: .4byte gBattleAnimArgs +_080D53AC: .4byte move_anim_8072740 +_080D53B0: .4byte sub_8078364 + thumb_func_end sub_80D5374 + + thumb_func_start sub_80D53B4 +sub_80D53B4: @ 80D53B4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r1, _080D53E8 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x2E] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080D53EC @ =sub_80782D8 + str r0, [r4, 0x1C] + ldr r1, _080D53F0 @ =sub_80D53F4 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D53E8: .4byte gBattleAnimArgs +_080D53EC: .4byte sub_80782D8 +_080D53F0: .4byte sub_80D53F4 + thumb_func_end sub_80D53B4 + + thumb_func_start sub_80D53F4 +sub_80D53F4: @ 80D53F4 + push {lr} + adds r3, r0, 0 + adds r3, 0x3E + ldrb r2, [r3] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r3] + ldrh r1, [r0, 0x30] + movs r2, 0 + strh r1, [r0, 0x2E] + strh r2, [r0, 0x30] + ldr r1, _080D5418 @ =sub_80D541C + str r1, [r0, 0x1C] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080D5418: .4byte sub_80D541C + thumb_func_end sub_80D53F4 + + thumb_func_start sub_80D541C +sub_80D541C: @ 80D541C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0xA + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + adds r0, 0xD0 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080D5468 + adds r0, r4, 0 + bl move_anim_8072740 +_080D5468: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D541C + + thumb_func_start sub_80D5470 +sub_80D5470: @ 80D5470 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080D54D0 @ =gTasks + adds r4, r0 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r4, 0x26] + strh r5, [r4, 0x8] + strh r5, [r4, 0xA] + strh r5, [r4, 0xC] + strh r5, [r4, 0xE] + ldr r2, _080D54D4 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x22] + strh r0, [r4, 0x10] + ldr r0, _080D54D8 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x12] + strh r5, [r4, 0x14] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8078E70 + ldr r0, _080D54DC @ =sub_80D54E0 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D54D0: .4byte gTasks +_080D54D4: .4byte gSprites +_080D54D8: .4byte gBattleAnimBankAttacker +_080D54DC: .4byte sub_80D54E0 + thumb_func_end sub_80D5470 + + thumb_func_start sub_80D54E0 +sub_80D54E0: @ 80D54E0 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080D5508 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x6 + bls _080D54FC + b _080D57BA +_080D54FC: + lsls r0, 2 + ldr r1, _080D550C @ =_080D5510 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D5508: .4byte gTasks +_080D550C: .4byte _080D5510 + .align 2, 0 +_080D5510: + .4byte _080D552C + .4byte _080D5552 + .4byte _080D5604 + .4byte _080D5664 + .4byte _080D5682 + .4byte _080D5758 + .4byte _080D57AC +_080D552C: + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r3, 0x80 + lsls r3, 1 + movs r0, 0xE0 + str r0, [sp] + movs r0, 0x80 + lsls r0, 2 + str r0, [sp, 0x4] + movs r0, 0x20 + str r0, [sp, 0x8] + adds r0, r4, 0 + adds r2, r3, 0 + bl sub_8079C08 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080D5552: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D559A + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D5588 + ldr r2, _080D5584 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + b _080D5598 + .align 2, 0 +_080D5584: .4byte gSprites +_080D5588: + ldr r2, _080D55FC @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080D5600 @ =0x0000fffd +_080D5598: + strh r1, [r0, 0x24] +_080D559A: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D55C8 + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080D55C8 + movs r0, 0 + strh r0, [r4, 0xE] + ldr r2, _080D55FC @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + adds r1, 0x1 + strh r1, [r0, 0x22] +_080D55C8: + adds r0, r4, 0 + bl sub_8079C74 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _080D55D8 + b _080D57BA +_080D55D8: + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8079A64 + ldr r2, _080D55FC @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r5, [r0, 0x24] + strh r5, [r4, 0xA] + strh r5, [r4, 0xC] + strh r5, [r4, 0xE] + b _080D57A0 + .align 2, 0 +_080D55FC: .4byte gSprites +_080D5600: .4byte 0x0000fffd +_080D5604: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bgt _080D5614 + b _080D57BA +_080D5614: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D563E + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r3, 0x80 + lsls r3, 2 + movs r0, 0xC0 + lsls r0, 1 + str r0, [sp] + movs r0, 0xF0 + str r0, [sp, 0x4] + movs r0, 0x6 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r2, 0xE0 + bl sub_8079C08 + b _080D565E +_080D563E: + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r3, 0x80 + lsls r3, 2 + movs r0, 0xC0 + lsls r0, 1 + str r0, [sp] + movs r0, 0xC0 + str r0, [sp, 0x4] + movs r0, 0x6 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r2, 0xE0 + bl sub_8079C08 +_080D565E: + movs r0, 0 + strh r0, [r4, 0xA] + b _080D57A0 +_080D5664: + adds r0, r4, 0 + bl sub_8079C74 + lsls r0, 24 + cmp r0, 0 + beq _080D5672 + b _080D57BA +_080D5672: + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + adds r1, r5, 0 + movs r2, 0x6 + bl sub_80D57C4 + b _080D57A0 +_080D5682: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D56D0 + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D56BC + ldr r2, _080D56B8 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + adds r1, 0x3 + b _080D56CE + .align 2, 0 +_080D56B8: .4byte gSprites +_080D56BC: + ldr r2, _080D5708 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x3 +_080D56CE: + strh r1, [r0, 0x26] +_080D56D0: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x18 + ble _080D57BA + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D570C + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r2, 0xC0 + lsls r2, 1 + movs r0, 0x80 + lsls r0, 1 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x8 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r3, 0xF0 + bl sub_8079C08 + b _080D572A + .align 2, 0 +_080D5708: .4byte gSprites +_080D570C: + ldrh r1, [r4, 0x26] + lsls r1, 24 + lsrs r1, 24 + movs r2, 0xC0 + lsls r2, 1 + movs r0, 0x80 + lsls r0, 1 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0x8 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r3, 0xC0 + bl sub_8079C08 +_080D572A: + ldrh r1, [r4, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D5748 + ldr r2, _080D5754 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x3 + strh r1, [r0, 0x26] +_080D5748: + movs r0, 0 + strh r0, [r4, 0xA] + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + b _080D57A0 + .align 2, 0 +_080D5754: .4byte gSprites +_080D5758: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D5774 + ldr r2, _080D57A8 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + subs r1, 0x1 + strh r1, [r0, 0x22] +_080D5774: + adds r0, r4, 0 + bl sub_8079C74 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080D57BA + ldr r2, _080D57A8 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x10] + strh r1, [r0, 0x22] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8078F40 + strh r5, [r4, 0xC] +_080D57A0: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080D57BA + .align 2, 0 +_080D57A8: .4byte gSprites +_080D57AC: + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D57BA + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080D57BA: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D54E0 + + thumb_func_start sub_80D57C4 +sub_80D57C4: @ 80D57C4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + adds r0, r4, 0 + bl sub_80D5940 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + ldr r1, _080D5814 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrh r4, [r0, 0x20] + ldr r0, _080D5818 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D581C + adds r0, r4, 0 + subs r0, 0xC + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x1 + b _080D5826 + .align 2, 0 +_080D5814: .4byte gSprites +_080D5818: .4byte gBattleAnimBankAttacker +_080D581C: + adds r0, r4, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0xFF +_080D5826: + movs r6, 0 + movs r5, 0 + lsls r4, 16 + str r4, [sp, 0x8] + mov r1, r9 + lsls r1, 16 + str r1, [sp, 0x4] + ldr r2, _080D58E0 @ =gUnknown_083D96DC + mov r9, r2 + lsls r0, 24 + asrs r0, 24 + str r0, [sp] + mov r3, r8 + lsls r3, 1 + mov r10, r3 +_080D5844: + ldr r0, _080D58E4 @ =gSpriteTemplate_83D96C4 + ldr r2, [sp, 0x8] + asrs r1, r2, 16 + ldr r3, [sp, 0x4] + asrs r2, r3, 16 + movs r3, 0x2 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080D58C6 + ldr r1, _080D58E8 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r1 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + lsls r0, r5, 2 + adds r0, 0x40 + adds r1, r0 + ldr r3, _080D58EC @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r3, _080D58F0 @ =0xfffffc00 + adds r0, r3, 0 + ands r2, r0 + orrs r2, r1 + strh r2, [r4, 0x4] + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x4 + bls _080D588E + movs r5, 0 +_080D588E: + lsls r2, r6, 2 + mov r1, r9 + adds r0, r2, r1 + ldrh r0, [r0] + ldr r3, [sp] + adds r1, r0, 0 + muls r1, r3 + lsls r1, 16 + asrs r1, 16 + ldr r0, _080D58F4 @ =gUnknown_083D96DC + 0x2 + adds r2, r0 + movs r3, 0 + ldrsh r2, [r2, r3] + adds r0, r4, 0 + bl sub_80D5994 + strh r7, [r4, 0x3A] + mov r0, r8 + strh r0, [r4, 0x3C] + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + add r0, r10 + ldr r1, _080D58F8 @ =gTasks + 0x8 + adds r0, r1 + ldrh r1, [r0] + adds r1, 0x1 + strh r1, [r0] +_080D58C6: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x6 + bls _080D5844 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D58E0: .4byte gUnknown_083D96DC +_080D58E4: .4byte gSpriteTemplate_83D96C4 +_080D58E8: .4byte gSprites +_080D58EC: .4byte 0x000003ff +_080D58F0: .4byte 0xfffffc00 +_080D58F4: .4byte gUnknown_083D96DC + 0x2 +_080D58F8: .4byte gTasks + 0x8 + thumb_func_end sub_80D57C4 + + .align 2, 0 @ Don't pad with nop. |