diff options
168 files changed, 55082 insertions, 57164 deletions
@@ -40,9 +40,9 @@ VERSIONS := ruby sapphire ruby_rev1 sapphire_rev1 ruby_rev2 sapphire_rev2 ruby_d $(VERSIONS) $(VERSIONS:%=compare_%) -$(shell mkdir -p build/ $(VERSIONS:%=build/%/{,asm,data,src{,/battle,/field,/debug,/scene,/pokemon,/engine,/libs}})) +$(shell mkdir -p build/ $(VERSIONS:%=build/%/{,asm,data,src{,/battle{,/anim},/field,/debug,/scene,/pokemon,/engine,/libs}})) -C_SRCS := $(wildcard src/*/*.c) $(wildcard src/*.c) +C_SRCS := $(shell find src -iname "*.c") ASM_SRCS := $(wildcard asm/*.s) DATA_ASM_SRCS := $(wildcard data/*.s) diff --git a/asm/aurora.s b/asm/aurora.s new file mode 100755 index 000000000..e5de7c419 --- /dev/null +++ b/asm/aurora.s @@ -0,0 +1,218 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ aurora + + thumb_func_start sub_80D33B4 +sub_80D33B4: @ 80D33B4 + push {r4-r7,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080D33DC @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D33E4 + ldr r1, _080D33E0 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + lsls r0, 16 + lsrs r6, r0, 16 + adds r7, r1, 0 + b _080D33EA + .align 2, 0 +_080D33DC: .4byte gBattleAnimBankAttacker +_080D33E0: .4byte gBattleAnimArgs +_080D33E4: + ldr r0, _080D3440 @ =gBattleAnimArgs + ldrh r6, [r0, 0x4] + adds r7, r0, 0 +_080D33EA: + ldrh r0, [r7, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080D3444 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + 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 + ldrh r7, [r7, 0x6] + adds r0, r7 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r0, _080D3448 @ =sub_80D344C + str r0, [r5, 0x1C] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D3440: .4byte gBattleAnimArgs +_080D3444: .4byte gBattleAnimBankTarget +_080D3448: .4byte sub_80D344C + thumb_func_end sub_80D33B4 + + thumb_func_start sub_80D344C +sub_80D344C: @ 80D344C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D3488 @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, _080D348C @ =0x0000ffff + cmp r1, r0 + bne _080D346E + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] +_080D346E: + adds r0, r4, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + beq _080D3480 + adds r0, r4, 0 + bl move_anim_8072740 +_080D3480: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D3488: .4byte gBattleAnimArgs +_080D348C: .4byte 0x0000ffff + thumb_func_end sub_80D344C + + thumb_func_start sub_80D3490 +sub_80D3490: @ 80D3490 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080D34C4 @ =gTasks + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r0, _080D34C8 @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r4, 0x8] + ldr r0, _080D34CC @ =0x0000279c + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + strh r0, [r4, 0xC] + ldr r0, _080D34D0 @ =sub_80D34D4 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D34C4: .4byte gTasks +_080D34C8: .4byte gBattleAnimArgs +_080D34CC: .4byte 0x0000279c +_080D34D0: .4byte sub_80D34D4 + thumb_func_end sub_80D3490 + + thumb_func_start sub_80D34D4 +sub_80D34D4: @ 80D34D4 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080D354C @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r1 + ldrh r0, [r2, 0x1C] + adds r0, 0x1 + strh r0, [r2, 0x1C] + lsls r0, 16 + asrs r0, 16 + mov r12, r1 + cmp r0, 0x3 + bne _080D3526 + movs r0, 0 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r1, _080D3550 @ =gPlttBufferFaded + lsls r0, r5, 1 + adds r0, r1 + ldrh r6, [r0] + adds r7, r1, 0 + adds r3, r0, 0x2 + movs r1, 0x6 + adds r2, r0, 0 +_080D3510: + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080D3510 + adds r0, r5, 0x7 + lsls r0, 1 + adds r0, r7 + strh r6, [r0] +_080D3526: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + add r0, r12 + ldrh r1, [r0, 0x1E] + adds r1, 0x1 + strh r1, [r0, 0x1E] + lsls r1, 16 + asrs r1, 16 + movs r2, 0x8 + ldrsh r0, [r0, r2] + cmp r1, r0 + bne _080D3546 + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080D3546: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D354C: .4byte gTasks +_080D3550: .4byte gPlttBufferFaded + thumb_func_end sub_80D34D4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s deleted file mode 100644 index 17d1a39db..000000000 --- a/asm/battle_anim_80CA710.s +++ /dev/null @@ -1,37923 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D2ABC -sub_80D2ABC: @ 80D2ABC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2AF6 - ldr r1, _080D2BB8 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldr r0, _080D2BBC @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079E90 - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r0, 0x1 - strh r0, [r4, 0x32] -_080D2AF6: - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r0, r2 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r1, r0, 2 - adds r0, r1, 0 - cmp r1, 0 - bge _080D2B0C - adds r0, 0xFF -_080D2B0C: - asrs r0, 8 - lsls r0, 8 - subs r0, r1, r0 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080D2B1E - movs r0, 0 - strh r0, [r4, 0x30] -_080D2B1E: - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080D2B2C - adds r0, 0x3 -_080D2B2C: - asrs r0, 2 - movs r1, 0x1E - subs r1, r0 - adds r0, r2, 0 - bl Cos - strh r0, [r4, 0x24] - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080D2B48 - adds r0, 0x7 -_080D2B48: - asrs r0, 3 - movs r1, 0xA - subs r1, r0 - adds r0, r2, 0 - bl Sin - strh r0, [r4, 0x26] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x80 - ble _080D2B6C - ldrh r1, [r4, 0x32] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080D2B6C - ldr r0, _080D2BC0 @ =0x0000ffff - strh r0, [r4, 0x32] -_080D2B6C: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2B80 - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - bge _080D2B80 - movs r0, 0x1 - strh r0, [r4, 0x32] -_080D2B80: - ldrh r0, [r4, 0x34] - adds r1, r0, 0x1 - strh r1, [r4, 0x34] - subs r0, 0x9 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x46 - bls _080D2BC4 - movs r0, 0x2E - 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] - b _080D2BD2 - .align 2, 0 -_080D2BB8: .4byte gBattleAnimArgs -_080D2BBC: .4byte gBattleAnimBankTarget -_080D2BC0: .4byte 0x0000ffff -_080D2BC4: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080D2BD2: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x5A - ble _080D2BE0 - adds r0, r4, 0 - bl move_anim_8072740 -_080D2BE0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D2ABC - - thumb_func_start sub_80D2BE8 -sub_80D2BE8: @ 80D2BE8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2C1C - ldr r1, _080D2C18 @ =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] - ldrb r1, [r1, 0x4] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080D2C30 - .align 2, 0 -_080D2C18: .4byte gBattleAnimArgs -_080D2C1C: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D2C30 - adds r0, r4, 0 - bl move_anim_8072740 -_080D2C30: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D2BE8 - - thumb_func_start sub_80D2C38 -sub_80D2C38: @ 80D2C38 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _080D2C50 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080D2C54 - adds r0, r5, 0 - bl move_anim_8072740 - b _080D2CB8 - .align 2, 0 -_080D2C50: .4byte gBattleAnimArgs -_080D2C54: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080D2C64 - ldr r4, _080D2C60 @ =gBattleAnimBankAttacker - b _080D2C66 - .align 2, 0 -_080D2C60: .4byte gBattleAnimBankAttacker -_080D2C64: - ldr r4, _080D2C94 @ =gBattleAnimBankTarget -_080D2C66: - 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, _080D2C98 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r1, [r0, r2] - adds r2, r0, 0 - cmp r1, 0 - bne _080D2C9C - ldrh r0, [r5, 0x20] - adds r0, 0x20 - b _080D2CA0 - .align 2, 0 -_080D2C94: .4byte gBattleAnimBankTarget -_080D2C98: .4byte gBattleAnimArgs -_080D2C9C: - ldrh r0, [r5, 0x20] - subs r0, 0x20 -_080D2CA0: - strh r0, [r5, 0x20] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080D2CC0 @ =sub_80D2CC4 - str r0, [r5, 0x1C] -_080D2CB8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2CC0: .4byte sub_80D2CC4 - thumb_func_end sub_80D2C38 - - thumb_func_start sub_80D2CC4 -sub_80D2CC4: @ 80D2CC4 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D2CF4 - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - beq _080D2CEE - ldrh r1, [r2, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim - b _080D2CF4 -_080D2CEE: - adds r0, r2, 0 - bl move_anim_8072740 -_080D2CF4: - pop {r0} - bx r0 - thumb_func_end sub_80D2CC4 - - thumb_func_start sub_80D2CF8 -sub_80D2CF8: @ 80D2CF8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080D2D2C @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _080D2D30 @ =gTasks - adds r4, r0 - ldr r2, _080D2D34 @ =gUnknown_083D7CA8 - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _080D2D38 @ =sub_80D2D3C - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2D2C: .4byte gBattleAnimArgs -_080D2D30: .4byte gTasks -_080D2D34: .4byte gUnknown_083D7CA8 -_080D2D38: .4byte sub_80D2D3C - thumb_func_end sub_80D2CF8 - - thumb_func_start sub_80D2D3C -sub_80D2D3C: @ 80D2D3C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D2D64 @ =gTasks - adds r0, r1 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _080D2D5C - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D2D5C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D2D64: .4byte gTasks - thumb_func_end sub_80D2D3C - - thumb_func_start sub_80D2D68 -sub_80D2D68: @ 80D2D68 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, _080D2D7C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D2D84 - ldr r0, _080D2D80 @ =gBattleAnimBankAttacker - b _080D2D86 - .align 2, 0 -_080D2D7C: .4byte gBattleAnimArgs -_080D2D80: .4byte gBattleAnimBankAttacker -_080D2D84: - ldr r0, _080D2E1C @ =gBattleAnimBankTarget -_080D2D86: - ldrb r6, [r0] - adds r0, r6, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D2DA0 - ldr r1, _080D2E20 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080D2DA0: - adds r0, r6, 0 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - ldr r7, _080D2E20 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r3, [r7, 0x2] - adds r0, r3 - movs r4, 0 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r7, 0x4] - adds r0, r1 - strh r0, [r5, 0x22] - strh r4, [r5, 0x2E] - ldrh r1, [r5, 0x20] - lsls r1, 3 - strh r1, [r5, 0x30] - lsls r0, 3 - strh r0, [r5, 0x32] - movs r2, 0x2 - ldrsh r0, [r7, r2] - lsls r0, 3 - cmp r0, 0 - bge _080D2DE0 - adds r0, 0x7 -_080D2DE0: - asrs r0, 3 - strh r0, [r5, 0x34] - movs r3, 0x4 - ldrsh r0, [r7, r3] - lsls r0, 3 - cmp r0, 0 - bge _080D2DF0 - adds r0, 0x7 -_080D2DF0: - asrs r0, 3 - strh r0, [r5, 0x36] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0x6 - ldrsh r0, [r7, r3] - lsls r0, 4 - adds r1, r0 - ldr r3, _080D2E24 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080D2E28 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r0, _080D2E2C @ =sub_80D2E30 - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D2E1C: .4byte gBattleAnimBankTarget -_080D2E20: .4byte gBattleAnimArgs -_080D2E24: .4byte 0x000003ff -_080D2E28: .4byte 0xfffffc00 -_080D2E2C: .4byte sub_80D2E30 - thumb_func_end sub_80D2D68 - - thumb_func_start sub_80D2E30 -sub_80D2E30: @ 80D2E30 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - ldrh r3, [r2, 0x32] - adds r1, r3 - strh r1, [r2, 0x32] - lsls r0, 16 - asrs r0, 19 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 19 - strh r1, [r2, 0x22] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080D2E64 - adds r0, r2, 0 - bl move_anim_8072740 -_080D2E64: - pop {r0} - bx r0 - thumb_func_end sub_80D2E30 - - thumb_func_start sub_80D2E68 -sub_80D2E68: @ 80D2E68 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2E8A - ldr r0, _080D2EC4 @ =gBattleAnimArgs - ldrh r1, [r0] - movs r0, 0x78 - subs r0, r1 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080D2E8A: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080D2EA8 - ldrb r0, [r4, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0 - bl sub_8079108 -_080D2EA8: - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r2, 0x30 - ldrsh r0, [r4, r2] - adds r0, 0x50 - cmp r1, r0 - bne _080D2EBC - adds r0, r4, 0 - bl move_anim_8072740 -_080D2EBC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D2EC4: .4byte gBattleAnimArgs - thumb_func_end sub_80D2E68 - - thumb_func_start sub_80D2EC8 -sub_80D2EC8: @ 80D2EC8 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080D2EF6 - movs r5, 0x78 - strh r5, [r6, 0x20] - ldr r4, _080D2F78 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r4, r2] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - subs r0, 0xF - strh r0, [r6, 0x22] - ldrb r1, [r4, 0x2] - adds r0, r6, 0 - bl StartSpriteAnim - strh r5, [r6, 0x38] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x34] -_080D2EF6: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - movs r5, 0 - strh r0, [r6, 0x2E] - movs r1, 0x2E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r6, 0x30] - movs r2, 0x2E - ldrsh r0, [r6, r2] - lsls r4, r0, 1 - adds r4, r0 - ldrh r0, [r6, 0x34] - adds r4, r0 - movs r2, 0xFF - ldrh r0, [r6, 0x3A] - adds r0, 0xA - movs r1, 0xFF - ands r0, r1 - strh r0, [r6, 0x3A] - ands r4, r2 - adds r0, r4, 0 - movs r1, 0x64 - bl Cos - strh r0, [r6, 0x24] - adds r0, r4, 0 - movs r1, 0xA - bl Sin - adds r4, r0, 0 - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r1, 0x4 - bl Cos - ldrh r2, [r6, 0x30] - adds r4, r2 - adds r0, r4 - strh r0, [r6, 0x26] - movs r0, 0x2E - ldrsh r1, [r6, r0] - movs r2, 0x38 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _080D2F72 - ldr r0, _080D2F7C @ =sub_80D2F80 - str r0, [r6, 0x1C] - strh r5, [r6, 0x2E] - adds r0, r6, 0 - bl oamt_add_pos2_onto_pos1 - movs r0, 0x5 - strh r0, [r6, 0x32] - strh r5, [r6, 0x36] - strh r5, [r6, 0x34] - adds r0, r6, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080D2F72: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D2F78: .4byte gBattleAnimArgs -_080D2F7C: .4byte sub_80D2F80 - thumb_func_end sub_80D2EC8 - - thumb_func_start sub_80D2F80 -sub_80D2F80: @ 80D2F80 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - ble _080D2F9A - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, _080D2FA0 @ =sub_80D2FA4 - str r0, [r1, 0x1C] -_080D2F9A: - pop {r0} - bx r0 - .align 2, 0 -_080D2FA0: .4byte sub_80D2FA4 - thumb_func_end sub_80D2F80 - - thumb_func_start sub_80D2FA4 -sub_80D2FA4: @ 80D2FA4 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x34] - adds r0, r1, r2 - strh r0, [r4, 0x34] - strh r0, [r4, 0x26] - adds r1, 0x1 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x30 - ble _080D2FCE - lsls r0, r1, 16 - cmp r0, 0 - ble _080D2FCE - ldrh r0, [r4, 0x36] - subs r1, r0, 0x5 - strh r1, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x36] -_080D2FCE: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x3 - ble _080D3000 - movs r2, 0x32 - ldrsh r1, [r4, r2] - 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] - adds r0, r4, 0 - bl move_anim_8072740 -_080D3000: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bne _080D300E - adds r0, r4, 0 - bl move_anim_8072740 -_080D300E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D2FA4 - - thumb_func_start sub_80D3014 -sub_80D3014: @ 80D3014 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080D3058 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D3060 - ldr r4, _080D305C @ =gBattleAnimBankAttacker - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080D3060 - ldrb r0, [r4] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - movs r1, 0 - bl sub_807A3FC - ldrh r0, [r5, 0x22] - adds r0, 0x28 - strh r0, [r5, 0x22] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080D3080 - .align 2, 0 -_080D3058: .4byte gBattleTypeFlags -_080D305C: .4byte gBattleAnimBankAttacker -_080D3060: - ldr r4, _080D30A0 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x28 - strh r0, [r5, 0x22] -_080D3080: - movs r0, 0xD - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - subs r0, 0x48 - strh r0, [r5, 0x36] - ldr r0, _080D30A4 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080D30A8 @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D30A0: .4byte gBattleAnimBankAttacker -_080D30A4: .4byte sub_8078B34 -_080D30A8: .4byte move_anim_8072740 - thumb_func_end sub_80D3014 - - thumb_func_start sub_80D30AC -sub_80D30AC: @ 80D30AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080D30C8 @ =gBattleAnimArgs - ldr r1, _080D30CC @ =gDisableStructMoveAnim - ldr r1, [r1] - ldrb r2, [r1, 0x10] - movs r1, 0x1 - ands r1, r2 - strh r1, [r3, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080D30C8: .4byte gBattleAnimArgs -_080D30CC: .4byte gDisableStructMoveAnim - thumb_func_end sub_80D30AC - - thumb_func_start update_fury_cutter_counter_copy -update_fury_cutter_counter_copy: @ 80D30D0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D30E8 @ =gBattleAnimArgs - ldr r1, _080D30EC @ =gDisableStructMoveAnim - ldr r1, [r1] - ldrb r1, [r1, 0x10] - strh r1, [r2, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080D30E8: .4byte gBattleAnimArgs -_080D30EC: .4byte gDisableStructMoveAnim - thumb_func_end update_fury_cutter_counter_copy - - thumb_func_start sub_80D30F0 -sub_80D30F0: @ 80D30F0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080D3178 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D3118 - ldr r1, _080D317C @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r5, 0xA] - ldrh r0, [r1, 0x2] - strh r0, [r5, 0xC] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0xE] -_080D3118: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r2, 0x8 - ldrsh r0, [r5, r2] - movs r2, 0xC - ldrsh r1, [r5, r2] - bl __modsi3 - cmp r0, 0x1 - bne _080D3160 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF0 - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x50 - bl __umodsi3 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _080D3180 @ =gSpriteTemplate_83D9130 - adds r1, r4, 0 - movs r3, 0x4 - bl CreateSprite -_080D3160: - movs r0, 0x8 - ldrsh r1, [r5, r0] - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _080D3172 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080D3172: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D3178: .4byte gTasks -_080D317C: .4byte gBattleAnimArgs -_080D3180: .4byte gSpriteTemplate_83D9130 - thumb_func_end sub_80D30F0 - - thumb_func_start sub_80D3184 -sub_80D3184: @ 80D3184 - ldr r1, _080D318C @ =sub_80D3190 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080D318C: .4byte sub_80D3190 - thumb_func_end sub_80D3184 - - thumb_func_start sub_80D3190 -sub_80D3190: @ 80D3190 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - bgt _080D31AE - ldrh r0, [r2, 0x24] - adds r0, 0x1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x26] - adds r0, 0x4 - strh r0, [r2, 0x26] -_080D31AE: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D31C2 - adds r0, r2, 0 - bl DestroySprite -_080D31C2: - pop {r0} - bx r0 - thumb_func_end sub_80D3190 - - 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 - - thumb_func_start sub_80D33B4 -sub_80D33B4: @ 80D33B4 - push {r4-r7,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080D33DC @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D33E4 - ldr r1, _080D33E0 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - lsls r0, 16 - lsrs r6, r0, 16 - adds r7, r1, 0 - b _080D33EA - .align 2, 0 -_080D33DC: .4byte gBattleAnimBankAttacker -_080D33E0: .4byte gBattleAnimArgs -_080D33E4: - ldr r0, _080D3440 @ =gBattleAnimArgs - ldrh r6, [r0, 0x4] - adds r7, r0, 0 -_080D33EA: - ldrh r0, [r7, 0x8] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080D3444 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - 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 - ldrh r7, [r7, 0x6] - adds r0, r7 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080D3448 @ =sub_80D344C - str r0, [r5, 0x1C] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D3440: .4byte gBattleAnimArgs -_080D3444: .4byte gBattleAnimBankTarget -_080D3448: .4byte sub_80D344C - thumb_func_end sub_80D33B4 - - thumb_func_start sub_80D344C -sub_80D344C: @ 80D344C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D3488 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080D348C @ =0x0000ffff - cmp r1, r0 - bne _080D346E - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] -_080D346E: - adds r0, r4, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080D3480 - adds r0, r4, 0 - bl move_anim_8072740 -_080D3480: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D3488: .4byte gBattleAnimArgs -_080D348C: .4byte 0x0000ffff - thumb_func_end sub_80D344C - - thumb_func_start sub_80D3490 -sub_80D3490: @ 80D3490 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080D34C4 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r0, _080D34C8 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x8] - ldr r0, _080D34CC @ =0x0000279c - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r4, 0xC] - ldr r0, _080D34D0 @ =sub_80D34D4 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D34C4: .4byte gTasks -_080D34C8: .4byte gBattleAnimArgs -_080D34CC: .4byte 0x0000279c -_080D34D0: .4byte sub_80D34D4 - thumb_func_end sub_80D3490 - - thumb_func_start sub_80D34D4 -sub_80D34D4: @ 80D34D4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080D354C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x1C] - adds r0, 0x1 - strh r0, [r2, 0x1C] - lsls r0, 16 - asrs r0, 16 - mov r12, r1 - cmp r0, 0x3 - bne _080D3526 - movs r0, 0 - strh r0, [r2, 0x1C] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, _080D3550 @ =gPlttBufferFaded - lsls r0, r5, 1 - adds r0, r1 - ldrh r6, [r0] - adds r7, r1, 0 - adds r3, r0, 0x2 - movs r1, 0x6 - adds r2, r0, 0 -_080D3510: - ldrh r0, [r3] - strh r0, [r2] - adds r3, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080D3510 - adds r0, r5, 0x7 - lsls r0, 1 - adds r0, r7 - strh r6, [r0] -_080D3526: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r12 - ldrh r1, [r0, 0x1E] - adds r1, 0x1 - strh r1, [r0, 0x1E] - lsls r1, 16 - asrs r1, 16 - movs r2, 0x8 - ldrsh r0, [r0, r2] - cmp r1, r0 - bne _080D3546 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D3546: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D354C: .4byte gTasks -_080D3550: .4byte gPlttBufferFaded - thumb_func_end sub_80D34D4 - - thumb_func_start sub_80D3554 -sub_80D3554: @ 80D3554 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - movs r0, 0x1E - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080D35BC @ =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 - movs r0, 0x2E - ldrsh r1, [r5, r0] - movs r0, 0xD2 - lsls r0, 8 - bl __divsi3 - strh r0, [r5, 0x38] - ldr r0, _080D35C0 @ =gBattleAnimArgs - ldrh r2, [r0, 0x6] - strh r2, [r5, 0x3C] - ldrh r1, [r0, 0xE] - movs r3, 0xE - ldrsh r0, [r0, r3] - cmp r0, 0x7F - ble _080D35C4 - adds r0, r1, 0 - subs r0, 0x7F - lsls r0, 8 - strh r0, [r5, 0x3A] - negs r0, r2 - strh r0, [r5, 0x3C] - b _080D35C8 - .align 2, 0 -_080D35BC: .4byte gBattleAnimBankTarget -_080D35C0: .4byte gBattleAnimArgs -_080D35C4: - lsls r0, r1, 8 - strh r0, [r5, 0x3A] -_080D35C8: - ldr r1, _080D35D8 @ =sub_80D35DC - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D35D8: .4byte sub_80D35DC - thumb_func_end sub_80D3554 - - thumb_func_start sub_80D35DC -sub_80D35DC: @ 80D35DC - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080D35F0 - adds r0, r4, 0 - bl move_anim_8072740 -_080D35F0: - ldrh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 24 - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r2, 0x3A - ldrsh r0, [r4, r2] - movs r2, 0x38 - ldrsh r1, [r4, r2] - adds r0, r1 - asrs r0, 8 - cmp r0, 0x7F - ble _080D3620 - movs r0, 0 - strh r0, [r4, 0x3A] - ldrh r0, [r4, 0x3C] - negs r0, r0 - strh r0, [r4, 0x3C] - b _080D3628 -_080D3620: - ldrh r0, [r4, 0x38] - ldrh r1, [r4, 0x3A] - adds r0, r1 - strh r0, [r4, 0x3A] -_080D3628: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D35DC - - thumb_func_start sub_80D3630 -sub_80D3630: @ 80D3630 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D3650 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r3, _080D3654 @ =gBattleAnimArgs - ldrh r0, [r3] - movs r2, 0 - strh r0, [r1, 0x8] - strh r2, [r3, 0xE] - ldr r0, _080D3658 @ =sub_80D365C - str r0, [r1] - bx lr - .align 2, 0 -_080D3650: .4byte gTasks -_080D3654: .4byte gBattleAnimArgs -_080D3658: .4byte sub_80D365C - thumb_func_end sub_80D3630 - - thumb_func_start sub_80D365C -sub_80D365C: @ 80D365C - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080D3690 @ =gBattleAnimArgs - ldrh r0, [r2, 0xE] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r2, 0xE] - ldr r1, _080D3694 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - subs r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - cmp r1, 0 - bne _080D368A - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080D368A: - pop {r0} - bx r0 - .align 2, 0 -_080D3690: .4byte gBattleAnimArgs -_080D3694: .4byte gTasks - thumb_func_end sub_80D365C - - thumb_func_start sub_80D3698 -sub_80D3698: @ 80D3698 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r7, _080D36E4 @ =gBattleAnimBankAttacker - ldrb r0, [r7] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r7] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r6, _080D36E8 @ =0x0000fff6 - strh r6, [r4, 0x26] - ldrb r0, [r7] - bl sub_8079E90 - lsls r0, 24 - lsrs r5, r0, 24 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D36F2 - ldrb r0, [r7] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D36EC - movs r0, 0xA - strh r0, [r4, 0x24] - b _080D36F4 - .align 2, 0 -_080D36E4: .4byte gBattleAnimBankAttacker -_080D36E8: .4byte 0x0000fff6 -_080D36EC: - strh r6, [r4, 0x24] - subs r0, r5, 0x2 - b _080D36F6 -_080D36F2: - strh r6, [r4, 0x24] -_080D36F4: - adds r0, r5, 0x2 -_080D36F6: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldr r0, _080D3708 @ =sub_80D370C - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D3708: .4byte sub_80D370C - thumb_func_end sub_80D3698 - - thumb_func_start sub_80D370C -sub_80D370C: @ 80D370C - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080D3722 - adds r0, r2, 0 - bl move_anim_8072740 -_080D3722: - pop {r0} - bx r0 - thumb_func_end sub_80D370C - - thumb_func_start sub_80D3728 -sub_80D3728: @ 80D3728 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r5, _080D37E8 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - bl GetBankSide - adds r4, r0, 0 - ldr r0, _080D37EC @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080D3772 - ldr r4, _080D37F0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4] - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - cmp r0, 0 - beq _080D376A - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D3772 -_080D376A: - movs r1, 0 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4] -_080D3772: - ldr r5, _080D37F0 @ =gBattleAnimArgs - movs r1, 0xA - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0 - cmp r0, 0 - bne _080D3786 - movs r1, 0x1 -_080D3786: - ldrb r0, [r5, 0xA] - movs r7, 0x1 - cmp r0, 0 - bne _080D3790 - movs r7, 0x3 -_080D3790: - adds r0, r6, 0 - bl sub_80787B0 - ldr r0, _080D37E8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D37AA - ldrh r0, [r5, 0x4] - negs r0, r0 - strh r0, [r5, 0x4] -_080D37AA: - ldrh r0, [r5, 0x8] - strh r0, [r6, 0x2E] - ldr r4, _080D37EC @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r4] - adds r1, r7, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x6] - adds r0, r5 - strh r0, [r6, 0x36] - ldr r0, _080D37F4 @ =sub_8078B34 - str r0, [r6, 0x1C] - ldr r1, _080D37F8 @ =move_anim_8072740 - adds r0, r6, 0 - bl StoreSpriteCallbackInData - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D37E8: .4byte gBattleAnimBankAttacker -_080D37EC: .4byte gBattleAnimBankTarget -_080D37F0: .4byte gBattleAnimArgs -_080D37F4: .4byte sub_8078B34 -_080D37F8: .4byte move_anim_8072740 - thumb_func_end sub_80D3728 - - thumb_func_start sub_80D37FC -sub_80D37FC: @ 80D37FC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8078764 - ldr r0, _080D382C @ =gBattleAnimArgs - ldrh r1, [r0, 0x8] - strh r1, [r4, 0x2E] - ldrh r0, [r0, 0x4] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - adds r1, r0 - strh r1, [r4, 0x36] - ldr r0, _080D3830 @ =sub_8078B34 - str r0, [r4, 0x1C] - ldr r1, _080D3834 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D382C: .4byte gBattleAnimArgs -_080D3830: .4byte sub_8078B34 -_080D3834: .4byte move_anim_8072740 - thumb_func_end sub_80D37FC - - thumb_func_start sub_80D3838 -sub_80D3838: @ 80D3838 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D3850 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080D3854 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8078764 - b _080D385C - .align 2, 0 -_080D3850: .4byte gBattleAnimArgs -_080D3854: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80787B0 -_080D385C: - ldr r0, _080D386C @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x3C] - ldr r0, _080D3870 @ =sub_80D3874 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D386C: .4byte gBattleAnimArgs -_080D3870: .4byte sub_80D3874 - thumb_func_end sub_80D3838 - - thumb_func_start sub_80D3874 -sub_80D3874: @ 80D3874 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0xB - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x30 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3C] - subs r0, 0x1 - strh r0, [r4, 0x3C] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080D38B4 - adds r0, r4, 0 - bl move_anim_8072740 -_080D38B4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D3874 - - thumb_func_start sub_80D38BC -sub_80D38BC: @ 80D38BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r1, _080D398C @ =REG_BLDCNT - ldr r2, _080D3990 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0x80 - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - ldr r2, _080D3994 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldrb r1, [r2, 0x1] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2, 0x1] - mov r0, sp - bl sub_8078914 - ldr r2, [sp] - movs r3, 0x80 - lsls r3, 6 - add r6, sp, 0x10 - add r0, sp, 0xC - mov r12, r0 - movs r5, 0 - ldr r1, _080D3998 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r8, r6 - ldr r7, _080D399C @ =0x85000400 - movs r0, 0x85 - lsls r0, 24 - mov r9, r0 -_080D3920: - str r5, [sp, 0x10] - mov r0, r8 - str r0, [r1] - str r2, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080D3920 - str r5, [sp, 0x10] - str r6, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r9 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0 - mov r3, r12 - strb r0, [r3] - strb r0, [r3] - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x10] - ldr r0, _080D3998 @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _080D399C @ =0x85000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D39B8 - ldr r2, _080D3994 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080D39A0 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D39A8 - ldr r0, _080D39A4 @ =gUnknown_08E70968 - b _080D39AA - .align 2, 0 -_080D398C: .4byte REG_BLDCNT -_080D3990: .4byte 0x00003f42 -_080D3994: .4byte REG_BG1CNT -_080D3998: .4byte 0x040000d4 -_080D399C: .4byte 0x85000400 -_080D39A0: .4byte gBattleAnimBankAttacker -_080D39A4: .4byte gUnknown_08E70968 -_080D39A8: - ldr r0, _080D39B4 @ =gUnknown_08E70C38 -_080D39AA: - ldr r1, [sp, 0x4] - bl LZDecompressVram - b _080D39CE - .align 2, 0 -_080D39B4: .4byte gUnknown_08E70C38 -_080D39B8: - ldr r0, _080D39F0 @ =gUnknown_08E70F0C - ldr r1, [sp, 0x4] - bl LZDecompressVram - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0x1 - bl sub_80763FC -_080D39CE: - ldr r0, _080D39F4 @ =gBattleAnimBackgroundImage_Surf - ldr r1, [sp] - bl LZDecompressVram - ldr r0, _080D39F8 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D3A00 - ldr r0, _080D39FC @ =gBattleAnimBackgroundPalette_Surf - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - b _080D3A0E - .align 2, 0 -_080D39F0: .4byte gUnknown_08E70F0C -_080D39F4: .4byte gBattleAnimBackgroundImage_Surf -_080D39F8: .4byte gBattleAnimArgs -_080D39FC: .4byte gBattleAnimBackgroundPalette_Surf -_080D3A00: - ldr r0, _080D3A78 @ =gBattleAnimBackgroundImageMuddyWater_Pal - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette -_080D3A0E: - ldr r0, _080D3A7C @ =sub_80D3D68 - ldr r4, _080D3A80 @ =gTasks - mov r2, r10 - lsls r5, r2, 2 - adds r1, r5, r2 - lsls r1, 3 - adds r6, r1, r4 - ldrb r1, [r6, 0x7] - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r3, 0 - mov r9, r3 - mov r0, r8 - strh r0, [r6, 0x26] - mov r1, r8 - lsls r0, r1, 2 - add r0, r8 - lsls r0, 3 - adds r7, r0, r4 - mov r2, r9 - strh r2, [r7, 0x8] - movs r0, 0x80 - lsls r0, 5 - strh r0, [r7, 0xA] - strh r0, [r7, 0xC] - bl NotInBattle - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080D3A94 - ldr r3, _080D3A84 @ =0x0000ffb0 - adds r0, r3, 0 - ldr r1, _080D3A88 @ =gUnknown_030042C0 - strh r0, [r1] - ldr r2, _080D3A8C @ =0x0000ffd0 - adds r0, r2, 0 - ldr r3, _080D3A90 @ =gUnknown_030041B4 - strh r0, [r3] - movs r0, 0x2 - strh r0, [r6, 0x8] - movs r0, 0x1 - strh r0, [r6, 0xA] - mov r0, r9 - strh r0, [r7, 0xE] - b _080D3AEE - .align 2, 0 -_080D3A78: .4byte gBattleAnimBackgroundImageMuddyWater_Pal -_080D3A7C: .4byte sub_80D3D68 -_080D3A80: .4byte gTasks -_080D3A84: .4byte 0x0000ffb0 -_080D3A88: .4byte gUnknown_030042C0 -_080D3A8C: .4byte 0x0000ffd0 -_080D3A90: .4byte gUnknown_030041B4 -_080D3A94: - ldr r0, _080D3AC4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1 - bne _080D3AD8 - ldr r2, _080D3AC8 @ =0x0000ff20 - adds r0, r2, 0 - ldr r3, _080D3ACC @ =gUnknown_030042C0 - strh r0, [r3] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - ldr r3, _080D3AD0 @ =gUnknown_030041B4 - strh r0, [r3] - movs r0, 0x2 - strh r0, [r6, 0x8] - ldr r0, _080D3AD4 @ =0x0000ffff - strh r0, [r6, 0xA] - strh r1, [r7, 0xE] - b _080D3AEE - .align 2, 0 -_080D3AC4: .4byte gBattleAnimBankAttacker -_080D3AC8: .4byte 0x0000ff20 -_080D3ACC: .4byte gUnknown_030042C0 -_080D3AD0: .4byte gUnknown_030041B4 -_080D3AD4: .4byte 0x0000ffff -_080D3AD8: - ldr r0, _080D3B1C @ =gUnknown_030042C0 - strh r4, [r0] - ldr r1, _080D3B20 @ =0x0000ffd0 - adds r0, r1, 0 - ldr r2, _080D3B24 @ =gUnknown_030041B4 - strh r0, [r2] - ldr r0, _080D3B28 @ =0x0000fffe - strh r0, [r6, 0x8] - movs r0, 0x1 - strh r0, [r6, 0xA] - strh r4, [r7, 0xE] -_080D3AEE: - ldr r1, _080D3B2C @ =REG_BG1HOFS - ldr r3, _080D3B1C @ =gUnknown_030042C0 - ldrh r0, [r3] - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080D3B24 @ =gUnknown_030041B4 - ldrh r0, [r2] - strh r0, [r1] - ldr r1, _080D3B30 @ =gTasks - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r0, 3 - adds r2, r0, r1 - movs r3, 0xE - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080D3B34 - movs r0, 0x30 - strh r0, [r2, 0x10] - movs r0, 0x70 - b _080D3B38 - .align 2, 0 -_080D3B1C: .4byte gUnknown_030042C0 -_080D3B20: .4byte 0x0000ffd0 -_080D3B24: .4byte gUnknown_030041B4 -_080D3B28: .4byte 0x0000fffe -_080D3B2C: .4byte REG_BG1HOFS -_080D3B30: .4byte gTasks -_080D3B34: - movs r0, 0 - strh r0, [r2, 0x10] -_080D3B38: - strh r0, [r2, 0x12] - mov r2, r10 - adds r0, r5, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0x14] - ldr r1, _080D3B5C @ =sub_80D3B60 - str r1, [r0] - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D3B5C: .4byte sub_80D3B60 - thumb_func_end sub_80D38BC - - thumb_func_start sub_80D3B60 -sub_80D3B60: @ 80D3B60 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _080D3D44 @ =gTasks - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0x8] - ldr r1, _080D3D48 @ =gUnknown_030042C0 - ldrh r1, [r1] - adds r0, r1 - ldr r2, _080D3D48 @ =gUnknown_030042C0 - strh r0, [r2] - ldrh r0, [r4, 0xA] - ldr r3, _080D3D4C @ =gUnknown_030041B4 - ldrh r3, [r3] - adds r0, r3 - ldr r1, _080D3D4C @ =gUnknown_030041B4 - strh r0, [r1] - add r5, sp, 0x4 - adds r0, r5, 0 - bl sub_8078914 - ldrh r0, [r4, 0xA] - ldrh r2, [r4, 0xC] - adds r0, r2 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - asrs r0, 16 - mov r10, r5 - cmp r0, 0x4 - bne _080D3C02 - ldr r1, _080D3D50 @ =gPlttBufferFaded - ldrb r0, [r5, 0x8] - lsls r0, 4 - adds r0, 0x7 - lsls r0, 1 - adds r0, r1 - ldrh r6, [r0] - movs r2, 0x6 - adds r5, r1, 0 - adds r3, r5, 0 - mov r4, r10 -_080D3BC8: - ldrb r0, [r4, 0x8] - lsls r0, 4 - adds r1, r2, 0x1 - adds r0, r1 - lsls r1, r0, 1 - adds r1, r3 - subs r0, 0x1 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - subs r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080D3BC8 - mov r3, r10 - ldrb r0, [r3, 0x8] - lsls r0, 4 - adds r0, 0x1 - lsls r0, 1 - adds r0, r5 - strh r6, [r0] - ldr r1, _080D3D44 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0x12] -_080D3C02: - ldr r1, _080D3D44 @ =gTasks - lsls r2, r7, 2 - adds r0, r2, r7 - lsls r0, 3 - adds r3, r0, r1 - ldrh r0, [r3, 0x14] - adds r0, 0x1 - strh r0, [r3, 0x14] - lsls r0, 16 - asrs r0, 16 - adds r4, r1, 0 - str r2, [sp, 0x14] - cmp r0, 0x1 - ble _080D3C70 - movs r0, 0 - strh r0, [r3, 0x14] - ldrh r0, [r3, 0xE] - adds r2, r0, 0x1 - strh r2, [r3, 0xE] - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xD - bgt _080D3C4C - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - movs r0, 0x10 - subs r0, r2 - lsls r0, 8 - orrs r2, r0 - strh r2, [r1, 0xA] - ldrh r0, [r3, 0x10] - adds r0, 0x1 - strh r0, [r3, 0x10] -_080D3C4C: - movs r2, 0xE - ldrsh r0, [r3, r2] - cmp r0, 0x36 - ble _080D3C70 - ldrh r2, [r3, 0x10] - subs r2, 0x1 - strh r2, [r3, 0x10] - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - movs r0, 0x10 - subs r0, r2 - lsls r0, 8 - orrs r2, r0 - strh r2, [r1, 0xA] -_080D3C70: - ldr r2, [sp, 0x14] - adds r0, r2, r7 - lsls r0, 3 - adds r0, r4 - movs r3, 0x26 - ldrsh r1, [r0, r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - ldrh r1, [r0, 0xA] - movs r0, 0x1F - ands r0, r1 - cmp r0, 0 - bne _080D3D32 - ldr r2, [sp, 0x4] - movs r3, 0x80 - lsls r3, 6 - add r6, sp, 0x10 - movs r5, 0 - ldr r1, _080D3D54 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r8, r6 - ldr r0, _080D3D58 @ =0x85000400 - mov r12, r0 - movs r0, 0x85 - lsls r0, 24 - mov r9, r0 -_080D3CAA: - str r5, [sp, 0x10] - mov r0, r8 - str r0, [r1] - str r2, [r1, 0x4] - mov r0, r12 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080D3CAA - str r5, [sp, 0x10] - str r6, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r9 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r0, sp - movs r1, 0 - strb r1, [r0] - strb r1, [r0] - mov r3, r10 - ldr r1, [r3, 0x4] - movs r4, 0 - str r4, [sp, 0x10] - ldr r0, _080D3D54 @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _080D3D58 @ =0x85000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D3D02 - ldr r2, _080D3D5C @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080D3D02: - ldr r0, _080D3D48 @ =gUnknown_030042C0 - strh r4, [r0] - ldr r1, _080D3D4C @ =gUnknown_030041B4 - strh r4, [r1] - ldr r0, _080D3D60 @ =REG_BLDCNT - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - ldr r2, _080D3D44 @ =gTasks - ldr r3, [sp, 0x14] - adds r0, r3, r7 - lsls r0, 3 - adds r0, r2 - movs r3, 0x26 - ldrsh r1, [r0, r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _080D3D64 @ =0x0000ffff - strh r1, [r0, 0x26] - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080D3D32: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D3D44: .4byte gTasks -_080D3D48: .4byte gUnknown_030042C0 -_080D3D4C: .4byte gUnknown_030041B4 -_080D3D50: .4byte gPlttBufferFaded -_080D3D54: .4byte 0x040000d4 -_080D3D58: .4byte 0x85000400 -_080D3D5C: .4byte REG_BG1CNT -_080D3D60: .4byte REG_BLDCNT -_080D3D64: .4byte 0x0000ffff - thumb_func_end sub_80D3B60 - - thumb_func_start sub_80D3D68 -sub_80D3D68: @ 80D3D68 - push {r4-r7,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _080D3D90 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080D3D84 - b _080D3EBC -_080D3D84: - cmp r0, 0x1 - bgt _080D3D94 - cmp r0, 0 - beq _080D3D9C - b _080D4032 - .align 2, 0 -_080D3D90: .4byte gTasks -_080D3D94: - cmp r0, 0x2 - bne _080D3D9A - b _080D3F88 -_080D3D9A: - b _080D4032 -_080D3D9C: - movs r3, 0 - movs r2, 0x10 - ldrsh r0, [r4, r2] - ldr r1, _080D3E6C @ =gUnknown_03004DE0 - mov r12, r1 - cmp r3, r0 - bge _080D3DDA - mov r7, r12 - movs r5, 0xF0 - lsls r5, 3 - add r5, r12 - ldr r6, _080D3E70 @ =0x0000ffff -_080D3DB4: - lsls r2, r3, 16 - asrs r2, 16 - lsls r1, r2, 1 - adds r3, r1, r7 - adds r1, r5 - ldrh r0, [r4, 0xC] - strh r0, [r1] - ldrh r1, [r4, 0xC] - adds r0, r6, 0 - ands r0, r1 - strh r0, [r3] - adds r2, 0x1 - lsls r2, 16 - lsrs r3, r2, 16 - asrs r2, 16 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r2, r0 - blt _080D3DB4 -_080D3DDA: - ldrh r3, [r4, 0x10] - lsls r2, r3, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _080D3E14 - ldr r5, _080D3E6C @ =gUnknown_03004DE0 - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 - ldr r7, _080D3E70 @ =0x0000ffff -_080D3DF2: - asrs r2, 16 - lsls r1, r2, 1 - adds r3, r1, r5 - adds r1, r6 - ldrh r0, [r4, 0xA] - strh r0, [r1] - ldrh r1, [r4, 0xA] - adds r0, r7, 0 - ands r0, r1 - strh r0, [r3] - adds r2, 0x1 - lsls r2, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - blt _080D3DF2 -_080D3E14: - ldrh r3, [r4, 0x12] - lsls r2, r3, 16 - asrs r0, r2, 16 - cmp r0, 0x9F - bgt _080D3E4A - ldr r5, _080D3E6C @ =gUnknown_03004DE0 - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 - ldr r7, _080D3E70 @ =0x0000ffff -_080D3E28: - asrs r2, 16 - lsls r1, r2, 1 - adds r3, r1, r5 - adds r1, r6 - ldrh r0, [r4, 0xC] - strh r0, [r1] - ldrh r1, [r4, 0xC] - adds r0, r7, 0 - ands r0, r1 - strh r0, [r3] - adds r2, 0x1 - lsls r2, 16 - lsrs r3, r2, 16 - lsls r2, r3, 16 - asrs r0, r2, 16 - cmp r0, 0x9F - ble _080D3E28 -_080D3E4A: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D3E74 - lsls r0, r3, 16 - asrs r0, 15 - mov r3, r12 - adds r2, r0, r3 - movs r1, 0xF0 - lsls r1, 3 - add r1, r12 - adds r0, r1 - ldrh r1, [r4, 0xA] - strh r1, [r0] - ldrh r0, [r4, 0xA] - b _080D3E8A - .align 2, 0 -_080D3E6C: .4byte gUnknown_03004DE0 -_080D3E70: .4byte 0x0000ffff -_080D3E74: - lsls r0, r3, 16 - asrs r0, 15 - mov r1, r12 - adds r2, r0, r1 - movs r1, 0xF0 - lsls r1, 3 - add r1, r12 - adds r0, r1 - ldrh r1, [r4, 0xC] - strh r1, [r0] - ldrh r0, [r4, 0xC] -_080D3E8A: - strh r0, [r2] - ldr r0, _080D3EB4 @ =REG_BLDALPHA - str r0, [sp] - ldr r0, _080D3EB8 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r2, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r2, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl sub_80895F8 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080D4032 - .align 2, 0 -_080D3EB4: .4byte REG_BLDALPHA -_080D3EB8: .4byte 0xa2600001 -_080D3EBC: - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _080D3ED4 - ldrh r0, [r4, 0x10] - subs r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bgt _080D3EE8 - strh r1, [r4, 0x10] - b _080D3EE2 -_080D3ED4: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6F - ble _080D3EE8 -_080D3EE2: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080D3EE8: - movs r3, 0 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - bge _080D3F1C - ldr r6, _080D3F80 @ =gUnknown_03004DE0 - ldr r5, _080D3F84 @ =gUnknown_03004DC0 -_080D3EF6: - lsls r1, r3, 16 - asrs r1, 16 - lsls r3, r1, 1 - ldrb r2, [r5, 0x14] - lsls r0, r2, 4 - subs r0, r2 - lsls r0, 7 - adds r3, r0 - adds r3, r6 - ldrh r0, [r4, 0xC] - strh r0, [r3] - adds r1, 0x1 - lsls r1, 16 - lsrs r3, r1, 16 - asrs r1, 16 - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r1, r0 - blt _080D3EF6 -_080D3F1C: - ldrh r3, [r4, 0x10] - lsls r2, r3, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _080D3F50 - ldr r6, _080D3F80 @ =gUnknown_03004DE0 - ldr r5, _080D3F84 @ =gUnknown_03004DC0 -_080D3F2E: - asrs r3, r2, 16 - lsls r2, r3, 1 - ldrb r1, [r5, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r6 - ldrh r0, [r4, 0xA] - strh r0, [r2] - adds r3, 0x1 - lsls r2, r3, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - blt _080D3F2E -_080D3F50: - ldrh r3, [r4, 0x12] - lsls r1, r3, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - bgt _080D4032 - ldr r6, _080D3F80 @ =gUnknown_03004DE0 - ldr r5, _080D3F84 @ =gUnknown_03004DC0 -_080D3F5E: - asrs r3, r1, 16 - lsls r2, r3, 1 - ldrb r1, [r5, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r6 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - lsls r1, r3, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - ble _080D3F5E - b _080D4032 - .align 2, 0 -_080D3F80: .4byte gUnknown_03004DE0 -_080D3F84: .4byte gUnknown_03004DC0 -_080D3F88: - movs r3, 0 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - bge _080D3FBC - ldr r6, _080D403C @ =gUnknown_03004DE0 - ldr r5, _080D4040 @ =gUnknown_03004DC0 -_080D3F96: - lsls r1, r3, 16 - asrs r1, 16 - lsls r3, r1, 1 - ldrb r2, [r5, 0x14] - lsls r0, r2, 4 - subs r0, r2 - lsls r0, 7 - adds r3, r0 - adds r3, r6 - ldrh r0, [r4, 0xC] - strh r0, [r3] - adds r1, 0x1 - lsls r1, 16 - lsrs r3, r1, 16 - asrs r1, 16 - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r1, r0 - blt _080D3F96 -_080D3FBC: - ldrh r3, [r4, 0x10] - lsls r2, r3, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _080D3FF0 - ldr r6, _080D403C @ =gUnknown_03004DE0 - ldr r5, _080D4040 @ =gUnknown_03004DC0 -_080D3FCE: - asrs r3, r2, 16 - lsls r2, r3, 1 - ldrb r1, [r5, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r6 - ldrh r0, [r4, 0xA] - strh r0, [r2] - adds r3, 0x1 - lsls r2, r3, 16 - asrs r1, r2, 16 - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - blt _080D3FCE -_080D3FF0: - ldrh r3, [r4, 0x12] - lsls r1, r3, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - bgt _080D401C - ldr r6, _080D403C @ =gUnknown_03004DE0 - ldr r5, _080D4040 @ =gUnknown_03004DC0 -_080D3FFE: - asrs r3, r1, 16 - lsls r2, r3, 1 - ldrb r1, [r5, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r6 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - lsls r1, r3, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - ble _080D3FFE -_080D401C: - movs r0, 0x26 - ldrsh r1, [r4, r0] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080D4032 - bl remove_some_task - adds r0, r7, 0 - bl DestroyTask -_080D4032: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D403C: .4byte gUnknown_03004DE0 -_080D4040: .4byte gUnknown_03004DC0 - thumb_func_end sub_80D3D68 - - thumb_func_start sub_80D4044 -sub_80D4044: @ 80D4044 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x8 - ldr r3, _080D4098 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080D409C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8078764 - bl Random - movs r5, 0xFF - ands r5, r0 - movs r0, 0x80 - lsls r0, 1 - adds r6, r0, 0 - orrs r5, r6 - bl Random - ldr r1, _080D40A0 @ =0x000001ff - ands r1, r0 - adds r0, r1, 0 - cmp r0, 0xFF - ble _080D408A - subs r0, r6, r0 - lsls r0, 16 - lsrs r1, r0, 16 -_080D408A: - strh r5, [r4, 0x30] - strh r1, [r4, 0x32] - ldr r0, _080D40A4 @ =sub_80D40A8 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D4098: .4byte 0x000003ff -_080D409C: .4byte 0xfffffc00 -_080D40A0: .4byte 0x000001ff -_080D40A4: .4byte sub_80D40A8 - thumb_func_end sub_80D4044 - - thumb_func_start sub_80D40A8 -sub_80D40A8: @ 80D40A8 - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r3, r0, r1 - strh r3, [r2, 0x34] - ldrh r1, [r2, 0x32] - ldrh r4, [r2, 0x36] - adds r1, r4 - strh r1, [r2, 0x36] - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080D40CC - lsls r0, r3, 16 - asrs r0, 24 - negs r0, r0 - b _080D40D0 -_080D40CC: - lsls r0, r3, 16 - asrs r0, 24 -_080D40D0: - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080D40EE - adds r0, r2, 0 - bl move_anim_8072740 -_080D40EE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D40A8 - - thumb_func_start sub_80D40F4 -sub_80D40F4: @ 80D40F4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080D4144 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r2, _080D4148 @ =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, 0x12] - bl sub_80D4394 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_8078E70 - ldr r0, _080D414C @ =sub_80D4150 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D4144: .4byte gTasks -_080D4148: .4byte gSprites -_080D414C: .4byte sub_80D4150 - thumb_func_end sub_80D40F4 - - thumb_func_start sub_80D4150 -sub_80D4150: @ 80D4150 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080D4178 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x7 - bls _080D416C - b _080D438A -_080D416C: - lsls r0, 2 - ldr r1, _080D417C @ =_080D4180 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D4178: .4byte gTasks -_080D417C: .4byte _080D4180 - .align 2, 0 -_080D4180: - .4byte _080D41A0 - .4byte _080D41C6 - .4byte _080D4258 - .4byte _080D428E - .4byte _080D42A2 - .4byte _080D42B0 - .4byte _080D4330 - .4byte _080D437C -_080D41A0: - 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] -_080D41C6: - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D4222 - movs r0, 0 - strh r0, [r4, 0xE] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D4210 - ldr r2, _080D420C @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strh r1, [r0, 0x24] - 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] - b _080D4222 - .align 2, 0 -_080D420C: .4byte gSprites -_080D4210: - ldr r2, _080D4250 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080D4254 @ =0x0000fffd - strh r1, [r0, 0x24] -_080D4222: - adds r0, r4, 0 - bl sub_8079C74 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _080D4232 - b _080D438A -_080D4232: - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_8079A64 - ldr r2, _080D4250 @ =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, 0xE] - b _080D436C - .align 2, 0 -_080D4250: .4byte gSprites -_080D4254: .4byte 0x0000fffd -_080D4258: - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bgt _080D4268 - b _080D438A -_080D4268: - 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, 0xE0 - str r0, [sp, 0x4] - movs r0, 0x8 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r2, 0xE0 - bl sub_8079C08 - movs r0, 0 - strh r0, [r4, 0xE] - b _080D436E -_080D428E: - adds r0, r4, 0 - bl sub_8079C74 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080D438A - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - b _080D436E -_080D42A2: - adds r0, r4, 0 - adds r1, r2, 0 - bl sub_80D4418 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080D42B0: - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D438A - movs r0, 0 - strh r0, [r4, 0xE] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D42E8 - ldr r2, _080D42E4 @ =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, 0x2 - b _080D42FA - .align 2, 0 -_080D42E4: .4byte gSprites -_080D42E8: - ldr r2, _080D432C @ =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, 0x2 -_080D42FA: - strh r1, [r0, 0x26] - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080D438A - 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, 0xE0 - bl sub_8079C08 - movs r0, 0 - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - b _080D436E - .align 2, 0 -_080D432C: .4byte gSprites -_080D4330: - ldr r6, _080D4378 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r0, 0x22] - subs r1, 0x1 - strh r1, [r0, 0x22] - adds r0, r4, 0 - bl sub_8079C74 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080D438A - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_8078F40 - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r4, 0x12] - strh r1, [r0, 0x22] -_080D436C: - strh r5, [r4, 0x10] -_080D436E: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080D438A - .align 2, 0 -_080D4378: .4byte gSprites -_080D437C: - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D438A - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080D438A: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80D4150 - - thumb_func_start sub_80D4394 -sub_80D4394: @ 80D4394 - push {r4,r5,lr} - ldr r4, _080D43B8 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D43C8 - ldr r1, _080D43BC @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080D43C0 @ =gPlayerParty - b _080D43D8 - .align 2, 0 -_080D43B8: .4byte gBattleAnimBankAttacker -_080D43BC: .4byte gBattlePartyID -_080D43C0: .4byte gPlayerParty -_080D43C4: - adds r0, r2, 0 - b _080D440A -_080D43C8: - ldr r1, _080D4410 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080D4414 @ =gEnemyParty -_080D43D8: - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r3, r0, 16 - lsrs r4, 18 - movs r2, 0 -_080D43F6: - adds r1, r2, 0x1 - adds r0, r4, 0 - muls r0, r1 - cmp r3, r0 - blt _080D43C4 - lsls r0, r1, 24 - lsrs r2, r0, 24 - cmp r2, 0x2 - bls _080D43F6 - movs r0, 0x3 -_080D440A: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D4410: .4byte gBattlePartyID -_080D4414: .4byte gEnemyParty - thumb_func_end sub_80D4394 - - thumb_func_start sub_80D4418 -sub_80D4418: @ 80D4418 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - ldr r4, _080D4520 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0xAC - ldrb r0, [r4] - bl sub_8079E90 - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - ldrh r1, [r7, 0xA] - movs r0, 0x4 - subs r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r0, 0 - bgt _080D4468 - movs r1, 0x1 -_080D4468: - movs r0, 0 - str r0, [sp, 0x4] - lsls r0, r1, 16 - mov r10, r8 - mov r9, r6 - mov r1, r10 - lsls r1, 4 - str r1, [sp, 0xC] - mov r1, r9 - lsls r1, 4 - str r1, [sp, 0x10] - asrs r0, 16 - mov r8, r0 -_080D4482: - ldr r0, _080D4524 @ =gSpriteTemplate_83D9378 - mov r1, r10 - mov r2, r9 - ldr r3, [sp, 0x8] - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - lsls r6, r5, 16 - cmp r2, 0x40 - beq _080D44EA - ldr r1, _080D4528 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r5, r0, r1 - mov r0, sp - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x30] - mov r1, sp - ldrh r1, [r1, 0xC] - strh r1, [r5, 0x32] - mov r0, sp - ldrh r0, [r0, 0x10] - strh r0, [r5, 0x34] - asrs r4, r6, 16 - adds r0, r4, 0 - movs r1, 0x40 - bl Cos - strh r0, [r5, 0x36] - adds r0, r4, 0 - movs r1, 0x40 - bl Sin - strh r0, [r5, 0x38] - mov r1, sp - ldrh r1, [r1] - strh r1, [r5, 0x3A] - movs r0, 0x2 - strh r0, [r5, 0x3C] - ldrh r1, [r7, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D44E4 - adds r0, r5, 0 - bl sub_80D452C -_080D44E4: - ldrh r0, [r7, 0xC] - adds r0, 0x1 - strh r0, [r7, 0xC] -_080D44EA: - mov r1, r8 - lsls r0, r1, 1 - asrs r1, r6, 16 - adds r1, r0 - lsls r1, 16 - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r5, r0, 16 - ldr r1, [sp, 0x4] - lsls r0, r1, 16 - asrs r0, 16 - add r0, r8 - lsls r0, 16 - lsrs r1, r0, 16 - str r1, [sp, 0x4] - asrs r0, 16 - cmp r0, 0x13 - ble _080D4482 - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D4520: .4byte gBattleAnimBankAttacker -_080D4524: .4byte gSpriteTemplate_83D9378 -_080D4528: .4byte gSprites - thumb_func_end sub_80D4418 - - thumb_func_start sub_80D452C -sub_80D452C: @ 80D452C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080D453E - cmp r0, 0x1 - beq _080D4574 - b _080D45CE -_080D453E: - movs r2, 0x30 - ldrsh r0, [r4, r2] - movs r1, 0x6 - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - ldrh r0, [r4, 0x36] - adds r1, r0 - strh r1, [r4, 0x36] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - ldrh r2, [r4, 0x38] - adds r1, r2 - strh r1, [r4, 0x38] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] -_080D4574: - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x38] - ldrh r2, [r4, 0x34] - adds r1, r2 - strh r1, [r4, 0x34] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x20] - lsls r1, 16 - asrs r2, r1, 20 - strh r2, [r4, 0x22] - adds r0, 0x8 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 17 - cmp r0, r1 - bhi _080D45AA - adds r1, r2, 0 - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _080D45AA - cmp r1, 0x78 - ble _080D45CE -_080D45AA: - ldr r3, _080D45D4 @ =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_080D45CE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D45D4: .4byte gTasks - thumb_func_end sub_80D452C - - thumb_func_start sub_80D45D8 -sub_80D45D8: @ 80D45D8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D4608 @ =gTasks - adds r4, r1, r0 - bl sub_80D4394 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xA] - ldr r0, _080D460C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D4610 - movs r0, 0x88 - strh r0, [r4, 0x10] - movs r0, 0x28 - b _080D4616 - .align 2, 0 -_080D4608: .4byte gTasks -_080D460C: .4byte gBattleAnimBankAttacker -_080D4610: - movs r0, 0x10 - strh r0, [r4, 0x10] - movs r0, 0x50 -_080D4616: - strh r0, [r4, 0x14] - movs r0, 0x62 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r0, 0x31 - strh r0, [r4, 0x16] - movs r0, 0xA - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - adds r0, 0x5 - strh r0, [r4, 0x20] - ldr r0, _080D4638 @ =sub_80D463C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D4638: .4byte sub_80D463C - thumb_func_end sub_80D45D8 - - thumb_func_start sub_80D463C -sub_80D463C: @ 80D463C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r1, r0, 24 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r7, _080D4660 @ =gTasks - adds r4, r0, r7 - movs r0, 0x8 - ldrsh r2, [r4, r0] - cmp r2, 0 - beq _080D4664 - cmp r2, 0x1 - beq _080D4714 - b _080D4722 - .align 2, 0 -_080D4660: .4byte gTasks -_080D4664: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080D467A - strh r2, [r4, 0xC] - adds r0, r4, 0 - bl sub_80D472C -_080D467A: - movs r1, 0x1C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080D46F4 - movs r2, 0x22 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080D46F4 - ldr r5, _080D4708 @ =gBattleAnimArgs - movs r1, 0x1 - mov r8, r1 - mov r2, r8 - strh r2, [r5] - strh r0, [r5, 0x2] - movs r0, 0xC - strh r0, [r5, 0x4] - ldr r6, _080D470C @ =sub_80E1864 - adds r0, r6, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080D46C4 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r7 - ldr r1, [r0] - adds r0, r2, 0 - bl _call_via_r1 - ldr r1, _080D4710 @ =gAnimVisualTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080D46C4: - movs r0, 0x3 - strh r0, [r5] - adds r0, r6, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080D46F0 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r7 - ldr r1, [r0] - adds r0, r2, 0 - bl _call_via_r1 - ldr r1, _080D4710 @ =gAnimVisualTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080D46F0: - mov r0, r8 - strh r0, [r4, 0x22] -_080D46F4: - movs r2, 0x1E - ldrsh r1, [r4, r2] - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r1, r0 - blt _080D4722 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080D4722 - .align 2, 0 -_080D4708: .4byte gBattleAnimArgs -_080D470C: .4byte sub_80E1864 -_080D4710: .4byte gAnimVisualTaskCount -_080D4714: - movs r2, 0x1A - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080D4722 - adds r0, r1, 0 - bl DestroyAnimVisualTask -_080D4722: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D463C - - thumb_func_start sub_80D472C -sub_80D472C: @ 80D472C - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - ldr r1, _080D47B8 @ =gSineTable - movs r2, 0x18 - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - adds r0, 0x3 - asrs r0, 4 - ldrh r2, [r4, 0x14] - adds r0, r2 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _080D47BC @ =gSpriteTemplate_83D9378 - movs r2, 0x16 - ldrsh r1, [r4, r2] - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080D4786 - ldr r3, _080D47C0 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r1, r0, r1 - ldr r2, _080D47C4 @ =sub_80D47D0 - str r2, [r1] - adds r0, r3 - strh r5, [r0, 0x38] - strh r6, [r0, 0x3A] - movs r1, 0x9 - strh r1, [r0, 0x3C] - ldrh r0, [r4, 0x1A] - adds r0, 0x1 - strh r0, [r4, 0x1A] -_080D4786: - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] - ldrh r0, [r4, 0x18] - adds r0, 0x27 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x18] - movs r0, 0x16 - ldrsh r1, [r4, r0] - ldr r0, _080D47C8 @ =0x41c64e6d - muls r0, r1 - ldr r1, _080D47CC @ =0x00003039 - adds r0, r1 - movs r2, 0x12 - ldrsh r1, [r4, r2] - bl __modsi3 - ldrh r1, [r4, 0x10] - adds r1, r0 - strh r1, [r4, 0x16] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D47B8: .4byte gSineTable -_080D47BC: .4byte gSpriteTemplate_83D9378 -_080D47C0: .4byte gSprites -_080D47C4: .4byte sub_80D47D0 -_080D47C8: .4byte 0x41c64e6d -_080D47CC: .4byte 0x00003039 - thumb_func_end sub_80D472C - - thumb_func_start sub_80D47D0 -sub_80D47D0: @ 80D47D0 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D4866 - ldrh r0, [r5, 0x22] - adds r0, 0x8 - strh r0, [r5, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x38 - ldrsh r1, [r5, r2] - cmp r0, r1 - blt _080D4866 - ldr r2, _080D486C @ =gTasks - movs r3, 0x3A - ldrsh r1, [r5, r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0x1 - strh r1, [r0, 0x1C] - ldr r0, _080D4870 @ =gBattleAnimSpriteTemplate_83DB4D8 - movs r2, 0x20 - ldrsh r1, [r5, r2] - movs r3, 0x22 - ldrsh r2, [r5, r3] - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x30] - cmp r0, 0x40 - beq _080D4860 - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080D4874 @ =gSprites - adds r0, r4 - movs r1, 0x3 - bl StartSpriteAffineAnim - movs r2, 0x30 - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x3A] - strh r1, [r0, 0x3A] - movs r3, 0x30 - ldrsh r1, [r5, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x3C] - strh r1, [r0, 0x3C] - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _080D4878 @ =sub_80D487C - str r1, [r0] -_080D4860: - adds r0, r5, 0 - bl DestroySprite -_080D4866: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D486C: .4byte gTasks -_080D4870: .4byte gBattleAnimSpriteTemplate_83DB4D8 -_080D4874: .4byte gSprites -_080D4878: .4byte sub_80D487C - thumb_func_end sub_80D47D0 - - thumb_func_start sub_80D487C -sub_80D487C: @ 80D487C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D48E8 - movs r0, 0 - strh r0, [r4, 0x30] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - bne _080D48E8 - ldr r3, _080D48F0 @ =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080D48E8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D48F0: .4byte gTasks - thumb_func_end sub_80D487C - - thumb_func_start sub_80D48F4 -sub_80D48F4: @ 80D48F4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D4978 @ =gTasks - adds r5, r1, r0 - ldr r4, _080D497C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - strh r0, [r5, 0xE] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x10] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080D4938 - movs r1, 0x1 -_080D4938: - strh r1, [r5, 0x16] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080D494C - movs r1, 0x16 - ldrsh r0, [r5, r1] - negs r0, r0 - strh r0, [r5, 0x16] -_080D494C: - movs r2, 0x16 - ldrsh r0, [r5, r2] - lsls r0, 3 - ldrh r1, [r5, 0xE] - adds r0, r1 - strh r0, [r5, 0x12] - movs r2, 0x16 - ldrsh r1, [r5, r2] - lsls r1, 3 - ldrh r0, [r5, 0x10] - subs r0, r1 - strh r0, [r5, 0x14] - ldr r0, _080D4980 @ =0x0000ffe0 - strh r0, [r5, 0x1A] - strh r6, [r5, 0xA] - strh r6, [r5, 0x8] - ldr r0, _080D4984 @ =sub_80D4988 - str r0, [r5] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D4978: .4byte gTasks -_080D497C: .4byte gBattleAnimBankAttacker -_080D4980: .4byte 0x0000ffe0 -_080D4984: .4byte sub_80D4988 - thumb_func_end sub_80D48F4 - - thumb_func_start sub_80D4988 -sub_80D4988: @ 80D4988 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080D49AC @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x6 - bls _080D49A2 - b _080D4AC2 -_080D49A2: - lsls r0, 2 - ldr r1, _080D49B0 @ =_080D49B4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D49AC: .4byte gTasks -_080D49B0: .4byte _080D49B4 - .align 2, 0 -_080D49B4: - .4byte _080D49D0 - .4byte _080D49E0 - .4byte _080D49FA - .4byte _080D4A3C - .4byte _080D4A5E - .4byte _080D4A8C - .4byte _080D4AB2 -_080D49D0: - adds r0, r4, 0 - bl sub_80D4AD0 - movs r1, 0x1C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080D4AC8 - b _080D4ABA -_080D49E0: - adds r0, r4, 0 - bl sub_80D4AD0 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080D4AC8 - movs r0, 0 - strh r0, [r4, 0xA] - b _080D4ABA -_080D49FA: - adds r0, r4, 0 - bl sub_80D4AD0 - movs r1, 0x16 - ldrsh r0, [r4, r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - ldrh r0, [r4, 0x12] - adds r1, r0 - movs r2, 0 - strh r1, [r4, 0x12] - adds r1, 0x10 - lsls r1, 16 - movs r0, 0x88 - lsls r0, 17 - cmp r1, r0 - bls _080D4AC8 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080D4A38 - movs r0, 0x1 - strh r0, [r4, 0x22] - movs r0, 0x6 - strh r0, [r4, 0x8] - strh r2, [r4, 0xA] - b _080D4AC8 -_080D4A38: - strh r2, [r4, 0xA] - b _080D4ABA -_080D4A3C: - adds r0, r4, 0 - bl sub_80D4AD0 - movs r0, 0x16 - ldrsh r1, [r4, r0] - lsls r1, 1 - ldrh r0, [r4, 0x14] - subs r0, r1 - strh r0, [r4, 0x14] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080D4AC8 - b _080D4ABA -_080D4A5E: - adds r0, r4, 0 - bl sub_80D4AD0 - movs r1, 0x16 - ldrsh r0, [r4, r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - ldrh r0, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x12] - adds r0, 0x10 - lsls r0, 16 - movs r1, 0x88 - lsls r1, 17 - cmp r0, r1 - bls _080D4AC8 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - movs r0, 0 - strh r0, [r4, 0xA] - b _080D4ABA -_080D4A8C: - adds r0, r4, 0 - bl sub_80D4AD0 - movs r0, 0x16 - ldrsh r1, [r4, r0] - lsls r1, 1 - ldrh r0, [r4, 0x14] - subs r0, r1 - strh r0, [r4, 0x14] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080D4AC8 - movs r0, 0x2 - strh r0, [r4, 0x8] - b _080D4AC8 -_080D4AB2: - movs r1, 0x18 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D4AC8 -_080D4ABA: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080D4AC8 -_080D4AC2: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080D4AC8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D4988 - - thumb_func_start sub_80D4AD0 -sub_80D4AD0: @ 80D4AD0 - push {r4-r6,lr} - adds r6, r0, 0 - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D4B2A - movs r0, 0 - strh r0, [r6, 0xC] - ldr r0, _080D4B30 @ =gSpriteTemplate_83D9378 - movs r2, 0xE - ldrsh r1, [r6, r2] - movs r3, 0x10 - ldrsh r2, [r6, r3] - movs r3, 0xA - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080D4B2A - ldr r5, _080D4B34 @ =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r0, r4, r5 - movs r1, 0x10 - strh r1, [r0, 0x2E] - ldrh r1, [r6, 0x12] - strh r1, [r0, 0x32] - ldrh r1, [r6, 0x14] - strh r1, [r0, 0x36] - ldrh r1, [r6, 0x1A] - strh r1, [r0, 0x38] - bl sub_80786EC - adds r5, 0x1C - adds r4, r5 - ldr r0, _080D4B38 @ =sub_80D4B3C - str r0, [r4] - ldrh r0, [r6, 0x18] - adds r0, 0x1 - strh r0, [r6, 0x18] -_080D4B2A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D4B30: .4byte gSpriteTemplate_83D9378 -_080D4B34: .4byte gSprites -_080D4B38: .4byte sub_80D4B3C - thumb_func_end sub_80D4AD0 - - thumb_func_start sub_80D4B3C -sub_80D4B3C: @ 80D4B3C - push {r4-r6,lr} - adds r6, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080D4B96 - ldrh r0, [r6, 0x24] - ldrh r1, [r6, 0x20] - adds r0, r1 - strh r0, [r6, 0x20] - ldrh r0, [r6, 0x26] - ldrh r1, [r6, 0x22] - adds r0, r1 - strh r0, [r6, 0x22] - movs r0, 0x6 - strh r0, [r6, 0x2E] - bl Random - movs r4, 0x1F - adds r1, r4, 0 - ands r1, r0 - ldr r5, _080D4B9C @ =0x0000fff0 - adds r1, r5 - ldrh r0, [r6, 0x20] - adds r1, r0 - strh r1, [r6, 0x32] - bl Random - ands r4, r0 - adds r4, r5 - ldrh r1, [r6, 0x22] - adds r4, r1 - strh r4, [r6, 0x36] - bl Random - movs r1, 0x7 - ands r1, r0 - mvns r1, r1 - strh r1, [r6, 0x38] - adds r0, r6, 0 - bl sub_80786EC - ldr r0, _080D4BA0 @ =sub_80D4BA4 - str r0, [r6, 0x1C] -_080D4B96: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D4B9C: .4byte 0x0000fff0 -_080D4BA0: .4byte sub_80D4BA4 - thumb_func_end sub_80D4B3C - - thumb_func_start sub_80D4BA4 -sub_80D4BA4: @ 80D4BA4 - push {r4-r6,lr} - adds r5, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080D4BE0 - movs r4, 0 - ldr r6, _080D4BE8 @ =gTasks -_080D4BB6: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r6 - ldr r1, [r2] - ldr r0, _080D4BEC @ =sub_80D4988 - cmp r1, r0 - bne _080D4BD6 - movs r0, 0x1 - strh r0, [r2, 0x1C] - ldrh r0, [r2, 0x18] - subs r0, 0x1 - strh r0, [r2, 0x18] - adds r0, r5, 0 - bl DestroySprite -_080D4BD6: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xF - bls _080D4BB6 -_080D4BE0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D4BE8: .4byte gTasks -_080D4BEC: .4byte sub_80D4988 - thumb_func_end sub_80D4BA4 - - thumb_func_start sub_80D4BF0 -sub_80D4BF0: @ 80D4BF0 - ldr r2, _080D4C10 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x20] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0x22] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0x2E] - ldrh r1, [r2, 0x6] - strh r1, [r0, 0x30] - ldrh r1, [r2, 0x8] - strh r1, [r0, 0x32] - ldrh r1, [r2, 0xA] - strh r1, [r0, 0x34] - ldr r1, _080D4C14 @ =sub_80D4C18 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080D4C10: .4byte gBattleAnimArgs -_080D4C14: .4byte sub_80D4C18 - thumb_func_end sub_80D4BF0 - - thumb_func_start sub_80D4C18 -sub_80D4C18: @ 80D4C18 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x2E] - subs r0, r1 - strh r0, [r4, 0x36] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x38] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - cmp r0, 0 - bne _080D4C5C - adds r0, r4, 0 - bl move_anim_8072740 -_080D4C5C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D4C18 - - thumb_func_start sub_80D4C64 -sub_80D4C64: @ 80D4C64 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r1, r2 - strh r1, [r4, 0x36] - lsls r0, 16 - asrs r0, 23 - strh r0, [r4, 0x24] - lsls r1, 16 - asrs r1, 23 - strh r1, [r4, 0x26] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080D4C9C - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080D4C9C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D4C64 - - thumb_func_start sub_80D4CA4 -sub_80D4CA4: @ 80D4CA4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r5, _080D4CE0 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x30] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldr r1, _080D4CE4 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldr r0, _080D4CE8 @ =sub_80D4CEC - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D4CE0: .4byte gBattleAnimBankTarget -_080D4CE4: .4byte gBattleAnimArgs -_080D4CE8: .4byte sub_80D4CEC - thumb_func_end sub_80D4CA4 - - thumb_func_start sub_80D4CEC -sub_80D4CEC: @ 80D4CEC - push {r4-r6,lr} - adds r4, r0, 0 - movs r0, 0x30 - ldrsh r1, [r4, r0] - movs r2, 0x20 - ldrsh r0, [r4, r2] - subs r6, r1, r0 - movs r0, 0x32 - ldrsh r1, [r4, r0] - movs r2, 0x22 - ldrsh r0, [r4, r2] - subs r5, r1, r0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - muls r0, r6 - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl __divsi3 - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - muls r0, r5 - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl __divsi3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x36 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080D4D44 - movs r0, 0 - strh r0, [r4, 0x38] - adds r0, r4, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_80D4D64 -_080D4D44: - movs r0, 0x34 - ldrsh r1, [r4, r0] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080D4D56 - adds r0, r4, 0 - bl move_anim_8072740 -_080D4D56: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80D4CEC - - thumb_func_start sub_80D4D64 -sub_80D4D64: @ 80D4D64 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - adds r4, r1, 0 - adds r5, r2, 0 - movs r2, 0x2E - ldrsh r1, [r0, r2] - lsrs r2, r1, 31 - adds r1, r2 - lsls r1, 15 - lsrs r1, 16 - str r1, [sp] - ldrh r1, [r0, 0x24] - ldrh r3, [r0, 0x20] - adds r1, r3 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - mov r10, r1 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r0, r5, r0 - subs r0, 0x5 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - bl Random - negs r4, r4 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r4, r0 - subs r4, 0x5 - lsls r4, 16 - lsrs r7, r4, 16 - movs r6, 0 - mov r0, r8 - lsls r0, 16 - mov r8, r0 - mov r1, r10 - lsls r1, 16 - str r1, [sp, 0xC] - ldr r2, [sp] - lsls r2, 16 - str r2, [sp, 0x10] - asrs r1, 16 - lsls r0, r7, 16 - asrs r5, r0, 16 - str r0, [sp, 0x14] - negs r3, r5 - str r3, [sp, 0x4] - asrs r0, r2, 16 - adds r1, r0 - lsls r1, 16 - mov r10, r1 -_080D4DF2: - ldr r0, _080D4E34 @ =gSpriteTemplate_83D9420 - mov r2, r8 - asrs r1, r2, 16 - mov r3, r10 - asrs r2, r3, 16 - movs r3, 0x82 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080D4E38 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r4, r0, r1 - movs r0, 0x14 - strh r0, [r4, 0x2E] - mov r0, r9 - strh r0, [r4, 0x30] - ldr r0, _080D4E3C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl sub_8079E90 - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - cmp r5, 0 - bge _080D4E40 - mov r1, sp - ldrh r1, [r1, 0x4] - strh r1, [r4, 0x32] - b _080D4E42 - .align 2, 0 -_080D4E34: .4byte gSpriteTemplate_83D9420 -_080D4E38: .4byte gSprites -_080D4E3C: .4byte gBattleAnimBankAttacker -_080D4E40: - strh r7, [r4, 0x32] -_080D4E42: - lsls r0, r6, 16 - movs r2, 0x80 - lsls r2, 9 - adds r0, r2 - lsrs r6, r0, 16 - cmp r0, 0 - ble _080D4DF2 - movs r6, 0 - ldr r3, [sp, 0xC] - asrs r1, r3, 16 - ldr r0, [sp, 0x14] - asrs r5, r0, 16 - negs r2, r5 - str r2, [sp, 0x8] - ldr r3, [sp, 0x10] - asrs r0, r3, 16 - subs r1, r0 - lsls r1, 16 - mov r10, r1 -_080D4E68: - ldr r0, _080D4EAC @ =gSpriteTemplate_83D9420 - mov r2, r8 - asrs r1, r2, 16 - mov r3, r10 - asrs r2, r3, 16 - movs r3, 0x82 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080D4EB0 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r4, r0, r1 - movs r0, 0x14 - strh r0, [r4, 0x2E] - mov r0, r9 - strh r0, [r4, 0x30] - ldr r0, _080D4EB4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl sub_8079E90 - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - cmp r5, 0 - ble _080D4EB8 - mov r1, sp - ldrh r1, [r1, 0x8] - strh r1, [r4, 0x32] - b _080D4EBA - .align 2, 0 -_080D4EAC: .4byte gSpriteTemplate_83D9420 -_080D4EB0: .4byte gSprites -_080D4EB4: .4byte gBattleAnimBankAttacker -_080D4EB8: - strh r7, [r4, 0x32] -_080D4EBA: - lsls r0, r6, 16 - movs r2, 0x80 - lsls r2, 9 - adds r0, r2 - lsrs r6, r0, 16 - cmp r0, 0 - ble _080D4E68 - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D4D64 - - thumb_func_start sub_80D4ED8 -sub_80D4ED8: @ 80D4ED8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D4F0C @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x2E] - movs r0, 0x3C - strh r0, [r4, 0x30] - movs r0, 0x9 - strh r0, [r4, 0x32] - movs r0, 0x1E - strh r0, [r4, 0x34] - movs r0, 0xFE - lsls r0, 8 - strh r0, [r4, 0x36] - ldr r1, _080D4F10 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r1, _080D4F14 @ =sub_8078174 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D4F0C: .4byte gBattleAnimArgs -_080D4F10: .4byte move_anim_8072740 -_080D4F14: .4byte sub_8078174 - thumb_func_end sub_80D4ED8 - - thumb_func_start sub_80D4F18 -sub_80D4F18: @ 80D4F18 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D4F50 @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_807867C - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x32] - ldr r0, _080D4F54 @ =sub_8078394 - str r0, [r4, 0x1C] - ldr r1, _080D4F58 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D4F50: .4byte gBattleAnimArgs -_080D4F54: .4byte sub_8078394 -_080D4F58: .4byte move_anim_8072740 - thumb_func_end sub_80D4F18 - - thumb_func_start sub_80D4F5C -sub_80D4F5C: @ 80D4F5C - push {r4,lr} - adds r4, r0, 0 - bl sub_8078650 - ldr r0, _080D4F90 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D4F98 - ldr r2, _080D4F94 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r2, 0x8] - negs r0, r0 - strh r0, [r4, 0x32] - adds r1, r2, 0 - b _080D4FAE - .align 2, 0 -_080D4F90: .4byte gBattleAnimBankAttacker -_080D4F94: .4byte gBattleAnimArgs -_080D4F98: - ldr r1, _080D4FC4 @ =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, 0x8] - strh r0, [r4, 0x32] -_080D4FAE: - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x34] - ldr r0, _080D4FC8 @ =sub_80D5038 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D4FC4: .4byte gBattleAnimArgs -_080D4FC8: .4byte sub_80D5038 - thumb_func_end sub_80D4F5C - - thumb_func_start sub_80D4FCC -sub_80D4FCC: @ 80D4FCC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D4FF8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D5000 - ldr r2, _080D4FFC @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r2, 0x8] - strh r0, [r4, 0x32] - adds r1, r2, 0 - b _080D5018 - .align 2, 0 -_080D4FF8: .4byte gBattleAnimBankAttacker -_080D4FFC: .4byte gBattleAnimArgs -_080D5000: - ldr r1, _080D5030 @ =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, 0x8] - negs r0, r0 - strh r0, [r4, 0x32] -_080D5018: - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x34] - ldr r0, _080D5034 @ =sub_80D5038 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D5030: .4byte gBattleAnimArgs -_080D5034: .4byte sub_80D5038 - thumb_func_end sub_80D4FCC - - thumb_func_start sub_80D5038 -sub_80D5038: @ 80D5038 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x36 - ldrsh r1, [r2, r3] - cmp r0, r1 - bge _080D505E - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x34] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] -_080D505E: - movs r0, 0x2E - ldrsh r1, [r2, r0] - movs r3, 0x30 - ldrsh r0, [r2, r3] - cmp r1, r0 - bne _080D5070 - adds r0, r2, 0 - bl move_anim_8074EE0 -_080D5070: - pop {r0} - bx r0 - thumb_func_end sub_80D5038 - - thumb_func_start sub_80D5074 -sub_80D5074: @ 80D5074 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078650 - ldr r0, _080D5098 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D50A0 - ldr r0, _080D509C @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - b _080D50B2 - .align 2, 0 -_080D5098: .4byte gBattleAnimBankAttacker -_080D509C: .4byte gBattleAnimArgs -_080D50A0: - ldr r0, _080D50E0 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - adds r2, r4, 0 - adds r2, 0x43 - movs r1, 0x8 - strb r1, [r2] -_080D50B2: - adds r2, r0, 0 - ldrh r0, [r2, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x22] - ldrh r0, [r2, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r2, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r2, 0x8] - strh r0, [r4, 0x32] - ldrh r0, [r2, 0xA] - strh r0, [r4, 0x34] - ldrh r0, [r2, 0xC] - strh r0, [r4, 0x36] - strh r1, [r4, 0x38] - ldr r0, _080D50E4 @ =sub_80D50E8 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D50E0: .4byte gBattleAnimArgs -_080D50E4: .4byte sub_80D50E8 - thumb_func_end sub_80D5074 - - thumb_func_start sub_80D50E8 -sub_80D50E8: @ 80D50E8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080D5170 - movs r2, 0x38 - ldrsh r1, [r4, r2] - ldr r0, _080D5154 @ =0x00002710 - cmp r1, r0 - ble _080D5106 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1 - strb r0, [r1] -_080D5106: - movs r1, 0x2E - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x38] - lsls r1, 16 - asrs r1, 24 - ldrh r2, [r4, 0x30] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x38] - lsls r1, 16 - asrs r1, 24 - ldrh r2, [r4, 0x30] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x36] - ldrh r2, [r4, 0x38] - adds r0, r2 - strh r0, [r4, 0x38] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080D515C - ldr r2, _080D5158 @ =0xffffff00 - b _080D5164 - .align 2, 0 -_080D5154: .4byte 0x00002710 -_080D5158: .4byte 0xffffff00 -_080D515C: - cmp r0, 0 - bge _080D5168 - movs r2, 0x80 - lsls r2, 1 -_080D5164: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_080D5168: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _080D5176 -_080D5170: - adds r0, r4, 0 - bl move_anim_8074EE0 -_080D5176: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D50E8 - - thumb_func_start sub_80D517C -sub_80D517C: @ 80D517C - push {lr} - movs r1, 0 - strh r1, [r0, 0x20] - strh r1, [r0, 0x22] - movs r1, 0x3C - strh r1, [r0, 0x2E] - movs r1, 0x8C - strh r1, [r0, 0x32] - movs r1, 0x50 - strh r1, [r0, 0x36] - ldr r1, _080D51A0 @ =sub_8078B34 - str r1, [r0, 0x1C] - ldr r1, _080D51A4 @ =move_anim_8072740 - bl StoreSpriteCallbackInData - pop {r0} - bx r0 - .align 2, 0 -_080D51A0: .4byte sub_8078B34 -_080D51A4: .4byte move_anim_8072740 - thumb_func_end sub_80D517C - - 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 - - thumb_func_start sub_80D58FC -sub_80D58FC: @ 80D58FC - push {r4,lr} - adds r4, r0, 0 - bl sub_80D59B0 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080D5936 - ldr r3, _080D593C @ =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_080D5936: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D593C: .4byte gTasks - thumb_func_end sub_80D58FC - - thumb_func_start sub_80D5940 -sub_80D5940: @ 80D5940 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D5978 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r2, [r1, 0x26] - ldrh r0, [r1, 0x22] - adds r2, r0 - adds r1, 0x29 - movs r0, 0 - ldrsb r0, [r1, r0] - adds r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _080D597C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D5980 - lsls r0, r4, 16 - movs r1, 0x94 - lsls r1, 15 - b _080D5986 - .align 2, 0 -_080D5978: .4byte gSprites -_080D597C: .4byte gBattleAnimBankAttacker -_080D5980: - lsls r0, r4, 16 - movs r1, 0xB0 - lsls r1, 14 -_080D5986: - adds r0, r1 - lsrs r4, r0, 16 - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80D5940 - - thumb_func_start sub_80D5994 -sub_80D5994: @ 80D5994 - movs r3, 0 - strh r3, [r0, 0x2E] - strh r3, [r0, 0x30] - ldrh r3, [r0, 0x20] - lsls r3, 3 - strh r3, [r0, 0x32] - ldrh r3, [r0, 0x22] - lsls r3, 3 - strh r3, [r0, 0x34] - lsls r1, 3 - strh r1, [r0, 0x36] - lsls r2, 3 - strh r2, [r0, 0x38] - bx lr - thumb_func_end sub_80D5994 - - thumb_func_start sub_80D59B0 -sub_80D59B0: @ 80D59B0 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080D59DA - movs r0, 0 - strh r0, [r2, 0x2E] - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - ldrh r0, [r2, 0x30] - adds r1, r0, 0 - muls r1, r0 - adds r0, r1, 0 - ldrh r3, [r2, 0x34] - adds r0, r3 - strh r0, [r2, 0x34] -_080D59DA: - ldrh r0, [r2, 0x36] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - lsls r0, 16 - asrs r0, 19 - strh r0, [r2, 0x20] - ldrh r1, [r2, 0x38] - ldrh r3, [r2, 0x34] - adds r1, r3 - strh r1, [r2, 0x34] - lsls r1, 16 - asrs r3, r1, 19 - strh r3, [r2, 0x22] - adds r0, 0x8 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 17 - cmp r0, r1 - bhi _080D5A10 - adds r1, r3, 0 - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _080D5A10 - cmp r1, 0x78 - ble _080D5A1C -_080D5A10: - adds r0, r2, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080D5A1C: - pop {r0} - bx r0 - thumb_func_end sub_80D59B0 - - thumb_func_start sub_80D5A20 -sub_80D5A20: @ 80D5A20 - push {r4,r5,lr} - ldr r3, _080D5A64 @ =gBattleAnimArgs - ldrh r1, [r3] - movs r2, 0 - strh r1, [r0, 0x20] - ldrh r1, [r3, 0x2] - strh r1, [r0, 0x22] - strh r2, [r0, 0x2E] - strh r2, [r0, 0x30] - strh r2, [r0, 0x32] - ldrh r1, [r3, 0x4] - strh r1, [r0, 0x3A] - ldrh r1, [r3, 0x6] - strh r1, [r0, 0x3C] - ldrh r4, [r0, 0x4] - lsls r2, r4, 22 - lsrs r2, 22 - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r1, 4 - adds r2, r1 - ldr r3, _080D5A68 @ =0x000003ff - adds r1, r3, 0 - ands r2, r1 - ldr r1, _080D5A6C @ =0xfffffc00 - ands r1, r4 - orrs r1, r2 - strh r1, [r0, 0x4] - ldr r1, _080D5A70 @ =sub_80D5A74 - str r1, [r0, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D5A64: .4byte gBattleAnimArgs -_080D5A68: .4byte 0x000003ff -_080D5A6C: .4byte 0xfffffc00 -_080D5A70: .4byte sub_80D5A74 - thumb_func_end sub_80D5A20 - - thumb_func_start sub_80D5A74 -sub_80D5A74: @ 80D5A74 - push {r4,lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0x1 - beq _080D5AA6 - cmp r0, 0x1 - bgt _080D5A8A - cmp r0, 0 - beq _080D5A90 - b _080D5B04 -_080D5A8A: - cmp r0, 0x2 - beq _080D5AC4 - b _080D5B04 -_080D5A90: - ldrh r1, [r2, 0x3A] - movs r3, 0x3A - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _080D5AA0 - subs r0, r1, 0x1 - strh r0, [r2, 0x3A] - b _080D5B04 -_080D5AA0: - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] -_080D5AA6: - ldrh r0, [r2, 0x22] - adds r0, 0x8 - strh r0, [r2, 0x22] - lsls r0, 16 - asrs r0, 16 - ldrh r3, [r2, 0x3C] - movs r4, 0x3C - ldrsh r1, [r2, r4] - cmp r0, r1 - blt _080D5B04 - strh r3, [r2, 0x22] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - b _080D5B04 -_080D5AC4: - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D5AF0 - movs r0, 0 - strh r0, [r2, 0x30] - ldrh r0, [r2, 0x32] - adds r0, 0x1 - strh r0, [r2, 0x32] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D5AEC - ldr r0, _080D5AE8 @ =0x0000fffd - b _080D5AEE - .align 2, 0 -_080D5AE8: .4byte 0x0000fffd -_080D5AEC: - movs r0, 0x3 -_080D5AEE: - strh r0, [r2, 0x26] -_080D5AF0: - ldrh r0, [r2, 0x34] - adds r0, 0x1 - strh r0, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080D5B04 - adds r0, r2, 0 - bl move_anim_8072740 -_080D5B04: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D5A74 - - thumb_func_start sub_80D5B0C -sub_80D5B0C: @ 80D5B0C - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080D5B80 - cmp r0, 0x1 - bgt _080D5B22 - cmp r0, 0 - beq _080D5B28 - b _080D5C4E -_080D5B22: - cmp r0, 0x2 - beq _080D5BDE - b _080D5C4E -_080D5B28: - adds r0, r5, 0 - movs r1, 0 - bl sub_80787B0 - ldr r4, _080D5B50 @ =gBattleAnimArgs - ldrb r1, [r4, 0x4] - adds r0, r5, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x3C] - ldr r0, _080D5B54 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D5B58 - movs r0, 0x4 - b _080D5B5A - .align 2, 0 -_080D5B50: .4byte gBattleAnimArgs -_080D5B54: .4byte gBattleAnimBankAttacker -_080D5B58: - ldr r0, _080D5B78 @ =0x0000fffc -_080D5B5A: - strh r0, [r5, 0x36] - ldr r0, _080D5B7C @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - 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] - b _080D5BD6 - .align 2, 0 -_080D5B78: .4byte 0x0000fffc -_080D5B7C: .4byte gBattleAnimBankTarget -_080D5B80: - ldrh r0, [r5, 0x30] - adds r0, 0xC0 - strh r0, [r5, 0x30] - ldr r0, _080D5BA0 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D5BA4 - ldrh r0, [r5, 0x30] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - b _080D5BAA - .align 2, 0 -_080D5BA0: .4byte gBattleAnimBankAttacker -_080D5BA4: - ldrh r0, [r5, 0x30] - lsls r0, 16 - asrs r0, 24 -_080D5BAA: - strh r0, [r5, 0x26] - movs r2, 0x32 - ldrsh r0, [r5, r2] - movs r2, 0x36 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x24] - ldrh r0, [r5, 0x32] - adds r0, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080D5C4E - movs r0, 0 - strh r0, [r5, 0x34] -_080D5BD6: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080D5C4E -_080D5BDE: - movs r1, 0x32 - ldrsh r0, [r5, r1] - movs r2, 0x36 - ldrsh r1, [r5, r2] - bl Sin - adds r2, r0, 0 - movs r3, 0 - strh r2, [r5, 0x24] - ldrh r0, [r5, 0x32] - adds r0, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080D5C4E - ldrh r0, [r5, 0x20] - adds r1, r2, r0 - strh r1, [r5, 0x20] - ldrh r0, [r5, 0x26] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - strh r3, [r5, 0x26] - strh r3, [r5, 0x24] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0x2E] - strh r1, [r5, 0x30] - ldr r4, _080D5C54 @ =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 sub_8078BD4 - ldr r0, _080D5C58 @ =sub_80D5C5C - str r0, [r5, 0x1C] -_080D5C4E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D5C54: .4byte gBattleAnimBankTarget -_080D5C58: .4byte sub_80D5C5C - thumb_func_end sub_80D5B0C - - thumb_func_start sub_80D5C5C -sub_80D5C5C: @ 80D5C5C - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - bne _080D5CB4 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x10 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldrh r2, [r4, 0x38] - adds r0, r2, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x38] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0 - beq _080D5C92 - cmp r2, 0xC4 - ble _080D5CBA -_080D5C92: - lsls r0, 16 - cmp r0, 0 - ble _080D5CBA - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D5CBA - ldr r0, _080D5CB0 @ =gUnknown_0202F7D2 - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x90 - bl PlaySE12WithPanning - b _080D5CBA - .align 2, 0 -_080D5CB0: .4byte gUnknown_0202F7D2 -_080D5CB4: - adds r0, r4, 0 - bl move_anim_8072740 -_080D5CBA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D5C5C - - thumb_func_start sub_80D5CC0 -sub_80D5CC0: @ 80D5CC0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080D5CD8 - ldr r0, _080D5D4C @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x30] - adds r0, r1, 0x1 - strh r0, [r4, 0x2E] -_080D5CD8: - movs r0, 0xC0 - lsls r0, 1 - adds r1, r0, 0 - ldrh r2, [r4, 0x34] - adds r1, r2 - strh r1, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0xA0 - strh r0, [r4, 0x36] - movs r2, 0x30 - ldrsh r0, [r4, r2] - lsls r1, 16 - asrs r1, 24 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x36] - lsls r1, 16 - asrs r1, 24 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r2, r0, 0x7 - movs r0, 0xFF - ands r2, r0 - strh r2, [r4, 0x30] - ldr r0, _080D5D50 @ =gMain - ldr r1, _080D5D54 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D5D84 - adds r0, r2, 0 - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x83 - bls _080D5D5C - ldr r0, _080D5D58 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - b _080D5DA0 - .align 2, 0 -_080D5D4C: .4byte gBattleAnimArgs -_080D5D50: .4byte gMain -_080D5D54: .4byte 0x0000043d -_080D5D58: .4byte gBattleAnimBankTarget -_080D5D5C: - ldr r0, _080D5D80 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x5] - b _080D5DA0 - .align 2, 0 -_080D5D80: .4byte gBattleAnimBankTarget -_080D5D84: - adds r0, r2, 0 - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x83 - bls _080D5D98 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D - b _080D5D9E -_080D5D98: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F -_080D5D9E: - strb r0, [r1] -_080D5DA0: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080D5DC8 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D5DC8: - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0x1E - bne _080D5DD6 - adds r0, r4, 0 - bl move_anim_8072740 -_080D5DD6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D5CC0 - - thumb_func_start sub_80D5DDC -sub_80D5DDC: @ 80D5DDC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D5E3C @ =gTasks - adds r4, r1, r0 - ldr r0, _080D5E40 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080D5E02 - movs r1, 0x1 -_080D5E02: - strh r1, [r4, 0x20] - ldr r0, _080D5E44 @ =gBattleAnimBankTarget - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - bl IsAnimBankSpriteVisible - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - strh r0, [r4, 0x22] - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - movs r0, 0x3 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080D5E48 @ =sub_80D5E4C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D5E3C: .4byte gTasks -_080D5E40: .4byte gBattleAnimBankAttacker -_080D5E44: .4byte gBattleAnimBankTarget -_080D5E48: .4byte sub_80D5E4C - thumb_func_end sub_80D5DDC - - thumb_func_start sub_80D5E4C -sub_80D5E4C: @ 80D5E4C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D5E70 @ =gTasks - adds r2, r0, r1 - movs r0, 0x8 - ldrsh r3, [r2, r0] - cmp r3, 0x1 - beq _080D5F14 - cmp r3, 0x1 - bgt _080D5E74 - cmp r3, 0 - beq _080D5E82 - b _080D6074 - .align 2, 0 -_080D5E70: .4byte gTasks -_080D5E74: - cmp r3, 0x2 - bne _080D5E7A - b _080D5F9C -_080D5E7A: - cmp r3, 0x3 - bne _080D5E80 - b _080D6030 -_080D5E80: - b _080D6074 -_080D5E82: - movs r1, 0x20 - ldrsh r0, [r2, r1] - lsls r0, 1 - ldrh r5, [r2, 0x1C] - adds r0, r5 - strh r0, [r2, 0x1C] - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D5EB4 - strh r3, [r2, 0xA] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D5EB0 - movs r0, 0x2 - b _080D5EB2 -_080D5EB0: - ldr r0, _080D5F0C @ =0x0000fffe -_080D5EB2: - strh r0, [r2, 0x1E] -_080D5EB4: - movs r1, 0 - strh r1, [r2, 0xE] - movs r7, 0x22 - ldrsh r0, [r2, r7] - cmp r1, r0 - bge _080D5EF6 - ldr r4, _080D5F10 @ =gSprites - adds r3, r2, 0 - adds r3, 0x8 -_080D5EC6: - movs r1, 0xE - ldrsh r0, [r2, r1] - adds r0, 0xE - lsls r0, 1 - adds r0, r3, r0 - movs r5, 0 - ldrsh r0, [r0, r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r2, 0x1E] - ldrh r7, [r2, 0x1C] - adds r0, r7 - strh r0, [r1, 0x24] - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r5, 0x22 - ldrsh r1, [r2, r5] - cmp r0, r1 - blt _080D5EC6 -_080D5EF6: - ldrh r0, [r2, 0x1A] - adds r0, 0x1 - strh r0, [r2, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - beq _080D5F06 - b _080D6074 -_080D5F06: - movs r0, 0 - strh r0, [r2, 0x1A] - b _080D6020 - .align 2, 0 -_080D5F0C: .4byte 0x0000fffe -_080D5F10: .4byte gSprites -_080D5F14: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080D5F3C - movs r0, 0 - strh r0, [r2, 0xA] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - ands r0, r3 - lsls r0, 16 - cmp r0, 0 - beq _080D5F38 - movs r0, 0x2 - b _080D5F3A -_080D5F38: - ldr r0, _080D5F94 @ =0x0000fffe -_080D5F3A: - strh r0, [r2, 0x1E] -_080D5F3C: - movs r1, 0 - strh r1, [r2, 0xE] - movs r7, 0x22 - ldrsh r0, [r2, r7] - cmp r1, r0 - bge _080D5F7E - ldr r4, _080D5F98 @ =gSprites - adds r3, r2, 0 - adds r3, 0x8 -_080D5F4E: - movs r1, 0xE - ldrsh r0, [r2, r1] - adds r0, 0xE - lsls r0, 1 - adds r0, r3, r0 - movs r5, 0 - ldrsh r0, [r0, r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r2, 0x1E] - ldrh r7, [r2, 0x1C] - adds r0, r7 - strh r0, [r1, 0x24] - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r5, 0x22 - ldrsh r1, [r2, r5] - cmp r0, r1 - blt _080D5F4E -_080D5F7E: - ldrh r0, [r2, 0x1A] - adds r0, 0x1 - strh r0, [r2, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x60 - bne _080D6074 - movs r0, 0 - strh r0, [r2, 0x1A] - b _080D6020 - .align 2, 0 -_080D5F94: .4byte 0x0000fffe -_080D5F98: .4byte gSprites -_080D5F9C: - movs r7, 0x20 - ldrsh r1, [r2, r7] - lsls r1, 1 - ldrh r0, [r2, 0x1C] - subs r0, r1 - strh r0, [r2, 0x1C] - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D5FD0 - movs r0, 0 - strh r0, [r2, 0xA] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D5FCC - strh r3, [r2, 0x1E] - b _080D5FD0 -_080D5FCC: - ldr r0, _080D6028 @ =0x0000fffe - strh r0, [r2, 0x1E] -_080D5FD0: - movs r1, 0 - strh r1, [r2, 0xE] - movs r3, 0x22 - ldrsh r0, [r2, r3] - cmp r1, r0 - bge _080D6012 - ldr r4, _080D602C @ =gSprites - adds r3, r2, 0 - adds r3, 0x8 -_080D5FE2: - movs r5, 0xE - ldrsh r0, [r2, r5] - adds r0, 0xE - lsls r0, 1 - adds r0, r3, r0 - movs r7, 0 - ldrsh r0, [r0, r7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r2, 0x1E] - ldrh r5, [r2, 0x1C] - adds r0, r5 - strh r0, [r1, 0x24] - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r7, 0x22 - ldrsh r1, [r2, r7] - cmp r0, r1 - blt _080D5FE2 -_080D6012: - ldrh r0, [r2, 0x1A] - adds r0, 0x1 - strh r0, [r2, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - bne _080D6074 -_080D6020: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _080D6074 - .align 2, 0 -_080D6028: .4byte 0x0000fffe -_080D602C: .4byte gSprites -_080D6030: - movs r1, 0 - strh r1, [r2, 0xE] - movs r3, 0x22 - ldrsh r0, [r2, r3] - cmp r1, r0 - bge _080D606E - ldr r6, _080D607C @ =gSprites - adds r3, r2, 0 - adds r3, 0x8 - movs r5, 0 -_080D6044: - movs r7, 0xE - ldrsh r0, [r2, r7] - adds r0, 0xE - lsls r0, 1 - adds r0, r3, r0 - movs r7, 0 - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r5, [r0, 0x24] - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r7, 0x22 - ldrsh r1, [r2, r7] - cmp r0, r1 - blt _080D6044 -_080D606E: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D6074: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D607C: .4byte gSprites - thumb_func_end sub_80D5E4C - - thumb_func_start sub_80D6080 -sub_80D6080: @ 80D6080 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r0, sp - bl sub_8078914 - mov r0, sp - ldrb r0, [r0, 0x8] - lsls r0, 4 - ldr r1, _080D60B0 @ =gBattleAnimArgs - ldrb r2, [r1] - ldrh r3, [r1, 0x2] - movs r1, 0x10 - bl BlendPalette - adds r0, r4, 0 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D60B0: .4byte gBattleAnimArgs - thumb_func_end sub_80D6080 - - thumb_func_start sub_80D60B4 -sub_80D60B4: @ 80D60B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080D610C @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r2, r0, r1 - movs r3, 0x8 - ldrsh r0, [r2, r3] - mov r9, r1 - ldr r4, _080D6110 @ =gBattleAnimArgs - mov r8, r4 - cmp r0, 0 - bne _080D60EA - ldrh r0, [r4] - strh r0, [r2, 0xA] - ldrh r0, [r4, 0x2] - strh r0, [r2, 0xC] - ldrh r0, [r4, 0x4] - strh r0, [r2, 0xE] - ldrh r0, [r4, 0x6] - strh r0, [r2, 0x10] -_080D60EA: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - ldr r1, _080D6114 @ =gObjectBankIDs - ldr r0, _080D6118 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r6, [r0] - movs r5, 0x10 - ldrsh r0, [r2, r5] - cmp r0, 0 - bne _080D6120 - ldr r4, _080D611C @ =gUnknown_083D9794 - movs r1, 0x8 - ldrsh r0, [r2, r1] - b _080D6126 - .align 2, 0 -_080D610C: .4byte gTasks -_080D6110: .4byte gBattleAnimArgs -_080D6114: .4byte gObjectBankIDs -_080D6118: .4byte gBattleAnimBankTarget -_080D611C: .4byte gUnknown_083D9794 -_080D6120: - ldr r4, _080D616C @ =gUnknown_083D97A4 - movs r3, 0x8 - ldrsh r0, [r2, r3] -_080D6126: - movs r1, 0xA - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - adds r0, r4 - ldrb r5, [r0] - lsls r0, r7, 2 - adds r1, r0, r7 - lsls r1, 3 - add r1, r9 - movs r4, 0xE - ldrsh r1, [r1, r4] - mov r12, r0 - cmp r1, 0x1 - bne _080D6174 - ldr r2, _080D6170 @ =gSprites - lsls r3, r6, 4 - adds r0, r3, r6 - lsls r0, 2 - adds r0, r2 - mov r10, r0 - mov r0, r8 - movs r4, 0x2 - ldrsh r1, [r0, r4] - lsls r0, r5, 24 - asrs r0, 24 - muls r0, r1 - cmp r0, 0 - bge _080D6164 - negs r0, r0 -_080D6164: - mov r5, r10 - strh r0, [r5, 0x26] - b _080D618E - .align 2, 0 -_080D616C: .4byte gUnknown_083D97A4 -_080D6170: .4byte gSprites -_080D6174: - ldr r3, _080D61C4 @ =gSprites - lsls r4, r6, 4 - adds r2, r4, r6 - lsls r2, 2 - adds r2, r3 - lsls r0, r5, 24 - asrs r0, 24 - mov r5, r8 - ldrh r1, [r5, 0x2] - muls r0, r1 - strh r0, [r2, 0x24] - adds r2, r3, 0 - adds r3, r4, 0 -_080D618E: - mov r1, r12 - adds r0, r1, r7 - lsls r0, 3 - add r0, r9 - movs r4, 0x8 - ldrsh r1, [r0, r4] - movs r5, 0xA - ldrsh r0, [r0, r5] - cmp r1, r0 - bne _080D61B4 - adds r0, r3, r6 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x24] - strh r1, [r0, 0x26] - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080D61B4: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D61C4: .4byte gSprites - thumb_func_end sub_80D60B4 - - thumb_func_start sub_80D61C8 -sub_80D61C8: @ 80D61C8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D61E8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D61F0 - ldr r0, _080D61EC @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - b _080D61FC - .align 2, 0 -_080D61E8: .4byte gBattleAnimBankAttacker -_080D61EC: .4byte gBattleAnimArgs -_080D61F0: - ldr r1, _080D6210 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, r1, 0 -_080D61FC: - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080D6214 @ =sub_80D6218 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D6210: .4byte gBattleAnimArgs -_080D6214: .4byte sub_80D6218 - thumb_func_end sub_80D61C8 - - thumb_func_start sub_80D6218 -sub_80D6218: @ 80D6218 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D622E - adds r0, r2, 0 - bl move_anim_8072740 -_080D622E: - pop {r0} - bx r0 - thumb_func_end sub_80D6218 - - thumb_func_start sub_80D6234 -sub_80D6234: @ 80D6234 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D6254 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D625C - ldr r0, _080D6258 @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r0, [r0] - subs r1, r0 - strh r1, [r4, 0x20] - b _080D6266 - .align 2, 0 -_080D6254: .4byte gBattleAnimBankAttacker -_080D6258: .4byte gBattleAnimArgs -_080D625C: - ldr r0, _080D6270 @ =gBattleAnimArgs - ldrh r0, [r0] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] -_080D6266: - ldr r0, _080D6274 @ =sub_80D6278 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D6270: .4byte gBattleAnimArgs -_080D6274: .4byte sub_80D6278 - thumb_func_end sub_80D6234 - - thumb_func_start sub_80D6278 -sub_80D6278: @ 80D6278 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080D628E - adds r0, r2, 0 - bl move_anim_8074EE0 -_080D628E: - pop {r0} - bx r0 - thumb_func_end sub_80D6278 - - 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 - - thumb_func_start sub_80D648C -sub_80D648C: @ 80D648C - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r5, _080D6500 @ =gBattleAnimArgs - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r6, _080D6504 @ =gBattleAnimBankTarget - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x38] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x3A] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x3C] - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0xC - ldrsh r0, [r5, r3] - lsls r0, 2 - adds r1, r0 - ldr r3, _080D6508 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080D650C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r1, _080D6510 @ =sub_80D6514 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D6500: .4byte gBattleAnimArgs -_080D6504: .4byte gBattleAnimBankTarget -_080D6508: .4byte 0x000003ff -_080D650C: .4byte 0xfffffc00 -_080D6510: .4byte sub_80D6514 - thumb_func_end sub_80D648C - - thumb_func_start sub_80D6514 -sub_80D6514: @ 80D6514 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - bne _080D657E - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r2, 0x3C - ldrsh r0, [r4, r2] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - ldrh r2, [r4, 0x3C] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3C] - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080D6584 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080D6584 -_080D657E: - adds r0, r4, 0 - bl move_anim_8072740 -_080D6584: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D6514 - - thumb_func_start sub_80D658C -sub_80D658C: @ 80D658C - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x38] - subs r0, 0x1 - strh r0, [r3, 0x38] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080D65C4 - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x36] - strh r0, [r3, 0x38] -_080D65C4: - ldrh r0, [r3, 0x34] - subs r1, r0, 0x1 - strh r1, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bgt _080D65D6 - adds r0, r3, 0 - bl move_anim_8072740 -_080D65D6: - pop {r0} - bx r0 - thumb_func_end sub_80D658C - - thumb_func_start sub_80D65DC -sub_80D65DC: @ 80D65DC - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, _080D6644 @ =gMain - ldr r1, _080D6648 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D65FE - ldr r0, _080D664C @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D6606 -_080D65FE: - ldr r1, _080D6650 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] -_080D6606: - ldr r5, _080D664C @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080D6650 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4] - strh r0, [r6, 0x34] - ldrh r0, [r4, 0x6] - strh r0, [r6, 0x36] - strh r0, [r6, 0x38] - ldr r0, _080D6654 @ =sub_80D658C - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D6644: .4byte gMain -_080D6648: .4byte 0x0000043d -_080D664C: .4byte gBattleAnimBankTarget -_080D6650: .4byte gBattleAnimArgs -_080D6654: .4byte sub_80D658C - thumb_func_end sub_80D65DC - - thumb_func_start sub_80D6658 -sub_80D6658: @ 80D6658 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r1, _080D6674 @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x2E] - movs r2, 0xE - ldrsh r0, [r1, r2] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080D667C - ldr r0, _080D6678 @ =gBattleAnimBankTarget - b _080D667E - .align 2, 0 -_080D6674: .4byte gBattleAnimArgs -_080D6678: .4byte gBattleAnimBankTarget -_080D667C: - ldr r0, _080D670C @ =gBattleAnimBankAttacker -_080D667E: - ldrb r6, [r0] - ldr r0, _080D6710 @ =gMain - ldr r3, _080D6714 @ =0x0000043d - adds r0, r3 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D669C - adds r0, r6, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D66A4 -_080D669C: - ldr r1, _080D6718 @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_080D66A4: - adds r0, r6, 0 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080D6718 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r4, 0x2] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r1, [r4, 0xE] - ldr r0, _080D671C @ =0x00007fff - ands r0, r1 - strh r0, [r5, 0x36] - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x38] - ldrh r0, [r4, 0xA] - strh r0, [r5, 0x3A] - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x3C] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 2 - adds r1, r0 - ldr r3, _080D6720 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080D6724 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r1, _080D6728 @ =sub_80D672C - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D670C: .4byte gBattleAnimBankAttacker -_080D6710: .4byte gMain -_080D6714: .4byte 0x0000043d -_080D6718: .4byte gBattleAnimArgs -_080D671C: .4byte 0x00007fff -_080D6720: .4byte 0x000003ff -_080D6724: .4byte 0xfffffc00 -_080D6728: .4byte sub_80D672C - thumb_func_end sub_80D6658 - - thumb_func_start sub_80D672C -sub_80D672C: @ 80D672C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __modsi3 - cmp r0, 0 - bne _080D6782 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D6782: - ldrh r0, [r4, 0x2E] - subs r1, r0, 0x1 - strh r1, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080D6794 - adds r0, r4, 0 - bl move_anim_8072740 -_080D6794: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D672C - - thumb_func_start sub_80D679C -sub_80D679C: @ 80D679C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_8078764 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - ldr r3, _080D67D8 @ =gBattleAnimArgs - movs r5, 0x6 - ldrsh r0, [r3, r5] - lsls r0, 2 - adds r1, r0 - ldr r5, _080D67DC @ =0x000003ff - adds r0, r5, 0 - ands r1, r0 - ldr r0, _080D67E0 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - movs r1, 0x6 - ldrsh r0, [r3, r1] - cmp r0, 0x1 - bne _080D67E4 - ldrb r0, [r4, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - b _080D67F2 - .align 2, 0 -_080D67D8: .4byte gBattleAnimArgs -_080D67DC: .4byte 0x000003ff -_080D67E0: .4byte 0xfffffc00 -_080D67E4: - cmp r0, 0x2 - bne _080D67F6 - ldrb r0, [r4, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x20 -_080D67F2: - orrs r1, r0 - strb r1, [r4, 0x3] -_080D67F6: - ldr r0, _080D6810 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r0, _080D6814 @ =sub_80782D8 - str r0, [r4, 0x1C] - ldr r1, _080D6818 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D6810: .4byte gBattleAnimArgs -_080D6814: .4byte sub_80782D8 -_080D6818: .4byte move_anim_8072740 - thumb_func_end sub_80D679C - - thumb_func_start sub_80D681C -sub_80D681C: @ 80D681C - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _080D6864 @ =gBattleAnimBankTarget - ldrb r0, [r6] - movs r1, 0 - bl sub_8077ABC - ldr r1, _080D6868 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r1 - lsls r0, 24 - ldr r5, _080D686C @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r4, 0x8] - ldrb r0, [r6] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x2] - adds r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0xC] - ldr r0, _080D6870 @ =sub_80D6874 - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D6864: .4byte gBattleAnimBankTarget -_080D6868: .4byte gTasks -_080D686C: .4byte gBattleAnimArgs -_080D6870: .4byte sub_80D6874 - thumb_func_end sub_80D681C - - thumb_func_start sub_80D6874 -sub_80D6874: @ 80D6874 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r5, 0 - movs r7, 0 - ldr r1, _080D68B4 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldrb r2, [r0, 0xC] - str r2, [sp] - ldrh r4, [r0, 0x8] - ldrh r6, [r0, 0xA] - movs r3, 0xC - ldrsh r0, [r0, r3] - mov r10, r1 - cmp r0, 0 - bne _080D68B8 - movs r0, 0 - mov r8, r0 - movs r2, 0x1 - movs r1, 0x10 - mov r12, r1 - b _080D68C2 - .align 2, 0 -_080D68B4: .4byte gTasks -_080D68B8: - movs r2, 0x10 - mov r12, r2 - movs r3, 0x8 - mov r8, r3 - movs r2, 0x4 -_080D68C2: - mov r0, r9 - lsls r1, r0, 2 - adds r0, r1, r0 - lsls r0, 3 - add r0, r10 - movs r3, 0x1C - ldrsh r0, [r0, r3] - mov r10, r1 - cmp r0, 0xA - bhi _080D69B8 - lsls r0, 2 - ldr r1, _080D68E0 @ =_080D68E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D68E0: .4byte _080D68E4 - .align 2, 0 -_080D68E4: - .4byte _080D6910 - .4byte _080D69B8 - .4byte _080D6924 - .4byte _080D69B8 - .4byte _080D6944 - .4byte _080D69B8 - .4byte _080D695A - .4byte _080D69B8 - .4byte _080D697C - .4byte _080D69B8 - .4byte _080D69B0 -_080D6910: - ldr r0, _080D6920 @ =gSpriteTemplate_83D9938 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - mov r4, r12 - lsls r3, r4, 16 - b _080D6992 - .align 2, 0 -_080D6920: .4byte gSpriteTemplate_83D9938 -_080D6924: - mov r0, r12 - lsls r3, r0, 17 - mov r1, r8 - adds r0, r1, r2 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _080D6940 @ =gSpriteTemplate_83D9938 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - b _080D6992 - .align 2, 0 -_080D6940: .4byte gSpriteTemplate_83D9938 -_080D6944: - mov r3, r12 - lsls r0, r3, 16 - asrs r0, 16 - lsls r3, r0, 1 - adds r3, r0 - lsls r0, r2, 1 - add r0, r8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - b _080D6986 -_080D695A: - mov r0, r12 - lsls r3, r0, 18 - lsls r0, r2, 1 - adds r0, r2 - add r0, r8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _080D6978 @ =gSpriteTemplate_83D9938 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - b _080D6992 - .align 2, 0 -_080D6978: .4byte gSpriteTemplate_83D9938 -_080D697C: - mov r1, r12 - lsls r0, r1, 16 - asrs r0, 16 - lsls r3, r0, 2 - adds r3, r0 -_080D6986: - ldr r0, _080D69AC @ =gSpriteTemplate_83D9938 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - lsls r3, 16 -_080D6992: - asrs r3, 16 - adds r2, r3 - lsls r2, 16 - asrs r2, 16 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - b _080D69B8 - .align 2, 0 -_080D69AC: .4byte gSpriteTemplate_83D9938 -_080D69B0: - mov r0, r9 - bl DestroyAnimVisualTask - b _080D69FC -_080D69B8: - cmp r7, 0 - beq _080D69EC - ldr r4, _080D6A0C @ =gSprites - lsls r3, r5, 4 - adds r3, r5 - lsls r3, 2 - adds r0, r3, r4 - ldrh r5, [r0, 0x4] - lsls r2, r5, 22 - lsrs r2, 22 - add r2, r8 - ldr r6, _080D6A10 @ =0x000003ff - adds r1, r6, 0 - ands r2, r1 - ldr r1, _080D6A14 @ =0xfffffc00 - ands r1, r5 - orrs r1, r2 - strh r1, [r0, 0x4] - mov r1, sp - ldrh r1, [r1] - strh r1, [r0, 0x2E] - adds r4, 0x1C - adds r3, r4 - ldr r1, [r3] - bl _call_via_r1 -_080D69EC: - ldr r0, _080D6A18 @ =gTasks - mov r1, r10 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - strh r0, [r1, 0x1C] -_080D69FC: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D6A0C: .4byte gSprites -_080D6A10: .4byte 0x000003ff -_080D6A14: .4byte 0xfffffc00 -_080D6A18: .4byte gTasks - thumb_func_end sub_80D6874 - - thumb_func_start sub_80D6A1C -sub_80D6A1C: @ 80D6A1C - push {lr} - adds r3, r0, 0 - movs r1, 0x2E - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080D6A3E - ldrb r1, [r3, 0x1] - movs r2, 0x3F - adds r0, r2, 0 - ands r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r3, 0x1] - ldrb r0, [r3, 0x3] - ands r2, r0 - strb r2, [r3, 0x3] - b _080D6A52 -_080D6A3E: - ldrb r2, [r3, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3, 0x1] - ldrb r0, [r3, 0x3] - ands r1, r0 - movs r0, 0x40 - orrs r1, r0 - strb r1, [r3, 0x3] -_080D6A52: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bne _080D6A66 - adds r0, r3, 0 - bl DestroySprite -_080D6A66: - pop {r0} - bx r0 - thumb_func_end sub_80D6A1C - - thumb_func_start sub_80D6A6C -sub_80D6A6C: @ 80D6A6C - push {r4-r7,lr} - adds r4, r0, 0 - ldr r0, _080D6AD4 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r3, [r4, 0x22] - adds r0, r3 - strh r0, [r4, 0x22] - ldr r0, _080D6AD8 @ =gBattleAnimSpriteTemplate_83D9950 - adds r1, 0x20 - lsls r1, 16 - asrs r1, 16 - movs r7, 0x22 - ldrsh r2, [r4, r7] - adds r3, r4, 0 - adds r3, 0x43 - ldrb r3, [r3] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080D6ADC @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r6, r2, r3 - ldrh r5, [r6, 0x4] - lsls r1, r5, 22 - lsrs r1, 22 - adds r1, 0x8 - ldr r7, _080D6AE0 @ =0x000003ff - adds r0, r7, 0 - ands r1, r0 - ldr r0, _080D6AE4 @ =0xfffffc00 - ands r0, r5 - orrs r0, r1 - strh r0, [r6, 0x4] - ldr r1, _080D6AE8 @ =gAnimVisualTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - adds r3, 0x1C - adds r2, r3 - ldr r0, _080D6AEC @ =sub_80D6AF0 - str r0, [r2] - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D6AD4: .4byte gBattleAnimArgs -_080D6AD8: .4byte gBattleAnimSpriteTemplate_83D9950 -_080D6ADC: .4byte gSprites -_080D6AE0: .4byte 0x000003ff -_080D6AE4: .4byte 0xfffffc00 -_080D6AE8: .4byte gAnimVisualTaskCount -_080D6AEC: .4byte sub_80D6AF0 - thumb_func_end sub_80D6A6C - - thumb_func_start sub_80D6AF0 -sub_80D6AF0: @ 80D6AF0 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080D6B24 - movs r0, 0 - strh r0, [r3, 0x2E] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] -_080D6B24: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080D6B38 - adds r0, r3, 0 - bl move_anim_8072740 -_080D6B38: - pop {r0} - bx r0 - thumb_func_end sub_80D6AF0 - - thumb_func_start sub_80D6B3C -sub_80D6B3C: @ 80D6B3C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D6B5C @ =gTasks - adds r5, r1, r0 - ldr r0, _080D6B60 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D6B68 - ldr r4, _080D6B64 @ =gBattleAnimBankAttacker - b _080D6B6A - .align 2, 0 -_080D6B5C: .4byte gTasks -_080D6B60: .4byte gBattleAnimArgs -_080D6B64: .4byte gBattleAnimBankAttacker -_080D6B68: - ldr r4, _080D6BAC @ =gBattleAnimBankTarget -_080D6B6A: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x24] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x26] - ldr r2, _080D6BB0 @ =gBattleAnimArgs - ldrh r0, [r2, 0x2] - movs r1, 0 - strh r0, [r5, 0x14] - strh r1, [r5, 0x16] - strh r1, [r5, 0x18] - strh r1, [r5, 0x1A] - strh r1, [r5, 0x1C] - ldrh r0, [r2, 0x6] - strh r0, [r5, 0x1E] - strh r1, [r5, 0x20] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x22] - ldr r0, _080D6BB4 @ =sub_80D6BB8 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D6BAC: .4byte gBattleAnimBankTarget -_080D6BB0: .4byte gBattleAnimArgs -_080D6BB4: .4byte sub_80D6BB8 - thumb_func_end sub_80D6B3C - - thumb_func_start sub_80D6BB8 -sub_80D6BB8: @ 80D6BB8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - adds r2, r6, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080D6CA0 @ =gTasks - adds r5, r0, r1 - movs r1, 0x14 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080D6CB8 - ldrh r0, [r5, 0x20] - adds r0, 0x1 - movs r7, 0 - strh r0, [r5, 0x20] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x22 - ldrsh r1, [r5, r2] - cmp r0, r1 - ble _080D6CC6 - strh r7, [r5, 0x20] - ldr r0, _080D6CA4 @ =gSpriteTemplate_83D99B8 - movs r3, 0x24 - ldrsh r1, [r5, r3] - movs r3, 0x26 - ldrsh r2, [r5, r3] - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080D6CC6 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _080D6CA8 @ =gSprites - adds r4, r0 - ldr r1, _080D6CAC @ =gUnknown_083D9968 - movs r2, 0x1A - ldrsh r0, [r5, r2] - lsls r0, 1 - adds r0, r1 - movs r3, 0 - ldrsb r3, [r0, r3] - ldrh r0, [r4, 0x20] - adds r3, r0 - strh r3, [r4, 0x20] - movs r2, 0x1A - ldrsh r0, [r5, r2] - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - movs r2, 0 - ldrsb r2, [r0, r2] - ldrh r0, [r4, 0x22] - adds r2, r0 - strh r2, [r4, 0x22] - movs r1, 0x18 - ldrsh r0, [r5, r1] - lsls r1, r0, 2 - adds r1, r0 - movs r0, 0x28 - subs r0, r1 - strh r0, [r4, 0x2E] - strh r3, [r4, 0x30] - ldrh r0, [r5, 0x24] - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - ldrh r0, [r5, 0x26] - strh r0, [r4, 0x36] - strh r6, [r4, 0x38] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r1, _080D6CB0 @ =sub_80D6D00 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r0, _080D6CB4 @ =sub_8078600 - str r0, [r4, 0x1C] - ldrh r0, [r5, 0x1A] - adds r0, 0x1 - strh r0, [r5, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080D6C70 - strh r7, [r5, 0x1A] -_080D6C70: - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x1E - ldrsh r1, [r5, r2] - cmp r0, r1 - blt _080D6C92 - strh r7, [r5, 0x1C] - ldrh r1, [r5, 0x18] - movs r3, 0x18 - ldrsh r0, [r5, r3] - cmp r0, 0x5 - bgt _080D6C92 - adds r0, r1, 0x1 - strh r0, [r5, 0x18] -_080D6C92: - ldrh r0, [r5, 0x16] - adds r0, 0x1 - strh r0, [r5, 0x16] - ldrh r0, [r5, 0x14] - subs r0, 0x1 - strh r0, [r5, 0x14] - b _080D6CC6 - .align 2, 0 -_080D6CA0: .4byte gTasks -_080D6CA4: .4byte gSpriteTemplate_83D99B8 -_080D6CA8: .4byte gSprites -_080D6CAC: .4byte gUnknown_083D9968 -_080D6CB0: .4byte sub_80D6D00 -_080D6CB4: .4byte sub_8078600 -_080D6CB8: - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D6CC6 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080D6CC6: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D6BB8 - - thumb_func_start sub_80D6CCC -sub_80D6CCC: @ 80D6CCC - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080D6CF4 - ldr r2, _080D6CFC @ =gTasks - movs r0, 0x38 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x16] - subs r1, 0x1 - strh r1, [r0, 0x16] - adds r0, r4, 0 - bl DestroySprite -_080D6CF4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D6CFC: .4byte gTasks - thumb_func_end sub_80D6CCC - - thumb_func_start sub_80D6D00 -sub_80D6D00: @ 80D6D00 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, _080D6D14 @ =sub_80D6CCC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D6D14: .4byte sub_80D6CCC - thumb_func_end sub_80D6D00 - - thumb_func_start sub_80D6D18 -sub_80D6D18: @ 80D6D18 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080D6D2C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D6D34 - ldr r4, _080D6D30 @ =gBattleAnimBankAttacker - b _080D6D36 - .align 2, 0 -_080D6D2C: .4byte gBattleAnimArgs -_080D6D30: .4byte gBattleAnimBankAttacker -_080D6D34: - ldr r4, _080D6D64 @ =gBattleAnimBankTarget -_080D6D36: - 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 r1, _080D6D68 @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldr r0, _080D6D6C @ =sub_80785E4 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D6D64: .4byte gBattleAnimBankTarget -_080D6D68: .4byte move_anim_8074EE0 -_080D6D6C: .4byte sub_80785E4 - thumb_func_end sub_80D6D18 - - thumb_func_start sub_80D6D70 -sub_80D6D70: @ 80D6D70 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080D6D84 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D6D8C - ldr r4, _080D6D88 @ =gBattleAnimBankAttacker - b _080D6D8E - .align 2, 0 -_080D6D84: .4byte gBattleAnimArgs -_080D6D88: .4byte gBattleAnimBankAttacker -_080D6D8C: - ldr r4, _080D6DC8 @ =gBattleAnimBankTarget -_080D6D8E: - 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 r1, _080D6DCC @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x24] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x26] - ldr r1, _080D6DD0 @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldr r0, _080D6DD4 @ =sub_8078600 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D6DC8: .4byte gBattleAnimBankTarget -_080D6DCC: .4byte gBattleAnimArgs -_080D6DD0: .4byte move_anim_8072740 -_080D6DD4: .4byte sub_8078600 - thumb_func_end sub_80D6D70 - - thumb_func_start sub_80D6DD8 -sub_80D6DD8: @ 80D6DD8 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r4, _080D6E30 @ =gBattleAnimBankAttacker - 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] - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - movs r0, 0x10 - strh r0, [r5, 0x3C] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D6E26 - movs r1, 0x3C - ldrsh r0, [r5, r1] - negs r0, r0 - strh r0, [r5, 0x3C] -_080D6E26: - ldr r0, _080D6E34 @ =sub_80D6E38 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D6E30: .4byte gBattleAnimBankAttacker -_080D6E34: .4byte sub_80D6E38 - thumb_func_end sub_80D6DD8 - - thumb_func_start sub_80D6E38 -sub_80D6E38: @ 80D6E38 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080D6E4A - cmp r0, 0x1 - beq _080D6E60 - b _080D6E90 -_080D6E4A: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x28 - ble _080D6E90 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080D6E90 -_080D6E60: - ldrh r2, [r4, 0x3C] - ldrh r1, [r4, 0x20] - adds r0, r2, r1 - strh r0, [r4, 0x20] - ldr r3, _080D6E98 @ =gSprites - movs r0, 0x3A - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x24] - adds r2, r1 - strh r2, [r0, 0x24] - ldrh r0, [r4, 0x20] - adds r0, 0x50 - lsls r0, 16 - movs r1, 0xC8 - lsls r1, 17 - cmp r0, r1 - bls _080D6E90 - adds r0, r4, 0 - bl move_anim_8074EE0 -_080D6E90: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D6E98: .4byte gSprites - thumb_func_end sub_80D6E38 - - thumb_func_start sub_80D6E9C -sub_80D6E9C: @ 80D6E9C - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080D6EC0 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080D6F30 - cmp r0, 0x1 - bgt _080D6EC4 - cmp r0, 0 - beq _080D6ED0 - b _080D7000 - .align 2, 0 -_080D6EC0: .4byte gTasks -_080D6EC4: - cmp r0, 0x2 - beq _080D6F8C - cmp r0, 0x3 - bne _080D6ECE - b _080D6FE0 -_080D6ECE: - b _080D7000 -_080D6ED0: - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - strh r0, [r5, 0x26] - ldr r4, _080D6F04 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x24] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D6F0C - ldr r0, _080D6F08 @ =0x0000ffe0 - strh r0, [r5, 0x24] - movs r0, 0x2 - b _080D6F12 - .align 2, 0 -_080D6F04: .4byte gBattleAnimBankAttacker -_080D6F08: .4byte 0x0000ffe0 -_080D6F0C: - movs r0, 0x20 - strh r0, [r5, 0x24] - ldr r0, _080D6F28 @ =0x0000fffe -_080D6F12: - strh r0, [r5, 0x22] - ldr r2, _080D6F2C @ =gSprites - movs r0, 0x26 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r5, 0x24] - strh r1, [r0, 0x24] - b _080D6FD2 - .align 2, 0 -_080D6F28: .4byte 0x0000fffe -_080D6F2C: .4byte gSprites -_080D6F30: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D7000 - movs r0, 0 - strh r0, [r5, 0xA] - ldr r4, _080D6F88 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r5, r1] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - adds r2, 0x3E - ldrb r3, [r2] - lsls r0, r3, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrh r1, [r5, 0x24] - movs r2, 0x24 - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080D6FD2 - ldrh r2, [r5, 0x22] - adds r2, r1, r2 - strh r2, [r5, 0x24] - movs r0, 0x26 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x24] - b _080D7000 - .align 2, 0 -_080D6F88: .4byte gSprites -_080D6F8C: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D7000 - movs r0, 0 - strh r0, [r5, 0xA] - ldr r1, _080D6FDC @ =gSprites - movs r2, 0x26 - ldrsh r0, [r5, r2] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - adds r2, 0x3E - ldrb r3, [r2] - lsls r0, r3, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r5, 0xC] - adds r0, 0x1 - strh r0, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - bne _080D7000 -_080D6FD2: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080D7000 - .align 2, 0 -_080D6FDC: .4byte gSprites -_080D6FE0: - ldr r2, _080D7008 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080D7000: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D7008: .4byte gSprites - thumb_func_end sub_80D6E9C - - thumb_func_start sub_80D700C -sub_80D700C: @ 80D700C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D7030 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080D7026 - b _080D714C -_080D7026: - cmp r0, 0x1 - bgt _080D7034 - cmp r0, 0 - beq _080D703C - b _080D718E - .align 2, 0 -_080D7030: .4byte gTasks -_080D7034: - cmp r0, 0x2 - bne _080D703A - b _080D7180 -_080D703A: - b _080D718E -_080D703C: - ldr r4, _080D707C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080D7052 - movs r1, 0x1 -_080D7052: - movs r6, 0 - strh r1, [r5, 0xA] - ldr r0, _080D7080 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r2, [r0, r1] - adds r3, r0, 0 - cmp r2, 0 - beq _080D7088 - cmp r2, 0x4 - beq _080D70B0 - ldrh r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D70E8 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0xE] - ldr r0, _080D7084 @ =0x0000fff0 - b _080D70F0 - .align 2, 0 -_080D707C: .4byte gBattleAnimBankAttacker -_080D7080: .4byte gBattleAnimArgs -_080D7084: .4byte 0x0000fff0 -_080D7088: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xE] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - movs r2, 0xA - ldrsh r0, [r5, r2] - lsls r0, 7 - adds r0, 0x78 - strh r0, [r5, 0x10] - b _080D7126 -_080D70B0: - movs r0, 0xA - ldrsh r1, [r5, r0] - lsls r1, 7 - movs r0, 0x78 - subs r0, r1 - strh r0, [r5, 0xE] - ldr r4, _080D70E4 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - movs r2, 0xA - ldrsh r1, [r5, r2] - lsls r1, 5 - subs r0, r1 - strh r0, [r5, 0x10] - b _080D7126 - .align 2, 0 -_080D70E4: .4byte gBattleAnimBankTarget -_080D70E8: - ldr r0, _080D710C @ =0x0000fff0 - strh r0, [r5, 0xE] - movs r0, 0x80 - lsls r0, 1 -_080D70F0: - strh r0, [r5, 0x10] - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080D7110 - movs r2, 0 - ldrsh r0, [r3, r2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - movs r0, 0x50 - subs r0, r1 - strh r0, [r5, 0x12] - b _080D7126 - .align 2, 0 -_080D710C: .4byte 0x0000fff0 -_080D7110: - movs r0, 0 - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r0, 0x28 - strh r0, [r5, 0x12] - ldrh r1, [r5, 0xE] - ldrh r0, [r5, 0x10] - strh r0, [r5, 0xE] - strh r1, [r5, 0x10] -_080D7126: - movs r2, 0xE - ldrsh r1, [r5, r2] - movs r2, 0x10 - ldrsh r0, [r5, r2] - cmp r1, r0 - bge _080D713C - movs r1, 0 - movs r0, 0x1 - strh r0, [r5, 0xA] - strh r1, [r5, 0x14] - b _080D7178 -_080D713C: - ldr r0, _080D7148 @ =0x0000ffff - strh r0, [r5, 0xA] - movs r0, 0x3 - strh r0, [r5, 0x14] - b _080D7178 - .align 2, 0 -_080D7148: .4byte 0x0000ffff -_080D714C: - ldrh r0, [r5, 0xC] - adds r0, 0x1 - strh r0, [r5, 0xC] - lsls r0, 16 - cmp r0, 0 - ble _080D718E - movs r0, 0 - strh r0, [r5, 0xC] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80D7194 - lsls r0, 24 - cmp r0, 0 - bne _080D7178 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80D7194 - lsls r0, 24 - cmp r0, 0 - beq _080D718E -_080D7178: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080D718E -_080D7180: - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D718E - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D718E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80D700C - - thumb_func_start sub_80D7194 -sub_80D7194: @ 80D7194 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _080D7220 @ =gSpriteTemplate_83D9B10 - movs r2, 0xE - ldrsh r1, [r4, r2] - movs r3, 0x12 - ldrsh r2, [r4, r3] - movs r3, 0x23 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080D71CA - ldr r1, _080D7224 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - strh r5, [r0, 0x3A] - movs r1, 0x7 - strh r1, [r0, 0x3C] - ldrh r0, [r4, 0x16] - adds r0, 0x1 - strh r0, [r4, 0x16] -_080D71CA: - ldrh r1, [r4, 0xA] - ldrh r5, [r4, 0x14] - adds r0, r1, r5 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bge _080D71DC - movs r0, 0x3 - strh r0, [r4, 0x14] -_080D71DC: - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0x3 - ble _080D71E8 - movs r0, 0 - strh r0, [r4, 0x14] -_080D71E8: - movs r3, 0xA - ldrsh r0, [r4, r3] - lsls r0, 4 - ldrh r5, [r4, 0xE] - adds r2, r0, r5 - strh r2, [r4, 0xE] - lsls r0, r1, 16 - asrs r3, r0, 16 - cmp r3, 0x1 - bne _080D7208 - lsls r0, r2, 16 - asrs r0, 16 - movs r5, 0x10 - ldrsh r1, [r4, r5] - cmp r0, r1 - bge _080D721C -_080D7208: - movs r0, 0x1 - negs r0, r0 - cmp r3, r0 - bne _080D7228 - lsls r0, r2, 16 - asrs r0, 16 - movs r2, 0x10 - ldrsh r1, [r4, r2] - cmp r0, r1 - bgt _080D7228 -_080D721C: - movs r0, 0x1 - b _080D722A - .align 2, 0 -_080D7220: .4byte gSpriteTemplate_83D9B10 -_080D7224: .4byte gSprites -_080D7228: - movs r0, 0 -_080D722A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80D7194 - - thumb_func_start sub_80D7230 -sub_80D7230: @ 80D7230 - 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, 0xC - ble _080D7270 - ldr r3, _080D7278 @ =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080D7270: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D7278: .4byte gTasks - thumb_func_end sub_80D7230 - - thumb_func_start sub_80D727C -sub_80D727C: @ 80D727C - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080D728E - cmp r0, 0x1 - beq _080D72C0 - b _080D72D4 -_080D728E: - ldr r4, _080D72BC @ =gBattleAnimBankAttacker - 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] - adds r0, r5, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080D72D4 - .align 2, 0 -_080D72BC: .4byte gBattleAnimBankAttacker -_080D72C0: - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080D72D4 - adds r0, r5, 0 - bl move_anim_8074EE0 -_080D72D4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80D727C - - thumb_func_start sub_80D72DC -sub_80D72DC: @ 80D72DC - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080D7300 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x4 - bls _080D72F6 - b _080D7468 -_080D72F6: - lsls r0, 2 - ldr r1, _080D7304 @ =_080D7308 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D7300: .4byte gTasks -_080D7304: .4byte _080D7308 - .align 2, 0 -_080D7308: - .4byte _080D731C - .4byte _080D73AC - .4byte _080D73E8 - .4byte _080D7444 - .4byte _080D7454 -_080D731C: - ldr r4, _080D73A0 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x16] - movs r0, 0x4 - strh r0, [r5, 0x18] - ldr r0, _080D73A4 @ =gBattleAnimBankTarget - ldrb r0, [r0] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x1C] - movs r2, 0x1C - ldrsh r0, [r5, r2] - movs r2, 0x14 - ldrsh r1, [r5, r2] - subs r0, r1 - movs r1, 0x5 - bl __divsi3 - strh r0, [r5, 0x1A] - movs r0, 0x7 - strh r0, [r5, 0x10] - ldr r0, _080D73A8 @ =0x0000ffff - strh r0, [r5, 0x12] - movs r0, 0xC - strh r0, [r5, 0x1E] - subs r0, 0x4C - bl sub_8076F98 - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0x20] - movs r0, 0x3F - bl sub_8076F98 - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0x22] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x24] - movs r1, 0x22 - ldrsh r0, [r5, r1] - movs r2, 0x20 - ldrsh r1, [r5, r2] - subs r0, r1 - movs r1, 0x3 - bl __divsi3 - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - b _080D7466 - .align 2, 0 -_080D73A0: .4byte gBattleAnimBankAttacker -_080D73A4: .4byte gBattleAnimBankTarget -_080D73A8: .4byte 0x0000ffff -_080D73AC: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - cmp r0, 0 - ble _080D73DC - movs r0, 0 - strh r0, [r5, 0xA] - adds r0, r5, 0 - adds r1, r2, 0 - bl sub_80D7470 - lsls r0, 24 - cmp r0, 0 - beq _080D73DC - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0x5 - bne _080D73D6 - movs r0, 0x3 - b _080D73DA -_080D73D6: - ldrh r0, [r5, 0x8] - adds r0, 0x1 -_080D73DA: - strh r0, [r5, 0x8] -_080D73DC: - ldrh r1, [r5, 0x1E] - movs r2, 0x1E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080D7468 - b _080D745E -_080D73E8: - ldrh r1, [r5, 0x1E] - movs r2, 0x1E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080D73F6 - subs r0, r1, 0x1 - strh r0, [r5, 0x1E] -_080D73F6: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - movs r3, 0 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080D7468 - strh r3, [r5, 0xA] - ldrh r1, [r5, 0xC] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080D7422 - movs r0, 0x4 - strh r0, [r5, 0x16] - movs r0, 0x44 - strh r0, [r5, 0x18] - strh r3, [r5, 0x10] - strh r2, [r5, 0x12] - b _080D7432 -_080D7422: - movs r0, 0x44 - strh r0, [r5, 0x16] - movs r0, 0x4 - strh r0, [r5, 0x18] - movs r0, 0x7 - strh r0, [r5, 0x10] - ldr r0, _080D7440 @ =0x0000ffff - strh r0, [r5, 0x12] -_080D7432: - movs r1, 0x1E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080D7464 - movs r0, 0x4 - b _080D7466 - .align 2, 0 -_080D7440: .4byte 0x0000ffff -_080D7444: - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D7468 - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080D7468 -_080D7454: - ldrh r1, [r5, 0x1E] - movs r2, 0x1E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080D7464 -_080D745E: - subs r0, r1, 0x1 - strh r0, [r5, 0x1E] - b _080D7468 -_080D7464: - movs r0, 0x1 -_080D7466: - strh r0, [r5, 0x8] -_080D7468: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80D72DC - - thumb_func_start sub_80D7470 -sub_80D7470: @ 80D7470 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _080D7538 @ =gSpriteTemplate_83D9B40 - movs r2, 0x14 - ldrsh r1, [r4, r2] - movs r3, 0x16 - ldrsh r2, [r4, r3] - movs r3, 0x23 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080D74DC - ldr r1, _080D753C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrh r2, [r3, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - ldrh r6, [r4, 0x10] - adds r1, r6 - ldr r6, _080D7540 @ =0x000003ff - adds r0, r6, 0 - ands r1, r0 - ldr r0, _080D7544 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x10] - adds r0, r1 - strh r0, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bge _080D74C4 - movs r0, 0x7 - strh r0, [r4, 0x10] -_080D74C4: - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r0, 0x7 - ble _080D74D0 - movs r0, 0 - strh r0, [r4, 0x10] -_080D74D0: - strh r5, [r3, 0x3A] - movs r0, 0x3 - strh r0, [r3, 0x3C] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] -_080D74DC: - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _080D74FE - movs r5, 0x12 - ldrsh r0, [r4, r5] - cmp r0, 0 - ble _080D74FE - ldrh r1, [r4, 0x26] - ldrh r6, [r4, 0x24] - adds r1, r6 - strh r1, [r4, 0x24] - lsls r1, 24 - asrs r1, 24 - movs r0, 0x76 - bl PlaySE12WithPanning -_080D74FE: - movs r0, 0x12 - ldrsh r3, [r4, r0] - ldrh r2, [r4, 0x16] - cmp r3, 0 - bge _080D7514 - lsls r0, r2, 16 - asrs r0, 16 - movs r5, 0x18 - ldrsh r1, [r4, r5] - cmp r0, r1 - ble _080D7524 -_080D7514: - cmp r3, 0 - ble _080D7548 - lsls r0, r2, 16 - asrs r0, 16 - movs r6, 0x18 - ldrsh r1, [r4, r6] - cmp r0, r1 - blt _080D7548 -_080D7524: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x1A] - ldrh r1, [r4, 0x14] - adds r0, r1 - strh r0, [r4, 0x14] - movs r0, 0x1 - b _080D7554 - .align 2, 0 -_080D7538: .4byte gSpriteTemplate_83D9B40 -_080D753C: .4byte gSprites -_080D7540: .4byte 0x000003ff -_080D7544: .4byte 0xfffffc00 -_080D7548: - movs r3, 0x12 - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r0, r2, r0 - strh r0, [r4, 0x16] - movs r0, 0 -_080D7554: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80D7470 - - thumb_func_start sub_80D755C -sub_80D755C: @ 80D755C - 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, 0xC - ble _080D7592 - ldr r3, _080D7598 @ =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_080D7592: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D7598: .4byte gTasks - thumb_func_end sub_80D755C - - thumb_func_start sub_80D759C -sub_80D759C: @ 80D759C - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080D75C0 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080D7618 - cmp r0, 0x1 - bgt _080D75C4 - cmp r0, 0 - beq _080D75CA - b _080D764E - .align 2, 0 -_080D75C0: .4byte gTasks -_080D75C4: - cmp r0, 0x2 - beq _080D7640 - b _080D764E -_080D75CA: - ldr r0, _080D7614 @ =gBattleAnimBankTarget - ldrb r0, [r0] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r5, 0x26] - strh r0, [r5, 0x24] - cmp r0, 0x10 - ble _080D75F4 - adds r2, r0, 0 -_080D75E4: - adds r1, r2, 0 - subs r1, 0x20 - adds r2, r1, 0 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x10 - bgt _080D75E4 - strh r1, [r5, 0x24] -_080D75F4: - ldr r4, _080D7614 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl sub_8079E90 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x2 - strh r0, [r5, 0x20] - b _080D7638 - .align 2, 0 -_080D7614: .4byte gBattleAnimBankTarget -_080D7618: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D764E - movs r0, 0 - strh r0, [r5, 0xA] - adds r0, r5, 0 - adds r1, r2, 0 - bl sub_80D7654 - lsls r0, 24 - cmp r0, 0 - beq _080D764E -_080D7638: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080D764E -_080D7640: - movs r1, 0x1C - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D764E - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080D764E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80D759C - - thumb_func_start sub_80D7654 -sub_80D7654: @ 80D7654 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _080D76B0 @ =gBattleAnimSpriteTemplate_83D97D0 - movs r2, 0x22 - ldrsh r1, [r4, r2] - movs r3, 0x24 - ldrsh r2, [r4, r3] - ldrh r3, [r4, 0x20] - lsls r3, 24 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080D7698 - ldr r3, _080D76B4 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r1, r0, r1 - ldr r2, _080D76B8 @ =sub_80D76C4 - str r2, [r1] - adds r0, r3 - strh r5, [r0, 0x3A] - movs r1, 0xA - strh r1, [r0, 0x3C] - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] -_080D7698: - ldrh r2, [r4, 0x24] - movs r0, 0x24 - ldrsh r1, [r4, r0] - movs r3, 0x26 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _080D76BC - adds r0, r2, 0 - adds r0, 0x20 - strh r0, [r4, 0x24] - movs r0, 0 - b _080D76BE - .align 2, 0 -_080D76B0: .4byte gBattleAnimSpriteTemplate_83D97D0 -_080D76B4: .4byte gSprites -_080D76B8: .4byte sub_80D76C4 -_080D76BC: - movs r0, 0x1 -_080D76BE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80D7654 - - thumb_func_start sub_80D76C4 -sub_80D76C4: @ 80D76C4 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D76F8 - ldr r3, _080D7700 @ =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_080D76F8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D7700: .4byte gTasks - thumb_func_end sub_80D76C4 - - thumb_func_start sub_80D7704 -sub_80D7704: @ 80D7704 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x7 - ldr r3, _080D780C @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080D7810 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r4, _080D7814 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r4, _080D7818 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r3, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - str r3, [sp] - bl sub_8077ABC - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080D781C @ =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x2E] - ldrh r0, [r1] - ldr r3, [sp] - adds r0, r3 - strh r0, [r5, 0x30] - ldrh r0, [r1, 0x4] - mov r4, r9 - adds r0, r4, r0 - strh r0, [r5, 0x32] - ldrh r0, [r1, 0x2] - adds r0, r6 - strh r0, [r5, 0x34] - ldrh r0, [r1, 0x6] - mov r7, r8 - adds r0, r7, r0 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl sub_8078314 - adds r4, 0x20 - movs r0, 0x98 - lsls r0, 1 - mov r12, r0 - ldr r3, [sp] - cmp r4, r12 - bhi _080D77DE - adds r0, r7, 0 - adds r0, 0x20 - ldrh r1, [r5, 0x30] - ldrh r2, [r5, 0x32] - cmp r0, 0xE0 - bhi _080D77DE - adds r4, r1, 0 - mov r10, r12 -_080D77AA: - mov r7, r9 - lsls r1, r7, 16 - asrs r1, 16 - adds r1, r4 - lsls r1, 16 - mov r7, r8 - lsls r0, r7, 16 - asrs r0, 16 - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsrs r0, r1, 16 - mov r9, r0 - movs r7, 0x80 - lsls r7, 14 - adds r1, r7 - lsrs r1, 16 - cmp r1, r10 - bhi _080D77DE - mov r1, r8 - lsls r0, r1, 16 - adds r0, r7 - lsrs r0, 16 - cmp r0, 0xE0 - bls _080D77AA -_080D77DE: - ldrh r0, [r5, 0x30] - negs r7, r0 - strh r7, [r5, 0x30] - ldrh r0, [r5, 0x32] - negs r4, r0 - strh r4, [r5, 0x32] - lsls r0, r3, 16 - movs r1, 0x80 - lsls r1, 14 - adds r0, r1 - lsrs r0, 16 - movs r2, 0x98 - lsls r2, 1 - mov r12, r2 - ldr r1, _080D781C @ =gBattleAnimArgs - mov r10, r1 - cmp r0, r12 - bhi _080D784A - lsls r1, r6, 16 - movs r2, 0x80 - lsls r2, 14 - adds r0, r1, r2 - b _080D7842 - .align 2, 0 -_080D780C: .4byte 0x000003ff -_080D7810: .4byte 0xfffffc00 -_080D7814: .4byte gBattleAnimBankTarget -_080D7818: .4byte gBattleAnimBankAttacker -_080D781C: .4byte gBattleAnimArgs -_080D7820: - lsls r1, r3, 16 - asrs r1, 16 - adds r1, r7 - lsls r1, 16 - asrs r0, r2, 16 - adds r0, r4 - lsls r0, 16 - lsrs r6, r0, 16 - lsrs r3, r1, 16 - movs r0, 0x80 - lsls r0, 14 - adds r1, r0 - lsrs r1, 16 - cmp r1, r12 - bhi _080D784A - lsls r1, r6, 16 - adds r0, r1, r0 -_080D7842: - lsrs r0, 16 - adds r2, r1, 0 - cmp r0, 0xE0 - bls _080D7820 -_080D784A: - strh r3, [r5, 0x20] - strh r6, [r5, 0x22] - mov r1, r10 - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x2E] - strh r3, [r5, 0x30] - mov r2, r9 - strh r2, [r5, 0x32] - strh r6, [r5, 0x34] - mov r3, r8 - strh r3, [r5, 0x36] - adds r0, r5, 0 - bl sub_8078314 - mov r7, r10 - ldrh r0, [r7, 0xA] - strh r0, [r5, 0x34] - ldrh r0, [r7, 0xC] - strh r0, [r5, 0x36] - ldr r0, _080D7884 @ =sub_80D7888 - str r0, [r5, 0x1C] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D7884: .4byte sub_80D7888 - thumb_func_end sub_80D7704 - - thumb_func_start sub_80D7888 -sub_80D7888: @ 80D7888 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080D78E0 - ldrh r1, [r4, 0x30] - ldrh r2, [r4, 0x38] - adds r1, r2 - strh r1, [r4, 0x38] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x3A] - adds r0, r2 - strh r0, [r4, 0x3A] - strh r1, [r4, 0x24] - strh r0, [r4, 0x26] - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r2, 0x3C - ldrsh r0, [r4, r2] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x36] - ldrh r2, [r4, 0x3C] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3C] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - b _080D78E6 -_080D78E0: - adds r0, r4, 0 - bl move_anim_8072740 -_080D78E6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D7888 - - thumb_func_start sub_80D78EC -sub_80D78EC: @ 80D78EC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D7920 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x2E] - movs r0, 0x3C - strh r0, [r4, 0x30] - movs r0, 0x9 - strh r0, [r4, 0x32] - movs r0, 0x1E - strh r0, [r4, 0x34] - movs r0, 0xFE - lsls r0, 8 - strh r0, [r4, 0x36] - ldr r1, _080D7924 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r1, _080D7928 @ =sub_8078174 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D7920: .4byte gBattleAnimArgs -_080D7924: .4byte move_anim_8072740 -_080D7928: .4byte sub_8078174 - thumb_func_end sub_80D78EC - - thumb_func_start sub_80D792C -sub_80D792C: @ 80D792C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080D7960 @ =gBattleAnimBankTarget - ldrb r0, [r0] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldr r0, _080D7964 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D796C - ldr r0, _080D7968 @ =gBattleAnimArgs - ldrh r1, [r4, 0x32] - ldrh r0, [r0, 0x4] - subs r1, r0 - strh r1, [r4, 0x32] - b _080D7976 - .align 2, 0 -_080D7960: .4byte gBattleAnimBankTarget -_080D7964: .4byte gBattleAnimBankAttacker -_080D7968: .4byte gBattleAnimArgs -_080D796C: - ldr r0, _080D79A4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] -_080D7976: - ldr r0, _080D79A8 @ =gBattleAnimBankTarget - ldrb r0, [r0] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - ldr r1, _080D79A4 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r2, [r1, 0x6] - adds r0, r2 - strh r0, [r4, 0x36] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x2E] - ldr r1, _080D79AC @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r0, _080D79B0 @ =sub_8078B34 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D79A4: .4byte gBattleAnimArgs -_080D79A8: .4byte gBattleAnimBankTarget -_080D79AC: .4byte move_anim_8072740 -_080D79B0: .4byte sub_8078B34 - thumb_func_end sub_80D792C - - thumb_func_start sub_80D79B4 -sub_80D79B4: @ 80D79B4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D79CC @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D79D0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8078764 - b _080D7A06 - .align 2, 0 -_080D79CC: .4byte gBattleAnimArgs -_080D79D0: - ldr r0, _080D7A18 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0x1 - bl sub_807A3FC - ldr r0, _080D7A1C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D79F6 - ldrh r0, [r5] - negs r0, r0 - strh r0, [r5] -_080D79F6: - 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] -_080D7A06: - ldr r1, _080D7A20 @ =sub_80D7A28 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r0, _080D7A24 @ =sub_80785E4 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D7A18: .4byte gBattleAnimBankTarget -_080D7A1C: .4byte gBattleAnimBankAttacker -_080D7A20: .4byte sub_80D7A28 -_080D7A24: .4byte sub_80785E4 - thumb_func_end sub_80D79B4 - - thumb_func_start sub_80D7A28 -sub_80D7A28: @ 80D7A28 - push {lr} - adds r3, r0, 0 - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bne _080D7A5E - adds r0, r3, 0 - bl move_anim_8074EE0 -_080D7A5E: - pop {r0} - bx r0 - thumb_func_end sub_80D7A28 - - thumb_func_start sub_80D7A64 -sub_80D7A64: @ 80D7A64 - push {r4-r7,lr} - sub sp, 0x10 - adds r5, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r6, _080D7AAC @ =gBattleAnimArgs - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - movs r1, 0xA - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080D7AB4 - ldr r4, _080D7AB0 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x6] - adds r0, r6 - strh r0, [r5, 0x36] - b _080D7AC6 - .align 2, 0 -_080D7AAC: .4byte gBattleAnimArgs -_080D7AB0: .4byte gBattleAnimBankTarget -_080D7AB4: - ldr r0, _080D7AE0 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x32 - adds r3, r5, 0 - adds r3, 0x36 - movs r1, 0x1 - bl sub_807A3FC -_080D7AC6: - ldr r0, _080D7AE4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D7AEC - ldr r0, _080D7AE8 @ =gBattleAnimArgs - ldrh r1, [r5, 0x32] - ldrh r0, [r0, 0x4] - subs r1, r0 - strh r1, [r5, 0x32] - b _080D7AF6 - .align 2, 0 -_080D7AE0: .4byte gBattleAnimBankTarget -_080D7AE4: .4byte gBattleAnimBankAttacker -_080D7AE8: .4byte gBattleAnimArgs -_080D7AEC: - ldr r0, _080D7B94 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - ldrh r2, [r5, 0x32] - adds r0, r2 - strh r0, [r5, 0x32] -_080D7AF6: - adds r7, r5, 0 - adds r7, 0x2E - adds r2, r7, 0 - mov r1, sp - movs r4, 0x7 -_080D7B00: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080D7B00 - adds r0, r5, 0 - bl sub_8078D60 - ldrh r0, [r5, 0x30] - movs r1, 0x1 - eors r0, r1 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - eors r0, r1 - strh r0, [r5, 0x32] -_080D7B22: - movs r0, 0x1 - strh r0, [r5, 0x2E] - adds r0, r5, 0 - bl sub_8078CE8 - movs r0, 0x20 - ldrsh r1, [r5, r0] - movs r2, 0x24 - ldrsh r0, [r5, r2] - adds r1, r0 - adds r1, 0x10 - movs r0, 0x88 - lsls r0, 1 - cmp r1, r0 - bhi _080D7B56 - movs r0, 0x22 - ldrsh r1, [r5, r0] - movs r2, 0x26 - ldrsh r0, [r5, r2] - adds r1, r0 - cmp r1, 0xA0 - bgt _080D7B56 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080D7B22 -_080D7B56: - ldrh r0, [r5, 0x24] - ldrh r1, [r5, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x26] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - strh r1, [r5, 0x26] - strh r1, [r5, 0x24] - ldr r6, _080D7B98 @ =sub_8078D8C - ldr r1, _080D7B9C @ =sub_80D7BA0 - mov r3, sp - adds r2, r7, 0 - movs r4, 0x7 -_080D7B76: - ldrh r0, [r3] - strh r0, [r2] - adds r3, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080D7B76 - str r6, [r5, 0x1C] - adds r0, r5, 0 - bl StoreSpriteCallbackInData - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D7B94: .4byte gBattleAnimArgs -_080D7B98: .4byte sub_8078D8C -_080D7B9C: .4byte sub_80D7BA0 - thumb_func_end sub_80D7A64 - - thumb_func_start sub_80D7BA0 -sub_80D7BA0: @ 80D7BA0 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r5, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - strh r5, [r4, 0x26] - strh r5, [r4, 0x24] - movs r0, 0x80 - strh r0, [r4, 0x2E] - ldr r0, _080D7BFC @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r1, _080D7C00 @ =0x0000ffec - cmp r0, 0 - beq _080D7BD0 - movs r1, 0x14 -_080D7BD0: - movs r2, 0x2E - ldrsh r0, [r4, r2] - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x34] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0xF - bl Cos - strh r0, [r4, 0x36] - strh r5, [r4, 0x38] - ldr r1, _080D7C04 @ =sub_80D7C08 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D7BFC: .4byte gBattleAnimBankAttacker -_080D7C00: .4byte 0x0000ffec -_080D7C04: .4byte sub_80D7C08 - thumb_func_end sub_80D7BA0 - - thumb_func_start sub_80D7C08 -sub_80D7C08: @ 80D7C08 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D7C5C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r1, _080D7C60 @ =0x0000ffec - cmp r0, 0 - beq _080D7C1E - movs r1, 0x14 -_080D7C1E: - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0x1F - bgt _080D7C64 - movs r2, 0x2E - ldrsh r0, [r4, r2] - lsls r1, 16 - asrs r1, 16 - bl Sin - ldrh r1, [r4, 0x34] - subs r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0xF - bl Cos - ldrh r1, [r4, 0x36] - subs r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x10 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - b _080D7C82 - .align 2, 0 -_080D7C5C: .4byte gBattleAnimBankAttacker -_080D7C60: .4byte 0x0000ffec -_080D7C64: - ldrh r0, [r4, 0x24] - ldrh r2, [r4, 0x20] - adds r0, r2 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x36] - strh r1, [r4, 0x34] - ldr r0, _080D7C88 @ =sub_80D7C8C - str r0, [r4, 0x1C] -_080D7C82: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D7C88: .4byte sub_80D7C8C - thumb_func_end sub_80D7C08 - - thumb_func_start sub_80D7C8C -sub_80D7C8C: @ 80D7C8C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl sub_8078CE8 - movs r1, 0x20 - ldrsh r0, [r4, r1] - movs r2, 0x24 - ldrsh r1, [r4, r2] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _080D7CC8 - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r1, r0, r1 - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bgt _080D7CC8 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080D7CCE -_080D7CC8: - adds r0, r4, 0 - bl move_anim_8072740 -_080D7CCE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D7C8C - - thumb_func_start sub_80D7CD4 -sub_80D7CD4: @ 80D7CD4 - push {r4-r7,lr} - sub sp, 0x10 - adds r5, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r1, _080D7D18 @ =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - movs r2, 0xE - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080D7D20 - ldr r4, _080D7D1C @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - b _080D7D32 - .align 2, 0 -_080D7D18: .4byte gBattleAnimArgs -_080D7D1C: .4byte gBattleAnimBankTarget -_080D7D20: - ldr r0, _080D7D50 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x32 - adds r3, r5, 0 - adds r3, 0x36 - movs r1, 0x1 - bl sub_807A3FC -_080D7D32: - ldr r0, _080D7D54 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D7D5C - ldr r0, _080D7D58 @ =gBattleAnimArgs - ldrh r1, [r5, 0x32] - ldrh r2, [r0, 0x4] - subs r1, r2 - strh r1, [r5, 0x32] - adds r1, r0, 0 - b _080D7D66 - .align 2, 0 -_080D7D50: .4byte gBattleAnimBankTarget -_080D7D54: .4byte gBattleAnimBankAttacker -_080D7D58: .4byte gBattleAnimArgs -_080D7D5C: - ldr r1, _080D7E10 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - ldrh r2, [r5, 0x32] - adds r0, r2 - strh r0, [r5, 0x32] -_080D7D66: - ldrh r0, [r1, 0x6] - ldrh r1, [r5, 0x36] - adds r0, r1 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl sub_8078D60 - adds r7, r5, 0 - adds r7, 0x2E - adds r2, r7, 0 - mov r1, sp - movs r4, 0x7 -_080D7D7E: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080D7D7E - ldrh r0, [r5, 0x30] - movs r1, 0x1 - eors r0, r1 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - eors r0, r1 - strh r0, [r5, 0x32] -_080D7D9A: - movs r0, 0x1 - strh r0, [r5, 0x2E] - adds r0, r5, 0 - bl sub_8078CE8 - movs r2, 0x20 - ldrsh r1, [r5, r2] - movs r2, 0x24 - ldrsh r0, [r5, r2] - adds r1, r0 - adds r1, 0x10 - movs r0, 0x88 - lsls r0, 1 - cmp r1, r0 - bhi _080D7DCE - movs r0, 0x22 - ldrsh r1, [r5, r0] - movs r2, 0x26 - ldrsh r0, [r5, r2] - adds r1, r0 - cmp r1, 0xA0 - bgt _080D7DCE - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080D7D9A -_080D7DCE: - ldrh r0, [r5, 0x24] - ldrh r1, [r5, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x26] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - strh r1, [r5, 0x26] - strh r1, [r5, 0x24] - ldr r1, _080D7E10 @ =gBattleAnimArgs - ldr r6, _080D7E14 @ =sub_80D7E18 - mov r3, sp - adds r2, r7, 0 - movs r4, 0x7 -_080D7DEE: - ldrh r0, [r3] - strh r0, [r2] - adds r3, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080D7DEE - ldrh r0, [r1, 0xA] - strh r0, [r5, 0x38] - ldrh r0, [r1, 0xC] - strh r0, [r5, 0x3A] - str r6, [r5, 0x1C] - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D7E10: .4byte gBattleAnimArgs -_080D7E14: .4byte sub_80D7E18 - thumb_func_end sub_80D7CD4 - - thumb_func_start sub_80D7E18 -sub_80D7E18: @ 80D7E18 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078CE8 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D7E2C - movs r0, 0x1 - strh r0, [r4, 0x2E] -_080D7E2C: - movs r2, 0x3C - ldrsh r0, [r4, r2] - 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 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3C] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080D7E82 - movs r2, 0x20 - ldrsh r0, [r4, r2] - movs r2, 0x24 - ldrsh r1, [r4, r2] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _080D7E7C - movs r0, 0x22 - ldrsh r1, [r4, r0] - movs r2, 0x26 - ldrsh r0, [r4, r2] - adds r1, r0 - cmp r1, 0xA0 - bgt _080D7E7C - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080D7E82 -_080D7E7C: - adds r0, r4, 0 - bl move_anim_8072740 -_080D7E82: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D7E18 - - thumb_func_start sub_80D7E88 -sub_80D7E88: @ 80D7E88 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D7EF4 - ldr r5, _080D7EA8 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D7EAC - adds r0, r4, 0 - movs r1, 0 - bl sub_8078764 - b _080D7EE2 - .align 2, 0 -_080D7EA8: .4byte gBattleAnimArgs -_080D7EAC: - ldr r0, _080D7EEC @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0 - bl sub_807A3FC - ldr r0, _080D7EF0 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D7ED2 - ldrh r0, [r5] - negs r0, r0 - strh r0, [r5] -_080D7ED2: - 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] -_080D7EE2: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080D7F08 - .align 2, 0 -_080D7EEC: .4byte gBattleAnimBankTarget -_080D7EF0: .4byte gBattleAnimBankAttacker -_080D7EF4: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D7F08 - adds r0, r4, 0 - bl move_anim_8072740 -_080D7F08: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80D7E88 - - thumb_func_start sub_80D7F10 -sub_80D7F10: @ 80D7F10 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080D7F30 @ =gBattleAnimArgs - movs r1, 0x8 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080D7F80 - movs r1, 0xA - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080D7F34 - adds r0, r5, 0 - movs r1, 0 - bl sub_80787B0 - b _080D7F72 - .align 2, 0 -_080D7F30: .4byte gBattleAnimArgs -_080D7F34: - ldr r4, _080D7F5C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - movs r1, 0 - bl sub_807A3FC - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D7F60 - ldrh r0, [r5, 0x20] - ldrh r1, [r6] - subs r0, r1 - b _080D7F66 - .align 2, 0 -_080D7F5C: .4byte gBattleAnimBankAttacker -_080D7F60: - ldrh r0, [r6] - ldrh r1, [r5, 0x20] - adds r0, r1 -_080D7F66: - strh r0, [r5, 0x20] - ldr r0, _080D7F78 @ =gBattleAnimArgs - ldrh r0, [r0, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] -_080D7F72: - ldr r0, _080D7F7C @ =gBattleAnimBankAttacker - b _080D7FD0 - .align 2, 0 -_080D7F78: .4byte gBattleAnimArgs -_080D7F7C: .4byte gBattleAnimBankAttacker -_080D7F80: - movs r1, 0xA - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080D7F92 - adds r0, r5, 0 - movs r1, 0 - bl sub_8078764 - b _080D7FCE -_080D7F92: - ldr r4, _080D7FB8 @ =gBattleAnimBankTarget - ldrb r0, [r4] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - movs r1, 0 - bl sub_807A3FC - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D7FBC - ldrh r0, [r5, 0x20] - ldrh r1, [r6] - subs r0, r1 - b _080D7FC2 - .align 2, 0 -_080D7FB8: .4byte gBattleAnimBankTarget -_080D7FBC: - ldrh r0, [r6] - ldrh r1, [r5, 0x20] - adds r0, r1 -_080D7FC2: - strh r0, [r5, 0x20] - ldr r0, _080D7FEC @ =gBattleAnimArgs - ldrh r0, [r0, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] -_080D7FCE: - ldr r0, _080D7FF0 @ =gBattleAnimBankTarget -_080D7FD0: - ldrb r0, [r0] - strh r0, [r5, 0x3C] - ldr r0, _080D7FEC @ =gBattleAnimArgs - movs r1, 0xA - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080D7FE8 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _080D7FF4 -_080D7FE8: - movs r0, 0x20 - b _080D7FF6 - .align 2, 0 -_080D7FEC: .4byte gBattleAnimArgs -_080D7FF0: .4byte gBattleAnimBankTarget -_080D7FF4: - movs r0, 0x40 -_080D7FF6: - strh r0, [r5, 0x3A] - ldr r0, _080D803C @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D800C - ldrh r0, [r5, 0x22] - adds r0, 0x8 - strh r0, [r5, 0x22] -_080D800C: - ldr r1, _080D8040 @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrh r1, [r1, 0x4] - adds r0, r1 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 - movs r0, 0x40 - strh r0, [r5, 0x38] - ldr r1, _080D8044 @ =sub_80D8048 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D803C: .4byte gBattleAnimBankTarget -_080D8040: .4byte gBattleAnimArgs -_080D8044: .4byte sub_80D8048 - thumb_func_end sub_80D7F10 - - thumb_func_start sub_80D8048 -sub_80D8048: @ 80D8048 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - bne _080D80D2 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x3A - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r2, 0x38 - ldrsh r0, [r4, r2] - movs r1, 0x6 - negs r1, r1 - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080D80A4 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - bl sub_8079ED4 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - b _080D80C6 -_080D80A4: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x5] -_080D80C6: - ldrh r0, [r4, 0x38] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080D80D8 -_080D80D2: - adds r0, r4, 0 - bl move_anim_8072740 -_080D80D8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D8048 - - thumb_func_start sub_80D80E0 -sub_80D80E0: @ 80D80E0 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D81A8 @ =REG_BLDCNT - ldr r2, _080D81AC @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r4, _080D81B0 @ =REG_BG1CNT - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D812A - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080D812A: - ldr r0, _080D81B4 @ =gUnknown_030042C0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080D81B8 @ =gUnknown_030041B4 - strh r1, [r0] - ldr r0, _080D81BC @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - mov r0, sp - bl sub_8078914 - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r0, _080D81C0 @ =0x040000d4 - add r2, sp, 0xC - str r2, [r0] - str r1, [r0, 0x4] - ldr r2, _080D81C4 @ =0x85000400 - str r2, [r0, 0x8] - ldr r2, [r0, 0x8] - ldr r2, _080D81C8 @ =gWeatherFog1Tiles - ldr r3, [sp] - str r2, [r0] - str r3, [r0, 0x4] - ldr r2, _080D81CC @ =0x80000400 - str r2, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _080D81D0 @ =gBattleAnimFogTilemap - bl LZDecompressVram - ldr r0, _080D81D4 @ =gUnknown_083970E8 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadPalette - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080D8190 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080D8190: - ldr r0, _080D81D8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080D81DC @ =sub_80D81E0 - str r0, [r1] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D81A8: .4byte REG_BLDCNT -_080D81AC: .4byte 0x00003f42 -_080D81B0: .4byte REG_BG1CNT -_080D81B4: .4byte gUnknown_030042C0 -_080D81B8: .4byte gUnknown_030041B4 -_080D81BC: .4byte REG_BG1HOFS -_080D81C0: .4byte 0x040000d4 -_080D81C4: .4byte 0x85000400 -_080D81C8: .4byte gWeatherFog1Tiles -_080D81CC: .4byte 0x80000400 -_080D81D0: .4byte gBattleAnimFogTilemap -_080D81D4: .4byte gUnknown_083970E8 -_080D81D8: .4byte gTasks -_080D81DC: .4byte sub_80D81E0 - thumb_func_end sub_80D80E0 - - thumb_func_start sub_80D81E0 -sub_80D81E0: @ 80D81E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, _080D8220 @ =gUnknown_030042C0 - ldr r1, _080D8224 @ =0x0000ffff - adds r0, r1, 0 - ldrh r4, [r2] - adds r0, r4 - strh r0, [r2] - ldr r1, _080D8228 @ =gUnknown_030041B4 - ldr r3, _080D822C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r3 - movs r4, 0x20 - ldrsh r0, [r0, r4] - adds r4, r1, 0 - cmp r0, 0x4 - bls _080D8214 - b _080D83B0 -_080D8214: - lsls r0, 2 - ldr r1, _080D8230 @ =_080D8234 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D8220: .4byte gUnknown_030042C0 -_080D8224: .4byte 0x0000ffff -_080D8228: .4byte gUnknown_030041B4 -_080D822C: .4byte gTasks -_080D8230: .4byte _080D8234 - .align 2, 0 -_080D8234: - .4byte _080D8248 - .4byte _080D82A0 - .4byte _080D82C2 - .4byte _080D8304 - .4byte _080D838C -_080D8248: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r3, r0, r3 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - beq _080D8262 - b _080D83B0 -_080D8262: - strh r4, [r3, 0x1C] - ldrh r0, [r3, 0x1A] - adds r0, 0x1 - strh r0, [r3, 0x1A] - ldr r1, _080D8298 @ =gUnknown_083D9D6C - movs r2, 0x1A - ldrsh r0, [r3, r2] - adds r0, r1 - ldrb r1, [r0] - strh r1, [r3, 0x1E] - ldr r2, _080D829C @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r1, 0x1E - ldrsh r0, [r3, r1] - cmp r0, 0x9 - beq _080D828C - b _080D83B0 -_080D828C: - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r4, [r3, 0x1E] - b _080D83B0 - .align 2, 0 -_080D8298: .4byte gUnknown_083D9D6C -_080D829C: .4byte REG_BLDALPHA -_080D82A0: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r3, r0, r3 - ldrh r0, [r3, 0x1E] - adds r0, 0x1 - strh r0, [r3, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x51 - bne _080D83B0 - movs r0, 0x9 - strh r0, [r3, 0x1E] - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - b _080D83B0 -_080D82C2: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r3, r0, r3 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080D83B0 - movs r0, 0 - strh r0, [r3, 0x1C] - ldrh r1, [r3, 0x1E] - subs r1, 0x1 - strh r1, [r3, 0x1E] - ldr r2, _080D8300 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r2, 0x1E - ldrsh r1, [r3, r2] - cmp r1, 0 - bne _080D83B0 - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r1, [r3, 0x1E] - b _080D83B0 - .align 2, 0 -_080D8300: .4byte REG_BLDALPHA -_080D8304: - mov r0, sp - bl sub_8078914 - ldr r2, [sp] - movs r3, 0x80 - lsls r3, 6 - lsls r4, r6, 2 - mov r10, r4 - add r5, sp, 0xC - movs r7, 0 - ldr r1, _080D83C0 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r8, r5 - ldr r0, _080D83C4 @ =0x85000400 - mov r12, r0 - movs r0, 0x85 - lsls r0, 24 - mov r9, r0 -_080D832A: - str r7, [sp, 0xC] - mov r0, r8 - str r0, [r1] - str r2, [r1, 0x4] - mov r0, r12 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080D832A - str r7, [sp, 0xC] - str r5, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r9 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r0, _080D83C0 @ =0x040000d4 - str r5, [r0] - str r1, [r0, 0x4] - ldr r1, _080D83C8 @ =0x85000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D8378 - ldr r2, _080D83CC @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080D8378: - ldr r0, _080D83D0 @ =gTasks - mov r4, r10 - adds r1, r4, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldr r2, _080D83D4 @ =gUnknown_030042C0 - ldr r4, _080D83D8 @ =gUnknown_030041B4 -_080D838C: - movs r1, 0 - strh r1, [r2] - strh r1, [r4] - ldr r0, _080D83DC @ =REG_BLDCNT - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r2, _080D83CC @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080D83B0: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D83C0: .4byte 0x040000d4 -_080D83C4: .4byte 0x85000400 -_080D83C8: .4byte 0x85000200 -_080D83CC: .4byte REG_BG1CNT -_080D83D0: .4byte gTasks -_080D83D4: .4byte gUnknown_030042C0 -_080D83D8: .4byte gUnknown_030041B4 -_080D83DC: .4byte REG_BLDCNT - thumb_func_end sub_80D81E0 - - thumb_func_start sub_80D83E0 -sub_80D83E0: @ 80D83E0 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D840C @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r0, _080D8410 @ =sub_807941C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D840C: .4byte gBattleAnimBankAttacker -_080D8410: .4byte sub_807941C - thumb_func_end sub_80D83E0 - - thumb_func_start sub_80D8414 -sub_80D8414: @ 80D8414 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D84E0 @ =REG_BLDCNT - ldr r2, _080D84E4 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r4, _080D84E8 @ =REG_BG1CNT - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D845E - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080D845E: - ldr r0, _080D84EC @ =gUnknown_030042C0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080D84F0 @ =gUnknown_030041B4 - strh r1, [r0] - ldr r0, _080D84F4 @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - mov r0, sp - bl sub_8078914 - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r0, _080D84F8 @ =0x040000d4 - add r2, sp, 0xC - str r2, [r0] - str r1, [r0, 0x4] - ldr r2, _080D84FC @ =0x85000400 - str r2, [r0, 0x8] - ldr r2, [r0, 0x8] - ldr r2, _080D8500 @ =gWeatherFog1Tiles - ldr r3, [sp] - str r2, [r0] - str r3, [r0, 0x4] - ldr r2, _080D8504 @ =0x80000400 - str r2, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _080D8508 @ =gBattleAnimFogTilemap - bl LZDecompressVram - ldr r0, _080D850C @ =gUnknown_083970E8 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadPalette - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080D84C4 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080D84C4: - ldr r1, _080D8510 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080D8514 @ =0x0000ffff - strh r1, [r0, 0x26] - ldr r1, _080D8518 @ =sub_80D851C - str r1, [r0] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D84E0: .4byte REG_BLDCNT -_080D84E4: .4byte 0x00003f42 -_080D84E8: .4byte REG_BG1CNT -_080D84EC: .4byte gUnknown_030042C0 -_080D84F0: .4byte gUnknown_030041B4 -_080D84F4: .4byte REG_BG1HOFS -_080D84F8: .4byte 0x040000d4 -_080D84FC: .4byte 0x85000400 -_080D8500: .4byte gWeatherFog1Tiles -_080D8504: .4byte 0x80000400 -_080D8508: .4byte gBattleAnimFogTilemap -_080D850C: .4byte gUnknown_083970E8 -_080D8510: .4byte gTasks -_080D8514: .4byte 0x0000ffff -_080D8518: .4byte sub_80D851C - thumb_func_end sub_80D8414 - - thumb_func_start sub_80D851C -sub_80D851C: @ 80D851C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, _080D8558 @ =gUnknown_030042C0 - ldr r4, _080D855C @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r4 - ldrh r0, [r1, 0x26] - ldrh r2, [r3] - adds r0, r2 - strh r0, [r3] - ldr r2, _080D8560 @ =gUnknown_030041B4 - movs r5, 0x20 - ldrsh r0, [r1, r5] - cmp r0, 0x4 - bls _080D854C - b _080D86D0 -_080D854C: - lsls r0, 2 - ldr r1, _080D8564 @ =_080D8568 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D8558: .4byte gUnknown_030042C0 -_080D855C: .4byte gTasks -_080D8560: .4byte gUnknown_030041B4 -_080D8564: .4byte _080D8568 - .align 2, 0 -_080D8568: - .4byte _080D857C - .4byte _080D85C0 - .4byte _080D85E2 - .4byte _080D8624 - .4byte _080D86AC -_080D857C: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r4 - ldrh r0, [r4, 0x1A] - adds r0, 0x1 - strh r0, [r4, 0x1A] - ldr r1, _080D85B8 @ =gUnknown_083D9D98 - movs r2, 0x1A - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r1, [r0] - strh r1, [r4, 0x1E] - ldr r2, _080D85BC @ =REG_BLDALPHA - movs r0, 0x11 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r5, 0x1E - ldrsh r0, [r4, r5] - cmp r0, 0x5 - beq _080D85AC - b _080D86D0 -_080D85AC: - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - movs r0, 0 - strh r0, [r4, 0x1E] - b _080D86D0 - .align 2, 0 -_080D85B8: .4byte gUnknown_083D9D98 -_080D85BC: .4byte REG_BLDALPHA -_080D85C0: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r1, r0, r4 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x51 - bne _080D86D0 - movs r0, 0x5 - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080D86D0 -_080D85E2: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r4 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080D86D0 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - subs r1, 0x1 - strh r1, [r4, 0x1E] - ldr r2, _080D8620 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r0, 0x1E - ldrsh r1, [r4, r0] - cmp r1, 0 - bne _080D86D0 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r1, [r4, 0x1E] - b _080D86D0 - .align 2, 0 -_080D8620: .4byte REG_BLDALPHA -_080D8624: - mov r0, sp - bl sub_8078914 - ldr r2, [sp] - movs r3, 0x80 - lsls r3, 6 - lsls r1, r6, 2 - mov r10, r1 - add r5, sp, 0xC - movs r7, 0 - ldr r1, _080D86E0 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r8, r5 - ldr r0, _080D86E4 @ =0x85000400 - mov r12, r0 - movs r0, 0x85 - lsls r0, 24 - mov r9, r0 -_080D864A: - str r7, [sp, 0xC] - mov r0, r8 - str r0, [r1] - str r2, [r1, 0x4] - mov r0, r12 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080D864A - str r7, [sp, 0xC] - str r5, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r9 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r0, _080D86E0 @ =0x040000d4 - str r5, [r0] - str r1, [r0, 0x4] - ldr r1, _080D86E8 @ =0x85000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D8698 - ldr r2, _080D86EC @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080D8698: - ldr r0, _080D86F0 @ =gTasks - mov r5, r10 - adds r1, r5, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldr r3, _080D86F4 @ =gUnknown_030042C0 - ldr r2, _080D86F8 @ =gUnknown_030041B4 -_080D86AC: - movs r1, 0 - strh r1, [r3] - strh r1, [r2] - ldr r0, _080D86FC @ =REG_BLDCNT - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r2, _080D86EC @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080D86D0: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D86E0: .4byte 0x040000d4 -_080D86E4: .4byte 0x85000400 -_080D86E8: .4byte 0x85000200 -_080D86EC: .4byte REG_BG1CNT -_080D86F0: .4byte gTasks -_080D86F4: .4byte gUnknown_030042C0 -_080D86F8: .4byte gUnknown_030041B4 -_080D86FC: .4byte REG_BLDCNT - thumb_func_end sub_80D851C - - thumb_func_start sub_80D8700 -sub_80D8700: @ 80D8700 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - ldr r6, _080D87E8 @ =gBattleAnimArgs - ldrh r0, [r6] - strh r0, [r5, 0x2E] - ldr r0, _080D87EC @ =gBattleAnimBankAttacker - mov r8, r0 - ldrb r0, [r0] - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - ldr r7, _080D87F0 @ =gBattleAnimBankTarget - ldrb r0, [r7] - movs r1, 0x2 - bl sub_8077ABC - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bcs _080D8734 - movs r0, 0x80 - lsls r0, 8 - strh r0, [r5, 0x3C] -_080D8734: - ldr r3, _080D87F4 @ =gBanksBySide - ldrb r0, [r7] - adds r0, r3 - ldrb r1, [r0] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080D8794 - ldrh r0, [r6, 0x2] - negs r0, r0 - strh r0, [r6, 0x2] - ldrh r0, [r6, 0x6] - negs r0, r0 - strh r0, [r6, 0x6] - movs r1, 0x3C - ldrsh r0, [r5, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080D8790 - mov r1, r8 - ldrb r0, [r1] - adds r0, r3 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080D8790 - movs r0, 0x1 - bl GetAnimBankSpriteId - ldr r2, _080D87F8 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x43 - ldrb r0, [r1] - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] -_080D8790: - movs r0, 0x1 - strh r0, [r5, 0x3A] -_080D8794: - ldr r4, _080D87EC @ =gBattleAnimBankAttacker - 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 r6, _080D87E8 @ =gBattleAnimArgs - movs r1, 0xE - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _080D87FC - ldrh r0, [r6, 0x2] - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x30] - ldr r4, _080D87F0 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x6] - adds r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r6, 0x4] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - b _080D8824 - .align 2, 0 -_080D87E8: .4byte gBattleAnimArgs -_080D87EC: .4byte gBattleAnimBankAttacker -_080D87F0: .4byte gBattleAnimBankTarget -_080D87F4: .4byte gBanksBySide -_080D87F8: .4byte gSprites -_080D87FC: - ldrh r0, [r6, 0x2] - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x30] - ldr r4, _080D886C @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x6] - adds r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r6, 0x4] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x1 -_080D8824: - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x8] - adds r0, r6 - strh r0, [r5, 0x36] - ldrb r0, [r4] - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 16 - ldrh r1, [r5, 0x3C] - orrs r0, r1 - strh r0, [r5, 0x3C] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080D8858 - movs r0, 0x1 - strh r0, [r5, 0x3A] - adds r1, r5, 0 - adds r1, 0x43 - movs r0, 0x80 - strb r0, [r1] -_080D8858: - adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080D8870 @ =sub_80D8874 - str r0, [r5, 0x1C] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D886C: .4byte gBattleAnimBankTarget -_080D8870: .4byte sub_80D8874 - thumb_func_end sub_80D8700 - - thumb_func_start sub_80D8874 -sub_80D8874: @ 80D8874 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3C] - movs r5, 0xFF - movs r1, 0xFF - ands r1, r0 - cmp r1, 0x1 - beq _080D8968 - cmp r1, 0x1 - bgt _080D888E - cmp r1, 0 - beq _080D8896 - b _080D8AD0 -_080D888E: - cmp r1, 0x2 - bne _080D8894 - b _080D8A94 -_080D8894: - b _080D8AD0 -_080D8896: - adds r0, r4, 0 - bl sub_8078B5C - ldr r1, _080D88C0 @ =gSineTable - movs r2, 0x38 - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - asrs r0, 4 - ldrh r2, [r4, 0x24] - adds r0, r2 - strh r0, [r4, 0x24] - movs r1, 0x3A - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080D88C4 - ldrh r0, [r4, 0x38] - subs r0, 0x8 - b _080D88C8 - .align 2, 0 -_080D88C0: .4byte gSineTable -_080D88C4: - ldrh r0, [r4, 0x38] - adds r0, 0x8 -_080D88C8: - ands r0, r5 - strh r0, [r4, 0x38] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080D88D6 - b _080D8AD0 -_080D88D6: - movs r5, 0x50 - strh r5, [r4, 0x2E] - ldr r6, _080D8928 @ =gBattleAnimBankTarget - ldrb r0, [r6] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, 0x1D - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - ldr r0, _080D892C @ =gMain - ldr r2, _080D8930 @ =0x0000043d - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D8938 - ldr r1, _080D8934 @ =gBanksBySide - ldrb r0, [r6] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D8938 - movs r0, 0xCC - strh r0, [r4, 0x38] - b _080D893A - .align 2, 0 -_080D8928: .4byte gBattleAnimBankTarget -_080D892C: .4byte gMain -_080D8930: .4byte 0x0000043d -_080D8934: .4byte gBanksBySide -_080D8938: - strh r5, [r4, 0x38] -_080D893A: - movs r0, 0 - strh r0, [r4, 0x26] - ldr r1, _080D8964 @ =gSineTable - movs r2, 0x38 - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - asrs r0, 3 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x38] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - b _080D8AD0 - .align 2, 0 -_080D8964: .4byte gSineTable -_080D8968: - adds r0, r4, 0 - bl sub_8078B5C - ldr r1, _080D89C8 @ =gSineTable - movs r2, 0x38 - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - asrs r0, 3 - ldrh r2, [r4, 0x24] - adds r0, r2 - strh r0, [r4, 0x24] - movs r2, 0x38 - ldrsh r0, [r4, r2] - adds r0, 0x40 - lsls r0, 1 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r0, r1, 1 - adds r0, r1 - negs r0, r0 - asrs r0, 8 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldr r0, _080D89CC @ =gMain - ldr r2, _080D89D0 @ =0x0000043d - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D89F2 - ldrh r1, [r4, 0x38] - adds r0, r1, 0 - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - adds r3, r1, 0 - cmp r0, 0x7F - bhi _080D89D4 - ldrh r1, [r4, 0x3C] - lsls r1, 16 - asrs r1, 24 - b _080D89DC - .align 2, 0 -_080D89C8: .4byte gSineTable -_080D89CC: .4byte gMain -_080D89D0: .4byte 0x0000043d -_080D89D4: - ldrh r1, [r4, 0x3C] - lsls r1, 16 - asrs r1, 24 - adds r1, 0x1 -_080D89DC: - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - adds r0, r3, 0x4 - b _080D8A12 -_080D89F2: - ldrh r0, [r4, 0x38] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080D8A06 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x80 - b _080D8A0C -_080D8A06: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x8C -_080D8A0C: - strb r0, [r1] - ldrh r0, [r4, 0x38] - subs r0, 0x4 -_080D8A12: - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bgt _080D8AD0 - movs r2, 0 - movs r0, 0xC0 - lsls r0, 2 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, 0x4 - strh r0, [r4, 0x36] - ldr r0, _080D8A68 @ =gMain - ldr r1, _080D8A6C @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D8A78 - ldr r1, _080D8A70 @ =gBanksBySide - ldr r0, _080D8A74 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D8A78 - movs r0, 0x80 - lsls r0, 1 - b _080D8A7A - .align 2, 0 -_080D8A68: .4byte gMain -_080D8A6C: .4byte 0x0000043d -_080D8A70: .4byte gBanksBySide -_080D8A74: .4byte gBattleAnimBankTarget -_080D8A78: - ldr r0, _080D8A90 @ =0x0000fff0 -_080D8A7A: - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x3C] - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - adds r0, r4, 0 - bl sub_8078BD4 - b _080D8AD0 - .align 2, 0 -_080D8A90: .4byte 0x0000fff0 -_080D8A94: - adds r0, r4, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080D8AD0 - ldrb r0, [r4, 0x1] - lsls r0, 30 - lsrs r0, 30 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D8AC2 - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x1] -_080D8AC2: - adds r0, r4, 0 - bl DestroySprite - ldr r1, _080D8AD8 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_080D8AD0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D8AD8: .4byte gAnimVisualTaskCount - thumb_func_end sub_80D8874 - - thumb_func_start sub_80D8ADC -sub_80D8ADC: @ 80D8ADC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D8AF0 @ =gTasks - adds r1, r0 - ldr r0, _080D8AF4 @ =sub_80D8AF8 - str r0, [r1] - bx lr - .align 2, 0 -_080D8AF0: .4byte gTasks -_080D8AF4: .4byte sub_80D8AF8 - thumb_func_end sub_80D8ADC - - thumb_func_start sub_80D8AF8 -sub_80D8AF8: @ 80D8AF8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080D8B1C @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080D8B3C - cmp r5, 0x1 - bgt _080D8B20 - cmp r5, 0 - beq _080D8B26 - b _080D8BA0 - .align 2, 0 -_080D8B1C: .4byte gTasks -_080D8B20: - cmp r5, 0x2 - beq _080D8B92 - b _080D8BA0 -_080D8B26: - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080D8BA0 - strh r5, [r4, 0x10] - strh r5, [r4, 0x12] - strh r5, [r4, 0xC] - b _080D8B78 -_080D8B3C: - ldrh r1, [r4, 0x12] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _080D8B8C - ldrb r0, [r4, 0xE] - ldrb r1, [r4, 0xC] - movs r3, 0x1 - bl sub_80D8BA8 - lsls r0, 24 - cmp r0, 0 - beq _080D8B5C - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] -_080D8B5C: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080D8B88 - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _080D8B80 -_080D8B78: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080D8BA0 -_080D8B80: - ldrh r0, [r4, 0x8] - subs r0, 0x1 - strh r0, [r4, 0x8] - b _080D8BA0 -_080D8B88: - strh r5, [r4, 0x12] - b _080D8BA0 -_080D8B8C: - subs r0, r1, 0x1 - strh r0, [r4, 0x12] - b _080D8BA0 -_080D8B92: - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D8BA0 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080D8BA0: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80D8AF8 - - thumb_func_start sub_80D8BA8 -sub_80D8BA8: @ 80D8BA8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - lsls r3, 24 - lsrs r3, 24 - mov r10, r3 - movs r1, 0 - str r1, [sp, 0x4] - ldr r1, _080D8C20 @ =gUnknown_083D9DC4 - lsrs r0, 22 - adds r4, r0, r1 - ldrb r0, [r4, 0x3] - lsls r0, 24 - asrs r0, 28 - mov r8, r0 - cmp r0, 0x2 - beq _080D8C94 - ldrh r0, [r4, 0x2] - lsls r0, 20 - lsrs r0, 24 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080D8C94 - movs r0, 0x1 - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r6, r0, 24 - mov r1, r8 - cmp r1, 0 - beq _080D8C24 - cmp r1, 0x1 - beq _080D8C5A - b _080D8CA6 - .align 2, 0 -_080D8C20: .4byte gUnknown_083D9DC4 -_080D8C24: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_807A100 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x6 - bl __divsi3 - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r0 - lsls r1, 16 - lsrs r7, r1, 16 - adds r0, r5, 0 - movs r1, 0 - bl sub_807A100 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x6 - bl __divsi3 - lsls r1, r6, 16 - asrs r1, 16 - subs r1, r0 - b _080D8C8E -_080D8C5A: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_807A100 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x6 - bl __divsi3 - lsls r1, r7, 16 - asrs r1, 16 - adds r1, r0 - lsls r1, 16 - lsrs r7, r1, 16 - adds r0, r5, 0 - movs r1, 0 - bl sub_807A100 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x6 - bl __divsi3 - lsls r1, r6, 16 - asrs r1, 16 - adds r1, r0 -_080D8C8E: - lsls r1, 16 - lsrs r6, r1, 16 - b _080D8CA6 -_080D8C94: - ldrh r0, [r4] - lsls r0, 22 - asrs r0, 6 - lsrs r7, r0, 16 - ldr r0, [r4] - lsls r0, 12 - asrs r0, 22 - lsls r0, 16 - lsrs r6, r0, 16 -_080D8CA6: - lsls r0, r6, 16 - asrs r0, 16 - adds r0, 0x8 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r0 - ldr r0, _080D8D00 @ =gSpriteTemplate_83D9E3C - lsls r1, 16 - asrs r1, 16 - movs r2, 0x8 - negs r2, r2 - movs r3, 0x12 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x40 - beq _080D8D08 - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - ldr r0, _080D8D04 @ =gSprites - adds r4, r0 - adds r0, r4, 0 - mov r1, r9 - bl StartSpriteAffineAnim - mov r0, sp - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - strh r7, [r4, 0x34] - strh r6, [r4, 0x36] - mov r1, r9 - strh r1, [r4, 0x38] - mov r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x3A] - mov r1, r10 - strh r1, [r4, 0x3C] - movs r0, 0x1 - b _080D8D0A - .align 2, 0 -_080D8D00: .4byte gSpriteTemplate_83D9E3C -_080D8D04: .4byte gSprites -_080D8D08: - movs r0, 0 -_080D8D0A: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80D8BA8 - - thumb_func_start sub_80D8D1C -sub_80D8D1C: @ 80D8D1C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - adds r0, 0x4 - strh r0, [r4, 0x20] - ldrh r1, [r4, 0x22] - adds r2, r1, 0 - adds r2, 0x8 - strh r2, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x34 - ldrsh r1, [r4, r3] - cmp r0, r1 - bge _080D8D46 - lsls r0, r2, 16 - asrs r0, 16 - movs r2, 0x36 - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _080D8DF6 -_080D8D46: - movs r3, 0x2E - ldrsh r0, [r4, r3] - cmp r0, 0x1 - bne _080D8DC8 - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D8DC8 - ldr r0, _080D8DBC @ =gBattleAnimSpriteTemplate_83D9C78 - movs r2, 0x34 - ldrsh r1, [r4, r2] - movs r3, 0x36 - ldrsh r2, [r4, r3] - adds r3, r4, 0 - adds r3, 0x43 - ldrb r3, [r3] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x2E] - cmp r0, 0x40 - beq _080D8DAA - ldr r2, _080D8DC0 @ =gSprites - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r2, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080D8DC4 @ =sub_80D8E00 - str r1, [r0] - movs r3, 0x2E - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x3A] - strh r1, [r0, 0x3A] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x3C] - strh r1, [r0, 0x3C] -_080D8DAA: - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - adds r0, r4, 0 - bl DestroySprite - b _080D8DF6 - .align 2, 0 -_080D8DBC: .4byte gBattleAnimSpriteTemplate_83D9C78 -_080D8DC0: .4byte gSprites -_080D8DC4: .4byte sub_80D8E00 -_080D8DC8: - ldr r3, _080D8DFC @ =gTasks - movs r2, 0x3C - ldrsh r1, [r4, r2] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080D8DF6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D8DFC: .4byte gTasks - thumb_func_end sub_80D8D1C - - thumb_func_start sub_80D8E00 -sub_80D8E00: @ 80D8E00 - 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, 0x14 - bne _080D8E40 - ldr r3, _080D8E48 @ =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080D8E40: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D8E48: .4byte gTasks - thumb_func_end sub_80D8E00 - - thumb_func_start unc_080B06FC -unc_080B06FC: @ 80D8E4C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _080D8ECC @ =gDisableStructMoveAnim - ldr r0, [r0] - ldrb r1, [r0, 0x11] - lsrs r0, r1, 4 - lsls r1, 28 - lsrs r1, 28 - subs r0, r1 - subs r0, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080D8E6A - movs r1, 0x4 -_080D8E6A: - adds r0, r5, 0 - bl StartSpriteAffineAnim - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r6, _080D8ED0 @ =gBattleAnimArgs - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - ldr r0, _080D8ED4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D8E92 - ldrh r0, [r6, 0x4] - negs r0, r0 - strh r0, [r6, 0x4] -_080D8E92: - ldr r4, _080D8ED8 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x6] - adds r0, r1 - strh r0, [r5, 0x36] - ldrh r0, [r6, 0xA] - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl sub_80786EC - ldr r0, _080D8EDC @ =sub_80D8EE0 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D8ECC: .4byte gDisableStructMoveAnim -_080D8ED0: .4byte gBattleAnimArgs -_080D8ED4: .4byte gBattleAnimBankAttacker -_080D8ED8: .4byte gBattleAnimBankTarget -_080D8EDC: .4byte sub_80D8EE0 - thumb_func_end unc_080B06FC - - thumb_func_start sub_80D8EE0 -sub_80D8EE0: @ 80D8EE0 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080D8F02 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, _080D8F08 @ =sub_8078600 - str r0, [r4, 0x1C] - ldr r1, _080D8F0C @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData -_080D8F02: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D8F08: .4byte sub_8078600 -_080D8F0C: .4byte move_anim_8072740 - thumb_func_end sub_80D8EE0 - - thumb_func_start sub_80D8F10 -sub_80D8F10: @ 80D8F10 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x8 - ldr r3, _080D8F64 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080D8F68 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8078764 - bl Random - movs r5, 0xFF - ands r5, r0 - movs r0, 0x80 - lsls r0, 1 - adds r6, r0, 0 - orrs r5, r6 - bl Random - ldr r1, _080D8F6C @ =0x000001ff - ands r1, r0 - adds r0, r1, 0 - cmp r0, 0xFF - ble _080D8F56 - subs r0, r6, r0 - lsls r0, 16 - lsrs r1, r0, 16 -_080D8F56: - strh r5, [r4, 0x30] - strh r1, [r4, 0x32] - ldr r0, _080D8F70 @ =sub_80D8F74 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D8F64: .4byte 0x000003ff -_080D8F68: .4byte 0xfffffc00 -_080D8F6C: .4byte 0x000001ff -_080D8F70: .4byte sub_80D8F74 - thumb_func_end sub_80D8F10 - - thumb_func_start sub_80D8F74 -sub_80D8F74: @ 80D8F74 - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r3, r0, r1 - strh r3, [r2, 0x34] - ldrh r1, [r2, 0x32] - ldrh r4, [r2, 0x36] - adds r1, r4 - strh r1, [r2, 0x36] - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080D8F98 - lsls r0, r3, 16 - asrs r0, 24 - negs r0, r0 - b _080D8F9C -_080D8F98: - lsls r0, r3, 16 - asrs r0, 24 -_080D8F9C: - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080D8FBA - adds r0, r2, 0 - bl move_anim_8072740 -_080D8FBA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D8F74 - - thumb_func_start sub_80D8FC0 -sub_80D8FC0: @ 80D8FC0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080D8FE8 @ =gBattleAnimArgs - ldrb r3, [r1] - lsls r3, 1 - adds r3, r1 - ldr r1, _080D8FEC @ =gDisableStructMoveAnim - ldr r1, [r1] - ldrb r1, [r1, 0x11] - lsrs r2, r1, 4 - lsls r1, 28 - lsrs r1, 28 - subs r2, r1 - subs r2, 0x1 - strh r2, [r3] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080D8FE8: .4byte gBattleAnimArgs -_080D8FEC: .4byte gDisableStructMoveAnim - thumb_func_end sub_80D8FC0 - - thumb_func_start unc_080B08A0 -unc_080B08A0: @ 80D8FF0 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D9020 @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_807867C - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0xF - strh r0, [r4, 0x2E] - ldr r0, _080D9024 @ =sub_80782D8 - str r0, [r4, 0x1C] - ldr r1, _080D9028 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9020: .4byte gBattleAnimArgs -_080D9024: .4byte sub_80782D8 -_080D9028: .4byte move_anim_8072740 - thumb_func_end unc_080B08A0 - - thumb_func_start sub_80D902C -sub_80D902C: @ 80D902C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D9070 @ =gBattleAnimArgs - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080D9054 - ldr r0, _080D9074 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D9054 - ldrh r0, [r4, 0x2] - negs r0, r0 - strh r0, [r4, 0x2] - ldrh r0, [r4, 0x6] - negs r0, r0 - strh r0, [r4, 0x6] -_080D9054: - ldr r4, _080D9070 @ =gBattleAnimArgs - ldrb r1, [r4, 0xC] - adds r0, r5, 0 - bl StartSpriteAnim - movs r0, 0 - strh r0, [r4, 0xC] - adds r0, r5, 0 - bl sub_8079534 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9070: .4byte gBattleAnimArgs -_080D9074: .4byte gBattleAnimBankAttacker - thumb_func_end sub_80D902C - - thumb_func_start sub_80D9078 -sub_80D9078: @ 80D9078 - push {r4,lr} - adds r4, r0, 0 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080D9094 - ldr r0, _080D90A0 @ =gBattleAnimArgs - ldrh r1, [r0, 0x2] - negs r1, r1 - strh r1, [r0, 0x2] - ldrh r1, [r0, 0x6] - negs r1, r1 - strh r1, [r0, 0x6] -_080D9094: - adds r0, r4, 0 - bl sub_80D902C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D90A0: .4byte gBattleAnimArgs - thumb_func_end sub_80D9078 - - thumb_func_start sub_80D90A4 -sub_80D90A4: @ 80D90A4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D90C4 @ =gBattleAnimArgs - ldrb r1, [r4, 0x8] - bl StartSpriteAnim - movs r1, 0x6 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D90C8 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80787B0 - b _080D90D0 - .align 2, 0 -_080D90C4: .4byte gBattleAnimArgs -_080D90C8: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8078764 -_080D90D0: - ldr r0, _080D90E8 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - ldr r0, _080D90EC @ =sub_80782D8 - str r0, [r5, 0x1C] - ldr r1, _080D90F0 @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D90E8: .4byte gBattleAnimArgs -_080D90EC: .4byte sub_80782D8 -_080D90F0: .4byte move_anim_8072740 - thumb_func_end sub_80D90A4 - - thumb_func_start sub_80D90F4 -sub_80D90F4: @ 80D90F4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - ldr r0, _080D9110 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - mov r9, r0 - cmp r1, 0 - bne _080D9118 - ldr r0, _080D9114 @ =gBattleAnimBankAttacker - b _080D911A - .align 2, 0 -_080D9110: .4byte gBattleAnimArgs -_080D9114: .4byte gBattleAnimBankAttacker -_080D9118: - ldr r0, _080D9260 @ =gBattleAnimBankTarget -_080D911A: - ldrb r0, [r0] - mov r8, r0 - mov r4, r9 - movs r3, 0x4 - ldrsh r0, [r4, r3] - cmp r0, 0 - bge _080D9138 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - strh r0, [r4, 0x4] -_080D9138: - ldrb r1, [r4, 0x4] - adds r0, r5, 0 - bl StartSpriteAnim - mov r0, r8 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - mov r0, r8 - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - mov r0, r8 - movs r1, 0x1 - bl sub_807A100 - 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_807A100 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080D9182 - adds r0, 0x3 -_080D9182: - lsls r4, r0, 14 - lsrs r4, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - lsls r1, r6, 16 - asrs r1, 16 - bl __modsi3 - lsls r0, 16 - lsrs r6, r0, 16 - bl Random - 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 Random - movs r7, 0x1 - adds r1, r7, 0 - ands r1, r0 - cmp r1, 0 - beq _080D91C4 - lsls r0, r6, 16 - negs r0, r0 - lsrs r6, r0, 16 -_080D91C4: - bl Random - adds r1, r7, 0 - ands r1, r0 - cmp r1, 0 - beq _080D91D6 - lsls r0, r4, 16 - negs r0, r0 - lsrs r4, r0, 16 -_080D91D6: - ldr r0, _080D9264 @ =gBanksBySide - add r0, r8 - ldrb r1, [r0] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _080D91EC - lsls r0, r4, 16 - ldr r1, _080D9268 @ =0xfff00000 - adds r0, r1 - lsrs r4, r0, 16 -_080D91EC: - 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, _080D926C @ =gBattleAnimSpriteTemplate_83DB4A8 - 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 _080D9250 - movs r0, 0x3C - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080D9270 @ =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, _080D9274 @ =SpriteCallbackDummy - str r1, [r0] -_080D9250: - ldr r0, _080D9278 @ =sub_80D927C - str r0, [r5, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D9260: .4byte gBattleAnimBankTarget -_080D9264: .4byte gBanksBySide -_080D9268: .4byte 0xfff00000 -_080D926C: .4byte gBattleAnimSpriteTemplate_83DB4A8 -_080D9270: .4byte gSprites -_080D9274: .4byte SpriteCallbackDummy -_080D9278: .4byte sub_80D927C - thumb_func_end sub_80D90F4 - - thumb_func_start sub_80D927C -sub_80D927C: @ 80D927C - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x2E] - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080D92C4 - movs r1, 0x3C - ldrsh r0, [r5, r1] - cmp r0, 0x40 - beq _080D92B8 - ldr r4, _080D92C0 @ =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 -_080D92B8: - adds r0, r5, 0 - bl move_anim_8072740 - b _080D92C8 - .align 2, 0 -_080D92C0: .4byte gSprites -_080D92C4: - subs r0, r1, 0x1 - strh r0, [r5, 0x2E] -_080D92C8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80D927C - - thumb_func_start sub_80D92D0 -sub_80D92D0: @ 80D92D0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8078764 - movs r0, 0x1E - strh r0, [r4, 0x2E] - ldr r0, _080D92F0 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D92F4 - ldrh r0, [r4, 0x20] - subs r0, 0x14 - strh r0, [r4, 0x32] - b _080D9306 - .align 2, 0 -_080D92F0: .4byte gBattleAnimArgs -_080D92F4: - 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] -_080D9306: - ldrh r0, [r4, 0x22] - subs r0, 0x14 - strh r0, [r4, 0x36] - ldr r0, _080D9320 @ =sub_8078B34 - str r0, [r4, 0x1C] - ldr r1, _080D9324 @ =sub_80D9328 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D9320: .4byte sub_8078B34 -_080D9324: .4byte sub_80D9328 - thumb_func_end sub_80D92D0 - - thumb_func_start sub_80D9328 -sub_80D9328: @ 80D9328 - 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 _080D9368 - 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, _080D9370 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080D9374 @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData -_080D9368: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D9370: .4byte sub_8078B34 -_080D9374: .4byte move_anim_8072740 - thumb_func_end sub_80D9328 - - thumb_func_start sub_80D9378 -sub_80D9378: @ 80D9378 - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, _080D93F4 @ =gBattleAnimBankAttacker - ldrb r1, [r0] - movs r0, 0x2 - ldr r2, _080D93F8 @ =gBattleAnimBankTarget - eors r0, r1 - ldrb r1, [r2] - cmp r0, r1 - bne _080D93A4 - ldrb r0, [r2] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080D93A4 - ldr r1, _080D93FC @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1] -_080D93A4: - adds r0, r6, 0 - movs r1, 0x1 - bl sub_8078764 - ldr r0, _080D93F4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D93C2 - ldr r1, _080D93FC @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080D93C2: - ldr r4, _080D93FC @ =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 obj_translate_based_on_private_1_2_3_4 - ldrh r0, [r4, 0xA] - strh r0, [r6, 0x38] - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x3A] - strh r5, [r6, 0x3C] - ldr r0, _080D9400 @ =sub_80D9404 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D93F4: .4byte gBattleAnimBankAttacker -_080D93F8: .4byte gBattleAnimBankTarget -_080D93FC: .4byte gBattleAnimArgs -_080D9400: .4byte sub_80D9404 - thumb_func_end sub_80D9378 - - thumb_func_start sub_80D9404 -sub_80D9404: @ 80D9404 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - bne _080D9430 - 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 _080D9436 -_080D9430: - adds r0, r4, 0 - bl move_anim_8072740 -_080D9436: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9404 - - thumb_func_start sub_80D943C -sub_80D943C: @ 80D943C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8078764 - ldr r5, _080D9468 @ =gBattleAnimArgs - ldrb r1, [r5, 0x4] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldr r0, _080D946C @ =sub_80782D8 - str r0, [r4, 0x1C] - ldr r1, _080D9470 @ =sub_80D9474 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9468: .4byte gBattleAnimArgs -_080D946C: .4byte sub_80782D8 -_080D9470: .4byte sub_80D9474 - thumb_func_end sub_80D943C - - thumb_func_start sub_80D9474 -sub_80D9474: @ 80D9474 - 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, _080D94A0 @ =sub_80782D8 - str r0, [r4, 0x1C] - ldr r1, _080D94A4 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D94A0: .4byte sub_80782D8 -_080D94A4: .4byte move_anim_8072740 - thumb_func_end sub_80D9474 - - thumb_func_start sub_80D94A8 -sub_80D94A8: @ 80D94A8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8078764 - ldr r0, _080D94C4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r0, _080D94C8 @ =sub_80D94CC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D94C4: .4byte gBattleAnimArgs -_080D94C8: .4byte sub_80D94CC - thumb_func_end sub_80D94A8 - - thumb_func_start sub_80D94CC -sub_80D94CC: @ 80D94CC - 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 _080D9510 - movs r0, 0x6 - strh r0, [r5, 0x2E] - ldr r4, _080D9518 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080D951C @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080D9520 @ =sub_80D9524 - adds r0, r5, 0 - bl StoreSpriteCallbackInData -_080D9510: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9518: .4byte gBattleAnimBankTarget -_080D951C: .4byte sub_8078B34 -_080D9520: .4byte sub_80D9524 - thumb_func_end sub_80D94CC - - thumb_func_start sub_80D9524 -sub_80D9524: @ 80D9524 - push {lr} - movs r1, 0xF - strh r1, [r0, 0x2E] - ldr r1, _080D9538 @ =sub_80782D8 - str r1, [r0, 0x1C] - ldr r1, _080D953C @ =move_anim_8072740 - bl StoreSpriteCallbackInData - pop {r0} - bx r0 - .align 2, 0 -_080D9538: .4byte sub_80782D8 -_080D953C: .4byte move_anim_8072740 - thumb_func_end sub_80D9524 - - thumb_func_start sub_80D9540 -sub_80D9540: @ 80D9540 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D956C - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8078764 - ldr r1, _080D9568 @ =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 _080D95C8 - .align 2, 0 -_080D9568: .4byte gBattleAnimArgs -_080D956C: - 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 _080D95BA - 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] -_080D95BA: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x78 - ble _080D95C8 - adds r0, r4, 0 - bl move_anim_8072740 -_080D95C8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9540 - - thumb_func_start sub_80D95D0 -sub_80D95D0: @ 80D95D0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080D95E4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D95EC - ldr r4, _080D95E8 @ =gBattleAnimBankAttacker - b _080D95EE - .align 2, 0 -_080D95E4: .4byte gBattleAnimArgs -_080D95E8: .4byte gBattleAnimBankAttacker -_080D95EC: - ldr r4, _080D9634 @ =gBattleAnimBankTarget -_080D95EE: - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r1, _080D9638 @ =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, _080D963C @ =sub_80D9640 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9634: .4byte gBattleAnimBankTarget -_080D9638: .4byte gBattleAnimArgs -_080D963C: .4byte sub_80D9640 - thumb_func_end sub_80D95D0 - - thumb_func_start sub_80D9640 -sub_80D9640: @ 80D9640 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - cmp r2, 0 - beq _080D9652 - cmp r2, 0x1 - beq _080D9676 - b _080D96B0 -_080D9652: - ldrh r0, [r1, 0x30] - subs r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _080D96B0 - movs r2, 0x32 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080D966E - adds r0, r1, 0 - bl move_anim_8072740 - b _080D96B0 -_080D966E: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - b _080D96B0 -_080D9676: - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D969E - 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 _080D969A - movs r0, 0x2 - b _080D969C -_080D969A: - ldr r0, _080D96B4 @ =0x0000fffe -_080D969C: - strh r0, [r1, 0x24] -_080D969E: - ldrh r0, [r1, 0x32] - subs r0, 0x1 - strh r0, [r1, 0x32] - lsls r0, 16 - cmp r0, 0 - bne _080D96B0 - adds r0, r1, 0 - bl move_anim_8072740 -_080D96B0: - pop {r0} - bx r0 - .align 2, 0 -_080D96B4: .4byte 0x0000fffe - thumb_func_end sub_80D9640 - - thumb_func_start sub_80D96B8 -sub_80D96B8: @ 80D96B8 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080D96DC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080D96E4 - ldr r4, _080D96E0 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r6, 0x4] - adds r0, r2 - b _080D96F6 - .align 2, 0 -_080D96DC: .4byte gBattleAnimArgs -_080D96E0: .4byte gBattleAnimBankAttacker -_080D96E4: - ldr r4, _080D9740 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 -_080D96F6: - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - 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, _080D9744 @ =gBattleAnimArgs - movs r4, 0x2 - ldrsh r0, [r3, r4] - lsls r0, 4 - adds r1, r0 - ldr r4, _080D9748 @ =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, _080D974C @ =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 _080D9764 - cmp r0, 0x1 - bgt _080D9750 - cmp r0, 0 - beq _080D975A - b _080D978A - .align 2, 0 -_080D9740: .4byte gBattleAnimBankTarget -_080D9744: .4byte gBattleAnimArgs -_080D9748: .4byte 0x000003ff -_080D974C: .4byte 0xfffffc00 -_080D9750: - cmp r0, 0x2 - beq _080D9774 - cmp r0, 0x3 - beq _080D9784 - b _080D978A -_080D975A: - ldr r0, _080D9760 @ =0x0000fffd - b _080D9784 - .align 2, 0 -_080D9760: .4byte 0x0000fffd -_080D9764: - movs r0, 0x3 - strh r0, [r5, 0x3A] - ldr r0, _080D9770 @ =0x0000fffd - strh r0, [r5, 0x3C] - b _080D9792 - .align 2, 0 -_080D9770: .4byte 0x0000fffd -_080D9774: - ldr r0, _080D9780 @ =0x0000fffd - strh r0, [r5, 0x3A] - movs r0, 0x3 - strh r0, [r5, 0x3C] - b _080D9792 - .align 2, 0 -_080D9780: .4byte 0x0000fffd -_080D9784: - strh r0, [r5, 0x3A] - strh r0, [r5, 0x3C] - b _080D9792 -_080D978A: - adds r0, r5, 0 - bl move_anim_8072740 - b _080D9796 -_080D9792: - ldr r0, _080D979C @ =sub_80D97A0 - str r0, [r5, 0x1C] -_080D9796: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D979C: .4byte sub_80D97A0 - thumb_func_end sub_80D96B8 - - thumb_func_start sub_80D97A0 -sub_80D97A0: @ 80D97A0 - 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 _080D97C8 - adds r0, r1, 0 - bl move_anim_8072740 -_080D97C8: - pop {r0} - bx r0 - thumb_func_end sub_80D97A0 - - thumb_func_start sub_80D97CC -sub_80D97CC: @ 80D97CC - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080D9818 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D9828 - ldr r4, _080D981C @ =gBankAttacker - 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, _080D9820 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl sub_8079ED4 - 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, _080D9824 @ =gBattleAnimBankTarget - b _080D9844 - .align 2, 0 -_080D9818: .4byte gBattleAnimArgs -_080D981C: .4byte gBankAttacker -_080D9820: .4byte gBattleAnimBankAttacker -_080D9824: .4byte gBattleAnimBankTarget -_080D9828: - ldr r0, _080D9860 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - 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, _080D9864 @ =gBattleAnimBankAttacker -_080D9844: - 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, _080D9868 @ =sub_80D986C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9860: .4byte gBattleAnimBankTarget -_080D9864: .4byte gBattleAnimBankAttacker -_080D9868: .4byte sub_80D986C - thumb_func_end sub_80D97CC - - thumb_func_start sub_80D986C -sub_80D986C: @ 80D986C - 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 _080D98C6 - ldr r1, _080D98CC @ =REG_BLDCNT - movs r0, 0 - strh r0, [r1] - 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 sub_8077ABC - 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 sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r1, _080D98D0 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r0, _080D98D4 @ =sub_8078BB8 - str r0, [r4, 0x1C] -_080D98C6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D98CC: .4byte REG_BLDCNT -_080D98D0: .4byte move_anim_8074EE0 -_080D98D4: .4byte sub_8078BB8 - thumb_func_end sub_80D986C - - thumb_func_start sub_80D98D8 -sub_80D98D8: @ 80D98D8 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D9924 @ =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_8079BF4 - 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, _080D9928 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080D992C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r0, _080D9930 @ =sub_80D9934 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9924: .4byte gBattleAnimArgs -_080D9928: .4byte 0x000003ff -_080D992C: .4byte 0xfffffc00 -_080D9930: .4byte sub_80D9934 - thumb_func_end sub_80D98D8 - - thumb_func_start sub_80D9934 -sub_80D9934: @ 80D9934 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - movs r1, 0x2E - ldrsh r0, [r7, r1] - cmp r0, 0 - beq _080D9986 - movs r2, 0x36 - ldrsh r0, [r7, r2] - movs r2, 0x38 - ldrsh r1, [r7, r2] - bl sub_8079BFC - 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_8079BF4 - asrs r4, 8 - strh r4, [r7, 0x22] - lsls r4, 16 - asrs r4, 16 - movs r0, 0x8 - negs r0, r0 - cmp r4, r0 - bge _080D997E - adds r0, r7, 0 - bl move_anim_8072740 - b _080D99DC -_080D997E: - ldrh r0, [r7, 0x2E] - subs r0, 0x1 - strh r0, [r7, 0x2E] - b _080D99DC -_080D9986: - ldr r4, _080D99E8 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r2, _080D99EC @ =gBattleAnimBankTarget - mov r8, r2 - ldrb r0, [r2] - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x3 - bl sub_8077ABC - 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, _080D99F0 @ =sub_80D99F4 - str r0, [r7, 0x1C] -_080D99DC: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D99E8: .4byte gBattleAnimBankAttacker -_080D99EC: .4byte gBattleAnimBankTarget -_080D99F0: .4byte sub_80D99F4 - thumb_func_end sub_80D9934 - - thumb_func_start sub_80D99F4 -sub_80D99F4: @ 80D99F4 - 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 _080D9A2E - adds r1, r3, 0 - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _080D9A2E - cmp r1, 0x78 - ble _080D9A34 -_080D9A2E: - adds r0, r2, 0 - bl move_anim_8072740 -_080D9A34: - pop {r0} - bx r0 - thumb_func_end sub_80D99F4 - - thumb_func_start sub_80D9A38 -sub_80D9A38: @ 80D9A38 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080D9A6C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D9A7C - ldr r4, _080D9A70 @ =gBankAttacker - 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, _080D9A74 @ =gBattleAnimBankTarget - ldrb r4, [r0] - ldr r0, _080D9A78 @ =gBattleAnimBankAttacker - b _080D9A82 - .align 2, 0 -_080D9A6C: .4byte gBattleAnimArgs -_080D9A70: .4byte gBankAttacker -_080D9A74: .4byte gBattleAnimBankTarget -_080D9A78: .4byte gBattleAnimBankAttacker -_080D9A7C: - ldr r0, _080D9AB4 @ =gBattleAnimBankAttacker - ldrb r4, [r0] - ldr r0, _080D9AB8 @ =gBattleAnimBankTarget -_080D9A82: - ldrb r0, [r0] - bl sub_8079ED4 - 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 NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080D9ABC - ldrb r2, [r5, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x47 - b _080D9AD6 - .align 2, 0 -_080D9AB4: .4byte gBattleAnimBankAttacker -_080D9AB8: .4byte gBattleAnimBankTarget -_080D9ABC: - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D9ADC - ldrb r2, [r5, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x18 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x57 -_080D9AD6: - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x3] -_080D9ADC: - movs r0, 0x10 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - adds r0, r4, 0 - movs r1, 0x2 - bl sub_8077ABC - 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 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 r1, _080D9B1C @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldr r0, _080D9B20 @ =sub_8078BB8 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9B1C: .4byte move_anim_8072740 -_080D9B20: .4byte sub_8078BB8 - thumb_func_end sub_80D9A38 - - thumb_func_start sub_80D9B24 -sub_80D9B24: @ 80D9B24 - 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 _080D9B3A - adds r0, r4, 0 - bl move_anim_8072740 -_080D9B3A: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9B24 - - thumb_func_start sub_80D9B48 -sub_80D9B48: @ 80D9B48 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _080D9BC4 @ =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 r1, _080D9BC8 @ =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, _080D9BCC @ =gUnknown_0202F7C4 - ldrb r6, [r0] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D9B92 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_080D9B92: - movs r0, 0x1 - ands r6, r0 - cmp r6, 0 - beq _080D9BA6 - ldrh r0, [r5, 0x32] - negs r0, r0 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x30] - adds r0, 0x1 - strh r0, [r5, 0x30] -_080D9BA6: - 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, _080D9BD0 @ =sub_80D9B24 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D9BC4: .4byte gBattleAnimBankTarget -_080D9BC8: .4byte gBattleAnimArgs -_080D9BCC: .4byte gUnknown_0202F7C4 -_080D9BD0: .4byte sub_80D9B24 - thumb_func_end sub_80D9B48 - - thumb_func_start sub_80D9BD4 -sub_80D9BD4: @ 80D9BD4 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D9BEC @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D9BF0 - adds r0, r4, 0 - movs r1, 0 - bl sub_80787B0 - b _080D9BF8 - .align 2, 0 -_080D9BEC: .4byte gBattleAnimArgs -_080D9BF0: - adds r0, r4, 0 - movs r1, 0 - bl sub_8078764 -_080D9BF8: - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080D9C0C - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - b _080D9C22 -_080D9C0C: - ldr r0, _080D9C34 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D9C22 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080D9C22: - ldr r0, _080D9C38 @ =sub_8078600 - str r0, [r4, 0x1C] - ldr r1, _080D9C3C @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D9C34: .4byte gBattleAnimBankAttacker -_080D9C38: .4byte sub_8078600 -_080D9C3C: .4byte move_anim_8072740 - thumb_func_end sub_80D9BD4 - - thumb_func_start sub_80D9C40 -sub_80D9C40: @ 80D9C40 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080D9C7A - 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 _080D9C7A - adds r0, r4, 0 - bl move_anim_8072740 -_080D9C7A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9C40 - - thumb_func_start sub_80D9C80 -sub_80D9C80: @ 80D9C80 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080D9CB0 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080D9CB8 - cmp r0, 0x1 - bgt _080D9CD2 - cmp r0, 0 - bne _080D9CD2 - movs r0, 0 - bl sub_80789D4 - ldr r0, _080D9CB4 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x18] - b _080D9CCA - .align 2, 0 -_080D9CB0: .4byte gTasks -_080D9CB4: .4byte gBattleAnimArgs -_080D9CB8: - 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 _080D9CDE -_080D9CCA: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080D9CDE -_080D9CD2: - movs r2, 0xA0 - lsls r2, 3 - adds r0, r2, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] -_080D9CDE: - movs r2, 0xB0 - lsls r2, 4 - adds r0, r2, 0 - ldrh r1, [r4, 0x1C] - adds r0, r1 - strh r0, [r4, 0x1C] - ldr r0, _080D9D0C @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D9D14 - ldr r1, _080D9D10 @ =gUnknown_030041B0 - ldrh r0, [r4, 0x1A] - lsls r0, 16 - asrs r0, 24 - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - adds r7, r1, 0 - b _080D9D24 - .align 2, 0 -_080D9D0C: .4byte gBattleAnimBankTarget -_080D9D10: .4byte gUnknown_030041B0 -_080D9D14: - ldr r2, _080D9D64 @ =gUnknown_030041B0 - ldrh r1, [r4, 0x1A] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r2] - subs r0, r1 - strh r0, [r2] - adds r7, r2, 0 -_080D9D24: - ldr r3, _080D9D68 @ =gUnknown_030041B8 - 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, _080D9D6C @ =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080D9D5C - strh r5, [r7] - strh r5, [r3] - movs r0, 0x1 - bl sub_80789D4 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080D9D5C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D9D64: .4byte gUnknown_030041B0 -_080D9D68: .4byte gUnknown_030041B8 -_080D9D6C: .4byte gBattleAnimArgs - thumb_func_end sub_80D9C80 - - thumb_func_start sub_80D9D70 -sub_80D9D70: @ 80D9D70 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D9DC4 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D9D86 - adds r0, r5, 0 - movs r1, 0x2 - bl StartSpriteAnim -_080D9D86: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80787B0 - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x2E] - ldr r4, _080D9DC8 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080D9DCC @ =0x0000ffe2 - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl sub_80786EC - ldr r0, _080D9DD0 @ =sub_80D9DD4 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9DC4: .4byte gBattleAnimArgs -_080D9DC8: .4byte gBattleAnimBankTarget -_080D9DCC: .4byte 0x0000ffe2 -_080D9DD0: .4byte sub_80D9DD4 - thumb_func_end sub_80D9D70 - - thumb_func_start sub_80D9DD4 -sub_80D9DD4: @ 80D9DD4 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080D9DE8 - adds r0, r4, 0 - bl move_anim_8072740 -_080D9DE8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9DD4 - - thumb_func_start sub_80D9DF0 -sub_80D9DF0: @ 80D9DF0 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r5, _080D9E64 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D9E08 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim -_080D9E08: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080D9E68 @ =gBattleAnimBankTarget - ldrb r0, [r0] - mov r6, sp - adds r6, 0x2 - movs r1, 0x1 - mov r2, sp - adds r3, r6, 0 - bl sub_807A3FC - ldr r0, _080D9E6C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D9E36 - ldrh r0, [r5, 0x8] - negs r0, r0 - strh r0, [r5, 0x8] -_080D9E36: - 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, _080D9E70 @ =0x0000ffe2 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl sub_80786EC - ldr r0, _080D9E74 @ =sub_80D9E78 - str r0, [r4, 0x1C] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D9E64: .4byte gBattleAnimArgs -_080D9E68: .4byte gBattleAnimBankTarget -_080D9E6C: .4byte gBattleAnimBankAttacker -_080D9E70: .4byte 0x0000ffe2 -_080D9E74: .4byte sub_80D9E78 - thumb_func_end sub_80D9DF0 - - thumb_func_start sub_80D9E78 -sub_80D9E78: @ 80D9E78 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080D9E8C - adds r0, r4, 0 - bl move_anim_8072740 -_080D9E8C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9E78 - - thumb_func_start sub_80D9E94 -sub_80D9E94: @ 80D9E94 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D9EE0 @ =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_8078A5C - 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, _080D9EE4 @ =sub_80D9EE8 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9EE0: .4byte gBattleAnimArgs -_080D9EE4: .4byte sub_80D9EE8 - thumb_func_end sub_80D9E94 - - thumb_func_start sub_80D9EE8 -sub_80D9EE8: @ 80D9EE8 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078394 - 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 _080D9F0E - adds r0, r4, 0 - bl move_anim_8072740 -_080D9F0E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9EE8 - - thumb_func_start sub_80D9F14 -sub_80D9F14: @ 80D9F14 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D9F74 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0x1 - bl sub_807A3FC - ldr r0, _080D9F78 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D9F40 - ldr r1, _080D9F7C @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_080D9F40: - ldr r0, _080D9F7C @ =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, _080D9F80 @ =sub_8078B34 - str r0, [r4, 0x1C] - ldr r1, _080D9F84 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D9F74: .4byte gBattleAnimBankTarget -_080D9F78: .4byte gBattleAnimBankAttacker -_080D9F7C: .4byte gBattleAnimArgs -_080D9F80: .4byte sub_8078B34 -_080D9F84: .4byte move_anim_8072740 - thumb_func_end sub_80D9F14 - - thumb_func_start sub_80D9F88 -sub_80D9F88: @ 80D9F88 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D9FA0 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D9FA4 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8078764 - b _080D9FDA - .align 2, 0 -_080D9FA0: .4byte gBattleAnimArgs -_080D9FA4: - ldr r0, _080D9FE4 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0x1 - bl sub_807A3FC - ldr r0, _080D9FE8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D9FCA - ldrh r0, [r5] - negs r0, r0 - strh r0, [r5] -_080D9FCA: - 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] -_080D9FDA: - ldr r0, _080D9FEC @ =sub_80D9FF0 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9FE4: .4byte gBattleAnimBankTarget -_080D9FE8: .4byte gBattleAnimBankAttacker -_080D9FEC: .4byte sub_80D9FF0 - thumb_func_end sub_80D9F88 - - thumb_func_start sub_80D9FF0 -sub_80D9FF0: @ 80D9FF0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0xB - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x30 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080DA02C - adds r0, r4, 0 - bl move_anim_8072740 -_080DA02C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9FF0 - - thumb_func_start sub_80DA034 -sub_80DA034: @ 80DA034 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_8078764 - ldrh r0, [r4, 0x22] - adds r0, 0x14 - strh r0, [r4, 0x22] - movs r0, 0xBF - strh r0, [r4, 0x30] - ldr r1, _080DA058 @ =sub_80DA05C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DA058: .4byte sub_80DA05C - thumb_func_end sub_80DA034 - - thumb_func_start sub_80DA05C -sub_80DA05C: @ 80DA05C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x47 - bne _080DA096 - adds r0, r4, 0 - bl move_anim_8072740 -_080DA096: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DA05C - - thumb_func_start sub_80DA09C -sub_80DA09C: @ 80DA09C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080DA0CC @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r1, _080DA0D0 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x8] - ldrh r0, [r1] - strh r0, [r4, 0xA] - ldr r0, _080DA0D4 @ =0x00002719 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xC] - ldr r0, _080DA0D8 @ =sub_80DA0DC - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DA0CC: .4byte gTasks -_080DA0D0: .4byte gBattleAnimArgs -_080DA0D4: .4byte 0x00002719 -_080DA0D8: .4byte sub_80DA0DC - thumb_func_end sub_80DA09C - - thumb_func_start sub_80DA0DC -sub_80DA0DC: @ 80DA0DC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _080DA15C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r1, r0, 0x1 - strh r1, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xA - ldrsh r1, [r3, r4] - adds r7, r2, 0 - cmp r0, r1 - bne _080DA13A - movs r0, 0 - strh r0, [r3, 0x1C] - ldrb r0, [r3, 0xC] - ldr r2, _080DA160 @ =gPlttBufferFaded - lsls r0, 4 - movs r3, 0x84 - lsls r3, 1 - adds r1, r0, r3 - lsls r1, 1 - adds r1, r2 - ldrh r6, [r1] - movs r4, 0x7 - mov r12, r0 - ldr r0, _080DA164 @ =0x00000107 - add r0, r12 - lsls r0, 1 - adds r3, r0, r2 -_080DA122: - ldrh r0, [r3] - strh r0, [r1] - subs r3, 0x2 - subs r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bgt _080DA122 - ldr r0, _080DA168 @ =0x00000101 - add r0, r12 - lsls r0, 1 - adds r0, r2 - strh r6, [r0] -_080DA13A: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r7 - ldrh r1, [r0, 0x8] - subs r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - cmp r1, 0 - bne _080DA154 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DA154: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DA15C: .4byte gTasks -_080DA160: .4byte gPlttBufferFaded -_080DA164: .4byte 0x00000107 -_080DA168: .4byte 0x00000101 - thumb_func_end sub_80DA0DC - - thumb_func_start sub_80DA16C -sub_80DA16C: @ 80DA16C - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080DA1D8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DA18C - ldr r1, _080DA1DC @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080DA18C: - ldr r4, _080DA1DC @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldrh r0, [r6, 0x20] - strh r0, [r6, 0x30] - ldr r5, _080DA1E0 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrh r0, [r6, 0x22] - strh r0, [r6, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x6] - adds r0, r4 - strh r0, [r6, 0x36] - adds r0, r6, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080DA1E4 @ =sub_80785E4 - str r0, [r6, 0x1C] - ldr r1, _080DA1E8 @ =sub_80DA1EC - adds r0, r6, 0 - bl StoreSpriteCallbackInData - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DA1D8: .4byte gBattleAnimBankAttacker -_080DA1DC: .4byte gBattleAnimArgs -_080DA1E0: .4byte gBattleAnimBankTarget -_080DA1E4: .4byte sub_80785E4 -_080DA1E8: .4byte sub_80DA1EC - thumb_func_end sub_80DA16C - - thumb_func_start sub_80DA1EC -sub_80DA1EC: @ 80DA1EC - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080DA200 - adds r0, r4, 0 - bl move_anim_8072740 -_080DA200: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DA1EC - - thumb_func_start sub_80DA208 -sub_80DA208: @ 80DA208 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080DA2A4 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DA234 - ldr r1, _080DA2A8 @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] -_080DA234: - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DA24C - ldr r0, _080DA2A8 @ =gBattleAnimArgs - ldrh r1, [r0, 0x2] - negs r1, r1 - strh r1, [r0, 0x2] - ldrh r1, [r0, 0x6] - negs r1, r1 - strh r1, [r0, 0x6] -_080DA24C: - 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 - ldr r2, _080DA2A8 @ =gBattleAnimArgs - ldrh r1, [r2] - ldrh r3, [r5, 0x20] - adds r1, r3 - strh r1, [r5, 0x20] - lsrs r0, 24 - ldrh r1, [r2, 0x2] - adds r0, r1 - strh r0, [r5, 0x22] - ldrh r0, [r2, 0x8] - strh r0, [r5, 0x2E] - movs r3, 0xC - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080DA2B0 - ldr r4, _080DA2AC @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - b _080DA2C2 - .align 2, 0 -_080DA2A4: .4byte gBattleAnimBankAttacker -_080DA2A8: .4byte gBattleAnimArgs -_080DA2AC: .4byte gBattleAnimBankTarget -_080DA2B0: - ldr r0, _080DA2F0 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x32 - adds r3, r5, 0 - adds r3, 0x36 - movs r1, 0x1 - bl sub_807A3FC -_080DA2C2: - ldr r4, _080DA2F4 @ =gBattleAnimArgs - ldrh r0, [r4, 0x4] - ldrh r1, [r5, 0x32] - adds r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r4, 0x6] - ldrh r3, [r5, 0x36] - adds r0, r3 - strh r0, [r5, 0x36] - ldr r0, _080DA2F8 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080DA2FC @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldrb r1, [r4, 0xA] - adds r0, r5, 0 - bl SeekSpriteAnim - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DA2F0: .4byte gBattleAnimBankTarget -_080DA2F4: .4byte gBattleAnimArgs -_080DA2F8: .4byte sub_8078B34 -_080DA2FC: .4byte move_anim_8072740 - thumb_func_end sub_80DA208 - - thumb_func_start sub_80DA300 -sub_80DA300: @ 80DA300 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r1, _080DA33C @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldr r0, _080DA340 @ =sub_80DA348 - str r0, [r4, 0x1C] - movs r0, 0 - bl GetAnimBankSpriteId - ldr r2, _080DA344 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DA33C: .4byte gBattleAnimArgs -_080DA340: .4byte sub_80DA348 -_080DA344: .4byte gSprites - thumb_func_end sub_80DA300 - - thumb_func_start sub_80DA348 -sub_80DA348: @ 80DA348 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - movs r3, 0x2E - ldrsh r0, [r2, r3] - cmp r0, 0 - ble _080DA35C - subs r0, r1, 0x1 - strh r0, [r2, 0x2E] - b _080DA36E -_080DA35C: - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r2, 0x26] - subs r1, r0 - strh r1, [r2, 0x26] -_080DA36E: - movs r3, 0x22 - ldrsh r0, [r2, r3] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bge _080DA386 - adds r0, r2, 0 - bl move_anim_8072740 -_080DA386: - pop {r0} - bx r0 - thumb_func_end sub_80DA348 - - thumb_func_start sub_80DA38C -sub_80DA38C: @ 80DA38C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080DA3B4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DA3BC - movs r0, 0x88 - lsls r0, 1 - strh r0, [r5, 0x20] - ldr r0, _080DA3B8 @ =0x0000ffe0 - strh r0, [r5, 0x22] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080DA3C2 - .align 2, 0 -_080DA3B4: .4byte gBattleAnimBankAttacker -_080DA3B8: .4byte 0x0000ffe0 -_080DA3BC: - ldr r0, _080DA400 @ =0x0000ffe0 - strh r0, [r5, 0x20] - strh r0, [r5, 0x22] -_080DA3C2: - ldr r0, _080DA404 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080DA408 @ =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, _080DA40C @ =sub_80DA410 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DA400: .4byte 0x0000ffe0 -_080DA404: .4byte gBattleAnimArgs -_080DA408: .4byte gBattleAnimBankTarget -_080DA40C: .4byte sub_80DA410 - thumb_func_end sub_80DA38C - - thumb_func_start sub_80DA410 -sub_80DA410: @ 80DA410 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl sub_8078B5C - ldrh r1, [r4, 0x34] - lsrs r0, r1, 8 - cmp r0, 0xC8 - bls _080DA438 - ldrh r0, [r4, 0x24] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - movs r0, 0 - strh r0, [r4, 0x24] - movs r0, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] -_080DA438: - movs r1, 0x20 - ldrsh r0, [r4, r1] - movs r2, 0x24 - ldrsh r1, [r4, r2] - adds r0, r1 - adds r0, 0x20 - movs r1, 0x98 - lsls r1, 1 - cmp r0, r1 - bhi _080DA45A - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - cmp r0, 0xA0 - ble _080DA480 -_080DA45A: - movs r0, 0 - bl GetAnimBankSpriteId - ldr r2, _080DA488 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl move_anim_8072740 -_080DA480: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DA488: .4byte gSprites - thumb_func_end sub_80DA410 - - thumb_func_start sub_80DA48C -sub_80DA48C: @ 80DA48C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - subs r1, r0, 0x1 - strh r1, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080DA4CC - ldrb r0, [r4, 0x1] - lsls r0, 30 - lsrs r0, 30 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DA4BE - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x1] -_080DA4BE: - adds r0, r4, 0 - bl DestroySprite - ldr r1, _080DA4D4 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_080DA4CC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DA4D4: .4byte gAnimVisualTaskCount - thumb_func_end sub_80DA48C - - thumb_func_start sub_80DA4D8 -sub_80DA4D8: @ 80DA4D8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - adds r5, r7, 0 - adds r5, 0x2E - ldr r0, _080DA4F8 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080DA500 - ldr r0, _080DA4FC @ =gBattleAnimBankAttacker - b _080DA502 - .align 2, 0 -_080DA4F8: .4byte gBattleAnimArgs -_080DA4FC: .4byte gBattleAnimBankAttacker -_080DA500: - ldr r0, _080DA5B0 @ =gBattleAnimBankTarget -_080DA502: - ldrb r6, [r0] - adds r0, r6, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DA518 - ldr r1, _080DA5B4 @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_080DA518: - adds r0, r6, 0 - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080DA5B4 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r7, 0x20] - adds r0, r6, 0 - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - ldrh r1, [r4, 0x2] - lsrs r0, 24 - adds r1, r0, r1 - strh r1, [r7, 0x22] - lsls r1, 8 - strh r1, [r5, 0x8] - ldrh r1, [r4, 0xC] - adds r0, r1 - lsls r0, 1 - ldrh r2, [r5, 0xE] - movs r1, 0x1 - ands r1, r2 - orrs r1, r0 - strh r1, [r5, 0xE] - ldrb r0, [r5] - movs r2, 0x4 - mov r8, r2 - mov r1, r8 - orrs r0, r1 - strb r0, [r5] - ldrh r0, [r4, 0x4] - ldrb r1, [r4, 0x4] - strh r1, [r5, 0x2] - lsls r0, 16 - lsrs r0, 24 - strh r0, [r5, 0xA] - ldrh r0, [r4, 0x6] - strh r0, [r5, 0x4] - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x6] - ldrh r0, [r4, 0xA] - strh r0, [r5, 0xC] - subs r1, 0x40 - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0x7F - bhi _080DA618 - ldr r0, _080DA5B8 @ =gMain - ldr r2, _080DA5BC @ =0x0000043d - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080DA5C0 - adds r0, r6, 0 - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r7, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r7, 0x5] - b _080DA5D8 - .align 2, 0 -_080DA5B0: .4byte gBattleAnimBankTarget -_080DA5B4: .4byte gBattleAnimArgs -_080DA5B8: .4byte gMain -_080DA5BC: .4byte 0x0000043d -_080DA5C0: - adds r0, r6, 0 - bl sub_8079ED4 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r7, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r7, 0x5] -_080DA5D8: - ldrb r1, [r5, 0xE] - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - ands r0, r1 - strb r0, [r5, 0xE] - movs r1, 0x4 - ldrsh r0, [r5, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - bne _080DA678 - adds r3, r7, 0 - adds r3, 0x3F - ldrb r2, [r3] - lsls r0, r2, 31 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - adds r0, r4, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - lsls r0, 31 - lsrs r0, 31 - adds r1, r7, 0 - adds r1, 0x2A - strb r0, [r1] - ldrb r0, [r3] - movs r1, 0x4 - b _080DA66E -_080DA618: - adds r0, r6, 0 - bl sub_8079ED4 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r7, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r7, 0x5] - ldrb r0, [r5, 0xE] - movs r4, 0x1 - orrs r0, r4 - strb r0, [r5, 0xE] - movs r2, 0x4 - ldrsh r0, [r5, r2] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080DA678 - adds r3, r7, 0 - adds r3, 0x3F - ldrb r2, [r3] - lsls r1, r2, 31 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - ands r1, r4 - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - lsls r0, 31 - lsrs r0, 31 - adds r1, r7, 0 - adds r1, 0x2A - strb r0, [r1] - ldrb r0, [r3] - mov r1, r8 -_080DA66E: - orrs r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - strb r0, [r3] -_080DA678: - ldrh r1, [r5, 0x2] - lsrs r1, 6 - lsls r1, 4 - ldrb r2, [r5] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strb r0, [r5] - ldr r3, _080DA6E4 @ =gSineTable - ldrh r0, [r5, 0x2] - lsls r0, 1 - adds r0, r3 - movs r2, 0 - ldrsh r1, [r0, r2] - ldrb r0, [r5, 0xC] - muls r0, r1 - asrs r0, 8 - strh r0, [r7, 0x24] - ldrb r2, [r7, 0x3] - lsls r2, 26 - lsrs r2, 27 - movs r1, 0x24 - ldrsh r0, [r7, r1] - negs r0, r0 - asrs r0, 1 - ldrb r5, [r5, 0xA] - adds r0, r5 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r3 - ldrh r4, [r1] - ldr r1, _080DA6E8 @ =gOamMatrices - lsls r2, 3 - adds r2, r1 - adds r0, 0x40 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r2, 0x6] - strh r0, [r2] - strh r4, [r2, 0x2] - lsls r0, r4, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r2, 0x4] - ldr r0, _080DA6EC @ =sub_80DA6F0 - str r0, [r7, 0x1C] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DA6E4: .4byte gSineTable -_080DA6E8: .4byte gOamMatrices -_080DA6EC: .4byte sub_80DA6F0 - thumb_func_end sub_80DA4D8 - - thumb_func_start sub_80DA6F0 -sub_80DA6F0: @ 80DA6F0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - movs r6, 0 - movs r0, 0x2E - adds r0, r5 - mov r12, r0 - ldrb r2, [r0] - movs r7, 0x1 - movs r1, 0x1 - mov r9, r1 - mov r0, r9 - ands r0, r2 - cmp r0, 0 - beq _080DA730 - mov r3, r12 - ldrb r0, [r3, 0x1] - adds r1, r0, 0 - adds r1, 0xFF - strb r1, [r3, 0x1] - lsls r0, 24 - cmp r0, 0 - beq _080DA724 - b _080DAD1A -_080DA724: - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r3] - strb r6, [r3, 0x1] - b _080DAD1A -_080DA730: - mov r4, r12 - ldrh r0, [r4, 0x2] - lsrs r4, r0, 6 - mov r8, r0 - cmp r4, 0x1 - bne _080DA73E - b _080DA896 -_080DA73E: - cmp r4, 0x1 - bgt _080DA748 - cmp r4, 0 - beq _080DA756 - b _080DAC52 -_080DA748: - cmp r4, 0x2 - bne _080DA74E - b _080DA9C8 -_080DA74E: - cmp r4, 0x3 - bne _080DA754 - b _080DAB0E -_080DA754: - b _080DAC52 -_080DA756: - lsls r1, r2, 24 - lsrs r0, r1, 28 - cmp r0, 0x1 - bne _080DA76C - movs r0, 0x8 - orrs r0, r2 - orrs r0, r7 - mov r1, r12 - strb r0, [r1] - strb r6, [r1, 0x1] - b _080DA88A -_080DA76C: - lsrs r0, r1, 28 - cmp r0, 0x3 - bne _080DA790 - lsls r0, r2, 30 - lsrs r0, 31 - movs r1, 0x1 - eors r0, r1 - ands r0, r7 - lsls r0, 1 - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - orrs r1, r7 - mov r2, r12 - strb r1, [r2] - strb r6, [r2, 0x1] - b _080DA88A -_080DA790: - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _080DA88A - adds r3, r5, 0 - adds r3, 0x3F - ldrb r2, [r3] - lsls r1, r2, 31 - lsrs r1, 31 - movs r4, 0x1 - eors r1, r4 - ands r1, r7 - movs r6, 0x2 - negs r6, r6 - adds r0, r6, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - lsls r0, 31 - lsrs r0, 31 - adds r1, r5, 0 - adds r1, 0x2A - strb r0, [r1] - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - strb r0, [r3] - mov r3, r12 - ldrb r1, [r3] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080DA87A - ldr r0, _080DA80C @ =gMain - ldr r1, _080DA810 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080DA82E - ldrb r1, [r3, 0xE] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080DA814 - ldrb r2, [r5, 0x5] - lsls r1, r2, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - b _080DA868 - .align 2, 0 -_080DA80C: .4byte gMain -_080DA810: .4byte 0x0000043d -_080DA814: - ldrb r2, [r5, 0x5] - lsls r1, r2, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - b _080DA866 -_080DA82E: - mov r0, r12 - ldrb r1, [r0, 0xE] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080DA85C - adds r1, r5, 0 - adds r1, 0x43 - ldrb r0, [r1] - subs r0, 0xC - strb r0, [r1] - mov r1, r12 - ldrb r2, [r1, 0xE] - lsls r0, r2, 31 - lsrs r0, 31 - eors r0, r4 - ands r0, r7 - adds r1, r6, 0 - ands r1, r2 - orrs r1, r0 - mov r2, r12 - strb r1, [r2, 0xE] - b _080DA87A -_080DA85C: - adds r1, r5, 0 - adds r1, 0x43 - ldrb r0, [r1] - adds r0, 0xC - strb r0, [r1] -_080DA866: - mov r3, r12 -_080DA868: - ldrb r2, [r3, 0xE] - lsls r0, r2, 31 - lsrs r0, 31 - eors r0, r4 - ands r0, r7 - adds r1, r6, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0xE] -_080DA87A: - mov r4, r12 - ldrb r1, [r4] - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - strb r0, [r4] - ldrh r0, [r4, 0x2] - mov r8, r0 -_080DA88A: - mov r2, r12 - ldrb r1, [r2] - movs r0, 0xF - ands r0, r1 - strb r0, [r2] - b _080DAC52 -_080DA896: - lsls r1, r2, 24 - lsrs r0, r1, 28 - cmp r0, 0 - bne _080DA8AC - movs r0, 0x8 - orrs r0, r2 - orrs r0, r7 - mov r3, r12 - strb r0, [r3] - strb r6, [r3, 0x1] - b _080DA9BC -_080DA8AC: - lsrs r0, r1, 28 - cmp r0, 0x2 - bne _080DA8BE - adds r0, r2, 0 - orrs r0, r7 - mov r4, r12 - strb r0, [r4] - strb r6, [r4, 0x1] - b _080DA9BC -_080DA8BE: - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _080DA9BC - adds r3, r5, 0 - adds r3, 0x3F - ldrb r2, [r3] - lsls r1, r2, 31 - lsrs r1, 31 - movs r4, 0x1 - eors r1, r4 - ands r1, r7 - movs r6, 0x2 - negs r6, r6 - adds r0, r6, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - lsls r0, 31 - lsrs r0, 31 - adds r1, r5, 0 - adds r1, 0x2A - strb r0, [r1] - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - strb r0, [r3] - mov r0, r12 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080DA9AC - ldr r0, _080DA940 @ =gMain - ldr r1, _080DA944 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080DA962 - mov r2, r12 - ldrb r1, [r2, 0xE] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080DA948 - ldrb r2, [r5, 0x5] - lsls r1, r2, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - mov r3, r12 - b _080DA978 - .align 2, 0 -_080DA940: .4byte gMain -_080DA944: .4byte 0x0000043d -_080DA948: - ldrb r2, [r5, 0x5] - lsls r1, r2, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - b _080DA996 -_080DA962: - mov r3, r12 - ldrb r1, [r3, 0xE] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080DA98C - adds r1, r5, 0 - adds r1, 0x43 - ldrb r0, [r1] - subs r0, 0xC - strb r0, [r1] -_080DA978: - ldrb r2, [r3, 0xE] - lsls r0, r2, 31 - lsrs r0, 31 - eors r0, r4 - ands r0, r7 - adds r1, r6, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0xE] - b _080DA9AC -_080DA98C: - adds r1, r5, 0 - adds r1, 0x43 - ldrb r0, [r1] - adds r0, 0xC - strb r0, [r1] -_080DA996: - mov r0, r12 - ldrb r2, [r0, 0xE] - lsls r0, r2, 31 - lsrs r0, 31 - eors r0, r4 - ands r0, r7 - adds r1, r6, 0 - ands r1, r2 - orrs r1, r0 - mov r2, r12 - strb r1, [r2, 0xE] -_080DA9AC: - mov r3, r12 - ldrb r1, [r3] - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldrh r4, [r3, 0x2] - mov r8, r4 -_080DA9BC: - mov r1, r12 - ldrb r0, [r1] - movs r1, 0xF - ands r1, r0 - movs r0, 0x10 - b _080DAC4C -_080DA9C8: - lsls r1, r2, 24 - lsrs r0, r1, 28 - cmp r0, 0x3 - bne _080DA9DE - movs r0, 0x8 - orrs r0, r2 - orrs r0, r7 - mov r3, r12 - strb r0, [r3] - strb r6, [r3, 0x1] - b _080DAAFE -_080DA9DE: - lsrs r0, r1, 28 - cmp r0, 0x1 - bne _080DA9F0 - adds r0, r2, 0 - orrs r0, r7 - mov r4, r12 - strb r0, [r4] - strb r6, [r4, 0x1] - b _080DAAFE -_080DA9F0: - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - bne _080DA9FA - b _080DAAFE -_080DA9FA: - adds r3, r5, 0 - adds r3, 0x3F - ldrb r2, [r3] - lsls r1, r2, 31 - lsrs r1, 31 - movs r6, 0x1 - eors r1, r6 - ands r1, r7 - movs r0, 0x2 - negs r0, r0 - mov r8, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - lsls r0, 31 - lsrs r0, 31 - adds r1, r5, 0 - adds r1, 0x2A - strb r0, [r1] - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - strb r0, [r3] - mov r2, r12 - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080DAAEC - ldr r0, _080DAA6C @ =gMain - ldr r3, _080DAA70 @ =0x0000043d - adds r0, r3 - ldrb r0, [r0] - ands r4, r0 - cmp r4, 0 - beq _080DAAA4 - ldrb r1, [r2, 0xE] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080DAA74 - ldrb r2, [r5, 0x5] - lsls r1, r2, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - b _080DAAD8 - .align 2, 0 -_080DAA6C: .4byte gMain -_080DAA70: .4byte 0x0000043d -_080DAA74: - ldrb r2, [r5, 0x5] - lsls r1, r2, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - mov r0, r12 - ldrb r2, [r0, 0xE] - lsls r0, r2, 31 - lsrs r0, 31 - eors r0, r6 - ands r0, r7 - mov r1, r8 - ands r1, r2 - orrs r1, r0 - mov r2, r12 - strb r1, [r2, 0xE] - b _080DAAEC -_080DAAA4: - mov r3, r12 - ldrb r1, [r3, 0xE] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080DAACE - adds r1, r5, 0 - adds r1, 0x43 - ldrb r0, [r1] - subs r0, 0xC - strb r0, [r1] - ldrb r2, [r3, 0xE] - lsls r0, r2, 31 - lsrs r0, 31 - eors r0, r6 - ands r0, r7 - mov r1, r8 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0xE] - b _080DAAEC -_080DAACE: - adds r1, r5, 0 - adds r1, 0x43 - ldrb r0, [r1] - adds r0, 0xC - strb r0, [r1] -_080DAAD8: - mov r4, r12 - ldrb r2, [r4, 0xE] - lsls r0, r2, 31 - lsrs r0, 31 - eors r0, r6 - ands r0, r7 - mov r1, r8 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0xE] -_080DAAEC: - mov r0, r12 - ldrb r1, [r0] - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r2, [r1, 0x2] - mov r8, r2 -_080DAAFE: - mov r3, r12 - ldrb r0, [r3] - movs r1, 0xF - ands r1, r0 - movs r0, 0x20 - orrs r1, r0 - strb r1, [r3] - b _080DAC52 -_080DAB0E: - lsls r1, r2, 24 - lsrs r0, r1, 28 - cmp r0, 0x2 - bne _080DAB20 - movs r0, 0x8 - orrs r0, r2 - mov r4, r12 - strb r0, [r4] - b _080DAC42 -_080DAB20: - lsrs r0, r1, 28 - cmp r0, 0 - bne _080DAB44 - lsls r0, r2, 30 - lsrs r0, 31 - movs r1, 0x1 - eors r0, r1 - ands r0, r7 - lsls r0, 1 - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - orrs r1, r7 - mov r0, r12 - strb r1, [r0] - strb r6, [r0, 0x1] - b _080DAC42 -_080DAB44: - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _080DAC42 - adds r3, r5, 0 - adds r3, 0x3F - ldrb r2, [r3] - lsls r1, r2, 31 - lsrs r1, 31 - movs r4, 0x1 - eors r1, r4 - ands r1, r7 - movs r6, 0x2 - negs r6, r6 - adds r0, r6, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - lsls r0, 31 - lsrs r0, 31 - adds r1, r5, 0 - adds r1, 0x2A - strb r0, [r1] - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - strb r0, [r3] - mov r2, r12 - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080DAC32 - ldr r0, _080DABC4 @ =gMain - ldr r3, _080DABC8 @ =0x0000043d - adds r0, r3 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080DABE6 - ldrb r1, [r2, 0xE] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080DABCC - ldrb r2, [r5, 0x5] - lsls r1, r2, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - mov r0, r12 - ldrb r2, [r0, 0xE] - b _080DAC00 - .align 2, 0 -_080DABC4: .4byte gMain -_080DABC8: .4byte 0x0000043d -_080DABCC: - ldrb r2, [r5, 0x5] - lsls r1, r2, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - b _080DAC1E -_080DABE6: - mov r0, r12 - ldrb r1, [r0, 0xE] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080DAC14 - adds r1, r5, 0 - adds r1, 0x43 - ldrb r0, [r1] - subs r0, 0xC - strb r0, [r1] - mov r1, r12 - ldrb r2, [r1, 0xE] -_080DAC00: - lsls r0, r2, 31 - lsrs r0, 31 - eors r0, r4 - ands r0, r7 - adds r1, r6, 0 - ands r1, r2 - orrs r1, r0 - mov r2, r12 - strb r1, [r2, 0xE] - b _080DAC32 -_080DAC14: - adds r1, r5, 0 - adds r1, 0x43 - ldrb r0, [r1] - adds r0, 0xC - strb r0, [r1] -_080DAC1E: - mov r3, r12 - ldrb r2, [r3, 0xE] - lsls r0, r2, 31 - lsrs r0, 31 - eors r0, r4 - ands r0, r7 - adds r1, r6, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0xE] -_080DAC32: - mov r4, r12 - ldrb r1, [r4] - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - strb r0, [r4] - ldrh r0, [r4, 0x2] - mov r8, r0 -_080DAC42: - mov r1, r12 - ldrb r0, [r1] - movs r1, 0xF - ands r1, r0 - movs r0, 0x30 -_080DAC4C: - orrs r1, r0 - mov r2, r12 - strb r1, [r2] -_080DAC52: - mov r3, r12 - ldrb r1, [r3] - lsls r1, 30 - lsrs r1, 31 - mov r0, r12 - adds r0, 0xC - adds r0, r1 - ldrb r1, [r0] - ldr r3, _080DACE0 @ =gSineTable - mov r4, r8 - lsls r0, r4, 1 - adds r0, r3 - movs r2, 0 - ldrsh r0, [r0, r2] - muls r0, r1 - asrs r0, 8 - strh r0, [r5, 0x24] - ldrb r2, [r5, 0x3] - lsls r2, 26 - lsrs r2, 27 - movs r4, 0x24 - ldrsh r0, [r5, r4] - negs r0, r0 - asrs r0, 1 - mov r1, r12 - ldrb r1, [r1, 0xA] - adds r0, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r3 - ldrh r6, [r1] - ldr r1, _080DACE4 @ =gOamMatrices - lsls r2, 3 - adds r2, r1 - adds r0, 0x40 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r2, 0x6] - strh r0, [r2] - strh r6, [r2, 0x2] - lsls r0, r6, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r2, 0x4] - mov r2, r12 - ldrh r0, [r2, 0x6] - ldrh r3, [r2, 0x8] - adds r0, r3 - strh r0, [r2, 0x8] - lsls r0, 16 - lsrs r0, 24 - strh r0, [r5, 0x22] - movs r4, 0x4 - ldrsh r0, [r2, r4] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080DACE8 - ldrh r0, [r2, 0x4] - subs r1, 0x1 - ands r1, r0 - ldrh r0, [r2, 0x2] - subs r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r2, 0x2] - b _080DACFE - .align 2, 0 -_080DACE0: .4byte gSineTable -_080DACE4: .4byte gOamMatrices -_080DACE8: - mov r1, r12 - ldrh r0, [r1, 0x4] - ldr r1, _080DAD28 @ =0x00007fff - ands r1, r0 - mov r2, r12 - ldrh r2, [r2, 0x2] - adds r1, r2 - movs r0, 0xFF - ands r1, r0 - mov r3, r12 - strh r1, [r3, 0x2] -_080DACFE: - movs r4, 0x22 - ldrsh r1, [r5, r4] - movs r2, 0x26 - ldrsh r0, [r5, r2] - adds r1, r0 - mov r3, r12 - ldrh r0, [r3, 0xE] - lsrs r0, 1 - cmp r1, r0 - blt _080DAD1A - movs r0, 0 - strh r0, [r5, 0x2E] - ldr r0, _080DAD2C @ =sub_80DA48C - str r0, [r5, 0x1C] -_080DAD1A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DAD28: .4byte 0x00007fff -_080DAD2C: .4byte sub_80DA48C - thumb_func_end sub_80DA6F0 - - thumb_func_start sub_80DAD30 -sub_80DAD30: @ 80DAD30 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, _080DAD78 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - ldr r5, _080DAD7C @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r0, _080DAD80 @ =sub_807941C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DAD78: .4byte gBattleAnimBankTarget -_080DAD7C: .4byte gBattleAnimBankAttacker -_080DAD80: .4byte sub_807941C - thumb_func_end sub_80DAD30 - - thumb_func_start sub_80DAD84 -sub_80DAD84: @ 80DAD84 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r5, _080DADCC @ =gBattleAnimArgs - ldrh r0, [r5] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x32] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x34] - ldr r0, _080DADD0 @ =gMain - ldr r1, _080DADD4 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080DAE44 - ldr r0, _080DADD8 @ =gBanksBySide - ldr r1, _080DADDC @ =gBattleAnimBankTarget - ldrb r2, [r1] - adds r0, r2, r0 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DADE0 - adds r0, r2, 0 - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x6] - adds r0, r5 - b _080DADEE - .align 2, 0 -_080DADCC: .4byte gBattleAnimArgs -_080DADD0: .4byte gMain -_080DADD4: .4byte 0x0000043d -_080DADD8: .4byte gBanksBySide -_080DADDC: .4byte gBattleAnimBankTarget -_080DADE0: - adds r0, r2, 0 - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x28 -_080DADEE: - strh r0, [r4, 0x3C] - ldr r0, _080DAE1C @ =gBattleAnimArgs - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080DAE24 - ldr r0, _080DAE20 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x5] - b _080DAE58 - .align 2, 0 -_080DAE1C: .4byte gBattleAnimArgs -_080DAE20: .4byte gBattleAnimBankTarget -_080DAE24: - ldr r0, _080DAE40 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - b _080DAE58 - .align 2, 0 -_080DAE40: .4byte gBattleAnimBankTarget -_080DAE44: - ldr r0, _080DAEFC @ =gBattleAnimBankTarget - ldrb r0, [r0] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x6] - adds r0, r5 - strh r0, [r4, 0x3C] -_080DAE58: - ldr r5, _080DAF00 @ =gSineTable - ldrh r3, [r4, 0x30] - movs r1, 0xFF - ands r1, r3 - lsls r0, r1, 1 - adds r0, r5 - ldrh r0, [r0] - movs r2, 0 - strh r0, [r4, 0x36] - adds r1, 0x40 - lsls r1, 1 - adds r1, r5 - ldrh r0, [r1] - negs r0, r0 - strh r0, [r4, 0x38] - strh r2, [r4, 0x3A] - strh r2, [r4, 0x26] - strh r2, [r4, 0x24] - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r6, r0, 27 - lsls r3, 16 - lsrs r3, 24 - strh r3, [r4, 0x30] - bl Random - lsls r0, 16 - asrs r7, r0, 16 - movs r0, 0x80 - lsls r0, 8 - ands r0, r7 - cmp r0, 0 - beq _080DAEA2 - ldrh r1, [r4, 0x30] - movs r0, 0xFF - subs r0, r1 - strh r0, [r4, 0x30] -_080DAEA2: - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r0, r5 - ldrh r0, [r0] - ldr r3, _080DAF04 @ =gOamMatrices - lsls r2, r6, 3 - adds r2, r3 - adds r1, 0x40 - lsls r1, 1 - adds r1, r5 - 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] - adds r3, r4, 0 - adds r3, 0x3F - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - strb r0, [r3] - movs r0, 0x1 - ands r0, r7 - cmp r0, 0 - beq _080DAEF2 - adds r2, r4, 0 - adds r2, 0x2A - movs r1, 0x1 - movs r0, 0x1 - strb r0, [r2] - ldrb r0, [r3] - orrs r0, r1 - strb r0, [r3] -_080DAEF2: - ldr r0, _080DAF08 @ =sub_80DAF0C - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DAEFC: .4byte gBattleAnimBankTarget -_080DAF00: .4byte gSineTable -_080DAF04: .4byte gOamMatrices -_080DAF08: .4byte sub_80DAF0C - thumb_func_end sub_80DAD84 - - thumb_func_start sub_80DAF0C -sub_80DAF0C: @ 80DAF0C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r4, r0, 0 - adds r5, r4, 0 - adds r5, 0x2E - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - movs r1, 0 - mov r8, r1 - movs r7, 0 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080DAFF0 - movs r2, 0x36 - ldrsh r1, [r4, r2] - movs r2, 0x3A - ldrsh r0, [r4, r2] - muls r0, r1 - asrs r6, r0, 8 - strh r6, [r4, 0x24] - movs r0, 0x38 - ldrsh r1, [r4, r0] - movs r2, 0x3A - ldrsh r0, [r4, r2] - muls r0, r1 - asrs r3, r0, 8 - strh r3, [r4, 0x26] - ldrh r2, [r4, 0x34] - movs r1, 0xFF - adds r0, r1, 0 - ands r0, r2 - ldrh r2, [r4, 0x3A] - adds r0, r2 - strh r0, [r4, 0x3A] - ldrh r2, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - ands r1, r2 - cmp r0, r1 - blt _080DAFF0 - ldrh r0, [r4, 0x20] - adds r0, r6 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x22] - adds r0, r3 - strh r0, [r4, 0x22] - strh r7, [r4, 0x24] - strh r7, [r4, 0x26] - mov r0, sp - adds r1, r5, 0 - movs r2, 0x10 - bl memcpy - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x10 - bl memset - ldrh r0, [r4, 0x22] - lsls r0, 8 - strh r0, [r5, 0x8] - mov r0, sp - ldrh r0, [r0, 0x6] - lsrs r1, r0, 8 - strh r1, [r5, 0x6] - strh r7, [r5, 0x2] - mov r0, sp - ldrh r0, [r0, 0x2] - strh r0, [r5, 0xA] - adds r0, r4, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, 0 - beq _080DAFC0 - movs r0, 0x8 - ands r1, r0 - cmp r1, 0 - beq _080DAFB8 - ldr r0, _080DAFB4 @ =0x00008001 - b _080DAFCE - .align 2, 0 -_080DAFB4: .4byte 0x00008001 -_080DAFB8: - ldr r0, _080DAFBC @ =0x00008002 - b _080DAFCE - .align 2, 0 -_080DAFBC: .4byte 0x00008002 -_080DAFC0: - movs r0, 0x8 - ands r1, r0 - cmp r1, 0 - beq _080DAFCC - movs r0, 0x1 - b _080DAFCE -_080DAFCC: - movs r0, 0x2 -_080DAFCE: - strh r0, [r5, 0x4] - mov r0, sp - ldrh r0, [r0, 0x4] - lsrs r0, 8 - strb r0, [r5, 0xC] - subs r0, 0x2 - strb r0, [r5, 0xD] - mov r0, sp - ldrh r1, [r0, 0xE] - lsls r1, 1 - ldrh r2, [r5, 0xE] - movs r0, 0x1 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0xE] - ldr r0, _080DAFFC @ =sub_80DA6F0 - str r0, [r4, 0x1C] -_080DAFF0: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DAFFC: .4byte sub_80DA6F0 - thumb_func_end sub_80DAF0C - - thumb_func_start sub_80DB000 -sub_80DB000: @ 80DB000 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080DB018 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DB01C - adds r0, r5, 0 - movs r1, 0 - bl sub_80787B0 - b _080DB024 - .align 2, 0 -_080DB018: .4byte gBattleAnimArgs -_080DB01C: - adds r0, r5, 0 - movs r1, 0 - bl sub_8078764 -_080DB024: - ldr r4, _080DB08C @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080DB03C - ldr r0, _080DB090 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DB052 -_080DB03C: - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080DB058 - ldr r0, _080DB094 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DB058 -_080DB052: - ldrh r0, [r5, 0x20] - adds r0, 0x8 - strh r0, [r5, 0x20] -_080DB058: - ldr r4, _080DB08C @ =gBattleAnimArgs - ldrb r1, [r4, 0x8] - adds r0, r5, 0 - bl SeekSpriteAnim - ldrh r0, [r5, 0x20] - subs r0, 0x20 - strh r0, [r5, 0x20] - ldr r0, _080DB098 @ =0x00000ccc - strh r0, [r5, 0x30] - ldrh r1, [r4, 0x8] - movs r0, 0xC - adds r2, r0, 0 - muls r2, r1 - adds r0, r2, 0 - ldrh r2, [r5, 0x24] - adds r0, r2 - strh r0, [r5, 0x24] - strh r1, [r5, 0x2E] - ldrh r0, [r4, 0x6] - strh r0, [r5, 0x3C] - ldr r0, _080DB09C @ =sub_80DB0A0 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DB08C: .4byte gBattleAnimArgs -_080DB090: .4byte gBattleAnimBankAttacker -_080DB094: .4byte gBattleAnimBankTarget -_080DB098: .4byte 0x00000ccc -_080DB09C: .4byte sub_80DB0A0 - thumb_func_end sub_80DB000 - - thumb_func_start sub_80DB0A0 -sub_80DB0A0: @ 80DB0A0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x24] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080DB0CA - strh r1, [r4, 0x2E] - strh r1, [r4, 0x24] - adds r0, r4, 0 - bl StartSpriteAnim -_080DB0CA: - ldrh r0, [r4, 0x3C] - subs r0, 0x1 - strh r0, [r4, 0x3C] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080DB0E2 - adds r0, r4, 0 - bl move_anim_8072740 -_080DB0E2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DB0A0 - - thumb_func_start sub_80DB0E8 -sub_80DB0E8: @ 80DB0E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080DB180 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r7, r0, r1 - ldrh r0, [r7, 0x8] - movs r1, 0x1F - ands r0, r1 - cmp r0, 0 - bne _080DB162 - ldr r1, _080DB184 @ =gAnimVisualTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r1, 0x8 - ldrsh r0, [r7, r1] - movs r5, 0xD - negs r5, r5 - adds r1, r5, 0 - bl Sin - ldr r4, _080DB188 @ =gBattleAnimArgs - strh r0, [r4] - movs r1, 0x8 - ldrsh r0, [r7, r1] - adds r1, r5, 0 - bl Cos - strh r0, [r4, 0x2] - movs r0, 0x1 - strh r0, [r4, 0x4] - movs r0, 0x3 - strh r0, [r4, 0x6] - ldr r0, _080DB18C @ =gBattleAnimSpriteTemplate_83DB538 - mov r8, r0 - ldr r5, _080DB190 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - mov r0, r8 - adds r1, r4, 0 - movs r3, 0x3 - bl CreateSpriteAndAnimate -_080DB162: - ldrh r0, [r7, 0x8] - adds r0, 0x8 - strh r0, [r7, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080DB176 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080DB176: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DB180: .4byte gTasks -_080DB184: .4byte gAnimVisualTaskCount -_080DB188: .4byte gBattleAnimArgs -_080DB18C: .4byte gBattleAnimSpriteTemplate_83DB538 -_080DB190: .4byte gBattleAnimBankTarget - thumb_func_end sub_80DB0E8 - - thumb_func_start sub_80DB194 -sub_80DB194: @ 80DB194 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DB1A6 - cmp r0, 0x1 - beq _080DB1D8 - b _080DB1EC -_080DB1A6: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80787B0 - movs r0, 0 - bl GetAnimBankSpriteId - ldr r2, _080DB1D4 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080DB1EC - .align 2, 0 -_080DB1D4: .4byte gSprites -_080DB1D8: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080DB1EC - adds r0, r4, 0 - bl move_anim_8072740 -_080DB1EC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DB194 - - thumb_func_start sub_80DB1F4 -sub_80DB1F4: @ 80DB1F4 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080DB22C - cmp r0, 0x1 - bgt _080DB20A - cmp r0, 0 - beq _080DB210 - b _080DB27E -_080DB20A: - cmp r0, 0x2 - beq _080DB240 - b _080DB27E -_080DB210: - ldr r0, _080DB228 @ =gBattleAnimBankTarget - ldrb r0, [r0] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - negs r0, r0 - subs r0, 0x20 - strh r0, [r4, 0x26] - b _080DB238 - .align 2, 0 -_080DB228: .4byte gBattleAnimBankTarget -_080DB22C: - ldrh r0, [r4, 0x26] - adds r0, 0xA - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - blt _080DB27E -_080DB238: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080DB27E -_080DB240: - ldrh r0, [r4, 0x26] - subs r0, 0xA - strh r0, [r4, 0x26] - movs r2, 0x22 - ldrsh r0, [r4, r2] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bge _080DB27E - movs r0, 0 - bl GetAnimBankSpriteId - ldr r2, _080DB284 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl move_anim_8072740 -_080DB27E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DB284: .4byte gSprites - thumb_func_end sub_80DB1F4 - - thumb_func_start sub_80DB288 -sub_80DB288: @ 80DB288 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r1, _080DB2C4 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldr r0, _080DB2C8 @ =sub_80DB2D0 - str r0, [r4, 0x1C] - movs r0, 0 - bl GetAnimBankSpriteId - ldr r2, _080DB2CC @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DB2C4: .4byte gBattleAnimArgs -_080DB2C8: .4byte sub_80DB2D0 -_080DB2CC: .4byte gSprites - thumb_func_end sub_80DB288 - - thumb_func_start sub_80DB2D0 -sub_80DB2D0: @ 80DB2D0 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - movs r3, 0x2E - ldrsh r0, [r2, r3] - cmp r0, 0 - ble _080DB2E4 - subs r0, r1, 0x1 - strh r0, [r2, 0x2E] - b _080DB328 -_080DB2E4: - movs r1, 0x22 - ldrsh r0, [r2, r1] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - ble _080DB30A - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r2, 0x26] - subs r1, r0 - strh r1, [r2, 0x26] - b _080DB328 -_080DB30A: - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] - ldrh r0, [r2, 0x34] - adds r1, r0, 0x1 - strh r1, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080DB328 - ldr r0, _080DB32C @ =sub_80DB330 - str r0, [r2, 0x1C] -_080DB328: - pop {r0} - bx r0 - .align 2, 0 -_080DB32C: .4byte sub_80DB330 - thumb_func_end sub_80DB2D0 - - thumb_func_start sub_80DB330 -sub_80DB330: @ 80DB330 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x32] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r2, 0x26] - adds r0, r1 - strh r0, [r2, 0x26] - movs r3, 0x22 - ldrsh r0, [r2, r3] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - ble _080DB360 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] -_080DB360: - movs r1, 0x26 - ldrsh r0, [r2, r1] - cmp r0, 0 - ble _080DB36E - adds r0, r2, 0 - bl move_anim_8072740 -_080DB36E: - pop {r0} - bx r0 - thumb_func_end sub_80DB330 - - thumb_func_start sub_80DB374 -sub_80DB374: @ 80DB374 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080DB388 - cmp r0, 0x1 - beq _080DB3E0 - b _080DB44C -_080DB388: - ldr r0, _080DB398 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _080DB3A0 - ldr r4, _080DB39C @ =gBattleAnimBankAttacker - b _080DB3A2 - .align 2, 0 -_080DB398: .4byte gBattleAnimArgs -_080DB39C: .4byte gBattleAnimBankAttacker -_080DB3A0: - ldr r4, _080DB3DC @ =gBattleAnimBankTarget -_080DB3A2: - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - movs r0, 0 - movs r3, 0x80 - lsls r3, 2 - strh r3, [r5, 0x30] - movs r2, 0x80 - lsls r2, 1 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0 - bl sub_8078FDC - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080DB44C - .align 2, 0 -_080DB3DC: .4byte gBattleAnimBankTarget -_080DB3E0: - movs r1, 0x32 - ldrsh r0, [r5, r1] - cmp r0, 0xB - bgt _080DB3EE - ldrh r0, [r5, 0x30] - subs r0, 0x28 - b _080DB3F2 -_080DB3EE: - ldrh r0, [r5, 0x30] - adds r0, 0x28 -_080DB3F2: - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - adds r0, 0x1 - movs r1, 0 - strh r0, [r5, 0x32] - movs r2, 0x80 - lsls r2, 1 - movs r0, 0x30 - ldrsh r3, [r5, r0] - str r1, [sp] - adds r0, r5, 0 - bl sub_8078FDC - ldrb r1, [r5, 0x3] - lsls r1, 26 - lsrs r1, 27 - movs r0, 0xF4 - lsls r0, 6 - ldr r2, _080DB454 @ =gOamMatrices - lsls r1, 3 - adds r1, r2 - movs r2, 0x6 - ldrsh r1, [r1, r2] - bl __divsi3 - adds r1, r0, 0x1 - cmp r1, 0x80 - ble _080DB42C - movs r1, 0x80 -_080DB42C: - movs r0, 0x40 - subs r0, r1 - lsrs r1, r0, 31 - adds r0, r1 - asrs r1, r0, 1 - strh r1, [r5, 0x26] - movs r1, 0x32 - ldrsh r0, [r5, r1] - cmp r0, 0x18 - bne _080DB44C - adds r0, r5, 0 - bl sub_8079098 - adds r0, r5, 0 - bl move_anim_8072740 -_080DB44C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DB454: .4byte gOamMatrices - thumb_func_end sub_80DB374 - - thumb_func_start sub_80DB458 -sub_80DB458: @ 80DB458 - push {r4,r5,lr} - adds r5, r0, 0 - bl Random - ldr r4, _080DB47C @ =0x000001ff - ands r4, r0 - bl Random - movs r1, 0x7F - ands r1, r0 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080DB480 - movs r2, 0xB8 - lsls r2, 2 - adds r0, r4, r2 - b _080DB488 - .align 2, 0 -_080DB47C: .4byte 0x000001ff -_080DB480: - movs r2, 0xB8 - lsls r2, 2 - adds r0, r2, 0 - subs r0, r4 -_080DB488: - strh r0, [r5, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DB49C - movs r2, 0xE0 - lsls r2, 2 - adds r0, r2, 0 - adds r0, r1, r0 - b _080DB4A4 -_080DB49C: - movs r2, 0xE0 - lsls r2, 2 - adds r0, r2, 0 - subs r0, r1 -_080DB4A4: - strh r0, [r5, 0x30] - ldr r2, _080DB4CC @ =gBattleAnimArgs - ldrh r0, [r2] - strh r0, [r5, 0x32] - lsls r0, 16 - cmp r0, 0 - beq _080DB4C0 - ldrb r0, [r5, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r5, 0x3] -_080DB4C0: - movs r1, 0x2 - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080DB4D4 - ldr r4, _080DB4D0 @ =gBattleAnimBankAttacker - b _080DB4D6 - .align 2, 0 -_080DB4CC: .4byte gBattleAnimArgs -_080DB4D0: .4byte gBattleAnimBankAttacker -_080DB4D4: - ldr r4, _080DB500 @ =gBattleAnimBankTarget -_080DB4D6: - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r5, 0x22] - ldr r0, _080DB504 @ =sub_80DB508 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DB500: .4byte gBattleAnimBankTarget -_080DB504: .4byte sub_80DB508 - thumb_func_end sub_80DB458 - - thumb_func_start sub_80DB508 -sub_80DB508: @ 80DB508 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DB520 - ldrh r3, [r4, 0x2E] - lsls r0, r3, 16 - asrs r0, 24 - ldrh r1, [r4, 0x24] - adds r0, r1 - b _080DB52A -_080DB520: - ldrh r3, [r4, 0x2E] - lsls r1, r3, 16 - asrs r1, 24 - ldrh r0, [r4, 0x24] - subs r0, r1 -_080DB52A: - strh r0, [r4, 0x24] - ldrh r2, [r4, 0x30] - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r4, 0x26] - subs r0, r1 - strh r0, [r4, 0x26] - strh r3, [r4, 0x2E] - adds r0, r2, 0 - subs r0, 0x20 - strh r0, [r4, 0x30] - lsls r0, r3, 16 - cmp r0, 0 - bge _080DB54A - movs r0, 0 - strh r0, [r4, 0x2E] -_080DB54A: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080DB55E - adds r0, r4, 0 - bl move_anim_8072740 -_080DB55E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DB508 - - thumb_func_start sub_80DB564 -sub_80DB564: @ 80DB564 - movs r1, 0 - strh r1, [r0, 0x3A] - movs r1, 0x40 - strh r1, [r0, 0x3C] - ldr r1, _080DB574 @ =sub_80DB578 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080DB574: .4byte sub_80DB578 - thumb_func_end sub_80DB564 - - thumb_func_start sub_80DB578 -sub_80DB578: @ 80DB578 - push {lr} - adds r3, r0, 0 - movs r0, 0x2E - ldrsh r1, [r3, r0] - cmp r1, 0 - beq _080DB58A - cmp r1, 0x1 - beq _080DB5D8 - b _080DB5DE -_080DB58A: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080DB5DE - strh r1, [r3, 0x30] - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - ldrb r2, [r1] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x32] - adds r0, 0x1 - strh r0, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080DB5DE - ldrb r1, [r1] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080DB5DE - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - b _080DB5DE -_080DB5D8: - adds r0, r3, 0 - bl move_anim_8072740 -_080DB5DE: - pop {r0} - bx r0 - thumb_func_end sub_80DB578 - - thumb_func_start sub_80DB5E4 -sub_80DB5E4: @ 80DB5E4 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - mov r8, r0 - ldrh r4, [r0, 0x20] - ldrh r5, [r0, 0x22] - ldr r6, _080DB698 @ =gBattleAnimBankAttacker - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - mov r1, r8 - strh r0, [r1, 0x20] - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8077ABC - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - mov r2, r8 - strh r6, [r2, 0x22] - ldrh r0, [r2, 0x20] - mov r9, r0 - mov r1, r9 - lsls r0, r1, 4 - strh r0, [r2, 0x36] - lsls r0, r6, 4 - strh r0, [r2, 0x38] - lsls r4, 16 - asrs r4, 16 - movs r1, 0x20 - ldrsh r0, [r2, r1] - subs r0, r4, r0 - lsls r0, 4 - movs r1, 0xC - bl __divsi3 - mov r2, r8 - strh r0, [r2, 0x3A] - lsls r5, 16 - asrs r5, 16 - movs r1, 0x22 - ldrsh r0, [r2, r1] - subs r0, r5, r0 - lsls r0, 4 - movs r1, 0xC - bl __divsi3 - mov r2, r8 - strh r0, [r2, 0x3C] - mov r0, r9 - subs r4, r0 - lsls r4, 16 - asrs r4, 16 - subs r5, r6 - lsls r5, 16 - asrs r5, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80790F0 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - mov r0, r8 - movs r1, 0x1 - adds r2, r3, 0 - bl sub_8078FDC - ldr r0, _080DB69C @ =sub_80DB6A0 - mov r2, r8 - str r0, [r2, 0x1C] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DB698: .4byte gBattleAnimBankAttacker -_080DB69C: .4byte sub_80DB6A0 - thumb_func_end sub_80DB5E4 - - thumb_func_start sub_80DB6A0 -sub_80DB6A0: @ 80DB6A0 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x3A] - ldrh r1, [r2, 0x36] - adds r0, r1 - strh r0, [r2, 0x36] - ldrh r1, [r2, 0x3C] - ldrh r3, [r2, 0x38] - adds r1, r3 - strh r1, [r2, 0x38] - lsls r0, 16 - asrs r0, 20 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r3, r1, 20 - strh r3, [r2, 0x22] - adds r0, 0x2D - lsls r0, 16 - movs r1, 0xA5 - lsls r1, 17 - cmp r0, r1 - bhi _080DB6DA - adds r1, r3, 0 - cmp r1, 0x9D - bgt _080DB6DA - movs r0, 0x2D - negs r0, r0 - cmp r1, r0 - bge _080DB6E0 -_080DB6DA: - adds r0, r2, 0 - bl move_anim_8074EE0 -_080DB6E0: - pop {r0} - bx r0 - thumb_func_end sub_80DB6A0 - - thumb_func_start unref_sub_80DB6E4 -unref_sub_80DB6E4: @ 80DB6E4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080DB714 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DB71C - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DB718 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - b _080DB73A - .align 2, 0 -_080DB714: .4byte gBattleAnimArgs -_080DB718: .4byte gSprites -_080DB71C: - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DB748 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 -_080DB73A: - strb r0, [r1] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DB748: .4byte gSprites - thumb_func_end unref_sub_80DB6E4 - - thumb_func_start sub_80DB74C -sub_80DB74C: @ 80DB74C - push {r4-r7,lr} - adds r6, r0, 0 - ldr r0, _080DB804 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DB768 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DB77E -_080DB768: - ldrb r1, [r6, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r6, 0x5] - adds r1, r6, 0 - adds r1, 0x43 - movs r0, 0xC8 - strb r0, [r1] -_080DB77E: - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080DB7DA - movs r0, 0x1 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r4, r0, 24 - adds r7, r4, 0 - adds r0, r4, 0 - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - eors r0, r1 - negs r1, r0 - orrs r1, r0 - lsrs r5, r1, 31 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080DB7BC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8076034 -_080DB7BC: - movs r0, 0x2 - adds r4, r0, 0 - eors r4, r7 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080DB7DA - movs r0, 0x1 - eors r5, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8076034 -_080DB7DA: - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080DB810 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080DB810 - ldr r0, _080DB804 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DB808 - movs r0, 0x48 - strh r0, [r6, 0x20] - movs r0, 0x50 - b _080DB84A - .align 2, 0 -_080DB804: .4byte gBattleAnimBankAttacker -_080DB808: - movs r0, 0xB0 - strh r0, [r6, 0x20] - movs r0, 0x28 - b _080DB84A -_080DB810: - ldr r5, _080DB880 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DB826 - ldr r1, _080DB884 @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_080DB826: - ldrb r0, [r5] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080DB884 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 -_080DB84A: - strh r0, [r6, 0x22] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DB85C - ldrh r0, [r6, 0x22] - adds r0, 0x9 - strh r0, [r6, 0x22] -_080DB85C: - ldr r0, _080DB884 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r6, 0x2E] - ldr r1, _080DB888 @ =sub_80DB88C - str r1, [r6, 0x1C] - adds r0, r6, 0 - bl _call_via_r1 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DB880: .4byte gBattleAnimBankAttacker -_080DB884: .4byte gBattleAnimArgs -_080DB888: .4byte sub_80DB88C - thumb_func_end sub_80DB74C - - thumb_func_start sub_80DB88C -sub_80DB88C: @ 80DB88C - push {lr} - adds r3, r0, 0 - ldr r2, _080DB8B0 @ =REG_BLDALPHA - ldrh r1, [r3, 0x34] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r0, r1 - strh r0, [r2] - ldrh r1, [r3, 0x34] - movs r2, 0x34 - ldrsh r0, [r3, r2] - cmp r0, 0xD - bne _080DB8B8 - ldr r0, _080DB8B4 @ =sub_80DB8C0 - str r0, [r3, 0x1C] - b _080DB8BC - .align 2, 0 -_080DB8B0: .4byte REG_BLDALPHA -_080DB8B4: .4byte sub_80DB8C0 -_080DB8B8: - adds r0, r1, 0x1 - strh r0, [r3, 0x34] -_080DB8BC: - pop {r0} - bx r0 - thumb_func_end sub_80DB88C - - thumb_func_start sub_80DB8C0 -sub_80DB8C0: @ 80DB8C0 - push {r4-r7,lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080DB91E - movs r0, 0 - strh r0, [r3, 0x30] - ldrh r4, [r3, 0x2E] - ldr r1, _080DB924 @ =gPlttBufferFaded - adds r0, r4, 0 - adds r0, 0x8 - lsls r0, 1 - adds r0, r1 - ldrh r7, [r0] - movs r5, 0x8 - adds r6, r1, 0 - adds r1, r4, 0x7 - lsls r0, r4, 1 - adds r0, r6 - adds r2, r0, 0 - adds r2, 0x10 - lsls r1, 1 - adds r1, r6 -_080DB8F6: - ldrh r0, [r1] - strh r0, [r2] - subs r1, 0x2 - subs r2, 0x2 - subs r5, 0x1 - cmp r5, 0 - bgt _080DB8F6 - adds r0, r4, 0x1 - lsls r0, 1 - adds r0, r6 - strh r7, [r0] - ldrh r0, [r3, 0x32] - adds r0, 0x1 - strh r0, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - bne _080DB91E - ldr r0, _080DB928 @ =sub_80DB92C - str r0, [r3, 0x1C] -_080DB91E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DB924: .4byte gPlttBufferFaded -_080DB928: .4byte sub_80DB92C - thumb_func_end sub_80DB8C0 - - thumb_func_start sub_80DB92C -sub_80DB92C: @ 80DB92C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r2, _080DB9D4 @ =REG_BLDALPHA - ldrh r1, [r5, 0x34] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r5, 0x34] - subs r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080DB9CC - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080DB9BC - movs r0, 0x1 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080DB98E - ldr r2, _080DB9D8 @ =gSprites - ldr r0, _080DB9DC @ =gObjectBankIDs - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_080DB98E: - movs r0, 0x2 - adds r4, r0, 0 - eors r4, r6 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080DB9BC - ldr r2, _080DB9D8 @ =gSprites - ldr r0, _080DB9DC @ =gObjectBankIDs - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_080DB9BC: - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DB9E0 @ =sub_80DB9E4 - str r0, [r5, 0x1C] -_080DB9CC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DB9D4: .4byte REG_BLDALPHA -_080DB9D8: .4byte gSprites -_080DB9DC: .4byte gObjectBankIDs -_080DB9E0: .4byte sub_80DB9E4 - thumb_func_end sub_80DB92C - - thumb_func_start sub_80DB9E4 -sub_80DB9E4: @ 80DB9E4 - push {r4-r6,lr} - adds r6, r0, 0 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080DBA3C - movs r0, 0x1 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - eors r0, r1 - negs r1, r0 - orrs r1, r0 - lsrs r5, r1, 31 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080DBA22 - adds r0, r5, 0 - bl sub_8076464 -_080DBA22: - movs r0, 0x2 - eors r4, r0 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080DBA3C - movs r0, 0x1 - eors r5, r0 - adds r0, r5, 0 - bl sub_8076464 -_080DBA3C: - ldr r0, _080DBA48 @ =move_anim_8072740 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DBA48: .4byte move_anim_8072740 - thumb_func_end sub_80DB9E4 - - thumb_func_start sub_80DBA4C -sub_80DBA4C: @ 80DBA4C - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DBAD8 - ldr r5, _080DBA98 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r5, r1] - movs r6, 0 - cmp r0, 0 - bne _080DBA66 - movs r6, 0x1 -_080DBA66: - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080DBAAE - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080DBAAE - ldr r0, _080DBA9C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DBAA0 - ldrh r0, [r5] - movs r1, 0x48 - subs r1, r0 - strh r1, [r4, 0x20] - ldrh r0, [r5, 0x2] - adds r0, 0x50 - strh r0, [r4, 0x22] - b _080DBAD0 - .align 2, 0 -_080DBA98: .4byte gBattleAnimArgs -_080DBA9C: .4byte gBattleAnimBankAttacker -_080DBAA0: - ldrh r0, [r5] - adds r0, 0xB0 - strh r0, [r4, 0x20] - ldrh r0, [r5, 0x2] - adds r0, 0x28 - strh r0, [r4, 0x22] - b _080DBAD0 -_080DBAAE: - ldr r0, _080DBAC4 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DBAC8 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_80787B0 - b _080DBAD0 - .align 2, 0 -_080DBAC4: .4byte gBattleAnimArgs -_080DBAC8: - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8078764 -_080DBAD0: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080DBAEC -_080DBAD8: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x30 - ands r0, r1 - cmp r0, 0 - beq _080DBAEC - adds r0, r4, 0 - bl move_anim_8074EE0 -_080DBAEC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80DBA4C - - thumb_func_start sub_80DBAF4 -sub_80DBAF4: @ 80DBAF4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080DBB3C @ =gBattleAnimBankAttacker - 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] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DBB44 - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldrh r0, [r5, 0x20] - subs r0, 0x28 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x22] - adds r0, 0xA - strh r0, [r5, 0x22] - ldr r0, _080DBB40 @ =0x0000ffff - b _080DBB52 - .align 2, 0 -_080DBB3C: .4byte gBattleAnimBankAttacker -_080DBB40: .4byte 0x0000ffff -_080DBB44: - ldrh r0, [r5, 0x20] - adds r0, 0x28 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x22] - subs r0, 0xA - strh r0, [r5, 0x22] - movs r0, 0x1 -_080DBB52: - strh r0, [r5, 0x30] - ldr r1, _080DBB68 @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldr r0, _080DBB6C @ =sub_8078600 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DBB68: .4byte move_anim_8072740 -_080DBB6C: .4byte sub_8078600 - thumb_func_end sub_80DBAF4 - - thumb_func_start sub_80DBB70 -sub_80DBB70: @ 80DBB70 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r6, _080DBBF4 @ =gBattleAnimBankAttacker - ldrb r0, [r6] - movs r1, 0x1 - bl sub_807A100 - lsls r0, 16 - asrs r1, r0, 16 - lsrs r0, 31 - adds r1, r0 - lsls r1, 15 - lsrs r4, r1, 16 - ldrb r0, [r6] - movs r1, 0 - bl sub_807A100 - lsls r0, 16 - asrs r1, r0, 16 - lsrs r0, 31 - adds r1, r0 - asrs r1, 1 - negs r1, r1 - lsls r1, 16 - lsrs r7, r1, 16 - ldrb r0, [r6] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DBBB6 - lsls r0, r4, 16 - negs r0, r0 - lsrs r4, r0, 16 -_080DBBB6: - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - strh r0, [r5, 0x20] - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, r7 - strh r0, [r5, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bgt _080DBBE2 - movs r0, 0x10 - strh r0, [r5, 0x22] -_080DBBE2: - ldr r1, _080DBBF8 @ =sub_80DBC00 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldr r0, _080DBBFC @ =sub_8078600 - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DBBF4: .4byte gBattleAnimBankAttacker -_080DBBF8: .4byte sub_80DBC00 -_080DBBFC: .4byte sub_8078600 - thumb_func_end sub_80DBB70 - - thumb_func_start sub_80DBC00 -sub_80DBC00: @ 80DBC00 - push {r4,lr} - adds r4, r0, 0 - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - ldr r0, _080DBC2C @ =gUnknown_083DA888 - str r0, [r4, 0x10] - movs r0, 0 - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl InitSpriteAffineAnim - ldr r0, _080DBC30 @ =sub_80DBC34 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DBC2C: .4byte gUnknown_083DA888 -_080DBC30: .4byte sub_80DBC34 - thumb_func_end sub_80DBC00 - - thumb_func_start sub_80DBC34 -sub_80DBC34: @ 80DBC34 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DBC46 - cmp r0, 0x1 - beq _080DBC74 - b _080DBC8C -_080DBC46: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080DBC8C - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x1] - movs r0, 0x12 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080DBC8C -_080DBC74: - ldrh r0, [r4, 0x30] - subs r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080DBC8C - adds r0, r4, 0 - bl move_anim_8072740 -_080DBC8C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DBC34 - - thumb_func_start sub_80DBC94 -sub_80DBC94: @ 80DBC94 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080DBCC4 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x8] - ldr r2, _080DBCC8 @ =gUnknown_083DA8A4 - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _080DBCCC @ =sub_80DBCD0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DBCC4: .4byte gTasks -_080DBCC8: .4byte gUnknown_083DA8A4 -_080DBCCC: .4byte sub_80DBCD0 - thumb_func_end sub_80DBC94 - - thumb_func_start sub_80DBCD0 -sub_80DBCD0: @ 80DBCD0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080DBCF8 @ =gTasks - adds r0, r1 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _080DBCF0 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080DBCF0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DBCF8: .4byte gTasks - thumb_func_end sub_80DBCD0 - - thumb_func_start sub_80DBCFC -sub_80DBCFC: @ 80DBCFC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080DBD48 @ =gTasks - adds r4, r1, r0 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - strh r0, [r4, 0x8] - strh r1, [r4, 0xA] - strh r1, [r4, 0xC] - ldr r0, _080DBD4C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - movs r1, 0x8 - cmp r0, 0 - beq _080DBD30 - movs r1, 0x4 -_080DBD30: - strh r1, [r4, 0xE] - ldrb r1, [r4, 0x8] - ldr r2, _080DBD50 @ =gUnknown_083DA8C4 - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _080DBD54 @ =sub_80DBD58 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DBD48: .4byte gTasks -_080DBD4C: .4byte gBattleAnimBankAttacker -_080DBD50: .4byte gUnknown_083DA8C4 -_080DBD54: .4byte sub_80DBD58 - thumb_func_end sub_80DBCFC - - thumb_func_start sub_80DBD58 -sub_80DBD58: @ 80DBD58 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080DBD78 @ =gTasks - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DBD7C - cmp r0, 0x1 - beq _080DBD98 - b _080DBDF6 - .align 2, 0 -_080DBD78: .4byte gTasks -_080DBD7C: - adds r0, r4, 0 - bl sub_807992C - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080DBDF6 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080DBDF6 -_080DBD98: - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DBDC0 - ldr r2, _080DBDBC @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - subs r1, 0x8 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - b _080DBDF6 - .align 2, 0 -_080DBDBC: .4byte gSprites -_080DBDC0: - ldr r3, _080DBDFC @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0x88 - lsls r1, 1 - strh r1, [r0, 0x20] - ldrb r0, [r4, 0x8] - bl sub_8078F40 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DBDF6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DBDFC: .4byte gSprites - thumb_func_end sub_80DBD58 - - thumb_func_start sub_80DBE00 -sub_80DBE00: @ 80DBE00 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080DBE84 @ =gTasks - adds r5, r1, r0 - movs r0, 0 - movs r7, 0x10 - strh r7, [r5, 0xE] - strh r0, [r5, 0x10] - ldr r4, _080DBE88 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x24] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_807A100 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - ldrb r0, [r4] - movs r1, 0 - bl sub_807A100 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - adds r1, r0, 0 - cmp r0, r6 - bcs _080DBE6A - adds r1, r6, 0 -_080DBE6A: - strh r1, [r5, 0x20] - ldr r1, _080DBE8C @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080DBE90 @ =REG_BLDALPHA - strh r7, [r0] - ldr r0, _080DBE94 @ =sub_80DBE98 - str r0, [r5] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DBE84: .4byte gTasks -_080DBE88: .4byte gBattleAnimBankAttacker -_080DBE8C: .4byte REG_BLDCNT -_080DBE90: .4byte REG_BLDALPHA -_080DBE94: .4byte sub_80DBE98 - thumb_func_end sub_80DBE00 - - thumb_func_start sub_80DBE98 -sub_80DBE98: @ 80DBE98 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080DBEBC @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080DBF98 - cmp r1, 0x1 - bgt _080DBEC0 - cmp r1, 0 - beq _080DBECE - b _080DC014 - .align 2, 0 -_080DBEBC: .4byte gTasks -_080DBEC0: - cmp r1, 0x2 - bne _080DBEC6 - b _080DBFF4 -_080DBEC6: - cmp r1, 0x3 - bne _080DBECC - b _080DC004 -_080DBECC: - b _080DC014 -_080DBECE: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - bgt _080DBEDE - b _080DC014 -_080DBEDE: - strh r1, [r4, 0xA] - ldr r0, _080DBF1C @ =gSpriteTemplate_83DA8DC - movs r2, 0x22 - ldrsh r1, [r4, r2] - movs r3, 0x24 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - movs r0, 0xC - ldrsh r1, [r4, r0] - adds r1, 0x8 - lsls r1, 1 - adds r0, r4, 0 - adds r0, 0x8 - adds r0, r1 - strh r2, [r0] - cmp r2, 0x40 - beq _080DBF82 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080DBF3C - cmp r0, 0x1 - bgt _080DBF20 - cmp r0, 0 - beq _080DBF2A - b _080DBF82 - .align 2, 0 -_080DBF1C: .4byte gSpriteTemplate_83DA8DC -_080DBF20: - cmp r0, 0x2 - beq _080DBF54 - cmp r0, 0x3 - beq _080DBF6C - b _080DBF82 -_080DBF2A: - ldr r0, _080DBF38 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r4, 0x20] - b _080DBF7A - .align 2, 0 -_080DBF38: .4byte gSprites -_080DBF3C: - ldr r0, _080DBF50 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r4, 0x20] - negs r0, r0 - strh r0, [r1, 0x24] - ldrh r0, [r4, 0x20] - b _080DBF80 - .align 2, 0 -_080DBF50: .4byte gSprites -_080DBF54: - ldr r1, _080DBF68 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r4, 0x20] - strh r1, [r0, 0x24] - ldrh r1, [r4, 0x20] - strh r1, [r0, 0x26] - b _080DBF82 - .align 2, 0 -_080DBF68: .4byte gSprites -_080DBF6C: - ldr r0, _080DBF94 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r4, 0x20] - negs r0, r0 -_080DBF7A: - strh r0, [r1, 0x24] - ldrh r0, [r4, 0x20] - negs r0, r0 -_080DBF80: - strh r0, [r1, 0x26] -_080DBF82: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080DC014 - b _080DBFF4 - .align 2, 0 -_080DBF94: .4byte gSprites -_080DBF98: - ldrh r0, [r4, 0xA] - ands r1, r0 - cmp r1, 0 - beq _080DBFA8 - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - b _080DBFAE -_080DBFA8: - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] -_080DBFAE: - ldr r2, _080DBFFC @ =REG_BLDALPHA - ldrh r0, [r4, 0x10] - lsls r0, 8 - ldrh r1, [r4, 0xE] - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - bne _080DC014 - movs r5, 0x8 - adds r6, r4, 0 - adds r6, 0x8 -_080DBFCE: - lsls r0, r5, 1 - adds r1, r6, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x40 - beq _080DBFEA - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080DC000 @ =gSprites - adds r0, r1 - bl DestroySprite -_080DBFEA: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xC - bls _080DBFCE -_080DBFF4: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DC014 - .align 2, 0 -_080DBFFC: .4byte REG_BLDALPHA -_080DC000: .4byte gSprites -_080DC004: - ldr r0, _080DC01C @ =REG_BLDALPHA - movs r1, 0 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080DC014: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DC01C: .4byte REG_BLDALPHA - thumb_func_end sub_80DBE98 - - thumb_func_start sub_80DC020 -sub_80DC020: @ 80DC020 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x30 - ldrsh r1, [r4, r0] - movs r2, 0x2E - ldrsh r0, [r4, r2] - subs r0, 0xA - cmp r1, r0 - ble _080DC04A - ldrh r0, [r4, 0x30] - movs r1, 0x1 - ands r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080DC04A: - movs r0, 0x30 - ldrsh r1, [r4, r0] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080DC05C - adds r0, r4, 0 - bl move_anim_8072740 -_080DC05C: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DC020 - - thumb_func_start sub_80DC068 -sub_80DC068: @ 80DC068 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080DC0A4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080DC094 - ldr r4, _080DC0A8 @ =gBattleAnimBankAttacker - 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] -_080DC094: - ldrh r0, [r6, 0x2] - strh r0, [r5, 0x2E] - ldr r0, _080DC0AC @ =sub_80DC020 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DC0A4: .4byte gBattleAnimArgs -_080DC0A8: .4byte gBattleAnimBankAttacker -_080DC0AC: .4byte sub_80DC020 - thumb_func_end sub_80DC068 - - thumb_func_start sub_80DC0B0 -sub_80DC0B0: @ 80DC0B0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080DC10C @ =gTasks - adds r5, r1, r0 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DC154 - ldr r0, _080DC110 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bne _080DC120 - ldr r0, _080DC114 @ =0x0000fff6 - strh r0, [r5, 0x1C] - ldr r4, _080DC118 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x5 - bl sub_807A100 - subs r0, 0x8 - strh r0, [r5, 0x1E] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_807A100 - adds r0, 0x8 - strh r0, [r5, 0x20] - ldr r4, _080DC11C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x5 - bl sub_807A100 - subs r0, 0x8 - strh r0, [r5, 0x22] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_807A100 - adds r0, 0x8 - b _080DC1DE - .align 2, 0 -_080DC10C: .4byte gTasks -_080DC110: .4byte gBattleAnimArgs -_080DC114: .4byte 0x0000fff6 -_080DC118: .4byte gBattleAnimBankTarget -_080DC11C: .4byte gBattleAnimBankAttacker -_080DC120: - movs r0, 0xA - strh r0, [r5, 0x1C] - ldr r4, _080DC14C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x4 - bl sub_807A100 - adds r0, 0x8 - strh r0, [r5, 0x1E] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_807A100 - subs r0, 0x8 - strh r0, [r5, 0x20] - ldr r4, _080DC150 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x4 - bl sub_807A100 - adds r0, 0x8 - b _080DC1D2 - .align 2, 0 -_080DC14C: .4byte gBattleAnimBankAttacker -_080DC150: .4byte gBattleAnimBankTarget -_080DC154: - ldr r0, _080DC198 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bne _080DC1A8 - ldr r0, _080DC19C @ =0x0000fff6 - strh r0, [r5, 0x1C] - ldr r4, _080DC1A0 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x4 - bl sub_807A100 - adds r0, 0x8 - strh r0, [r5, 0x1E] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_807A100 - adds r0, 0x8 - strh r0, [r5, 0x20] - ldr r4, _080DC1A4 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x4 - bl sub_807A100 - adds r0, 0x8 - strh r0, [r5, 0x22] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_807A100 - adds r0, 0x8 - b _080DC1DE - .align 2, 0 -_080DC198: .4byte gBattleAnimArgs -_080DC19C: .4byte 0x0000fff6 -_080DC1A0: .4byte gBattleAnimBankTarget -_080DC1A4: .4byte gBattleAnimBankAttacker -_080DC1A8: - movs r0, 0xA - strh r0, [r5, 0x1C] - ldr r4, _080DC1F0 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x5 - bl sub_807A100 - subs r0, 0x8 - strh r0, [r5, 0x1E] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_807A100 - subs r0, 0x8 - strh r0, [r5, 0x20] - ldr r4, _080DC1F4 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x5 - bl sub_807A100 - subs r0, 0x8 -_080DC1D2: - strh r0, [r5, 0x22] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_807A100 - subs r0, 0x8 -_080DC1DE: - strh r0, [r5, 0x24] - movs r0, 0x6 - strh r0, [r5, 0xA] - ldr r0, _080DC1F8 @ =sub_80DC1FC - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DC1F0: .4byte gBattleAnimBankAttacker -_080DC1F4: .4byte gBattleAnimBankTarget -_080DC1F8: .4byte sub_80DC1FC - thumb_func_end sub_80DC0B0 - - thumb_func_start sub_80DC1FC -sub_80DC1FC: @ 80DC1FC - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080DC21C @ =gTasks - adds r5, r0, r1 - movs r0, 0x8 - ldrsh r1, [r5, r0] - cmp r1, 0 - beq _080DC220 - cmp r1, 0x1 - beq _080DC294 - b _080DC2A8 - .align 2, 0 -_080DC21C: .4byte gTasks -_080DC220: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080DC2A8 - strh r1, [r5, 0xA] - ldr r0, _080DC28C @ =gSpriteTemplate_83DA9AC - movs r2, 0x1E - ldrsh r1, [r5, r2] - movs r3, 0x20 - ldrsh r2, [r5, r3] - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080DC274 - ldr r0, _080DC290 @ =gSprites - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - adds r4, r0 - movs r0, 0x10 - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x22] - strh r0, [r4, 0x32] - ldrh r0, [r5, 0x24] - strh r0, [r4, 0x36] - ldrh r0, [r5, 0x1C] - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl sub_80786EC - ldrb r0, [r5, 0xC] - movs r1, 0x3 - ands r1, r0 - adds r0, r4, 0 - bl StartSpriteAffineAnim -_080DC274: - ldrh r0, [r5, 0xC] - adds r0, 0x1 - strh r0, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - bne _080DC2A8 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080DC2A8 - .align 2, 0 -_080DC28C: .4byte gSpriteTemplate_83DA9AC -_080DC290: .4byte gSprites -_080DC294: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x11 - ble _080DC2A8 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080DC2A8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DC1FC - - thumb_func_start sub_80DC2B0 -sub_80DC2B0: @ 80DC2B0 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080DC2CE - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080DC2CE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DC2B0 - - thumb_func_start sub_80DC2D4 -sub_80DC2D4: @ 80DC2D4 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080DC30C @ =gTasks - adds r4, r1, r0 - ldr r0, _080DC310 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8077FC0 - lsls r0, 24 - lsrs r1, r0, 24 - adds r0, r1, 0 - subs r0, 0x20 - strh r0, [r4, 0x24] - ldr r0, _080DC314 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0x1 - beq _080DC32A - cmp r0, 0x1 - bgt _080DC318 - cmp r0, 0 - beq _080DC31E - b _080DC346 - .align 2, 0 -_080DC30C: .4byte gTasks -_080DC310: .4byte gBattleAnimBankTarget -_080DC314: .4byte gBattleAnimArgs -_080DC318: - cmp r0, 0x2 - beq _080DC336 - b _080DC346 -_080DC31E: - movs r0, 0x2 - strh r0, [r4, 0x1E] - movs r0, 0x5 - strh r0, [r4, 0x20] - movs r0, 0x40 - b _080DC33E -_080DC32A: - movs r0, 0x2 - strh r0, [r4, 0x1E] - movs r0, 0x5 - strh r0, [r4, 0x20] - movs r0, 0xC0 - b _080DC33E -_080DC336: - movs r0, 0x4 - strh r0, [r4, 0x1E] - strh r0, [r4, 0x20] - movs r0, 0 -_080DC33E: - strh r0, [r4, 0x22] - adds r0, r1, 0 - adds r0, 0x20 - strh r0, [r4, 0x26] -_080DC346: - movs r1, 0x24 - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080DC352 - movs r0, 0 - strh r0, [r4, 0x24] -_080DC352: - ldr r0, _080DC36C @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DC378 - ldr r0, _080DC370 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r4, 0x1C] - ldr r0, _080DC374 @ =REG_BG1HOFS - b _080DC380 - .align 2, 0 -_080DC36C: .4byte gBattleAnimBankTarget -_080DC370: .4byte gUnknown_030042C0 -_080DC374: .4byte REG_BG1HOFS -_080DC378: - ldr r0, _080DC3E0 @ =gUnknown_03004288 - ldrh r0, [r0] - strh r0, [r4, 0x1C] - ldr r0, _080DC3E4 @ =REG_BG2HOFS -_080DC380: - str r0, [sp] - ldrh r1, [r4, 0x24] - lsls r3, r1, 16 - asrs r1, r3, 16 - movs r2, 0x24 - ldrsh r0, [r4, r2] - adds r0, 0x40 - cmp r1, r0 - bgt _080DC3BA - ldr r5, _080DC3E8 @ =gUnknown_03004DE0 - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_080DC39A: - asrs r3, 16 - lsls r1, r3, 1 - adds r2, r1, r5 - ldrh r0, [r4, 0x1C] - strh r0, [r2] - adds r1, r6 - ldrh r0, [r4, 0x1C] - strh r0, [r1] - adds r3, 0x1 - lsls r3, 16 - asrs r1, r3, 16 - movs r2, 0x24 - ldrsh r0, [r4, r2] - adds r0, 0x40 - cmp r1, r0 - ble _080DC39A -_080DC3BA: - ldr r0, _080DC3EC @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r2, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r2, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl sub_80895F8 - ldr r0, _080DC3F0 @ =sub_80DC3F4 - str r0, [r4] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DC3E0: .4byte gUnknown_03004288 -_080DC3E4: .4byte REG_BG2HOFS -_080DC3E8: .4byte gUnknown_03004DE0 -_080DC3EC: .4byte 0xa2600001 -_080DC3F0: .4byte sub_80DC3F4 - thumb_func_end sub_80DC2D4 - - thumb_func_start sub_80DC3F4 -sub_80DC3F4: @ 80DC3F4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080DC41C @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080DC4CE - cmp r0, 0x1 - bgt _080DC420 - cmp r0, 0 - beq _080DC426 - b _080DC4E6 - .align 2, 0 -_080DC41C: .4byte gTasks -_080DC420: - cmp r0, 0x2 - beq _080DC4E0 - b _080DC4E6 -_080DC426: - ldrh r3, [r5, 0x22] - ldrh r4, [r5, 0x24] - movs r2, 0x24 - ldrsh r1, [r5, r2] - movs r2, 0x26 - ldrsh r0, [r5, r2] - cmp r1, r0 - bgt _080DC4BE - ldr r0, _080DC470 @ =gSineTable - mov r9, r0 - movs r7, 0x3 - ldr r1, _080DC474 @ =gUnknown_03004DE0 - mov r12, r1 - movs r2, 0xF0 - lsls r2, 3 - add r2, r12 - mov r8, r2 -_080DC448: - lsls r2, r3, 16 - asrs r0, r2, 15 - add r0, r9 - movs r3, 0 - ldrsh r0, [r0, r3] - movs r3, 0x20 - ldrsh r1, [r5, r3] - asrs r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - asrs r3, r0, 16 - adds r6, r2, 0 - cmp r3, 0 - ble _080DC478 - ldrh r1, [r5, 0xA] - adds r0, r7, 0 - ands r0, r1 - adds r0, r3, r0 - b _080DC484 - .align 2, 0 -_080DC470: .4byte gSineTable -_080DC474: .4byte gUnknown_03004DE0 -_080DC478: - cmp r3, 0 - bge _080DC488 - ldrh r1, [r5, 0xA] - adds r0, r7, 0 - ands r0, r1 - subs r0, r3, r0 -_080DC484: - lsls r0, 16 - lsrs r1, r0, 16 -_080DC488: - lsls r2, r4, 16 - asrs r2, 16 - lsls r3, r2, 1 - mov r0, r12 - adds r4, r3, r0 - ldrh r0, [r5, 0x1C] - lsls r1, 16 - asrs r1, 16 - adds r0, r1, r0 - strh r0, [r4] - add r3, r8 - ldrh r0, [r5, 0x1C] - adds r1, r0 - strh r1, [r3] - asrs r0, r6, 16 - ldrh r1, [r5, 0x1E] - adds r0, r1 - lsls r0, 16 - lsrs r3, r0, 16 - adds r2, 0x1 - lsls r2, 16 - lsrs r4, r2, 16 - asrs r2, 16 - movs r1, 0x26 - ldrsh r0, [r5, r1] - cmp r2, r0 - ble _080DC448 -_080DC4BE: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x17 - ble _080DC4E6 - b _080DC4D4 -_080DC4CE: - ldr r1, _080DC4DC @ =gUnknown_03004DC0 - movs r0, 0x3 - strb r0, [r1, 0x15] -_080DC4D4: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080DC4E6 - .align 2, 0 -_080DC4DC: .4byte gUnknown_03004DC0 -_080DC4E0: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080DC4E6: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80DC3F4 - - thumb_func_start sub_80DC4F4 -sub_80DC4F4: @ 80DC4F4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - mov r8, r4 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080DC528 @ =gTasks - adds r7, r0, r1 - bl AllocOamMatrix - lsls r0, 24 - lsrs r5, r0, 24 - mov r10, r5 - adds r6, r5, 0 - cmp r6, 0xFF - bne _080DC52C - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080DC5D6 - .align 2, 0 -_080DC528: .4byte gTasks -_080DC52C: - ldr r1, _080DC550 @ =gBattleAnimArgs - ldrb r0, [r1] - bl duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - lsrs r1, r0, 16 - mov r9, r1 - asrs r0, 16 - cmp r0, 0 - bge _080DC554 - adds r0, r5, 0 - bl FreeOamMatrix - mov r0, r8 - bl DestroyAnimVisualTask - b _080DC5D6 - .align 2, 0 -_080DC550: .4byte gBattleAnimArgs -_080DC554: - ldr r2, _080DC5E4 @ =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r0, r2, 0 - adds r0, 0x1C - adds r0, r4, r0 - ldr r1, _080DC5E8 @ =SpriteCallbackDummy - str r1, [r0] - adds r4, r2 - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r0, 0x1F - ands r6, r0 - lsls r2, r6, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - adds r1, r4, 0 - adds r1, 0x43 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r1, r9 - lsls r0, r1, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r3, [r4, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r4, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r4, 0 - bl CalcCenterToCornerVec - ldr r1, _080DC5EC @ =gBattleAnimArgs - ldrb r0, [r1] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x22] - mov r0, r10 - strh r0, [r7, 0x24] - mov r1, r9 - strh r1, [r7, 0x26] - ldr r0, _080DC5F0 @ =sub_80DC5F4 - str r0, [r7] -_080DC5D6: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DC5E4: .4byte gSprites -_080DC5E8: .4byte SpriteCallbackDummy -_080DC5EC: .4byte gBattleAnimArgs -_080DC5F0: .4byte sub_80DC5F4 - thumb_func_end sub_80DC4F4 - - thumb_func_start sub_80DC5F4 -sub_80DC5F4: @ 80DC5F4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080DC618 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080DC678 - cmp r0, 0x1 - bgt _080DC61C - cmp r0, 0 - beq _080DC626 - b _080DC6F8 - .align 2, 0 -_080DC618: .4byte gTasks -_080DC61C: - cmp r0, 0x2 - beq _080DC6C8 - cmp r0, 0x3 - beq _080DC6E8 - b _080DC6F8 -_080DC626: - ldrh r0, [r4, 0xA] - adds r0, 0x4 - strh r0, [r4, 0xA] - ldr r1, _080DC674 @ =gSineTable - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - lsls r1, 16 - asrs r1, 17 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - subs r0, r1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xC - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x22] - lsls r1, 24 - lsrs r1, 24 - bl sub_8079AB8 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0x30 - bne _080DC6F8 - b _080DC6DA - .align 2, 0 -_080DC674: .4byte gSineTable -_080DC678: - ldrh r0, [r4, 0xA] - subs r0, 0x4 - strh r0, [r4, 0xA] - ldr r1, _080DC6C4 @ =gSineTable - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - lsls r1, 16 - asrs r1, 17 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - subs r0, r1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xC - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x22] - lsls r1, 24 - lsrs r1, 24 - bl sub_8079AB8 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080DC6F8 - b _080DC6DA - .align 2, 0 -_080DC6C4: .4byte gSineTable -_080DC6C8: - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080DC6E4 @ =gSprites - adds r0, r1 - bl obj_delete_but_dont_free_vram -_080DC6DA: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DC6F8 - .align 2, 0 -_080DC6E4: .4byte gSprites -_080DC6E8: - ldrh r0, [r4, 0x24] - lsls r0, 24 - lsrs r0, 24 - bl FreeOamMatrix - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DC6F8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DC5F4 - - thumb_func_start sub_80DC700 -sub_80DC700: @ 80DC700 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080DC778 - cmp r0, 0x1 - bgt _080DC716 - cmp r0, 0 - beq _080DC720 - b _080DC818 -_080DC716: - cmp r0, 0x2 - beq _080DC7AA - cmp r0, 0x3 - beq _080DC808 - b _080DC818 -_080DC720: - ldr r4, _080DC76C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DC74E - ldrh r0, [r5, 0x22] - adds r0, 0xC - strh r0, [r5, 0x22] -_080DC74E: - movs r0, 0x8 - strh r0, [r5, 0x30] - ldr r1, _080DC770 @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _080DC774 @ =REG_BLDALPHA - ldrh r1, [r5, 0x30] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r0, r1 - strh r0, [r2] - b _080DC7A2 - .align 2, 0 -_080DC76C: .4byte gBattleAnimBankAttacker -_080DC770: .4byte REG_BLDCNT -_080DC774: .4byte REG_BLDALPHA -_080DC778: - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080DC818 - movs r0, 0x40 - negs r0, r0 - bl sub_8076F98 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xCB - bl PlaySE12WithPanning - adds r0, r5, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim -_080DC7A2: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080DC818 -_080DC7AA: - ldrh r0, [r5, 0x32] - adds r1, r0, 0x1 - strh r1, [r5, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DC7E8 - movs r0, 0 - strh r0, [r5, 0x32] - ldrh r1, [r5, 0x30] - subs r1, 0x1 - strh r1, [r5, 0x30] - ldr r2, _080DC804 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r1, 0x30 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080DC7E8 - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080DC7E8: - movs r0, 0xE0 - lsls r0, 2 - adds r2, r0, 0 - ldrh r1, [r5, 0x34] - adds r2, r1 - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r5, 0x26] - subs r0, r1 - strh r0, [r5, 0x26] - movs r0, 0xFF - ands r2, r0 - strh r2, [r5, 0x34] - b _080DC818 - .align 2, 0 -_080DC804: .4byte REG_BLDALPHA -_080DC808: - ldr r0, _080DC820 @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, r5, 0 - bl move_anim_8072740 -_080DC818: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DC820: .4byte REG_BLDCNT - thumb_func_end sub_80DC700 - - thumb_func_start sub_80DC824 -sub_80DC824: @ 80DC824 - push {r4-r6,lr} - adds r6, r0, 0 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DC850 - adds r0, r6, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, _080DC84C @ =gBattleAnimArgs - ldrh r1, [r0, 0x4] - negs r1, r1 - strh r1, [r0, 0x4] - ldrh r1, [r0] - negs r1, r1 - strh r1, [r0] - b _080DC880 - .align 2, 0 -_080DC84C: .4byte gBattleAnimArgs -_080DC850: - ldr r0, _080DC8E4 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DC880 - adds r0, r6, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, _080DC8E8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_080DC880: - ldr r5, _080DC8E4 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077EE4 - lsls r0, 24 - ldr r4, _080DC8E8 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077EE4 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x6] - adds r0, r4 - strh r0, [r6, 0x36] - ldr r0, _080DC8EC @ =sub_8078B34 - str r0, [r6, 0x1C] - ldr r1, _080DC8F0 @ =move_anim_8072740 - adds r0, r6, 0 - bl StoreSpriteCallbackInData - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DC8E4: .4byte gBattleAnimBankTarget -_080DC8E8: .4byte gBattleAnimArgs -_080DC8EC: .4byte sub_8078B34 -_080DC8F0: .4byte move_anim_8072740 - thumb_func_end sub_80DC824 - - thumb_func_start sub_80DC8F4 -sub_80DC8F4: @ 80DC8F4 - push {r4-r6,lr} - adds r6, r0, 0 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DC918 - ldr r1, _080DC914 @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] - adds r0, r6, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - b _080DC934 - .align 2, 0 -_080DC914: .4byte gBattleAnimArgs -_080DC918: - ldr r0, _080DC990 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DC934 - ldr r0, _080DC994 @ =gBattleAnimArgs - ldrh r1, [r0, 0x2] - negs r1, r1 - strh r1, [r0, 0x2] - ldrh r1, [r0] - negs r1, r1 - strh r1, [r0] -_080DC934: - ldr r5, _080DC990 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077EE4 - lsls r0, 24 - ldr r4, _080DC994 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077EE4 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x2E] - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x36] - ldr r0, _080DC998 @ =sub_8078B34 - str r0, [r6, 0x1C] - ldr r1, _080DC99C @ =move_anim_8072740 - adds r0, r6, 0 - bl StoreSpriteCallbackInData - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DC990: .4byte gBattleAnimBankTarget -_080DC994: .4byte gBattleAnimArgs -_080DC998: .4byte sub_8078B34 -_080DC99C: .4byte move_anim_8072740 - thumb_func_end sub_80DC8F4 - - thumb_func_start sub_80DC9A0 -sub_80DC9A0: @ 80DC9A0 - push {r4,r5,lr} - adds r5, r0, 0 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DC9BC - ldr r0, _080DC9FC @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - strh r1, [r0, 0x4] -_080DC9BC: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r1, _080DC9FC @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080DCA04 - ldr r4, _080DCA00 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - b _080DCA16 - .align 2, 0 -_080DC9FC: .4byte gBattleAnimArgs -_080DCA00: .4byte gBattleAnimBankTarget -_080DCA04: - ldr r0, _080DCA2C @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x32 - adds r3, r5, 0 - adds r3, 0x36 - movs r1, 0x1 - bl sub_807A3FC -_080DCA16: - adds r0, r5, 0 - bl sub_8078BD4 - ldr r0, _080DCA30 @ =gBattleAnimArgs - ldrh r0, [r0, 0x6] - strh r0, [r5, 0x38] - ldr r0, _080DCA34 @ =sub_80DCA38 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DCA2C: .4byte gBattleAnimBankTarget -_080DCA30: .4byte gBattleAnimArgs -_080DCA34: .4byte sub_80DCA38 - thumb_func_end sub_80DC9A0 - - thumb_func_start sub_80DCA38 -sub_80DCA38: @ 80DCA38 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080DCA4E - adds r0, r4, 0 - bl move_anim_8072740 - b _080DCA6A -_080DCA4E: - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x3A] - adds r0, 0xD - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3A] -_080DCA6A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DCA38 - - thumb_func_start sub_80DCA70 -sub_80DCA70: @ 80DCA70 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080DCAA0 @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0 - bl sub_807A3FC - ldr r0, _080DCAA4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DCAAC - ldr r0, _080DCAA8 @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - b _080DCAB8 - .align 2, 0 -_080DCAA0: .4byte gBattleAnimBankTarget -_080DCAA4: .4byte gBattleAnimBankAttacker -_080DCAA8: .4byte gBattleAnimArgs -_080DCAAC: - ldr r1, _080DCAE0 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, r1, 0 -_080DCAB8: - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080DCAE4 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DCAD4 - ldrh r0, [r4, 0x22] - adds r0, 0x8 - strh r0, [r4, 0x22] -_080DCAD4: - ldr r0, _080DCAE8 @ =sub_80DCAEC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DCAE0: .4byte gBattleAnimArgs -_080DCAE4: .4byte gBattleAnimBankTarget -_080DCAE8: .4byte sub_80DCAEC - thumb_func_end sub_80DCA70 - - thumb_func_start sub_80DCAEC -sub_80DCAEC: @ 80DCAEC - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080DCB20 - movs r0, 0 - strh r0, [r3, 0x2E] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] -_080DCB20: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080DCB34 - adds r0, r3, 0 - bl move_anim_8072740 -_080DCB34: - pop {r0} - bx r0 - thumb_func_end sub_80DCAEC - - thumb_func_start sub_80DCB38 -sub_80DCB38: @ 80DCB38 - ldr r2, _080DCB54 @ =REG_BLDCNT - movs r3, 0xFD - lsls r3, 6 - adds r1, r3, 0 - strh r1, [r2] - adds r2, 0x2 - movs r1, 0x10 - strh r1, [r2] - movs r1, 0x10 - strh r1, [r0, 0x2E] - ldr r1, _080DCB58 @ =sub_80DCB5C - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080DCB54: .4byte REG_BLDCNT -_080DCB58: .4byte sub_80DCB5C - thumb_func_end sub_80DCB38 - - thumb_func_start sub_80DCB5C -sub_80DCB5C: @ 80DCB5C - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x32] - movs r2, 0x32 - ldrsh r0, [r3, r2] - cmp r0, 0x13 - bgt _080DCB70 - adds r0, r1, 0x1 - strh r0, [r3, 0x32] - b _080DCBA8 -_080DCB70: - ldrh r1, [r3, 0x30] - adds r0, r1, 0x1 - strh r0, [r3, 0x30] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DCBA8 - ldrh r1, [r3, 0x2E] - subs r1, 0x1 - strh r1, [r3, 0x2E] - ldr r2, _080DCBAC @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r1, 0x2E - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080DCBA8 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DCBB0 @ =sub_80DCBB4 - str r0, [r3, 0x1C] -_080DCBA8: - pop {r0} - bx r0 - .align 2, 0 -_080DCBAC: .4byte REG_BLDALPHA -_080DCBB0: .4byte sub_80DCBB4 - thumb_func_end sub_80DCB5C - - thumb_func_start sub_80DCBB4 -sub_80DCBB4: @ 80DCBB4 - push {lr} - ldr r1, _080DCBC8 @ =REG_BLDCNT - movs r2, 0 - strh r2, [r1] - adds r1, 0x2 - strh r2, [r1] - bl move_anim_8072740 - pop {r0} - bx r0 - .align 2, 0 -_080DCBC8: .4byte REG_BLDCNT - thumb_func_end sub_80DCBB4 - - thumb_func_start sub_80DCBCC -sub_80DCBCC: @ 80DCBCC - push {r4-r7,lr} - sub sp, 0x4 - adds r7, r0, 0 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DCBEC - ldr r1, _080DCBE8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - b _080DCC0E - .align 2, 0 -_080DCBE8: .4byte gBattleAnimArgs -_080DCBEC: - ldr r0, _080DCCE8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DCC0E - ldr r1, _080DCCEC @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] -_080DCC0E: - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080DCC5E - ldr r0, _080DCCE8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - adds r4, r0, 0 - ldr r5, _080DCCF0 @ =gBattleAnimBankTarget - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080DCC5E - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - cmp r0, 0 - beq _080DCC4C - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DCC5E -_080DCC4C: - ldr r0, _080DCCEC @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - negs r1, r1 - strh r1, [r0, 0x4] - movs r2, 0 - ldrsh r1, [r0, r2] - negs r1, r1 - strh r1, [r0] -_080DCC5E: - adds r0, r7, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r5, _080DCCF0 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - ldr r6, _080DCCEC @ =gBattleAnimArgs - lsrs r4, 24 - ldrh r0, [r6, 0x4] - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r6, 0x6] - adds r1, r2 - lsls r1, 16 - ldrh r2, [r7, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - subs r0, r2 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r7, 0x22] - lsrs r5, r1, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl sub_80790F0 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - adds r0, r7, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_8078FDC - ldrh r0, [r6, 0x8] - strh r0, [r7, 0x2E] - strh r4, [r7, 0x32] - strh r5, [r7, 0x36] - ldr r0, _080DCCF4 @ =sub_8078B34 - str r0, [r7, 0x1C] - ldr r1, _080DCCF8 @ =move_anim_8072740 - adds r0, r7, 0 - bl StoreSpriteCallbackInData - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DCCE8: .4byte gBattleAnimBankAttacker -_080DCCEC: .4byte gBattleAnimArgs -_080DCCF0: .4byte gBattleAnimBankTarget -_080DCCF4: .4byte sub_8078B34 -_080DCCF8: .4byte move_anim_8072740 - thumb_func_end sub_80DCBCC - - thumb_func_start sub_80DCCFC -sub_80DCCFC: @ 80DCCFC - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080DCD68 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DCD1C - ldr r1, _080DCD6C @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080DCD1C: - ldr r4, _080DCD6C @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, _080DCD70 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r6, 0x36] - ldrh r0, [r4, 0xA] - strh r0, [r6, 0x38] - adds r0, r6, 0 - bl sub_80786EC - ldr r0, _080DCD74 @ =sub_80DCD78 - str r0, [r6, 0x1C] - adds r2, r6, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DCD68: .4byte gBattleAnimBankAttacker -_080DCD6C: .4byte gBattleAnimArgs -_080DCD70: .4byte gBattleAnimBankTarget -_080DCD74: .4byte sub_80DCD78 - thumb_func_end sub_80DCCFC - - thumb_func_start sub_80DCD78 -sub_80DCD78: @ 80DCD78 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - adds r0, r4, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080DCDA4 - adds r0, r4, 0 - bl move_anim_8072740 - b _080DCE34 -_080DCDA4: - movs r0, 0x2E - adds r0, r4 - mov r8, r0 - ldrh r7, [r4, 0x20] - ldrh r5, [r4, 0x24] - ldrh r1, [r4, 0x22] - mov r12, r1 - ldrh r6, [r4, 0x26] - mov r2, r8 - add r1, sp, 0x4 - movs r3, 0x7 -_080DCDBA: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080DCDBA - adds r0, r7, r5 - lsls r0, 16 - lsrs r5, r0, 16 - mov r2, r12 - adds r0, r2, r6 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - bne _080DCE34 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - lsls r1, r5, 16 - asrs r1, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r1, r2 - lsls r2, r6, 16 - asrs r2, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl sub_80790F0 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_8078FDC - add r2, sp, 0x4 - mov r1, r8 - movs r3, 0x7 -_080DCE26: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080DCE26 -_080DCE34: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80DCD78 - - thumb_func_start sub_80DCE40 -sub_80DCE40: @ 80DCE40 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080DCE54 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DCE5C - ldr r4, _080DCE58 @ =gBattleAnimBankAttacker - b _080DCE5E - .align 2, 0 -_080DCE54: .4byte gBattleAnimArgs -_080DCE58: .4byte gBattleAnimBankAttacker -_080DCE5C: - ldr r4, _080DCE90 @ =gBattleAnimBankTarget -_080DCE5E: - 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 - adds r0, 0x12 - strh r0, [r5, 0x22] - ldr r1, _080DCE94 @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldr r0, _080DCE98 @ =sub_80785E4 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DCE90: .4byte gBattleAnimBankTarget -_080DCE94: .4byte move_anim_8074EE0 -_080DCE98: .4byte sub_80785E4 - thumb_func_end sub_80DCE40 - - thumb_func_start sub_80DCE9C -sub_80DCE9C: @ 80DCE9C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080DCF08 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _080DCEBC - ldr r0, _080DCF0C @ =gBattleAnimBankTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - movs r1, 0 - bl sub_807A3FC -_080DCEBC: - ldrh r0, [r6] - ldrh r1, [r5, 0x20] - adds r0, r1 - movs r4, 0 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x22] - adds r0, 0xE - strh r0, [r5, 0x22] - ldrb r1, [r6, 0x2] - adds r0, r5, 0 - bl StartSpriteAnim - adds r0, r5, 0 - bl AnimateSprite - strh r4, [r5, 0x2E] - strh r4, [r5, 0x30] - movs r0, 0x4 - strh r0, [r5, 0x32] - movs r0, 0x10 - strh r0, [r5, 0x34] - ldr r0, _080DCF10 @ =0x0000ffba - strh r0, [r5, 0x36] - ldrh r0, [r6, 0x4] - strh r0, [r5, 0x38] - ldr r1, _080DCF14 @ =sub_80DCF1C - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldr r1, _080DCF18 @ =sub_8078278 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DCF08: .4byte gBattleAnimArgs -_080DCF0C: .4byte gBattleAnimBankTarget -_080DCF10: .4byte 0x0000ffba -_080DCF14: .4byte sub_80DCF1C -_080DCF18: .4byte sub_8078278 - thumb_func_end sub_80DCE9C - - thumb_func_start sub_80DCF1C -sub_80DCF1C: @ 80DCF1C - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x38] - ldrh r2, [r4, 0x20] - adds r0, r1, r2 - strh r0, [r4, 0x20] - movs r0, 0xC0 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r0, 0x4 - strh r0, [r4, 0x32] - movs r0, 0x20 - strh r0, [r4, 0x34] - ldr r0, _080DCF54 @ =0x0000ffe8 - strh r0, [r4, 0x36] - ldr r1, _080DCF58 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r1, _080DCF5C @ =sub_8078278 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DCF54: .4byte 0x0000ffe8 -_080DCF58: .4byte move_anim_8074EE0 -_080DCF5C: .4byte sub_8078278 - thumb_func_end sub_80DCF1C - - thumb_func_start sub_80DCF60 -sub_80DCF60: @ 80DCF60 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080DCF88 @ =gBattleAnimArgs - ldrb r1, [r4, 0xA] - bl StartSpriteAnim - adds r0, r5, 0 - bl AnimateSprite - ldr r0, _080DCF8C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DCF90 - ldrh r0, [r5, 0x20] - ldrh r1, [r4] - subs r0, r1 - b _080DCF96 - .align 2, 0 -_080DCF88: .4byte gBattleAnimArgs -_080DCF8C: .4byte gBattleAnimBankAttacker -_080DCF90: - ldrh r0, [r4] - ldrh r1, [r5, 0x20] - adds r0, r1 -_080DCF96: - strh r0, [r5, 0x20] - ldr r3, _080DCFD8 @ =gBattleAnimArgs - ldrh r2, [r3, 0x2] - ldrh r0, [r5, 0x22] - adds r2, r0 - movs r4, 0 - strh r2, [r5, 0x22] - ldrh r0, [r3, 0x8] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldrh r1, [r3, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - strh r2, [r5, 0x34] - ldrh r0, [r3, 0x6] - adds r2, r0 - strh r2, [r5, 0x36] - adds r0, r5, 0 - bl sub_8078A5C - strh r4, [r5, 0x34] - strh r4, [r5, 0x36] - ldr r0, _080DCFDC @ =sub_8078394 - str r0, [r5, 0x1C] - ldr r1, _080DCFE0 @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DCFD8: .4byte gBattleAnimArgs -_080DCFDC: .4byte sub_8078394 -_080DCFE0: .4byte move_anim_8074EE0 - thumb_func_end sub_80DCF60 - - thumb_func_start sub_80DCFE4 -sub_80DCFE4: @ 80DCFE4 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080DCFFC @ =gBattleAnimArgs - movs r1, 0xC - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DD000 - adds r0, r4, 0 - movs r1, 0 - bl sub_80787B0 - b _080DD008 - .align 2, 0 -_080DCFFC: .4byte gBattleAnimArgs -_080DD000: - adds r0, r4, 0 - movs r1, 0 - bl sub_8078764 -_080DD008: - ldr r1, _080DD024 @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x34] - ldr r0, _080DD028 @ =sub_80DD02C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DD024: .4byte gBattleAnimArgs -_080DD028: .4byte sub_80DD02C - thumb_func_end sub_80DCFE4 - - thumb_func_start sub_80DD02C -sub_80DD02C: @ 80DD02C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x36] - adds r0, r1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - movs r2, 0x38 - ldrsh r0, [r4, r2] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x32] - ldrh r1, [r4, 0x38] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - 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 _080DD072 - adds r0, r4, 0 - bl move_anim_8072740 -_080DD072: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DD02C - - thumb_func_start do_boulder_dust -do_boulder_dust: @ 80DD078 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r1, _080DD154 @ =REG_BLDCNT - ldr r2, _080DD158 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r4, _080DD15C @ =REG_BG1CNT - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080DD0C4 - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080DD0C4: - ldr r0, _080DD160 @ =gUnknown_030042C0 - strh r5, [r0] - ldr r0, _080DD164 @ =gUnknown_030041B4 - strh r5, [r0] - ldr r0, _080DD168 @ =REG_BG1HOFS - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - mov r0, sp - bl sub_8078914 - ldr r1, [sp, 0x4] - str r5, [sp, 0xC] - ldr r2, _080DD16C @ =0x040000d4 - add r0, sp, 0xC - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _080DD170 @ =0x85000400 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r0, _080DD174 @ =gBattleAnimBackgroundTilemap_SandstormBrew - bl LZDecompressVram - ldr r0, _080DD178 @ =gBattleAnimBackgroundImage_SandstormBrew - ldr r1, [sp] - bl LZDecompressVram - ldr r0, _080DD17C @ =gBattleAnimSpritePalette_261 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DD120 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080DD120: - ldr r0, _080DD180 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080DD13A - ldr r0, _080DD184 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DD13A - movs r5, 0x1 -_080DD13A: - ldr r0, _080DD188 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - strh r5, [r1, 0x8] - ldr r0, _080DD18C @ =sub_80DD190 - str r0, [r1] - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DD154: .4byte REG_BLDCNT -_080DD158: .4byte 0x00003f42 -_080DD15C: .4byte REG_BG1CNT -_080DD160: .4byte gUnknown_030042C0 -_080DD164: .4byte gUnknown_030041B4 -_080DD168: .4byte REG_BG1HOFS -_080DD16C: .4byte 0x040000d4 -_080DD170: .4byte 0x85000400 -_080DD174: .4byte gBattleAnimBackgroundTilemap_SandstormBrew -_080DD178: .4byte gBattleAnimBackgroundImage_SandstormBrew -_080DD17C: .4byte gBattleAnimSpritePalette_261 -_080DD180: .4byte gBattleAnimArgs -_080DD184: .4byte gBattleAnimBankAttacker -_080DD188: .4byte gTasks -_080DD18C: .4byte sub_80DD190 - thumb_func_end do_boulder_dust - - thumb_func_start sub_80DD190 -sub_80DD190: @ 80DD190 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080DD1C0 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r3, r1, 0 - cmp r0, 0 - bne _080DD1CC - ldr r1, _080DD1C4 @ =gUnknown_030042C0 - ldr r5, _080DD1C8 @ =0x0000fffa - adds r0, r5, 0 - ldrh r2, [r1] - adds r0, r2 - b _080DD1D2 - .align 2, 0 -_080DD1C0: .4byte gTasks -_080DD1C4: .4byte gUnknown_030042C0 -_080DD1C8: .4byte 0x0000fffa -_080DD1CC: - ldr r1, _080DD204 @ =gUnknown_030042C0 - ldrh r0, [r1] - adds r0, 0x6 -_080DD1D2: - strh r0, [r1] - adds r4, r1, 0 - ldr r1, _080DD208 @ =gUnknown_030041B4 - ldr r5, _080DD20C @ =0x0000ffff - adds r0, r5, 0 - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - lsls r2, r7, 2 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r3 - movs r5, 0x20 - ldrsh r0, [r0, r5] - mov r8, r2 - adds r2, r1, 0 - cmp r0, 0x4 - bls _080DD1F8 - b _080DD37C -_080DD1F8: - lsls r0, 2 - ldr r1, _080DD210 @ =_080DD214 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DD204: .4byte gUnknown_030042C0 -_080DD208: .4byte gUnknown_030041B4 -_080DD20C: .4byte 0x0000ffff -_080DD210: .4byte _080DD214 - .align 2, 0 -_080DD214: - .4byte _080DD228 - .4byte _080DD270 - .4byte _080DD292 - .4byte _080DD2D4 - .4byte _080DD358 -_080DD228: - mov r1, r8 - adds r0, r1, r7 - lsls r0, 3 - adds r3, r0, r3 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - beq _080DD242 - b _080DD37C -_080DD242: - strh r4, [r3, 0x1C] - ldrh r1, [r3, 0x1E] - adds r1, 0x1 - strh r1, [r3, 0x1E] - ldr r2, _080DD26C @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r2, 0x1E - ldrsh r0, [r3, r2] - cmp r0, 0x7 - beq _080DD260 - b _080DD37C -_080DD260: - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r4, [r3, 0x1E] - b _080DD37C - .align 2, 0 -_080DD26C: .4byte REG_BLDALPHA -_080DD270: - mov r5, r8 - adds r0, r5, r7 - lsls r0, 3 - adds r1, r0, r3 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x65 - bne _080DD37C - movs r0, 0x7 - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080DD37C -_080DD292: - mov r1, r8 - adds r0, r1, r7 - lsls r0, 3 - adds r3, r0, r3 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080DD37C - movs r0, 0 - strh r0, [r3, 0x1C] - ldrh r1, [r3, 0x1E] - subs r1, 0x1 - strh r1, [r3, 0x1E] - ldr r2, _080DD2D0 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r2, 0x1E - ldrsh r1, [r3, r2] - cmp r1, 0 - bne _080DD37C - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r1, [r3, 0x1E] - b _080DD37C - .align 2, 0 -_080DD2D0: .4byte REG_BLDALPHA -_080DD2D4: - mov r0, sp - bl sub_8078914 - ldr r2, [sp] - movs r3, 0x80 - lsls r3, 6 - add r5, sp, 0xC - movs r6, 0 - ldr r1, _080DD38C @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r9, r5 - ldr r0, _080DD390 @ =0x85000400 - mov r12, r0 - movs r0, 0x85 - lsls r0, 24 - mov r10, r0 -_080DD2F6: - str r6, [sp, 0xC] - mov r0, r9 - str r0, [r1] - str r2, [r1, 0x4] - mov r0, r12 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080DD2F6 - str r6, [sp, 0xC] - str r5, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r10 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r0, _080DD38C @ =0x040000d4 - str r5, [r0] - str r1, [r0, 0x4] - ldr r1, _080DD394 @ =0x85000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080DD344 - ldr r2, _080DD398 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080DD344: - ldr r0, _080DD39C @ =gTasks - mov r5, r8 - adds r1, r5, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldr r4, _080DD3A0 @ =gUnknown_030042C0 - ldr r2, _080DD3A4 @ =gUnknown_030041B4 -_080DD358: - movs r1, 0 - strh r1, [r4] - strh r1, [r2] - ldr r0, _080DD3A8 @ =REG_BLDCNT - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r2, _080DD398 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080DD37C: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DD38C: .4byte 0x040000d4 -_080DD390: .4byte 0x85000400 -_080DD394: .4byte 0x85000200 -_080DD398: .4byte REG_BG1CNT -_080DD39C: .4byte gTasks -_080DD3A0: .4byte gUnknown_030042C0 -_080DD3A4: .4byte gUnknown_030041B4 -_080DD3A8: .4byte REG_BLDCNT - thumb_func_end sub_80DD190 - - thumb_func_start sub_80DD3AC -sub_80DD3AC: @ 80DD3AC - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080DD428 - ldr r4, _080DD3F0 @ =gBattleAnimArgs - movs r2, 0x6 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080DD3F8 - ldr r0, _080DD3F4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DD3F8 - movs r0, 0x98 - lsls r0, 1 - strh r0, [r5, 0x20] - ldrh r0, [r4, 0x2] - negs r0, r0 - strh r0, [r4, 0x2] - movs r0, 0x1 - strh r0, [r5, 0x38] - ldrb r1, [r5, 0x3] - subs r0, 0x40 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r5, 0x3] - b _080DD3FC - .align 2, 0 -_080DD3F0: .4byte gBattleAnimArgs -_080DD3F4: .4byte gBattleAnimBankAttacker -_080DD3F8: - ldr r0, _080DD41C @ =0x0000ffc0 - strh r0, [r5, 0x20] -_080DD3FC: - ldr r4, _080DD420 @ =gBattleAnimArgs - ldrh r0, [r4] - strh r0, [r5, 0x22] - ldr r1, _080DD424 @ =gUnknown_083DAD10 - adds r0, r5, 0 - bl SetSubspriteTables - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080DD484 - .align 2, 0 -_080DD41C: .4byte 0x0000ffc0 -_080DD420: .4byte gBattleAnimArgs -_080DD424: .4byte gUnknown_083DAD10 -_080DD428: - ldrh r1, [r5, 0x30] - ldrh r3, [r5, 0x34] - adds r1, r3 - ldrh r2, [r5, 0x32] - ldrh r0, [r5, 0x36] - adds r2, r0 - lsls r0, r1, 16 - asrs r0, 24 - ldrh r3, [r5, 0x24] - adds r0, r3 - strh r0, [r5, 0x24] - lsls r0, r2, 16 - asrs r0, 24 - ldrh r3, [r5, 0x26] - adds r0, r3 - strh r0, [r5, 0x26] - movs r0, 0xFF - ands r1, r0 - strh r1, [r5, 0x34] - ands r2, r0 - strh r2, [r5, 0x36] - movs r1, 0x38 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080DD46E - movs r2, 0x20 - ldrsh r0, [r5, r2] - movs r3, 0x24 - ldrsh r1, [r5, r3] - adds r0, r1 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - ble _080DD484 - b _080DD480 -_080DD46E: - movs r1, 0x20 - ldrsh r0, [r5, r1] - movs r2, 0x24 - ldrsh r1, [r5, r2] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bge _080DD484 -_080DD480: - ldr r0, _080DD48C @ =move_anim_8072740 - str r0, [r5, 0x1C] -_080DD484: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DD48C: .4byte move_anim_8072740 - thumb_func_end sub_80DD3AC - - thumb_func_start sub_80DD490 -sub_80DD490: @ 80DD490 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080DD4C8 @ =gBattleAnimArgs - ldrb r1, [r5, 0x8] - bl StartSpriteAnim - adds r0, r4, 0 - movs r1, 0 - bl sub_80787B0 - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x32] - ldrh r0, [r5, 0x4] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x36] - ldr r0, _080DD4CC @ =sub_8078B34 - str r0, [r4, 0x1C] - ldr r1, _080DD4D0 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DD4C8: .4byte gBattleAnimArgs -_080DD4CC: .4byte sub_8078B34 -_080DD4D0: .4byte move_anim_8072740 - thumb_func_end sub_80DD490 - - thumb_func_start sub_80DD4D4 -sub_80DD4D4: @ 80DD4D4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080DD554 @ =gTasks - adds r6, r1, r0 - ldr r5, _080DD558 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 8 - movs r1, 0xC0 - lsls r1, 13 - adds r0, r1 - lsrs r7, r0, 16 - ldr r4, _080DD55C @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 8 - movs r2, 0xC0 - lsls r2, 13 - adds r0, r2 - lsrs r0, 16 - mov r8, r0 - ldrb r1, [r5] - movs r0, 0x2 - eors r0, r1 - ldrb r4, [r4] - cmp r0, r4 - bne _080DD544 - mov r8, r7 -_080DD544: - bl sub_80DD8BC - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bne _080DD560 - movs r0, 0x20 - b _080DD566 - .align 2, 0 -_080DD554: .4byte gTasks -_080DD558: .4byte gBattleAnimBankAttacker -_080DD55C: .4byte gBattleAnimBankTarget -_080DD560: - lsls r1, r5, 3 - movs r0, 0x30 - subs r0, r1 -_080DD566: - strh r0, [r6, 0x18] - movs r4, 0 - strh r4, [r6, 0x8] - strh r4, [r6, 0x1E] - strh r4, [r6, 0x1A] - movs r0, 0x1 - strh r0, [r6, 0x20] - movs r1, 0x18 - ldrsh r0, [r6, r1] - cmp r0, 0 - bge _080DD57E - adds r0, 0x7 -_080DD57E: - asrs r0, 3 - subs r0, 0x1 - strh r0, [r6, 0x1C] - mov r2, r9 - lsls r0, r2, 3 - strh r0, [r6, 0xC] - lsls r0, r7, 3 - strh r0, [r6, 0xE] - mov r1, r10 - subs r0, r1, r2 - lsls r0, 3 - movs r2, 0x18 - ldrsh r1, [r6, r2] - bl __divsi3 - strh r0, [r6, 0x10] - mov r1, r8 - subs r0, r1, r7 - lsls r0, 3 - movs r2, 0x18 - ldrsh r1, [r6, r2] - bl __divsi3 - strh r0, [r6, 0x12] - strh r4, [r6, 0x14] - strh r4, [r6, 0x16] - movs r0, 0x40 - negs r0, r0 - bl sub_8076F98 - adds r4, r0, 0 - lsls r4, 24 - asrs r4, 8 - lsrs r4, 16 - movs r0, 0x3F - bl sub_8076F98 - lsls r0, 24 - strh r4, [r6, 0x22] - asrs r0, 24 - lsls r4, 16 - asrs r4, 16 - subs r0, r4 - movs r2, 0x18 - ldrsh r1, [r6, r2] - bl __divsi3 - strh r0, [r6, 0x24] - strh r5, [r6, 0xA] - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x26] - ldr r0, _080DD600 @ =sub_80DD604 - str r0, [r6] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DD600: .4byte sub_80DD604 - thumb_func_end sub_80DD4D4 - - thumb_func_start sub_80DD604 -sub_80DD604: @ 80DD604 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080DD628 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080DD61E - b _080DD76C -_080DD61E: - lsls r0, 2 - ldr r1, _080DD62C @ =_080DD630 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DD628: .4byte gTasks -_080DD62C: .4byte _080DD630 - .align 2, 0 -_080DD630: - .4byte _080DD644 - .4byte _080DD6A8 - .4byte _080DD6B0 - .4byte _080DD70C - .4byte _080DD75E -_080DD644: - ldrh r2, [r4, 0x14] - ldrh r0, [r4, 0x10] - subs r2, r0 - strh r2, [r4, 0x14] - ldrh r0, [r4, 0x16] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x16] - ldr r3, _080DD6A4 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - lsls r2, 16 - asrs r2, 19 - strh r2, [r0, 0x24] - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r0, [r4, 0x16] - lsls r0, 16 - asrs r0, 19 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x1A] - adds r0, 0x1 - strh r0, [r4, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _080DD694 - movs r0, 0x14 - strh r0, [r4, 0x1E] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080DD694: - ldrh r1, [r4, 0x22] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xA2 - bl PlaySE12WithPanning - b _080DD76C - .align 2, 0 -_080DD6A4: .4byte gSprites -_080DD6A8: - ldrh r0, [r4, 0x1E] - subs r0, 0x1 - strh r0, [r4, 0x1E] - b _080DD750 -_080DD6B0: - ldrh r0, [r4, 0x1A] - subs r0, 0x1 - strh r0, [r4, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - beq _080DD6D0 - ldrh r0, [r4, 0x10] - ldrh r2, [r4, 0x14] - adds r0, r2 - strh r0, [r4, 0x14] - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x16] - adds r0, r1 - strh r0, [r4, 0x16] - b _080DD6DA -_080DD6D0: - strh r0, [r4, 0x14] - strh r0, [r4, 0x16] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080DD6DA: - ldr r2, _080DD708 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 19 - strh r0, [r1, 0x24] - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r4, 0x16] - lsls r0, 16 - asrs r0, 19 - strh r0, [r1, 0x26] - b _080DD76C - .align 2, 0 -_080DD708: .4byte gSprites -_080DD70C: - ldrh r0, [r4, 0x10] - ldrh r2, [r4, 0xC] - adds r0, r2 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0xE] - adds r0, r1 - strh r0, [r4, 0xE] - ldrh r0, [r4, 0x1A] - adds r0, 0x1 - strh r0, [r4, 0x1A] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x1C - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _080DD74A - movs r0, 0 - strh r0, [r4, 0x1A] - adds r0, r4, 0 - bl sub_80DD774 - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x22] - adds r1, r0 - strh r1, [r4, 0x22] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xAF - bl PlaySE12WithPanning -_080DD74A: - ldrh r0, [r4, 0x18] - subs r0, 0x1 - strh r0, [r4, 0x18] -_080DD750: - lsls r0, 16 - cmp r0, 0 - bne _080DD76C - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DD76C -_080DD75E: - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DD76C - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080DD76C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DD604 - - thumb_func_start sub_80DD774 -sub_80DD774: @ 80DD774 - push {r4-r7,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0xA] - subs r0, 0x1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bhi _080DD864 - lsls r0, 2 - ldr r1, _080DD790 @ =_080DD794 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DD790: .4byte _080DD794 - .align 2, 0 -_080DD794: - .4byte _080DD7A8 - .4byte _080DD7B4 - .4byte _080DD7B4 - .4byte _080DD7C0 - .4byte _080DD7CC -_080DD7A8: - ldr r3, _080DD7B0 @ =gSpriteTemplate_83DAD78 - movs r5, 0 - b _080DD7D0 - .align 2, 0 -_080DD7B0: .4byte gSpriteTemplate_83DAD78 -_080DD7B4: - ldr r3, _080DD7BC @ =gSpriteTemplate_83DAD90 - movs r5, 0x50 - b _080DD7D0 - .align 2, 0 -_080DD7BC: .4byte gSpriteTemplate_83DAD90 -_080DD7C0: - ldr r3, _080DD7C8 @ =gSpriteTemplate_83DAD90 - movs r5, 0x40 - b _080DD7D0 - .align 2, 0 -_080DD7C8: .4byte gSpriteTemplate_83DAD90 -_080DD7CC: - ldr r3, _080DD86C @ =gSpriteTemplate_83DAD90 - movs r5, 0x30 -_080DD7D0: - ldrh r1, [r4, 0xC] - lsls r1, 16 - asrs r1, 19 - lsls r1, 16 - lsrs r1, 16 - ldrh r2, [r4, 0xE] - lsls r2, 16 - asrs r2, 19 - lsls r2, 16 - movs r6, 0x20 - ldrsh r0, [r4, r6] - lsls r0, 2 - adds r1, r0 - lsls r1, 16 - lsrs r6, r1, 16 - asrs r1, 16 - lsrs r7, r2, 16 - asrs r2, 16 - adds r0, r3, 0 - movs r3, 0x23 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080DD85C - ldr r1, _080DD870 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0x12 - strh r1, [r0, 0x2E] - movs r2, 0x20 - ldrsh r1, [r4, r2] - lsls r2, r1, 2 - adds r2, r1 - lsls r2, 2 - adds r2, r6, r2 - movs r6, 0xA - ldrsh r3, [r4, r6] - lsls r1, r3, 1 - adds r1, r3 - adds r2, r1 - strh r2, [r0, 0x32] - strh r7, [r0, 0x36] - movs r1, 0xA - ldrsh r2, [r4, r1] - lsls r2, 1 - movs r3, 0x10 - negs r3, r3 - adds r1, r3, 0 - subs r1, r2 - strh r1, [r0, 0x38] - ldrh r3, [r0, 0x4] - lsls r2, r3, 22 - lsrs r2, 22 - adds r2, r5 - ldr r5, _080DD874 @ =0x000003ff - adds r1, r5, 0 - ands r2, r1 - ldr r1, _080DD878 @ =0xfffffc00 - ands r1, r3 - orrs r1, r2 - strh r1, [r0, 0x4] - bl sub_80786EC - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] -_080DD85C: - movs r6, 0x20 - ldrsh r0, [r4, r6] - negs r0, r0 - strh r0, [r4, 0x20] -_080DD864: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DD86C: .4byte gSpriteTemplate_83DAD90 -_080DD870: .4byte gSprites -_080DD874: .4byte 0x000003ff -_080DD878: .4byte 0xfffffc00 - thumb_func_end sub_80DD774 - - thumb_func_start sub_80DD87C -sub_80DD87C: @ 80DD87C - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080DD8AE - ldr r0, _080DD8B4 @ =sub_80DD604 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080DD8A8 - ldr r0, _080DD8B8 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1E] - subs r0, 0x1 - strh r0, [r1, 0x1E] -_080DD8A8: - adds r0, r4, 0 - bl DestroySprite -_080DD8AE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DD8B4: .4byte sub_80DD604 -_080DD8B8: .4byte gTasks - thumb_func_end sub_80DD87C - - thumb_func_start sub_80DD8BC -sub_80DD8BC: @ 80DD8BC - push {lr} - ldr r0, _080DD8E4 @ =gDisableStructMoveAnim - ldr r0, [r0] - ldrb r1, [r0, 0x11] - lsrs r0, r1, 4 - lsls r1, 28 - lsrs r1, 28 - subs r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xFF - lsls r2, 24 - adds r0, r2 - lsrs r0, 24 - cmp r0, 0x4 - bls _080DD8DE - movs r1, 0x1 -_080DD8DE: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_080DD8E4: .4byte gDisableStructMoveAnim - thumb_func_end sub_80DD8BC - - thumb_func_start sub_80DD8E8 -sub_80DD8E8: @ 80DD8E8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080DD920 @ =gBattleAnimArgs - ldrb r1, [r5, 0x8] - bl StartSpriteAnim - ldrh r0, [r5] - strh r0, [r4, 0x24] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - ldrh r1, [r5, 0x4] - subs r0, r1 - strh r0, [r4, 0x34] - movs r0, 0x3 - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - ldr r0, _080DD924 @ =sub_80DD928 - str r0, [r4, 0x1C] - adds r4, 0x3E - ldrb r0, [r4] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DD920: .4byte gBattleAnimArgs -_080DD924: .4byte sub_80DD928 - thumb_func_end sub_80DD8E8 - - thumb_func_start sub_80DD928 -sub_80DD928: @ 80DD928 - push {lr} - adds r2, r0, 0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r3] - ldrh r1, [r2, 0x34] - movs r3, 0x34 - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _080DD960 - ldrh r3, [r2, 0x32] - adds r0, r1, r3 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x2E] - adds r1, r0 - strh r1, [r2, 0x34] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r1, 16 - cmp r1, 0 - ble _080DD972 - movs r0, 0 - strh r0, [r2, 0x34] - b _080DD972 -_080DD960: - ldrh r0, [r2, 0x30] - subs r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _080DD972 - adds r0, r2, 0 - bl move_anim_8072740 -_080DD972: - pop {r0} - bx r0 - thumb_func_end sub_80DD928 - - thumb_func_start sub_80DD978 -sub_80DD978: @ 80DD978 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080DD9A0 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DD994 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080DD994: - adds r0, r4, 0 - bl sub_807941C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DD9A0: .4byte gBattleAnimBankAttacker - thumb_func_end sub_80DD978 - - thumb_func_start sub_80DD9A4 -sub_80DD9A4: @ 80DD9A4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080DD9F0 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DD9F4 @ =gBattleAnimArgs - ldrh r3, [r2] - ldrh r5, [r4, 0x20] - adds r1, r3, r5 - strh r1, [r4, 0x20] - ldrh r1, [r2, 0x2] - adds r0, r1 - strh r0, [r4, 0x22] - strh r3, [r4, 0x30] - strh r1, [r4, 0x32] - ldrh r0, [r2, 0x4] - strh r0, [r4, 0x38] - ldrb r1, [r2, 0x6] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080DD9F8 @ =sub_80DD9FC - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DD9F0: .4byte gBattleAnimBankTarget -_080DD9F4: .4byte gBattleAnimArgs -_080DD9F8: .4byte sub_80DD9FC - thumb_func_end sub_80DD9A4 - - thumb_func_start sub_80DD9FC -sub_80DD9FC: @ 80DD9FC - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x8 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x28 - bl __divsi3 - ldrh r1, [r4, 0x24] - adds r1, r0 - strh r1, [r4, 0x24] - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x26] - subs r1, r0 - strh r1, [r4, 0x26] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x8C - ble _080DDA46 - adds r0, r4, 0 - bl move_anim_8072740 -_080DDA46: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DD9FC - - thumb_func_start sub_80DDA4C -sub_80DDA4C: @ 80DDA4C - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080DDA84 @ =gMoveDmgMoveAnim - ldr r0, [r2] - cmp r0, 0x20 - bgt _080DDA60 - ldr r1, _080DDA88 @ =gBattleAnimArgs - movs r0, 0 - strh r0, [r1, 0xE] -_080DDA60: - ldr r2, [r2] - adds r0, r2, 0 - subs r0, 0x21 - cmp r0, 0x20 - bhi _080DDA70 - ldr r1, _080DDA88 @ =gBattleAnimArgs - movs r0, 0x1 - strh r0, [r1, 0xE] -_080DDA70: - cmp r2, 0x41 - ble _080DDA7A - ldr r1, _080DDA88 @ =gBattleAnimArgs - movs r0, 0x2 - strh r0, [r1, 0xE] -_080DDA7A: - adds r0, r3, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080DDA84: .4byte gMoveDmgMoveAnim -_080DDA88: .4byte gBattleAnimArgs - thumb_func_end sub_80DDA4C - - thumb_func_start sub_80DDA8C -sub_80DDA8C: @ 80DDA8C - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080DDAE8 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080DDAAE - movs r0, 0 - bl sub_80789D4 - movs r0, 0xC8 - strh r0, [r5, 0xA] -_080DDAAE: - ldr r4, _080DDAEC @ =gUnknown_030041B8 - movs r1, 0xA - ldrsh r0, [r5, r1] - movs r1, 0xA - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - ldrh r0, [r5, 0xA] - subs r0, 0x3 - strh r0, [r5, 0xA] - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x78 - bne _080DDADA - movs r0, 0x1 - bl sub_80789D4 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080DDADA: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DDAE8: .4byte gTasks -_080DDAEC: .4byte gUnknown_030041B8 - thumb_func_end sub_80DDA8C - - thumb_func_start sub_80DDAF0 -sub_80DDAF0: @ 80DDAF0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080DDB5C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DDB1C - movs r0, 0 - bl sub_80789D4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - ldr r0, _080DDB60 @ =gUnknown_030041B8 - ldrh r0, [r0] - strh r0, [r4, 0xC] -_080DDB1C: - ldrh r0, [r4, 0xA] - adds r0, 0x50 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0xA] - ldr r6, _080DDB60 @ =gUnknown_030041B8 - movs r2, 0xA - ldrsh r1, [r4, r2] - movs r0, 0x4 - bl Cos - ldrh r4, [r4, 0xC] - adds r0, r4 - strh r0, [r6] - ldr r0, _080DDB64 @ =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - ldr r0, _080DDB68 @ =0x00000fff - cmp r1, r0 - bne _080DDB54 - movs r0, 0 - strh r0, [r6] - movs r0, 0x1 - bl sub_80789D4 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DDB54: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DDB5C: .4byte gTasks -_080DDB60: .4byte gUnknown_030041B8 -_080DDB64: .4byte gBattleAnimArgs -_080DDB68: .4byte 0x00000fff - thumb_func_end sub_80DDAF0 - - thumb_func_start sub_80DDB6C -sub_80DDB6C: @ 80DDB6C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080DDBC8 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r5, _080DDBCC @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_8078BD4 - ldr r0, _080DDBD0 @ =sub_80DDBD8 - str r0, [r4, 0x1C] - movs r0, 0x10 - strh r0, [r4, 0x3A] - ldr r1, _080DDBD4 @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r4, 0x3A] - strh r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DDBC8: .4byte gBattleAnimArgs -_080DDBCC: .4byte gBattleAnimBankTarget -_080DDBD0: .4byte sub_80DDBD8 -_080DDBD4: .4byte REG_BLDCNT - thumb_func_end sub_80DDB6C - - thumb_func_start sub_80DDBD8 -sub_80DDBD8: @ 80DDBD8 - push {r4,lr} - adds r4, r0, 0 - bl sub_80DDCC8 - adds r0, r4, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080DDBF8 - ldr r0, _080DDBF4 @ =sub_80DDC4C - str r0, [r4, 0x1C] - b _080DDC42 - .align 2, 0 -_080DDBF4: .4byte sub_80DDC4C -_080DDBF8: - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xF - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r2, [r4, 0x38] - adds r0, r2, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x38] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0 - beq _080DDC30 - cmp r2, 0xC4 - ble _080DDC42 -_080DDC30: - lsls r0, 16 - cmp r0, 0 - ble _080DDC42 - ldr r0, _080DDC48 @ =gUnknown_0202F7D2 - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0xC4 - bl PlaySE12WithPanning -_080DDC42: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DDC48: .4byte gUnknown_0202F7D2 - thumb_func_end sub_80DDBD8 - - thumb_func_start sub_80DDC4C -sub_80DDC4C: @ 80DDC4C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl sub_8078B5C - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xF - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r2, [r4, 0x38] - adds r0, r2, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x38] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0 - beq _080DDC92 - cmp r2, 0xC4 - ble _080DDC9E -_080DDC92: - lsls r0, 16 - cmp r0, 0 - ble _080DDC9E - movs r0, 0xC4 - bl PlaySE -_080DDC9E: - movs r1, 0x3A - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DDCBC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DDCB8 @ =sub_807861C - str r0, [r4, 0x1C] - b _080DDCC2 - .align 2, 0 -_080DDCB8: .4byte sub_807861C -_080DDCBC: - adds r0, r4, 0 - bl sub_80DDCC8 -_080DDCC2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DDC4C - - thumb_func_start sub_80DDCC8 -sub_80DDCC8: @ 80DDCC8 - push {r4,lr} - adds r3, r0, 0 - ldrh r2, [r3, 0x3A] - movs r1, 0x3A - ldrsh r0, [r3, r1] - cmp r0, 0xFF - ble _080DDCEC - adds r0, r2, 0x1 - strh r0, [r3, 0x3A] - lsls r0, 16 - ldr r1, _080DDCE8 @ =0x010d0000 - cmp r0, r1 - bne _080DDD4C - movs r0, 0 - b _080DDD4A - .align 2, 0 -_080DDCE8: .4byte 0x010d0000 -_080DDCEC: - ldrh r1, [r3, 0x3C] - adds r4, r1, 0x1 - strh r4, [r3, 0x3C] - movs r0, 0xFF - ands r0, r1 - cmp r0, 0 - bne _080DDD4C - ldr r1, _080DDD10 @ =0xffffff00 - ands r1, r4 - strh r1, [r3, 0x3C] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080DDD14 - adds r0, r2, 0x1 - b _080DDD16 - .align 2, 0 -_080DDD10: .4byte 0xffffff00 -_080DDD14: - subs r0, r2, 0x1 -_080DDD16: - strh r0, [r3, 0x3A] - ldr r2, _080DDD54 @ =REG_BLDALPHA - ldrh r1, [r3, 0x3A] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r0, r1 - strh r0, [r2] - movs r2, 0x3A - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _080DDD32 - cmp r0, 0x10 - bne _080DDD3E -_080DDD32: - ldrh r0, [r3, 0x3C] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - eors r0, r1 - strh r0, [r3, 0x3C] -_080DDD3E: - movs r1, 0x3A - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080DDD4C - movs r0, 0x80 - lsls r0, 1 -_080DDD4A: - strh r0, [r3, 0x3A] -_080DDD4C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DDD54: .4byte REG_BLDALPHA - thumb_func_end sub_80DDCC8 - - thumb_func_start sub_80DDD58 -sub_80DDD58: @ 80DDD58 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8078764 - ldr r1, _080DDD74 @ =sub_80DDD78 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DDD74: .4byte sub_80DDD78 - thumb_func_end sub_80DDD58 - - thumb_func_start sub_80DDD78 -sub_80DDD78: @ 80DDD78 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - subs r0, 0x41 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x82 - bhi _080DDDAC - ldrb r0, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x8 - b _080DDDB6 -_080DDDAC: - ldrb r0, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 -_080DDDB6: - orrs r1, r0 - strb r1, [r4, 0x5] - ldrh r0, [r4, 0x2E] - adds r0, 0x13 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x32] - adds r0, 0x50 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3D - bne _080DDDE8 - adds r0, r4, 0 - bl move_anim_8072740 -_080DDDE8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DDD78 - - thumb_func_start sub_80DDDF0 -sub_80DDDF0: @ 80DDDF0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080DDE68 @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - bl GetAnimBankSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8078E70 - adds r0, r4, 0 - movs r1, 0x80 - movs r2, 0x80 - movs r3, 0 - bl obj_id_set_rotscale - ldr r1, _080DDE6C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r1, _080DDE70 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0x80 - strh r1, [r0, 0x8] - ldr r1, _080DDE74 @ =gBattleAnimArgs - ldrh r1, [r1] - strh r1, [r0, 0xA] - strh r2, [r0, 0xC] - movs r1, 0x10 - strh r1, [r0, 0xE] - ldr r1, _080DDE78 @ =sub_80DDE7C - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DDE68: .4byte REG_BLDCNT -_080DDE6C: .4byte gSprites -_080DDE70: .4byte gTasks -_080DDE74: .4byte gBattleAnimArgs -_080DDE78: .4byte sub_80DDE7C - thumb_func_end sub_80DDDF0 - - thumb_func_start sub_80DDE7C -sub_80DDE7C: @ 80DDE7C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DDEC4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080DDEBE - movs r0, 0 - strh r0, [r3, 0x1C] - ldrh r1, [r3, 0xC] - adds r1, 0x1 - strh r1, [r3, 0xC] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - ldr r2, _080DDEC8 @ =REG_BLDALPHA - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r1, 0xC - ldrsh r0, [r3, r1] - cmp r0, 0x9 - bne _080DDEBE - ldr r0, _080DDECC @ =sub_80DDED0 - str r0, [r3] -_080DDEBE: - pop {r0} - bx r0 - .align 2, 0 -_080DDEC4: .4byte gTasks -_080DDEC8: .4byte REG_BLDALPHA -_080DDECC: .4byte sub_80DDED0 - thumb_func_end sub_80DDE7C - - thumb_func_start sub_80DDED0 -sub_80DDED0: @ 80DDED0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080DDEF4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0xA] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080DDEF8 - subs r0, r1, 0x1 - strh r0, [r4, 0xA] - b _080DDF36 - .align 2, 0 -_080DDEF4: .4byte gTasks -_080DDEF8: - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r1, r0, 24 - ldrh r0, [r4, 0x8] - adds r0, 0x8 - movs r6, 0 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xFF - bgt _080DDF22 - movs r0, 0x8 - ldrsh r2, [r4, r0] - adds r0, r1, 0 - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - b _080DDF36 -_080DDF22: - adds r0, r1, 0 - bl sub_8078F40 - adds r0, r5, 0 - bl DestroyAnimVisualTask - ldr r0, _080DDF3C @ =REG_BLDCNT - strh r6, [r0] - adds r0, 0x2 - strh r6, [r0] -_080DDF36: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DDF3C: .4byte REG_BLDCNT - thumb_func_end sub_80DDED0 - - thumb_func_start sub_80DDF40 -sub_80DDF40: @ 80DDF40 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r5, [r4, 0x20] - ldrh r6, [r4, 0x22] - ldr r0, _080DDFDC @ =gBattleAnimBankAttacker - mov r8, r0 - ldrb r0, [r0] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - mov r9, r1 - strh r0, [r4, 0x20] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - mov r1, r9 - strh r1, [r4, 0x2E] - ldr r2, _080DDFE0 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r4, 0x30] - ldrh r1, [r2, 0x2] - strh r1, [r4, 0x32] - ldrh r1, [r2, 0x4] - strh r1, [r4, 0x34] - ldrh r1, [r4, 0x20] - lsls r1, 4 - strh r1, [r4, 0x36] - lsls r0, 4 - strh r0, [r4, 0x38] - lsls r5, 16 - asrs r5, 16 - movs r1, 0x20 - ldrsh r0, [r4, r1] - subs r5, r0 - lsls r5, 4 - movs r0, 0 - ldrsh r1, [r2, r0] - lsls r1, 1 - adds r0, r5, 0 - str r2, [sp] - bl __divsi3 - strh r0, [r4, 0x3A] - lsls r6, 16 - asrs r6, 16 - movs r1, 0x22 - ldrsh r0, [r4, r1] - subs r6, r0 - lsls r6, 4 - ldr r2, [sp] - movs r0, 0 - ldrsh r1, [r2, r0] - lsls r1, 1 - adds r0, r6, 0 - bl __divsi3 - strh r0, [r4, 0x3C] - ldr r0, _080DDFE4 @ =sub_80DDFE8 - str r0, [r4, 0x1C] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DDFDC: .4byte gBattleAnimBankAttacker -_080DDFE0: .4byte gBattleAnimArgs -_080DDFE4: .4byte sub_80DDFE8 - thumb_func_end sub_80DDF40 - - thumb_func_start sub_80DDFE8 -sub_80DDFE8: @ 80DDFE8 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080DE032 - cmp r0, 0x1 - bgt _080DDFFE - cmp r0, 0 - beq _080DE008 - b _080DE0F6 -_080DDFFE: - cmp r0, 0x2 - beq _080DE09C - cmp r0, 0x3 - beq _080DE0F0 - b _080DE0F6 -_080DE008: - ldrh r0, [r5, 0x3A] - ldrh r2, [r5, 0x36] - adds r0, r2 - strh r0, [r5, 0x36] - ldrh r1, [r5, 0x3C] - ldrh r2, [r5, 0x38] - adds r1, r2 - strh r1, [r5, 0x38] - lsls r0, 16 - asrs r0, 20 - strh r0, [r5, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r5, 0x22] - ldrh r0, [r5, 0x30] - subs r0, 0x1 - strh r0, [r5, 0x30] - lsls r0, 16 - cmp r0, 0 - bgt _080DE0F6 - b _080DE0E2 -_080DE032: - ldrh r0, [r5, 0x32] - subs r0, 0x1 - strh r0, [r5, 0x32] - lsls r0, 16 - cmp r0, 0 - bgt _080DE0F6 - ldr r4, _080DE098 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x30] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x20] - lsls r0, 4 - strh r0, [r5, 0x36] - ldrh r0, [r5, 0x22] - lsls r0, 4 - strh r0, [r5, 0x38] - movs r1, 0x30 - ldrsh r0, [r5, r1] - movs r2, 0x20 - ldrsh r1, [r5, r2] - subs r0, r1 - lsls r0, 4 - movs r2, 0x34 - ldrsh r1, [r5, r2] - bl __divsi3 - strh r0, [r5, 0x3A] - movs r1, 0x32 - ldrsh r0, [r5, r1] - movs r2, 0x22 - ldrsh r1, [r5, r2] - subs r0, r1 - lsls r0, 4 - movs r2, 0x34 - ldrsh r1, [r5, r2] - bl __divsi3 - strh r0, [r5, 0x3C] - b _080DE0E2 - .align 2, 0 -_080DE098: .4byte gBattleAnimBankTarget -_080DE09C: - ldrh r0, [r5, 0x3A] - ldrh r1, [r5, 0x36] - adds r0, r1 - strh r0, [r5, 0x36] - ldrh r1, [r5, 0x3C] - ldrh r2, [r5, 0x38] - adds r1, r2 - strh r1, [r5, 0x38] - lsls r0, 16 - asrs r0, 20 - strh r0, [r5, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r5, 0x22] - ldrh r0, [r5, 0x34] - subs r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - cmp r0, 0 - bgt _080DE0F6 - ldr r4, _080DE0EC @ =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] -_080DE0E2: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080DE0F6 - .align 2, 0 -_080DE0EC: .4byte gBattleAnimBankTarget -_080DE0F0: - adds r0, r5, 0 - bl move_anim_8074EE0 -_080DE0F6: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DDFE8 - - thumb_func_start sub_80DE0FC -sub_80DE0FC: @ 80DE0FC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8078764 - ldr r0, _080DE110 @ =sub_80DE114 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE110: .4byte sub_80DE114 - thumb_func_end sub_80DE0FC - - thumb_func_start sub_80DE114 -sub_80DE114: @ 80DE114 - push {r4-r6,lr} - adds r3, r0, 0 - movs r5, 0 - movs r6, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080DE1AA - adds r1, r3, 0 - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x4 - ands r0, r2 - adds r4, r1, 0 - cmp r0, 0 - bne _080DE13E - movs r0, 0x4 - orrs r0, r2 - strb r0, [r4] -_080DE13E: - movs r1, 0x2E - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _080DE14E - cmp r0, 0x1 - beq _080DE158 - movs r6, 0x1 - b _080DE162 -_080DE14E: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0x2 - bne _080DE162 - b _080DE166 -_080DE158: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0x4 - bne _080DE162 - movs r5, 0x1 -_080DE162: - cmp r5, 0 - beq _080DE198 -_080DE166: - ldrb r2, [r4] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4] - ldrh r0, [r3, 0x32] - adds r0, 0x1 - movs r1, 0 - strh r0, [r3, 0x32] - strh r1, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080DE1AA - strh r1, [r3, 0x32] - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - b _080DE1AA -_080DE198: - cmp r6, 0 - beq _080DE1A4 - adds r0, r3, 0 - bl move_anim_8072740 - b _080DE1AA -_080DE1A4: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] -_080DE1AA: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80DE114 - - thumb_func_start sub_80DE1B0 -sub_80DE1B0: @ 80DE1B0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080DE1DC @ =gTasks - adds r5, r0, r1 - movs r0, 0x1 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - movs r6, 0 - movs r1, 0 - strh r0, [r5, 0x8] - lsls r0, 16 - cmp r0, 0 - bge _080DE1E0 - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080DE2C0 - .align 2, 0 -_080DE1DC: .4byte gTasks -_080DE1E0: - strh r1, [r5, 0xA] - movs r0, 0xF - strh r0, [r5, 0xC] - movs r0, 0x2 - strh r0, [r5, 0xE] - strh r1, [r5, 0x10] - ldr r1, _080DE244 @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _080DE248 @ =REG_BLDALPHA - ldrh r0, [r5, 0xE] - lsls r0, 8 - ldrh r1, [r5, 0xC] - orrs r0, r1 - strh r0, [r2] - ldr r4, _080DE24C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x50 - strh r1, [r0, 0x2E] - ldr r0, _080DE250 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DE258 - movs r2, 0x8 - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080DE254 @ =0x0000ff70 - strh r1, [r0, 0x30] - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x70 - b _080DE276 - .align 2, 0 -_080DE244: .4byte REG_BLDCNT -_080DE248: .4byte REG_BLDALPHA -_080DE24C: .4byte gSprites -_080DE250: .4byte gBattleAnimBankTarget -_080DE254: .4byte 0x0000ff70 -_080DE258: - movs r2, 0x8 - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x90 - strh r1, [r0, 0x30] - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080DE2C8 @ =0x0000ff90 -_080DE276: - strh r1, [r0, 0x32] - ldr r4, _080DE2CC @ =gSprites - movs r2, 0x8 - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r2, 0 - strh r2, [r0, 0x34] - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x36] - movs r2, 0x8 - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080DE2D0 @ =SpriteCallbackDummy - bl StoreSpriteCallbackInData - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _080DE2D4 @ =sub_8078394 - str r1, [r0] - ldr r0, _080DE2D8 @ =sub_80DE2DC - str r0, [r5] -_080DE2C0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DE2C8: .4byte 0x0000ff90 -_080DE2CC: .4byte gSprites -_080DE2D0: .4byte SpriteCallbackDummy -_080DE2D4: .4byte sub_8078394 -_080DE2D8: .4byte sub_80DE2DC - thumb_func_end sub_80DE1B0 - - thumb_func_start sub_80DE2DC -sub_80DE2DC: @ 80DE2DC - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080DE300 @ =gTasks - adds r4, r0, r1 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080DE37C - cmp r0, 0x1 - bgt _080DE304 - cmp r0, 0 - beq _080DE30A - b _080DE3A6 - .align 2, 0 -_080DE300: .4byte gTasks -_080DE304: - cmp r0, 0x2 - beq _080DE3A0 - b _080DE3A6 -_080DE30A: - ldrh r1, [r4, 0xA] - adds r1, 0x1 - strh r1, [r4, 0xA] - movs r0, 0x3 - ands r0, r1 - strh r0, [r4, 0x12] - cmp r0, 0x1 - bne _080DE328 - ldrh r1, [r4, 0xC] - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080DE328 - subs r0, r1, 0x1 - strh r0, [r4, 0xC] -_080DE328: - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0x3 - bne _080DE33E - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080DE33E - adds r0, r1, 0x1 - strh r0, [r4, 0xE] -_080DE33E: - ldr r2, _080DE374 @ =REG_BLDALPHA - ldrh r0, [r4, 0xE] - lsls r0, 8 - ldrh r1, [r4, 0xC] - orrs r0, r1 - strh r0, [r2] - ldr r1, [r4, 0xC] - movs r0, 0x80 - lsls r0, 13 - cmp r1, r0 - bne _080DE3A6 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x50 - ble _080DE3A6 - movs r2, 0x8 - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080DE378 @ =gSprites - adds r0, r1 - bl obj_delete_but_dont_free_vram - movs r0, 0x1 - strh r0, [r4, 0x10] - b _080DE3A6 - .align 2, 0 -_080DE374: .4byte REG_BLDALPHA -_080DE378: .4byte gSprites -_080DE37C: - ldrh r0, [r4, 0x14] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DE3A6 - ldr r0, _080DE39C @ =REG_BLDCNT - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - b _080DE3A6 - .align 2, 0 -_080DE39C: .4byte REG_BLDCNT -_080DE3A0: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080DE3A6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DE2DC - - thumb_func_start sub_80DE3AC -sub_80DE3AC: @ 80DE3AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r2, _080DE3CC @ =gTasks - adds r1, r2 - movs r2, 0 - strh r2, [r1, 0x26] - ldr r2, _080DE3D0 @ =sub_80DE3D4 - str r2, [r1] - bl _call_via_r2 - pop {r0} - bx r0 - .align 2, 0 -_080DE3CC: .4byte gTasks -_080DE3D0: .4byte sub_80DE3D4 - thumb_func_end sub_80DE3AC - - thumb_func_start sub_80DE3D4 -sub_80DE3D4: @ 80DE3D4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080DE40C @ =gTasks - adds r5, r0, r1 - ldr r0, _080DE410 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r6, r0, 24 - movs r1, 0x26 - ldrsh r0, [r5, r1] - cmp r0, 0x4 - bls _080DE400 - b _080DE604 -_080DE400: - lsls r0, 2 - ldr r1, _080DE414 @ =_080DE418 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DE40C: .4byte gTasks -_080DE410: .4byte gBattleAnimBankTarget -_080DE414: .4byte _080DE418 - .align 2, 0 -_080DE418: - .4byte _080DE42C - .4byte _080DE500 - .4byte _080DE544 - .4byte _080DE5AC - .4byte _080DE5E0 -_080DE42C: - ldr r7, _080DE460 @ =0x00002771 - adds r0, r7, 0 - bl AllocSpritePalette - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - mov r8, r2 - strh r0, [r5, 0x24] - cmp r0, 0xFF - beq _080DE456 - movs r0, 0x1 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - strh r0, [r5, 0x8] - lsls r0, 16 - cmp r0, 0 - bge _080DE464 - adds r0, r7, 0 - bl FreeSpritePaletteByTag -_080DE456: - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080DE60A - .align 2, 0 -_080DE460: .4byte 0x00002771 -_080DE464: - ldr r4, _080DE4E4 @ =gSprites - movs r3, 0x8 - ldrsh r0, [r5, r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r2, [r5, 0x24] - lsls r2, 4 - ldrb r3, [r1, 0x5] - movs r0, 0xF - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] - movs r1, 0x8 - ldrsh r0, [r5, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - movs r2, 0x8 - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x5] - movs r2, 0xC - orrs r1, r2 - strb r1, [r0, 0x5] - mov r3, r8 - strh r3, [r5, 0xA] - strh r3, [r5, 0xC] - movs r0, 0x10 - strh r0, [r5, 0xE] - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - movs r0, 0x22 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - lsls r0, 4 - strh r0, [r5, 0x10] - cmp r6, 0x1 - bne _080DE4EC - movs r2, 0x80 - lsls r2, 19 - ldrh r1, [r2] - ldr r0, _080DE4E8 @ =0x0000fdff - b _080DE4F4 - .align 2, 0 -_080DE4E4: .4byte gSprites -_080DE4E8: .4byte 0x0000fdff -_080DE4EC: - movs r2, 0x80 - lsls r2, 19 - ldrh r1, [r2] - ldr r0, _080DE4FC @ =0x0000fbff -_080DE4F4: - ands r0, r1 - strh r0, [r2] - b _080DE604 - .align 2, 0 -_080DE4FC: .4byte 0x0000fbff -_080DE500: - movs r1, 0x24 - ldrsh r0, [r5, r1] - adds r0, 0x10 - lsls r0, 4 - strh r0, [r5, 0x24] - movs r2, 0x10 - ldrsh r0, [r5, r2] - lsls r0, 1 - ldr r1, _080DE534 @ =gPlttBufferUnfaded - adds r0, r1 - movs r3, 0x24 - ldrsh r1, [r5, r3] - lsls r1, 1 - ldr r2, _080DE538 @ =gPlttBufferFaded - adds r1, r2 - ldr r2, _080DE53C @ =REG_BG0CNT - bl CpuSet - ldrh r0, [r5, 0x10] - ldr r3, _080DE540 @ =0x00003c0d - movs r1, 0x10 - movs r2, 0xA - bl BlendPalette - b _080DE604 - .align 2, 0 -_080DE534: .4byte gPlttBufferUnfaded -_080DE538: .4byte gPlttBufferFaded -_080DE53C: .4byte REG_BG0CNT -_080DE540: .4byte 0x00003c0d -_080DE544: - ldr r2, _080DE580 @ =gSprites - movs r0, 0x22 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - subs r1, 0x20 - lsls r1, 16 - lsrs r2, r1, 16 - cmp r1, 0 - bge _080DE564 - movs r2, 0 -_080DE564: - cmp r6, 0x1 - bne _080DE584 - lsls r0, r2, 24 - lsrs r0, 24 - adds r1, r2, 0 - adds r1, 0x40 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - str r2, [sp] - movs r2, 0x4 - str r2, [sp, 0x4] - str r6, [sp, 0x8] - b _080DE59C - .align 2, 0 -_080DE580: .4byte gSprites -_080DE584: - lsls r0, r2, 24 - lsrs r0, 24 - adds r1, r2, 0 - adds r1, 0x40 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - str r2, [sp] - movs r2, 0x8 - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] -_080DE59C: - movs r2, 0x2 - movs r3, 0x6 - bl sub_8089944 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x1C] - b _080DE604 -_080DE5AC: - cmp r6, 0x1 - bne _080DE5C0 - ldr r1, _080DE5B8 @ =REG_BLDCNT - ldr r2, _080DE5BC @ =0x00003f42 - adds r0, r2, 0 - b _080DE5C6 - .align 2, 0 -_080DE5B8: .4byte REG_BLDCNT -_080DE5BC: .4byte 0x00003f42 -_080DE5C0: - ldr r1, _080DE5D4 @ =REG_BLDCNT - ldr r3, _080DE5D8 @ =0x00003f44 - adds r0, r3, 0 -_080DE5C6: - strh r0, [r1] - ldr r1, _080DE5DC @ =REG_BLDALPHA - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - b _080DE604 - .align 2, 0 -_080DE5D4: .4byte REG_BLDCNT -_080DE5D8: .4byte 0x00003f44 -_080DE5DC: .4byte REG_BLDALPHA -_080DE5E0: - cmp r6, 0x1 - bne _080DE5F0 - movs r0, 0x80 - lsls r0, 19 - ldrh r1, [r0] - movs r3, 0x80 - lsls r3, 2 - b _080DE5FA -_080DE5F0: - movs r0, 0x80 - lsls r0, 19 - ldrh r1, [r0] - movs r3, 0x80 - lsls r3, 3 -_080DE5FA: - adds r2, r3, 0 - orrs r1, r2 - strh r1, [r0] - ldr r0, _080DE618 @ =sub_80DE61C - str r0, [r5] -_080DE604: - ldrh r0, [r5, 0x26] - adds r0, 0x1 - strh r0, [r5, 0x26] -_080DE60A: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DE618: .4byte sub_80DE61C - thumb_func_end sub_80DE3D4 - - thumb_func_start sub_80DE61C -sub_80DE61C: @ 80DE61C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080DE6A0 @ =gTasks - adds r4, r0, r1 - ldrh r1, [r4, 0xA] - adds r1, 0x1 - strh r1, [r4, 0xA] - movs r0, 0x1 - ands r0, r1 - strh r0, [r4, 0x12] - cmp r0, 0 - bne _080DE654 - ldr r1, _080DE6A4 @ =gSineTable - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0x12 - bl __divsi3 - strh r0, [r4, 0xC] -_080DE654: - movs r2, 0x12 - ldrsh r0, [r4, r2] - cmp r0, 0x1 - bne _080DE676 - ldr r1, _080DE6A4 @ =gSineTable - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0x12 - bl __divsi3 - movs r1, 0x10 - subs r1, r0 - strh r1, [r4, 0xE] -_080DE676: - ldr r2, _080DE6A8 @ =REG_BLDALPHA - ldrh r0, [r4, 0xE] - lsls r0, 8 - ldrh r1, [r4, 0xC] - orrs r0, r1 - strh r0, [r2] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0x80 - bne _080DE698 - movs r0, 0 - strh r0, [r4, 0x26] - ldr r1, _080DE6AC @ =sub_80DE6B0 - str r1, [r4] - adds r0, r5, 0 - bl _call_via_r1 -_080DE698: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DE6A0: .4byte gTasks -_080DE6A4: .4byte gSineTable -_080DE6A8: .4byte REG_BLDALPHA -_080DE6AC: .4byte sub_80DE6B0 - thumb_func_end sub_80DE61C - - thumb_func_start sub_80DE6B0 -sub_80DE6B0: @ 80DE6B0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080DE6E0 @ =gTasks - adds r4, r0, r1 - ldr r0, _080DE6E4 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r6, r0, 24 - movs r1, 0x26 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080DE72C - cmp r0, 0x1 - bgt _080DE6E8 - cmp r0, 0 - beq _080DE6EE - b _080DE7AA - .align 2, 0 -_080DE6E0: .4byte gTasks -_080DE6E4: .4byte gBattleAnimBankTarget -_080DE6E8: - cmp r0, 0x2 - beq _080DE740 - b _080DE7AA -_080DE6EE: - ldr r1, _080DE710 @ =gUnknown_03004DC0 - movs r0, 0x3 - strb r0, [r1, 0x15] - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - cmp r6, 0x1 - bne _080DE718 - movs r2, 0x80 - lsls r2, 19 - ldrh r1, [r2] - ldr r0, _080DE714 @ =0x0000fdff - b _080DE720 - .align 2, 0 -_080DE710: .4byte gUnknown_03004DC0 -_080DE714: .4byte 0x0000fdff -_080DE718: - movs r2, 0x80 - lsls r2, 19 - ldrh r1, [r2] - ldr r0, _080DE728 @ =0x0000fbff -_080DE720: - ands r0, r1 - strh r0, [r2] - b _080DE7AA - .align 2, 0 -_080DE728: .4byte 0x0000fbff -_080DE72C: - ldrh r0, [r4, 0x10] - ldr r3, _080DE73C @ =0x00003c0d - movs r1, 0x10 - movs r2, 0 - bl BlendPalette - b _080DE7AA - .align 2, 0 -_080DE73C: .4byte 0x00003c0d -_080DE740: - ldr r3, _080DE788 @ =gSprites - movs r0, 0x24 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - bl obj_delete_but_dont_free_vram - ldr r0, _080DE78C @ =0x00002771 - bl FreeSpritePaletteByTag - ldr r0, _080DE790 @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - cmp r6, 0x1 - bne _080DE794 - subs r0, 0x52 - ldrh r1, [r0] - movs r3, 0x80 - lsls r3, 2 - b _080DE79E - .align 2, 0 -_080DE788: .4byte gSprites -_080DE78C: .4byte 0x00002771 -_080DE790: .4byte REG_BLDCNT -_080DE794: - movs r0, 0x80 - lsls r0, 19 - ldrh r1, [r0] - movs r3, 0x80 - lsls r3, 3 -_080DE79E: - adds r2, r3, 0 - orrs r1, r2 - strh r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DE7AA: - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80DE6B0 - - thumb_func_start sub_80DE7B8 -sub_80DE7B8: @ 80DE7B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r7, r0, 0 - ldr r0, _080DE7F4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DE800 - ldr r4, _080DE7F8 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 8 - movs r2, 0xE0 - lsls r2, 13 - adds r0, r2 - lsrs r5, r0, 16 - ldr r4, _080DE7FC @ =gBattleAnimBankTarget - b _080DE824 - .align 2, 0 -_080DE7F4: .4byte gBattleAnimArgs -_080DE7F8: .4byte gBattleAnimBankAttacker -_080DE7FC: .4byte gBattleAnimBankTarget -_080DE800: - ldr r4, _080DE8C8 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 8 - movs r2, 0xE0 - lsls r2, 13 - adds r0, r2 - lsrs r5, r0, 16 - ldr r4, _080DE8CC @ =gBattleAnimBankAttacker -_080DE824: - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 8 - movs r1, 0xE0 - lsls r1, 13 - adds r0, r1 - lsrs r0, 16 - mov r9, r0 - mov r8, r5 - mov r2, r9 - subs r4, r2, r5 - lsls r4, 16 - lsrs r4, 16 - lsls r0, r6, 4 - strh r0, [r7, 0x2E] - lsls r0, r5, 4 - strh r0, [r7, 0x30] - mov r1, r10 - subs r0, r1, r6 - lsls r0, 4 - ldr r5, _080DE8D0 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r1, [r5, r2] - bl __divsi3 - strh r0, [r7, 0x32] - lsls r4, 16 - asrs r4, 12 - movs r0, 0x2 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl __divsi3 - strh r0, [r7, 0x34] - ldrh r0, [r5, 0x2] - strh r0, [r7, 0x36] - mov r1, r10 - strh r1, [r7, 0x38] - mov r2, r9 - strh r2, [r7, 0x3A] - movs r1, 0x36 - ldrsh r0, [r7, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r7, 0x3C] - ldrb r1, [r7, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r7, 0x5] - strh r6, [r7, 0x20] - mov r2, r8 - strh r2, [r7, 0x22] - ldr r0, _080DE8D4 @ =sub_80DE8D8 - str r0, [r7, 0x1C] - adds r2, r7, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DE8C8: .4byte gBattleAnimBankTarget -_080DE8CC: .4byte gBattleAnimBankAttacker -_080DE8D0: .4byte gBattleAnimArgs -_080DE8D4: .4byte sub_80DE8D8 - thumb_func_end sub_80DE7B8 - - thumb_func_start sub_80DE8D8 -sub_80DE8D8: @ 80DE8D8 - push {r4,lr} - adds r2, r0, 0 - ldrh r3, [r2, 0x36] - movs r1, 0x36 - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _080DE910 - ldrh r0, [r2, 0x32] - ldrh r4, [r2, 0x2E] - adds r0, r4 - strh r0, [r2, 0x2E] - ldrh r1, [r2, 0x34] - ldrh r4, [r2, 0x30] - adds r1, r4 - strh r1, [r2, 0x30] - lsls r0, 16 - asrs r0, 20 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r2, 0x22] - subs r0, r3, 0x1 - strh r0, [r2, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bne _080DE910 - strh r0, [r2, 0x2E] -_080DE910: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DE8D8 - - thumb_func_start sub_80DE918 -sub_80DE918: @ 80DE918 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080DEA68 @ =gTasks - adds r1, r0 - str r1, [sp] - ldr r1, _080DEA6C @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0x80 - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - movs r0, 0 - ldr r1, [sp] - strh r0, [r1, 0x12] - strh r0, [r1, 0x14] - strh r0, [r1, 0x16] - strh r0, [r1, 0x18] - movs r0, 0x10 - strh r0, [r1, 0x1A] - ldr r2, _080DEA70 @ =gBattleAnimArgs - ldrh r0, [r2] - strh r0, [r1, 0x1C] - ldr r4, _080DEA74 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_807A100 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DE988 - b _080DEA88 -_080DE988: - movs r4, 0 -_080DE98A: - lsls r1, r4, 16 - asrs r3, r1, 16 - ldr r0, _080DEA74 @ =gBattleAnimBankAttacker - ldrb r2, [r0] - str r1, [sp, 0x10] - cmp r3, r2 - beq _080DEA56 - movs r0, 0x2 - eors r2, r0 - cmp r3, r2 - beq _080DEA56 - lsls r0, r4, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080DEA56 - ldr r6, [sp, 0x4] - ldr r3, [sp, 0x8] - lsls r0, r3, 16 - asrs r7, r0, 16 - ldr r0, _080DEA78 @ =gSpriteTemplate_83DAF08 - adds r1, r6, 0 - adds r2, r7, 0 - movs r3, 0x37 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0x40 - beq _080DEA56 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - adds r0, r4, 0 - movs r1, 0x3 - bl sub_807A100 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - mov r0, r8 - lsls r5, r0, 4 - add r5, r8 - lsls r5, 2 - ldr r1, _080DEA7C @ =gSprites - adds r4, r5, r1 - lsls r0, r6, 4 - strh r0, [r4, 0x2E] - lsls r0, r7, 4 - strh r0, [r4, 0x30] - mov r2, r10 - subs r0, r2, r6 - lsls r0, 4 - ldr r3, _080DEA70 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r1, [r3, r2] - bl __divsi3 - strh r0, [r4, 0x32] - mov r3, r9 - lsls r0, r3, 16 - asrs r0, 16 - subs r0, r7 - lsls r0, 4 - ldr r2, _080DEA70 @ =gBattleAnimArgs - movs r3, 0x2 - ldrsh r1, [r2, r3] - bl __divsi3 - strh r0, [r4, 0x34] - ldr r1, _080DEA70 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x36] - mov r2, r10 - strh r2, [r4, 0x38] - mov r3, r9 - strh r3, [r4, 0x3A] - ldr r0, _080DEA80 @ =gSprites + 0x1C - adds r5, r0 - ldr r0, _080DEA84 @ =sub_80DE8D8 - str r0, [r5] - ldr r2, [sp] - movs r3, 0x20 - ldrsh r1, [r2, r3] - adds r1, 0xD - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1 - mov r1, r8 - strh r1, [r0] - ldrh r0, [r2, 0x20] - adds r0, 0x1 - strh r0, [r2, 0x20] -_080DEA56: - ldr r2, [sp, 0x10] - movs r3, 0x80 - lsls r3, 9 - adds r0, r2, r3 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080DE98A - b _080DEB0C - .align 2, 0 -_080DEA68: .4byte gTasks -_080DEA6C: .4byte REG_BLDCNT -_080DEA70: .4byte gBattleAnimArgs -_080DEA74: .4byte gBattleAnimBankAttacker -_080DEA78: .4byte gSpriteTemplate_83DAF08 -_080DEA7C: .4byte gSprites -_080DEA80: .4byte gSprites + 0x1C -_080DEA84: .4byte sub_80DE8D8 -_080DEA88: - ldr r0, _080DEB24 @ =gSpriteTemplate_83DAF08 - ldr r7, [sp, 0x4] - ldr r2, [sp, 0x8] - lsls r1, r2, 16 - asrs r1, 16 - str r1, [sp, 0xC] - adds r1, r7, 0 - ldr r2, [sp, 0xC] - movs r3, 0x37 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0x40 - beq _080DEB0C - movs r3, 0x30 - mov r10, r3 - movs r0, 0x28 - mov r9, r0 - ldr r6, _080DEB28 @ =gSprites - mov r1, r8 - lsls r5, r1, 4 - add r5, r8 - lsls r5, 2 - adds r4, r5, r6 - lsls r0, r7, 4 - strh r0, [r4, 0x2E] - ldr r2, [sp, 0xC] - lsls r0, r2, 4 - strh r0, [r4, 0x30] - subs r0, r3, r7 - lsls r0, 4 - ldr r3, _080DEB2C @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r1, [r3, r2] - bl __divsi3 - strh r0, [r4, 0x32] - mov r3, r9 - ldr r1, [sp, 0xC] - subs r0, r3, r1 - lsls r0, 4 - ldr r2, _080DEB2C @ =gBattleAnimArgs - movs r3, 0x2 - ldrsh r1, [r2, r3] - bl __divsi3 - strh r0, [r4, 0x34] - ldr r1, _080DEB2C @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x36] - mov r2, r10 - strh r2, [r4, 0x38] - mov r3, r9 - strh r3, [r4, 0x3A] - adds r6, 0x1C - adds r5, r6 - ldr r0, _080DEB30 @ =sub_80DE8D8 - str r0, [r5] - mov r1, r8 - ldr r0, [sp] - strh r1, [r0, 0x22] - movs r0, 0x1 - ldr r2, [sp] - strh r0, [r2, 0x20] -_080DEB0C: - ldr r0, _080DEB34 @ =sub_80DEB38 - ldr r3, [sp] - str r0, [r3] - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DEB24: .4byte gSpriteTemplate_83DAF08 -_080DEB28: .4byte gSprites -_080DEB2C: .4byte gBattleAnimArgs -_080DEB30: .4byte sub_80DE8D8 -_080DEB34: .4byte sub_80DEB38 - thumb_func_end sub_80DE918 - - thumb_func_start sub_80DEB38 -sub_80DEB38: @ 80DEB38 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080DEB5C @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080DEBEE - cmp r1, 0x1 - bgt _080DEB60 - cmp r1, 0 - beq _080DEB6E - b _080DECA4 - .align 2, 0 -_080DEB5C: .4byte gTasks -_080DEB60: - cmp r1, 0x2 - bne _080DEB66 - b _080DEC80 -_080DEB66: - cmp r1, 0x3 - bne _080DEB6C - b _080DEC94 -_080DEB6C: - b _080DECA4 -_080DEB6E: - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080DEBCE - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DEBCE - strh r1, [r4, 0x12] - ldrh r0, [r4, 0x16] - adds r0, 0x1 - strh r0, [r4, 0x16] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DEBA4 - ldrh r1, [r4, 0x18] - movs r2, 0x18 - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080DEBB2 - adds r0, r1, 0x1 - strh r0, [r4, 0x18] - b _080DEBB2 -_080DEBA4: - ldrh r1, [r4, 0x1A] - movs r2, 0x1A - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080DEBB2 - subs r0, r1, 0x1 - strh r0, [r4, 0x1A] -_080DEBB2: - ldr r2, _080DEBE0 @ =REG_BLDALPHA - ldrh r0, [r4, 0x1A] - lsls r0, 8 - ldrh r1, [r4, 0x18] - orrs r0, r1 - strh r0, [r2] - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0x17 - ble _080DEBCE - movs r0, 0 - strh r0, [r4, 0x16] - movs r0, 0x1 - strh r0, [r4, 0x14] -_080DEBCE: - ldrh r1, [r4, 0x1C] - movs r2, 0x1C - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080DEBE4 - subs r0, r1, 0x1 - strh r0, [r4, 0x1C] - b _080DECA4 - .align 2, 0 -_080DEBE0: .4byte REG_BLDALPHA -_080DEBE4: - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DECA4 - b _080DEC8C -_080DEBEE: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DECA4 - movs r0, 0 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0x16] - adds r0, 0x1 - strh r0, [r4, 0x16] - ands r0, r1 - lsls r0, 16 - cmp r0, 0 - beq _080DEC1E - ldrh r1, [r4, 0x18] - movs r2, 0x18 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080DEC2C - subs r0, r1, 0x1 - strh r0, [r4, 0x18] - b _080DEC2C -_080DEC1E: - ldrh r1, [r4, 0x1A] - movs r2, 0x1A - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080DEC2C - adds r0, r1, 0x1 - strh r0, [r4, 0x1A] -_080DEC2C: - ldr r2, _080DEC48 @ =REG_BLDALPHA - ldrh r0, [r4, 0x1A] - lsls r0, 8 - ldrh r1, [r4, 0x18] - orrs r0, r1 - strh r0, [r2] - ldr r1, [r4, 0x18] - movs r0, 0x80 - lsls r0, 13 - cmp r1, r0 - bne _080DECA4 - movs r5, 0 - b _080DEC70 - .align 2, 0 -_080DEC48: .4byte REG_BLDALPHA -_080DEC4C: - adds r1, r5, 0 - adds r1, 0xD - lsls r1, 1 - adds r0, r4, 0 - adds r0, 0x8 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080DEC7C @ =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_080DEC70: - movs r1, 0x20 - ldrsh r0, [r4, r1] - cmp r5, r0 - blt _080DEC4C - b _080DEC8C - .align 2, 0 -_080DEC7C: .4byte gSprites -_080DEC80: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - cmp r0, 0 - ble _080DECA4 -_080DEC8C: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DECA4 -_080DEC94: - ldr r0, _080DECAC @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080DECA4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DECAC: .4byte REG_BLDCNT - thumb_func_end sub_80DEB38 - - thumb_func_start sub_80DECB0 -sub_80DECB0: @ 80DECB0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _080DECF8 @ =gUnknown_030042C4 - movs r1, 0 - strh r1, [r0] - ldr r0, _080DECFC @ =gUnknown_03004240 - strh r1, [r0] - ldr r1, _080DED00 @ =REG_WININ - ldr r2, _080DED04 @ =0x00003f3f - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - subs r2, 0x20 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x6 - movs r0, 0xC8 - strh r0, [r1] - adds r1, 0x4 - movs r0, 0x10 - strh r0, [r1] - ldr r0, _080DED08 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DECF4 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080DED0C -_080DECF4: - movs r6, 0x28 - b _080DED0E - .align 2, 0 -_080DECF8: .4byte gUnknown_030042C4 -_080DECFC: .4byte gUnknown_03004240 -_080DED00: .4byte REG_WININ -_080DED04: .4byte 0x00003f3f -_080DED08: .4byte gBattleAnimBankAttacker -_080DED0C: - movs r6, 0xC8 -_080DED0E: - ldr r1, _080DED4C @ =gUnknown_030042C4 - lsls r3, r6, 16 - asrs r2, r3, 16 - lsls r0, r2, 8 - orrs r0, r2 - strh r0, [r1] - ldr r1, _080DED50 @ =gUnknown_03004240 - movs r5, 0x28 - ldr r0, _080DED54 @ =0x00002828 - strh r0, [r1] - lsrs r3, 16 - movs r1, 0xF0 - subs r1, r2 - movs r4, 0x48 - ldr r2, _080DED58 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r2 - strh r3, [r0, 0xA] - strh r1, [r0, 0xC] - strh r5, [r0, 0xE] - strh r4, [r0, 0x10] - strh r6, [r0, 0x12] - strh r5, [r0, 0x14] - ldr r1, _080DED5C @ =sub_80DED60 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DED4C: .4byte gUnknown_030042C4 -_080DED50: .4byte gUnknown_03004240 -_080DED54: .4byte 0x00002828 -_080DED58: .4byte gTasks -_080DED5C: .4byte sub_80DED60 - thumb_func_end sub_80DECB0 - - thumb_func_start sub_80DED60 -sub_80DED60: @ 80DED60 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DEE80 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r1, [r4, 0x8] - adds r0, r1, 0x1 - strh r0, [r4, 0x8] - ldrh r5, [r4, 0xA] - ldrh r7, [r4, 0xC] - ldrh r0, [r4, 0xE] - mov r10, r0 - ldrh r2, [r4, 0x10] - str r2, [sp, 0xC] - ldrh r0, [r4, 0x12] - ldrh r2, [r4, 0x14] - mov r8, r2 - lsls r1, 16 - asrs r6, r1, 16 - cmp r6, 0xF - ble _080DED9C - b _080DEE8C -_080DED9C: - lsls r0, 16 - asrs r0, 16 - bl __floatsidf - str r0, [sp, 0x10] - str r1, [sp, 0x14] - lsls r0, r5, 16 - asrs r0, 16 - bl __floatsidf - ldr r2, _080DEE84 @ =0x3fb00000 - ldr r3, _080DEE88 @ =0x00000000 - bl __muldf3 - adds r5, r1, 0 - adds r4, r0, 0 - adds r0, r6, 0 - bl __floatsidf - str r0, [sp, 0x18] - str r1, [sp, 0x1C] - adds r1, r5, 0 - adds r0, r4, 0 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - bl __muldf3 - adds r3, r1, 0 - adds r2, r0, 0 - ldr r0, [sp, 0x10] - ldr r1, [sp, 0x14] - bl __subdf3 - bl __fixunsdfsi - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - lsls r0, r7, 16 - asrs r0, 16 - bl __floatsidf - ldr r2, _080DEE84 @ =0x3fb00000 - ldr r3, _080DEE88 @ =0x00000000 - bl __muldf3 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - bl __muldf3 - adds r3, r1, 0 - adds r2, r0, 0 - ldr r0, [sp, 0x10] - ldr r1, [sp, 0x14] - bl __adddf3 - bl __fixunsdfsi - lsls r0, 16 - lsrs r7, r0, 16 - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - bl __floatsidf - adds r5, r1, 0 - adds r4, r0, 0 - mov r2, r10 - lsls r0, r2, 16 - asrs r0, 16 - bl __floatsidf - ldr r2, _080DEE84 @ =0x3fb00000 - ldr r3, _080DEE88 @ =0x00000000 - bl __muldf3 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - bl __muldf3 - adds r3, r1, 0 - adds r2, r0, 0 - adds r1, r5, 0 - adds r0, r4, 0 - bl __subdf3 - bl __fixunsdfsi - lsls r0, 16 - lsrs r6, r0, 16 - ldr r1, [sp, 0xC] - lsls r0, r1, 16 - asrs r0, 16 - bl __floatsidf - ldr r2, _080DEE84 @ =0x3fb00000 - ldr r3, _080DEE88 @ =0x00000000 - bl __muldf3 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - bl __muldf3 - adds r3, r1, 0 - adds r2, r0, 0 - adds r1, r5, 0 - adds r0, r4, 0 - bl __adddf3 - bl __fixunsdfsi - lsls r0, 16 - lsrs r5, r0, 16 - b _080DEEBA - .align 2, 0 -_080DEE80: .4byte gTasks -_080DEE84: .4byte 0x3fb00000 -_080DEE88: .4byte 0x00000000 -_080DEE8C: - movs r2, 0 - mov r9, r2 - movs r7, 0xF0 - movs r6, 0 - movs r5, 0x70 - str r6, [sp] - str r6, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r3, 0 - bl sub_80791A8 - lsls r0, 16 - lsrs r0, 16 - str r6, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080DEEDC @ =sub_80DEEE8 - str r0, [r4] -_080DEEBA: - ldr r1, _080DEEE0 @ =gUnknown_030042C4 - mov r2, r9 - lsls r0, r2, 8 - orrs r7, r0 - strh r7, [r1] - ldr r1, _080DEEE4 @ =gUnknown_03004240 - lsls r0, r6, 8 - orrs r5, r0 - strh r5, [r1] - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DEEDC: .4byte sub_80DEEE8 -_080DEEE0: .4byte gUnknown_030042C4 -_080DEEE4: .4byte gUnknown_03004240 - thumb_func_end sub_80DED60 - - thumb_func_start sub_80DEEE8 -sub_80DEEE8: @ 80DEEE8 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _080DEF28 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080DEF20 - ldr r0, _080DEF2C @ =gUnknown_030042C4 - strh r2, [r0] - ldr r0, _080DEF30 @ =gUnknown_03004240 - strh r2, [r0] - ldr r0, _080DEF34 @ =REG_WININ - ldr r4, _080DEF38 @ =0x00003f3f - adds r1, r4, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r2, [r0] - adds r0, 0x4 - strh r2, [r0] - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080DEF20: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DEF28: .4byte gPaletteFade -_080DEF2C: .4byte gUnknown_030042C4 -_080DEF30: .4byte gUnknown_03004240 -_080DEF34: .4byte REG_WININ -_080DEF38: .4byte 0x00003f3f - thumb_func_end sub_80DEEE8 - - thumb_func_start sub_80DEF3C -sub_80DEF3C: @ 80DEF3C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080DEF68 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DEF70 - movs r2, 0x18 - ldr r3, _080DEF6C @ =0x0000fffe - ldrb r0, [r4, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r4, 0x3] - b _080DEF74 - .align 2, 0 -_080DEF68: .4byte gBattleAnimBankAttacker -_080DEF6C: .4byte 0x0000fffe -_080DEF70: - ldr r2, _080DEF90 @ =0x0000ffe8 - movs r3, 0x2 -_080DEF74: - lsls r0, r2, 16 - asrs r0, 16 - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - strh r3, [r4, 0x30] - movs r0, 0x3C - strh r0, [r4, 0x2E] - ldr r0, _080DEF94 @ =sub_80DEF98 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DEF90: .4byte 0x0000ffe8 -_080DEF94: .4byte sub_80DEF98 - thumb_func_end sub_80DEF3C - - thumb_func_start sub_80DEF98 -sub_80DEF98: @ 80DEF98 - push {r4,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x2E] - movs r2, 0x2E - ldrsh r0, [r3, r2] - cmp r0, 0 - ble _080DEFAA - subs r0, r1, 0x1 - b _080DF00E -_080DEFAA: - ldrh r0, [r3, 0x30] - ldrh r4, [r3, 0x24] - adds r1, r0, r4 - strh r1, [r3, 0x24] - adds r0, r1, 0x7 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xE - bls _080DF010 - ldrh r0, [r3, 0x20] - adds r0, r1 - strh r0, [r3, 0x20] - movs r0, 0 - strh r0, [r3, 0x24] - ldrh r2, [r3, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x8 - ldr r4, _080DEFFC @ =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, _080DF000 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r0, [r3, 0x32] - adds r0, 0x1 - strh r0, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080DF00C - movs r0, 0x1E - strh r0, [r3, 0x2E] - ldr r0, _080DF004 @ =sub_80782D8 - str r0, [r3, 0x1C] - ldr r1, _080DF008 @ =sub_80DF018 - adds r0, r3, 0 - bl StoreSpriteCallbackInData - b _080DF010 - .align 2, 0 -_080DEFFC: .4byte 0x000003ff -_080DF000: .4byte 0xfffffc00 -_080DF004: .4byte sub_80782D8 -_080DF008: .4byte sub_80DF018 -_080DF00C: - movs r0, 0x28 -_080DF00E: - strh r0, [r3, 0x2E] -_080DF010: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DEF98 - - thumb_func_start sub_80DF018 -sub_80DF018: @ 80DF018 - push {r4,lr} - adds r3, r0, 0 - movs r0, 0x2E - ldrsh r2, [r3, r0] - cmp r2, 0 - bne _080DF044 - ldr r1, _080DF040 @ =REG_BLDCNT - movs r4, 0xFD - lsls r4, 6 - adds r0, r4, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x10 - strh r0, [r1] - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - strh r2, [r3, 0x30] - strh r2, [r3, 0x32] - b _080DF082 - .align 2, 0 -_080DF040: .4byte REG_BLDCNT -_080DF044: - ldrh r1, [r3, 0x30] - movs r2, 0x30 - ldrsh r0, [r3, r2] - cmp r0, 0x1 - bgt _080DF054 - adds r0, r1, 0x1 - strh r0, [r3, 0x30] - b _080DF082 -_080DF054: - movs r0, 0 - strh r0, [r3, 0x30] - ldrh r0, [r3, 0x32] - adds r0, 0x1 - strh r0, [r3, 0x32] - ldr r2, _080DF088 @ =REG_BLDALPHA - movs r1, 0x10 - subs r1, r0 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r4, 0x32 - ldrsh r0, [r3, r4] - cmp r0, 0x10 - bne _080DF082 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DF08C @ =sub_80DF090 - str r0, [r3, 0x1C] -_080DF082: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DF088: .4byte REG_BLDALPHA -_080DF08C: .4byte sub_80DF090 - thumb_func_end sub_80DF018 - - thumb_func_start sub_80DF090 -sub_80DF090: @ 80DF090 - push {lr} - ldr r1, _080DF0AC @ =REG_BLDCNT - movs r2, 0 - strh r2, [r1] - adds r1, 0x2 - strh r2, [r1] - ldr r1, _080DF0B0 @ =gUnknown_030042C4 - strh r2, [r1] - ldr r1, _080DF0B4 @ =gUnknown_03004240 - strh r2, [r1] - bl move_anim_8072740 - pop {r0} - bx r0 - .align 2, 0 -_080DF0AC: .4byte REG_BLDCNT -_080DF0B0: .4byte gUnknown_030042C4 -_080DF0B4: .4byte gUnknown_03004240 - thumb_func_end sub_80DF090 - - thumb_func_start sub_80DF0B8 -sub_80DF0B8: @ 80DF0B8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0xC - bl Sin - strh r0, [r4, 0x24] - ldr r0, _080DF120 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DF0DC - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] -_080DF0DC: - ldrh r0, [r4, 0x2E] - adds r0, 0x6 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080DF12C - ldr r0, _080DF124 @ =0x0000050b - strh r0, [r4, 0x3A] - ldr r1, _080DF128 @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r4, 0x3A] - strh r0, [r1] - b _080DF17E - .align 2, 0 -_080DF120: .4byte gBattleAnimBankAttacker -_080DF124: .4byte 0x0000050b -_080DF128: .4byte REG_BLDCNT -_080DF12C: - cmp r0, 0x1E - ble _080DF17E - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x3A] - lsls r0, r1, 16 - asrs r0, 24 - lsls r0, 16 - movs r2, 0xFF - ands r2, r1 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - lsrs r3, r0, 16 - cmp r3, 0x10 - bls _080DF150 - movs r3, 0x10 -_080DF150: - subs r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r0, 0 - bge _080DF15C - movs r2, 0 -_080DF15C: - ldr r1, _080DF184 @ =REG_BLDALPHA - lsls r0, r3, 8 - orrs r0, r2 - strh r0, [r1] - strh r0, [r4, 0x3A] - cmp r3, 0x10 - bne _080DF17E - cmp r2, 0 - bne _080DF17E - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DF188 @ =sub_80DF18C - str r0, [r4, 0x1C] -_080DF17E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DF184: .4byte REG_BLDALPHA -_080DF188: .4byte sub_80DF18C - thumb_func_end sub_80DF0B8 - - thumb_func_start sub_80DF18C -sub_80DF18C: @ 80DF18C - push {lr} - ldr r1, _080DF1A0 @ =REG_BLDCNT - movs r2, 0 - strh r2, [r1] - adds r1, 0x2 - strh r2, [r1] - bl move_anim_8072740 - pop {r0} - bx r0 - .align 2, 0 -_080DF1A0: .4byte REG_BLDCNT - thumb_func_end sub_80DF18C - - thumb_func_start sub_80DF1A4 -sub_80DF1A4: @ 80DF1A4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080DF23C @ =gTasks - adds r4, r0 - movs r6, 0 - strh r6, [r4, 0x8] - movs r0, 0x10 - mov r8, r0 - mov r2, r8 - strh r2, [r4, 0xA] - ldr r5, _080DF240 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1A] - ldrb r0, [r5] - bl sub_8077FC0 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - ldrb r0, [r5] - movs r1, 0x1 - bl sub_807A100 - lsls r0, 16 - asrs r1, r0, 16 - lsrs r0, 31 - adds r1, r0 - asrs r1, 1 - adds r1, 0x8 - strh r1, [r4, 0x1E] - strh r6, [r4, 0x16] - ldrb r0, [r5] - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x12] - ldrb r0, [r5] - bl sub_8079E90 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x2 - strh r0, [r4, 0x14] - strh r6, [r4, 0xE] - mov r0, r8 - strh r0, [r4, 0x10] - ldr r1, _080DF244 @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - strh r6, [r4, 0x18] - ldr r0, _080DF248 @ =sub_80DF24C - str r0, [r4] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DF23C: .4byte gTasks -_080DF240: .4byte gBattleAnimBankAttacker -_080DF244: .4byte REG_BLDCNT -_080DF248: .4byte sub_80DF24C - thumb_func_end sub_80DF1A4 - - thumb_func_start sub_80DF24C -sub_80DF24C: @ 80DF24C - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _080DF270 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bls _080DF266 - b _080DF3CC -_080DF266: - lsls r0, 2 - ldr r1, _080DF274 @ =_080DF278 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DF270: .4byte gTasks -_080DF274: .4byte _080DF278 - .align 2, 0 -_080DF278: - .4byte _080DF290 - .4byte _080DF300 - .4byte _080DF342 - .4byte _080DF356 - .4byte _080DF3AC - .4byte _080DF3BC -_080DF290: - movs r6, 0 -_080DF292: - movs r2, 0x1A - ldrsh r1, [r4, r2] - movs r0, 0x1C - ldrsh r2, [r4, r0] - ldrb r3, [r4, 0x14] - ldr r0, _080DF2F4 @ =gSpriteTemplate_83DAF80 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080DF2E6 - ldr r1, _080DF2F8 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r5, r0, r1 - strh r7, [r5, 0x2E] - ldr r0, _080DF2FC @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - movs r1, 0 - lsls r0, 24 - cmp r0, 0 - bne _080DF2C8 - movs r1, 0x1 -_080DF2C8: - strh r1, [r5, 0x30] - movs r0, 0x2A - muls r0, r6 - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r4, 0x1E] - strh r0, [r5, 0x34] - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 1 - strh r0, [r5, 0x38] - ldrh r0, [r4, 0x16] - adds r0, 0x1 - strh r0, [r4, 0x16] -_080DF2E6: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _080DF292 - b _080DF3B4 - .align 2, 0 -_080DF2F4: .4byte gSpriteTemplate_83DAF80 -_080DF2F8: .4byte gSprites -_080DF2FC: .4byte gBattleAnimBankAttacker -_080DF300: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DF31E - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0xD - bgt _080DF32C - adds r0, r1, 0x1 - strh r0, [r4, 0xE] - b _080DF32C -_080DF31E: - ldrh r1, [r4, 0x10] - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r0, 0x4 - ble _080DF32C - subs r0, r1, 0x1 - strh r0, [r4, 0x10] -_080DF32C: - movs r1, 0xE - ldrsh r0, [r4, r1] - ldrh r3, [r4, 0xE] - ldrh r2, [r4, 0x10] - cmp r0, 0xE - bne _080DF39C - cmp r2, 0x4 - bne _080DF39C - movs r0, 0 - strh r0, [r4, 0xA] - b _080DF396 -_080DF342: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _080DF3CC - movs r0, 0 - strh r0, [r4, 0xA] - b _080DF3B4 -_080DF356: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DF374 - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080DF382 - subs r0, r1, 0x1 - strh r0, [r4, 0xE] - b _080DF382 -_080DF374: - ldrh r1, [r4, 0x10] - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080DF382 - adds r0, r1, 0x1 - strh r0, [r4, 0x10] -_080DF382: - movs r1, 0xE - ldrsh r0, [r4, r1] - ldrh r3, [r4, 0xE] - ldrh r2, [r4, 0x10] - cmp r0, 0 - bne _080DF39C - cmp r2, 0x10 - bne _080DF39C - movs r0, 0x1 - strh r0, [r4, 0x18] -_080DF396: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080DF39C: - ldr r1, _080DF3A8 @ =REG_BLDALPHA - lsls r0, r2, 8 - orrs r0, r3 - strh r0, [r1] - b _080DF3CC - .align 2, 0 -_080DF3A8: .4byte REG_BLDALPHA -_080DF3AC: - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080DF3CC -_080DF3B4: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DF3CC -_080DF3BC: - ldr r0, _080DF3D4 @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080DF3CC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DF3D4: .4byte REG_BLDCNT - thumb_func_end sub_80DF24C - - thumb_func_start sub_80DF3D8 -sub_80DF3D8: @ 80DF3D8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DF3EA - ldrh r0, [r4, 0x32] - adds r0, 0x2 - b _080DF3EE -_080DF3EA: - ldrh r0, [r4, 0x32] - subs r0, 0x2 -_080DF3EE: - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x32] - movs r0, 0xFF - ands r0, r1 - strh r0, [r4, 0x32] - movs r2, 0x32 - ldrsh r0, [r4, r2] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x32] - subs r0, 0x41 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7E - bhi _080DF430 - ldr r2, _080DF42C @ =gTasks - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x12] - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - b _080DF444 - .align 2, 0 -_080DF42C: .4byte gTasks -_080DF430: - ldr r2, _080DF498 @ =gTasks - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r2, 0x3 - ldrb r1, [r0, 0x12] - ands r1, r2 -_080DF444: - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - movs r1, 0x38 - ldrsh r0, [r4, r1] - lsls r0, 3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - movs r1, 0x7 - bl Sin - strh r0, [r4, 0x26] - ldr r2, _080DF498 @ =gTasks - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r2 - movs r2, 0x18 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080DF492 - ldrh r0, [r1, 0x16] - subs r0, 0x1 - strh r0, [r1, 0x16] - adds r0, r4, 0 - bl DestroySprite -_080DF492: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DF498: .4byte gTasks - thumb_func_end sub_80DF3D8 - - thumb_func_start sub_80DF49C -sub_80DF49C: @ 80DF49C - adds r3, r0, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r3] - ldr r2, _080DF4E0 @ =gObjectBankIDs - ldr r1, _080DF4E4 @ =gBattleAnimBankAttacker - ldrb r1, [r1] - adds r1, r2 - ldrb r1, [r1] - strh r1, [r0, 0x38] - movs r1, 0x80 - strh r1, [r0, 0x2E] - movs r1, 0xA - strh r1, [r0, 0x30] - ldr r2, _080DF4E8 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x32] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0x34] - ldr r1, _080DF4EC @ =sub_80DF4F4 - str r1, [r0, 0x1C] - ldr r2, _080DF4F0 @ =gSprites - movs r3, 0x38 - ldrsh r1, [r0, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - adds r1, 0x8 - strh r1, [r0, 0x22] - bx lr - .align 2, 0 -_080DF4E0: .4byte gObjectBankIDs -_080DF4E4: .4byte gBattleAnimBankAttacker -_080DF4E8: .4byte gBattleAnimArgs -_080DF4EC: .4byte sub_80DF4F4 -_080DF4F0: .4byte gSprites - thumb_func_end sub_80DF49C - - thumb_func_start sub_80DF4F4 -sub_80DF4F4: @ 80DF4F4 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x34] - movs r1, 0x34 - ldrsh r3, [r5, r1] - cmp r3, 0 - beq _080DF55C - subs r0, 0x1 - strh r0, [r5, 0x34] - movs r2, 0x2E - ldrsh r0, [r5, r2] - movs r2, 0x30 - ldrsh r1, [r5, r2] - bl Sin - ldr r4, _080DF554 @ =gSprites - movs r1, 0x38 - ldrsh r2, [r5, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r0, [r1, 0x24] - movs r2, 0x2E - ldrsh r0, [r5, r2] - movs r2, 0x30 - ldrsh r1, [r5, r2] - bl Cos - movs r1, 0x38 - ldrsh r2, [r5, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r0, [r1, 0x26] - ldrh r0, [r5, 0x32] - ldrh r2, [r5, 0x2E] - adds r1, r0, r2 - strh r1, [r5, 0x2E] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080DF590 - ldr r2, _080DF558 @ =0xffffff00 - adds r0, r1, r2 - strh r0, [r5, 0x2E] - b _080DF590 - .align 2, 0 -_080DF554: .4byte gSprites -_080DF558: .4byte 0xffffff00 -_080DF55C: - ldr r2, _080DF598 @ =gSprites - movs r0, 0x38 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x24] - movs r0, 0x38 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x26] - movs r0, 0x38 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - subs r1, 0x8 - strh r1, [r0, 0x22] - ldr r0, _080DF59C @ =move_anim_8074EE0 - str r0, [r5, 0x1C] -_080DF590: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF598: .4byte gSprites -_080DF59C: .4byte move_anim_8074EE0 - thumb_func_end sub_80DF4F4 - - thumb_func_start sub_80DF5A0 -sub_80DF5A0: @ 80DF5A0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080DF5E8 @ =gBattleAnimBankAttacker - 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] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DF5F0 - ldr r2, _080DF5EC @ =gBattleAnimArgs - ldrh r0, [r5, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r5, 0x20] - ldrh r0, [r2, 0x6] - negs r0, r0 - strh r0, [r2, 0x6] - ldrh r0, [r2, 0x8] - negs r0, r0 - strh r0, [r2, 0x8] - adds r1, r2, 0 - b _080DF5FA - .align 2, 0 -_080DF5E8: .4byte gBattleAnimBankAttacker -_080DF5EC: .4byte gBattleAnimArgs -_080DF5F0: - ldr r1, _080DF630 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] -_080DF5FA: - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x34] - ldrh r0, [r1, 0xA] - strh r0, [r5, 0x38] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080DF634 @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldr r0, _080DF638 @ =sub_8078504 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF630: .4byte gBattleAnimArgs -_080DF634: .4byte move_anim_8074EE0 -_080DF638: .4byte sub_8078504 - thumb_func_end sub_80DF5A0 - - thumb_func_start sub_80DF63C -sub_80DF63C: @ 80DF63C - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_8078650 - ldr r4, _080DF694 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080DF698 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DF6A0 - ldr r2, _080DF69C @ =gBattleAnimArgs - ldrh r0, [r5, 0x20] - ldrh r1, [r2, 0x2] - subs r0, r1 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x22] - adds r1, r0 - strh r1, [r5, 0x22] - ldrh r0, [r5, 0x32] - ldrh r1, [r2, 0x4] - subs r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r2, 0x6] - ldrh r1, [r5, 0x36] - adds r0, r1 - strh r0, [r5, 0x36] - b _080DF6CA - .align 2, 0 -_080DF694: .4byte gBattleAnimBankTarget -_080DF698: .4byte gBattleAnimBankAttacker -_080DF69C: .4byte gBattleAnimArgs -_080DF6A0: - ldr r1, _080DF6E4 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r0, [r1, 0x4] - ldrh r2, [r5, 0x32] - adds r0, r2 - strh r0, [r5, 0x32] - ldrh r0, [r1, 0x6] - ldrh r1, [r5, 0x36] - adds r0, r1 - strh r0, [r5, 0x36] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080DF6CA: - ldr r0, _080DF6E4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x8] - strh r0, [r5, 0x2E] - ldr r0, _080DF6E8 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080DF6EC @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF6E4: .4byte gBattleAnimArgs -_080DF6E8: .4byte sub_8078B34 -_080DF6EC: .4byte move_anim_8074EE0 - thumb_func_end sub_80DF63C - - thumb_func_start sub_80DF6F0 -sub_80DF6F0: @ 80DF6F0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080DF704 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DF70C - ldr r4, _080DF708 @ =gBattleAnimBankAttacker - b _080DF70E - .align 2, 0 -_080DF704: .4byte gBattleAnimArgs -_080DF708: .4byte gBattleAnimBankAttacker -_080DF70C: - ldr r4, _080DF750 @ =gBattleAnimBankTarget -_080DF70E: - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080DF754 @ =gBattleAnimArgs - movs r0, 0x2 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_807867C - ldrh r0, [r4, 0x4] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - ldr r0, _080DF758 @ =sub_8078600 - str r0, [r5, 0x1C] - ldr r1, _080DF75C @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF750: .4byte gBattleAnimBankTarget -_080DF754: .4byte gBattleAnimArgs -_080DF758: .4byte sub_8078600 -_080DF75C: .4byte move_anim_8074EE0 - thumb_func_end sub_80DF6F0 - - thumb_func_start sub_80DF760 -sub_80DF760: @ 80DF760 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080DF788 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DF77A - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080DF77A: - adds r0, r4, 0 - bl sub_80DF63C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DF788: .4byte gBattleAnimBankAttacker - thumb_func_end sub_80DF760 - - thumb_func_start sub_80DF78C -sub_80DF78C: @ 80DF78C - push {r4-r7,lr} - adds r6, r0, 0 - ldr r4, _080DF7E0 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r6, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x22] - strh r5, [r6, 0x36] - movs r0, 0x1 - strh r0, [r6, 0x38] - ldr r0, _080DF7E4 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r6, 0x3A] - ldr r4, _080DF7E8 @ =gBankAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_807A100 - lsls r7, r0, 16 - lsrs r5, r7, 16 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_807A100 - lsls r1, r0, 16 - lsrs r0, r1, 16 - cmp r5, r0 - bls _080DF7EC - lsrs r0, r7, 17 - b _080DF7EE - .align 2, 0 -_080DF7E0: .4byte gBattleAnimBankAttacker -_080DF7E4: .4byte gBattleAnimArgs -_080DF7E8: .4byte gBankAttacker -_080DF7EC: - lsrs r0, r1, 17 -_080DF7EE: - strh r0, [r6, 0x3C] - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r2, 0x3C - ldrsh r1, [r6, r2] - bl Cos - strh r0, [r6, 0x24] - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r2, 0x3C - ldrsh r1, [r6, r2] - bl Sin - strh r0, [r6, 0x26] - ldr r0, _080DF818 @ =sub_80DF81C - str r0, [r6, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DF818: .4byte sub_80DF81C - thumb_func_end sub_80DF78C - - thumb_func_start sub_80DF81C -sub_80DF81C: @ 80DF81C - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r5, [r4, r0] - cmp r5, 0 - beq _080DF82E - cmp r5, 0x1 - beq _080DF89A - b _080DF91E -_080DF82E: - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x38] - subs r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3A] - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080DF880 - strh r5, [r4, 0x36] - ldrh r1, [r4, 0x38] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080DF880 - adds r0, r1, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080DF880 - movs r0, 0x10 - strh r0, [r4, 0x38] -_080DF880: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080DF91E - movs r0, 0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080DF91E -_080DF89A: - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x38] - subs r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0x95 - bgt _080DF8C2 - adds r0, r1, 0 - adds r0, 0x8 - strh r0, [r4, 0x3C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x95 - ble _080DF8C2 - movs r0, 0x96 - strh r0, [r4, 0x3C] -_080DF8C2: - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080DF90A - movs r0, 0 - strh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080DF90A - adds r0, r1, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080DF90A - movs r0, 0x10 - strh r0, [r4, 0x38] -_080DF90A: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080DF91E - adds r0, r4, 0 - bl move_anim_8072740 -_080DF91E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DF81C - - thumb_func_start sub_80DF924 -sub_80DF924: @ 80DF924 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080DF950 @ =gTasks - adds r4, r1, r0 - ldr r0, _080DF954 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DF960 - ldr r0, _080DF958 @ =REG_BG1HOFS - str r0, [sp] - ldr r0, _080DF95C @ =gUnknown_030042C0 - b _080DF966 - .align 2, 0 -_080DF950: .4byte gTasks -_080DF954: .4byte gBattleAnimBankAttacker -_080DF958: .4byte REG_BG1HOFS -_080DF95C: .4byte gUnknown_030042C0 -_080DF960: - ldr r0, _080DF9DC @ =REG_BG2HOFS - str r0, [sp] - ldr r0, _080DF9E0 @ =gUnknown_03004288 -_080DF966: - ldrh r0, [r0] - strh r0, [r4, 0xC] - ldr r0, _080DF9E4 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r5, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r5, [r0, 0x9] - ldr r0, _080DF9E8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl sub_8077FC0 - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - subs r1, 0x20 - strh r1, [r4, 0xE] - adds r0, 0x20 - strh r0, [r4, 0x10] - cmp r1, 0 - bge _080DF996 - strh r5, [r4, 0xE] -_080DF996: - ldrh r3, [r4, 0xE] - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - bgt _080DF9C4 - ldr r5, _080DF9EC @ =gUnknown_03004DE0 - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_080DF9A8: - lsls r1, r3, 1 - adds r2, r1, r5 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r1, r6 - ldrh r0, [r4, 0xC] - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - ble _080DF9A8 -_080DF9C4: - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl sub_80895F8 - ldr r0, _080DF9F0 @ =sub_80DF9F4 - str r0, [r4] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DF9DC: .4byte REG_BG2HOFS -_080DF9E0: .4byte gUnknown_03004288 -_080DF9E4: .4byte 0xa2600001 -_080DF9E8: .4byte gBattleAnimBankAttacker -_080DF9EC: .4byte gUnknown_03004DE0 -_080DF9F0: .4byte sub_80DF9F4 - thumb_func_end sub_80DF924 - - thumb_func_start sub_80DF9F4 -sub_80DF9F4: @ 80DF9F4 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080DFA18 @ =gTasks - adds r2, r0, r1 - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0x4 - bhi _080DFAAA - lsls r0, 2 - ldr r1, _080DFA1C @ =_080DFA20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DFA18: .4byte gTasks -_080DFA1C: .4byte _080DFA20 - .align 2, 0 -_080DFA20: - .4byte _080DFA34 - .4byte _080DFA56 - .4byte _080DFA66 - .4byte _080DFA92 - .4byte _080DFAA4 -_080DFA34: - ldrh r0, [r2, 0x16] - adds r0, 0x1 - strh r0, [r2, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DFA8A - movs r0, 0 - strh r0, [r2, 0x16] - ldrh r0, [r2, 0x14] - adds r0, 0x1 - strh r0, [r2, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080DFA8A - b _080DFA84 -_080DFA56: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080DFA8A - b _080DFA84 -_080DFA66: - ldrh r0, [r2, 0x16] - adds r0, 0x1 - strh r0, [r2, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DFA8A - movs r0, 0 - strh r0, [r2, 0x16] - ldrh r0, [r2, 0x14] - subs r0, 0x1 - strh r0, [r2, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _080DFA8A -_080DFA84: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_080DFA8A: - adds r0, r2, 0 - bl sub_80DFAB0 - b _080DFAAA -_080DFA92: - ldr r1, _080DFAA0 @ =gUnknown_03004DC0 - movs r0, 0x3 - strb r0, [r1, 0x15] - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _080DFAAA - .align 2, 0 -_080DFAA0: .4byte gUnknown_03004DC0 -_080DFAA4: - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080DFAAA: - pop {r0} - bx r0 - thumb_func_end sub_80DF9F4 - - thumb_func_start sub_80DFAB0 -sub_80DFAB0: @ 80DFAB0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - ldrh r3, [r5, 0x12] - ldrh r4, [r5, 0xE] - movs r1, 0x10 - ldrsh r0, [r5, r1] - cmp r4, r0 - bgt _080DFB06 - ldr r7, _080DFB1C @ =gUnknown_03004DE0 - mov r12, r7 - ldr r0, _080DFB20 @ =gSineTable - mov r8, r0 - ldr r6, _080DFB24 @ =gUnknown_03004DC0 -_080DFACE: - lsls r2, r4, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r12 - lsls r0, r3, 1 - add r0, r8 - movs r7, 0 - ldrsh r1, [r0, r7] - movs r7, 0x14 - ldrsh r0, [r5, r7] - muls r0, r1 - asrs r0, 7 - ldrh r1, [r5, 0xC] - adds r0, r1 - strh r0, [r2] - adds r3, 0x8 - movs r0, 0xFF - ands r3, r0 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - movs r7, 0x10 - ldrsh r0, [r5, r7] - cmp r4, r0 - ble _080DFACE -_080DFB06: - ldrh r0, [r5, 0x12] - adds r0, 0x9 - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x12] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DFB1C: .4byte gUnknown_03004DE0 -_080DFB20: .4byte gSineTable -_080DFB24: .4byte gUnknown_03004DC0 - thumb_func_end sub_80DFAB0 - - thumb_func_start sub_80DFB28 -sub_80DFB28: @ 80DFB28 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r4, r0, 0 - ldr r5, _080DFBC8 @ =gBattleAnimArgs - movs r0, 0x4 - ldrsh r1, [r5, r0] - lsls r0, r1, 1 - adds r0, r1 - movs r1, 0x5 - bl __divsi3 - adds r6, r0, 0 - ldr r1, _080DFBCC @ =gBattleAnimBankAttacker - mov r8, r1 - ldrb r0, [r1] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - mov r2, r8 - ldrb r0, [r2] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r3, [r5, 0x8] - adds r0, r3 - strh r0, [r4, 0x22] - movs r1, 0x2 - ldrsh r0, [r5, r1] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl Cos - strh r0, [r4, 0x30] - movs r3, 0x2 - ldrsh r0, [r5, r3] - lsls r6, 16 - asrs r6, 16 - adds r1, r6, 0 - bl Sin - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x30] - ldrh r2, [r5] - adds r3, r2, 0 - muls r3, r1 - adds r1, r3, 0 - ldrh r3, [r4, 0x20] - adds r1, r3 - strh r1, [r4, 0x20] - adds r1, r2, 0 - muls r1, r0 - adds r0, r1, 0 - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x34] - ldr r0, _080DFBD0 @ =sub_80DFBD8 - str r0, [r4, 0x1C] - adds r4, 0x2E - ldr r2, _080DFBD4 @ =gUnknown_03000730 - movs r1, 0x6 -_080DFBB0: - ldrh r0, [r4] - strh r0, [r2] - adds r4, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080DFBB0 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DFBC8: .4byte gBattleAnimArgs -_080DFBCC: .4byte gBattleAnimBankAttacker -_080DFBD0: .4byte sub_80DFBD8 -_080DFBD4: .4byte gUnknown_03000730 - thumb_func_end sub_80DFB28 - - thumb_func_start sub_80DFBD8 -sub_80DFBD8: @ 80DFBD8 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x36] - adds r0, r1 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x38] - adds r0, r2 - strh r0, [r4, 0x38] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x24] - movs r2, 0x38 - ldrsh r0, [r4, r2] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x34 - ldrsh r1, [r4, r2] - cmp r0, r1 - ble _080DFC1C - adds r0, r4, 0 - bl move_anim_8072740 -_080DFC1C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DFBD8 - - thumb_func_start sub_80DFC24 -sub_80DFC24: @ 80DFC24 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080DFC58 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080DFC5C @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r1, 0x8] - ldr r0, _080DFC60 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - movs r2, 0x10 - strh r2, [r1, 0xA] - ldr r1, _080DFC64 @ =REG_BLDALPHA - strh r2, [r1] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DFC70 - ldr r1, _080DFC68 @ =REG_BLDCNT - ldr r2, _080DFC6C @ =0x00003f42 - b _080DFC74 - .align 2, 0 -_080DFC58: .4byte gTasks -_080DFC5C: .4byte gBattleAnimArgs -_080DFC60: .4byte gBattleAnimBankAttacker -_080DFC64: .4byte REG_BLDALPHA -_080DFC68: .4byte REG_BLDCNT -_080DFC6C: .4byte 0x00003f42 -_080DFC70: - ldr r1, _080DFC8C @ =REG_BLDCNT - ldr r2, _080DFC90 @ =0x00003f44 -_080DFC74: - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080DFC94 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080DFC98 @ =sub_80DFC9C - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DFC8C: .4byte REG_BLDCNT -_080DFC90: .4byte 0x00003f44 -_080DFC94: .4byte gTasks -_080DFC98: .4byte sub_80DFC9C - thumb_func_end sub_80DFC24 - - thumb_func_start sub_80DFC9C -sub_80DFC9C: @ 80DFC9C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080DFD04 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0xA] - lsrs r2, r0, 8 - lsls r0, 24 - lsrs r1, r0, 24 - movs r3, 0xC - ldrsh r0, [r4, r3] - ldrb r3, [r4, 0x8] - cmp r0, r3 - bne _080DFD18 - adds r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r2, 8 - orrs r1, r0 - movs r3, 0 - strh r1, [r4, 0xA] - ldr r0, _080DFD08 @ =REG_BLDALPHA - strh r1, [r0] - strh r3, [r4, 0xC] - cmp r2, 0x10 - bne _080DFD1E - ldr r2, _080DFD0C @ =gSprites - ldr r1, _080DFD10 @ =gObjectBankIDs - ldr r0, _080DFD14 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _080DFD1E - .align 2, 0 -_080DFD04: .4byte gTasks -_080DFD08: .4byte REG_BLDALPHA -_080DFD0C: .4byte gSprites -_080DFD10: .4byte gObjectBankIDs -_080DFD14: .4byte gBattleAnimBankAttacker -_080DFD18: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] -_080DFD1E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DFC9C - - thumb_func_start sub_80DFD24 -sub_80DFD24: @ 80DFD24 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DFD48 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080DFD4C @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r1, 0x8] - movs r2, 0x80 - lsls r2, 5 - strh r2, [r1, 0xA] - ldr r0, _080DFD50 @ =sub_80DFD58 - str r0, [r1] - ldr r0, _080DFD54 @ =REG_BLDALPHA - strh r2, [r0] - bx lr - .align 2, 0 -_080DFD48: .4byte gTasks -_080DFD4C: .4byte gBattleAnimArgs -_080DFD50: .4byte sub_80DFD58 -_080DFD54: .4byte REG_BLDALPHA - thumb_func_end sub_80DFD24 - - thumb_func_start sub_80DFD58 -sub_80DFD58: @ 80DFD58 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080DFDA8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0xA] - lsrs r1, r0, 8 - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0xC - ldrsh r0, [r2, r3] - ldrb r3, [r2, 0x8] - cmp r0, r3 - bne _080DFDB4 - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r3, 8 - orrs r1, r0 - movs r0, 0 - strh r1, [r2, 0xA] - ldr r5, _080DFDAC @ =REG_BLDALPHA - strh r1, [r5] - strh r0, [r2, 0xC] - cmp r3, 0 - bne _080DFDBA - ldr r0, _080DFDB0 @ =REG_BLDCNT - strh r3, [r0] - strh r3, [r5] - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080DFDBA - .align 2, 0 -_080DFDA8: .4byte gTasks -_080DFDAC: .4byte REG_BLDALPHA -_080DFDB0: .4byte REG_BLDCNT -_080DFDB4: - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] -_080DFDBA: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DFD58 - - thumb_func_start sub_80DFDC0 -sub_80DFDC0: @ 80DFDC0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080DFDE8 @ =REG_BLDALPHA - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080DFDEC @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DFDF8 - ldr r1, _080DFDF0 @ =REG_BLDCNT - ldr r2, _080DFDF4 @ =0x00003f42 - b _080DFDFC - .align 2, 0 -_080DFDE8: .4byte REG_BLDALPHA -_080DFDEC: .4byte gBattleAnimBankAttacker -_080DFDF0: .4byte REG_BLDCNT -_080DFDF4: .4byte 0x00003f42 -_080DFDF8: - ldr r1, _080DFE0C @ =REG_BLDCNT - ldr r2, _080DFE10 @ =0x00003f44 -_080DFDFC: - adds r0, r2, 0 - strh r0, [r1] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DFE0C: .4byte REG_BLDCNT -_080DFE10: .4byte 0x00003f44 - thumb_func_end sub_80DFDC0 - - thumb_func_start sub_80DFE14 -sub_80DFE14: @ 80DFE14 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080DFE80 @ =gBattleAnimBankTarget - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x30] - ldr r5, _080DFE84 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - movs r0, 0x7E - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl sub_8078A5C - ldrh r0, [r4, 0x30] - negs r0, r0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x32] - negs r0, r0 - strh r0, [r4, 0x36] - ldr r0, _080DFE88 @ =0x0000ffd8 - strh r0, [r4, 0x3A] - ldr r1, _080DFE8C @ =sub_80DFE90 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DFE80: .4byte gBattleAnimBankTarget -_080DFE84: .4byte gBattleAnimBankAttacker -_080DFE88: .4byte 0x0000ffd8 -_080DFE8C: .4byte sub_80DFE90 - thumb_func_end sub_80DFE14 - - thumb_func_start sub_80DFE90 -sub_80DFE90: @ 80DFE90 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r5, [r4, 0x30] - ldrh r0, [r4, 0x34] - adds r2, r5, r0 - strh r2, [r4, 0x34] - ldrh r3, [r4, 0x32] - ldrh r6, [r4, 0x36] - adds r1, r3, r6 - strh r1, [r4, 0x36] - lsls r0, r2, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - movs r6, 0x3C - ldrsh r0, [r4, r6] - cmp r0, 0 - bne _080DFED2 - adds r0, r2, r5 - strh r0, [r4, 0x34] - adds r1, r3 - strh r1, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r4, 0x26] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] -_080DFED2: - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x3A - ldrsh r1, [r4, r2] - bl Sin - ldrh r6, [r4, 0x26] - adds r0, r6 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - cmp r0, 0x7F - ble _080DFF02 - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x3A] - adds r0, 0x14 - strh r0, [r4, 0x3A] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] -_080DFF02: - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080DFF14 - adds r0, r4, 0 - bl move_anim_8072740 -_080DFF14: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80DFE90 - - thumb_func_start sub_80DFF1C -sub_80DFF1C: @ 80DFF1C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080DFF50 @ =gBattleAnimArgs - 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] - ldrb r1, [r5, 0x4] - adds r0, r4, 0 - bl StartSpriteAffineAnim - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x32] - ldr r0, _080DFF54 @ =sub_80DFF58 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DFF50: .4byte gBattleAnimArgs -_080DFF54: .4byte sub_80DFF58 - thumb_func_end sub_80DFF1C - - thumb_func_start sub_80DFF58 -sub_80DFF58: @ 80DFF58 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x36] - adds r0, r1 - strh r0, [r2, 0x36] - ldrh r1, [r2, 0x30] - ldrh r3, [r2, 0x38] - adds r1, r3 - strh r1, [r2, 0x38] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r0, 0x1 - strh r0, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x32 - ldrsh r1, [r2, r3] - cmp r0, r1 - bne _080DFF8E - ldr r0, _080DFF94 @ =sub_80DFF98 - str r0, [r2, 0x1C] -_080DFF8E: - pop {r0} - bx r0 - .align 2, 0 -_080DFF94: .4byte sub_80DFF98 - thumb_func_end sub_80DFF58 - - thumb_func_start sub_80DFF98 -sub_80DFF98: @ 80DFF98 - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x36] - ldrh r0, [r3, 0x2E] - subs r1, r0 - strh r1, [r3, 0x36] - ldrh r0, [r3, 0x38] - ldrh r2, [r3, 0x30] - subs r0, r2 - strh r0, [r3, 0x38] - lsls r1, 16 - asrs r1, 24 - strh r1, [r3, 0x24] - lsls r0, 16 - asrs r0, 24 - strh r0, [r3, 0x26] - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bne _080DFFCA - adds r0, r3, 0 - bl move_anim_8074EE0 -_080DFFCA: - pop {r0} - bx r0 - thumb_func_end sub_80DFF98 - - thumb_func_start sub_80DFFD0 -sub_80DFFD0: @ 80DFFD0 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r0, _080DFFE4 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r3, r0, 0 - cmp r1, 0 - bne _080DFFEC - ldr r0, _080DFFE8 @ =gBattleAnimBankAttacker - b _080DFFEE - .align 2, 0 -_080DFFE4: .4byte gBattleAnimArgs -_080DFFE8: .4byte gBattleAnimBankAttacker -_080DFFEC: - ldr r0, _080E001C @ =gBattleAnimBankTarget -_080DFFEE: - ldrb r5, [r0] - movs r6, 0x14 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x4 - ldr r7, _080E0020 @ =0x000003ff - adds r0, r7, 0 - ands r1, r0 - ldr r0, _080E0024 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - movs r1, 0x2 - ldrsh r0, [r3, r1] - cmp r0, 0x1 - beq _080E004C - cmp r0, 0x1 - bgt _080E0028 - cmp r0, 0 - beq _080E0032 - b _080E00A0 - .align 2, 0 -_080E001C: .4byte gBattleAnimBankTarget -_080E0020: .4byte 0x000003ff -_080E0024: .4byte 0xfffffc00 -_080E0028: - cmp r0, 0x2 - beq _080E0066 - cmp r0, 0x3 - beq _080E007E - b _080E00A0 -_080E0032: - adds r0, r5, 0 - movs r1, 0x5 - bl sub_807A100 - subs r0, 0x8 - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_807A100 - adds r0, 0x8 - strh r0, [r4, 0x22] - b _080E00A0 -_080E004C: - adds r0, r5, 0 - movs r1, 0x5 - bl sub_807A100 - subs r0, 0xE - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_807A100 - adds r0, 0x10 - strh r0, [r4, 0x22] - b _080E00A0 -_080E0066: - adds r0, r5, 0 - movs r1, 0x4 - bl sub_807A100 - adds r0, 0x8 - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_807A100 - adds r0, 0x8 - b _080E0094 -_080E007E: - adds r0, r5, 0 - movs r1, 0x4 - bl sub_807A100 - adds r0, 0xE - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_807A100 - adds r0, 0x10 -_080E0094: - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - movs r6, 0xEC -_080E00A0: - movs r0, 0x20 - strh r0, [r4, 0x2E] - lsls r0, r6, 24 - asrs r0, 24 - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - adds r0, 0xC - strh r0, [r4, 0x36] - ldr r0, _080E00C8 @ =0x0000fff4 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl sub_80786EC - ldr r0, _080E00CC @ =sub_80E00D0 - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E00C8: .4byte 0x0000fff4 -_080E00CC: .4byte sub_80E00D0 - thumb_func_end sub_80DFFD0 - - thumb_func_start sub_80E00D0 -sub_80E00D0: @ 80E00D0 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080E00E4 - adds r0, r4, 0 - bl move_anim_8074EE0 -_080E00E4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E00D0 - - thumb_func_start sub_80E00EC -sub_80E00EC: @ 80E00EC - push {r4-r7,lr} - sub sp, 0x18 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080E0150 @ =gTasks - adds r5, r1, r0 - ldr r4, _080E0154 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1F - movs r6, 0 - strh r0, [r5, 0x16] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_807A100 - subs r0, 0x7 - strh r0, [r5, 0x14] - ldrh r1, [r5, 0x16] - strh r1, [r5, 0x12] - strh r0, [r5, 0x10] - subs r1, r0 - lsls r1, 8 - strh r1, [r5, 0x22] - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - subs r1, 0x20 - strh r1, [r5, 0x24] - adds r0, 0x20 - strh r0, [r5, 0x26] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080E015C - ldr r0, _080E0158 @ =0x0000fff4 - b _080E015E - .align 2, 0 -_080E0150: .4byte gTasks -_080E0154: .4byte gBattleAnimBankAttacker -_080E0158: .4byte 0x0000fff4 -_080E015C: - ldr r0, _080E01A8 @ =0x0000ffc0 -_080E015E: - strh r0, [r5, 0x18] - ldr r0, _080E01AC @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xE] - cmp r0, 0x1 - bne _080E01C4 - add r4, sp, 0xC - adds r0, r4, 0 - bl sub_8078914 - ldr r0, _080E01B0 @ =gUnknown_030041B4 - ldrh r0, [r0] - strh r0, [r5, 0x1C] - ldr r1, _080E01B4 @ =REG_BLDCNT - ldr r2, _080E01B8 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - ldrb r1, [r4, 0x8] - lsls r1, 4 - movs r0, 0 - movs r2, 0x20 - bl FillPalette - ldr r0, _080E01BC @ =REG_BG1VOFS - str r0, [sp] - movs r7, 0x2 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E01F4 - ldr r1, _080E01C0 @ =gUnknown_03004288 - b _080E01EE - .align 2, 0 -_080E01A8: .4byte 0x0000ffc0 -_080E01AC: .4byte gBattleAnimBankAttacker -_080E01B0: .4byte gUnknown_030041B4 -_080E01B4: .4byte REG_BLDCNT -_080E01B8: .4byte 0x00003f42 -_080E01BC: .4byte REG_BG1VOFS -_080E01C0: .4byte gUnknown_03004288 -_080E01C4: - ldr r0, _080E0278 @ =gUnknown_03004280 - ldrh r0, [r0] - strh r0, [r5, 0x1C] - ldr r1, _080E027C @ =REG_BLDCNT - ldr r2, _080E0280 @ =0x00003f44 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0x90 - movs r2, 0x20 - bl FillPalette - ldr r0, _080E0284 @ =REG_BG2VOFS - str r0, [sp] - movs r7, 0x4 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E01F4 - ldr r1, _080E0288 @ =gUnknown_030042C0 -_080E01EE: - ldrh r0, [r1] - adds r0, 0xF0 - strh r0, [r1] -_080E01F4: - ldr r0, _080E028C @ =0xa2600001 - str r0, [sp, 0x4] - mov r2, sp - movs r1, 0 - movs r0, 0x1 - strb r0, [r2, 0x8] - mov r0, sp - strb r1, [r0, 0x9] - strh r1, [r5, 0x1E] - movs r0, 0x10 - strh r0, [r5, 0x20] - strh r1, [r5, 0x8] - strh r1, [r5, 0xA] - strh r1, [r5, 0xC] - movs r0, 0x3 - bl sub_80E08CC - movs r3, 0 - ldr r4, _080E0290 @ =gUnknown_03004DE0 - movs r0, 0xF0 - lsls r0, 3 - adds r6, r4, r0 -_080E0220: - lsls r1, r3, 1 - adds r2, r1, r4 - ldrh r0, [r5, 0x1C] - strh r0, [r2] - adds r1, r6 - ldrh r0, [r5, 0x1C] - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x6F - bls _080E0220 - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl sub_80895F8 - ldr r1, _080E0294 @ =REG_WINOUT - movs r0, 0x3F - eors r7, r0 - movs r2, 0xFC - lsls r2, 6 - adds r0, r2, 0 - orrs r7, r0 - strh r7, [r1] - subs r1, 0x2 - adds r2, 0x3F - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _080E0298 @ =gUnknown_030042C4 - ldrh r0, [r5, 0x24] - lsls r0, 8 - ldrh r1, [r5, 0x26] - orrs r0, r1 - strh r0, [r2] - ldr r1, _080E029C @ =gUnknown_03004240 - movs r0, 0xA0 - strh r0, [r1] - ldr r0, _080E02A0 @ =sub_80E02A4 - str r0, [r5] - add sp, 0x18 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E0278: .4byte gUnknown_03004280 -_080E027C: .4byte REG_BLDCNT -_080E0280: .4byte 0x00003f44 -_080E0284: .4byte REG_BG2VOFS -_080E0288: .4byte gUnknown_030042C0 -_080E028C: .4byte 0xa2600001 -_080E0290: .4byte gUnknown_03004DE0 -_080E0294: .4byte REG_WINOUT -_080E0298: .4byte gUnknown_030042C4 -_080E029C: .4byte gUnknown_03004240 -_080E02A0: .4byte sub_80E02A4 - thumb_func_end sub_80E00EC - - thumb_func_start sub_80E02A4 -sub_80E02A4: @ 80E02A4 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E02C8 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080E02BE - b _080E03B6 -_080E02BE: - lsls r0, 2 - ldr r1, _080E02CC @ =_080E02D0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E02C8: .4byte gTasks -_080E02CC: .4byte _080E02D0 - .align 2, 0 -_080E02D0: - .4byte _080E02E4 - .4byte _080E0344 - .4byte _080E035E - .4byte _080E039C - .4byte _080E03B0 -_080E02E4: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E03B6 - 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 _080E0314 - ldrh r1, [r4, 0x1E] - movs r2, 0x1E - ldrsh r0, [r4, r2] - cmp r0, 0xC - beq _080E0322 - adds r0, r1, 0x1 - strh r0, [r4, 0x1E] - b _080E0322 -_080E0314: - ldrh r1, [r4, 0x20] - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x8 - beq _080E0322 - subs r0, r1, 0x1 - strh r0, [r4, 0x20] -_080E0322: - ldr r2, _080E0340 @ =REG_BLDALPHA - ldrh r0, [r4, 0x20] - lsls r0, 8 - ldrh r1, [r4, 0x1E] - orrs r0, r1 - strh r0, [r2] - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0xC - bne _080E03B6 - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x8 - bne _080E03B6 - b _080E03A2 - .align 2, 0 -_080E0340: .4byte REG_BLDALPHA -_080E0344: - ldrh r0, [r4, 0x10] - subs r0, 0x8 - strh r0, [r4, 0x10] - adds r0, r4, 0 - bl sub_80E079C - movs r0, 0x10 - ldrsh r1, [r4, r0] - movs r2, 0x18 - ldrsh r0, [r4, r2] - cmp r1, r0 - bge _080E03B6 - b _080E03A2 -_080E035E: - ldrh r0, [r4, 0x10] - subs r0, 0x8 - strh r0, [r4, 0x10] - adds r0, r4, 0 - bl sub_80E079C - ldrh r1, [r4, 0x24] - adds r1, 0x4 - strh r1, [r4, 0x24] - ldrh r0, [r4, 0x26] - subs r2, r0, 0x4 - strh r2, [r4, 0x26] - lsls r1, 16 - lsls r0, r2, 16 - cmp r1, r0 - blt _080E0380 - strh r2, [r4, 0x24] -_080E0380: - ldr r3, _080E0398 @ =gUnknown_030042C4 - ldrh r2, [r4, 0x24] - lsls r0, r2, 8 - ldrh r1, [r4, 0x26] - orrs r0, r1 - strh r0, [r3] - lsls r2, 16 - lsls r1, 16 - cmp r2, r1 - bne _080E03B6 - b _080E03A2 - .align 2, 0 -_080E0398: .4byte gUnknown_030042C4 -_080E039C: - ldr r1, _080E03AC @ =gUnknown_03004DC0 - movs r0, 0x3 - strb r0, [r1, 0x15] -_080E03A2: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E03B6 - .align 2, 0 -_080E03AC: .4byte gUnknown_03004DC0 -_080E03B0: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E03B6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E02A4 - - thumb_func_start sub_80E03BC -sub_80E03BC: @ 80E03BC - push {r4-r7,lr} - sub sp, 0x18 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080E03E4 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x4 - bls _080E03D8 - b _080E05F2 -_080E03D8: - lsls r0, 2 - ldr r1, _080E03E8 @ =_080E03EC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E03E4: .4byte gTasks -_080E03E8: .4byte _080E03EC - .align 2, 0 -_080E03EC: - .4byte _080E0400 - .4byte _080E048C - .4byte _080E04D0 - .4byte _080E053C - .4byte _080E05A4 -_080E0400: - bl NotInBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E043C - ldr r0, _080E042C @ =gUnknown_030042C4 - movs r1, 0 - strh r1, [r0] - ldr r0, _080E0430 @ =gUnknown_03004240 - strh r1, [r0] - ldr r0, _080E0434 @ =REG_WININ - ldr r2, _080E0438 @ =0x00003f3f - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080E05F2 - .align 2, 0 -_080E042C: .4byte gUnknown_030042C4 -_080E0430: .4byte gUnknown_03004240 -_080E0434: .4byte REG_WININ -_080E0438: .4byte 0x00003f3f -_080E043C: - ldr r0, _080E045C @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xE] - cmp r0, 0x1 - bne _080E046C - ldr r1, _080E0460 @ =REG_BLDCNT - ldr r2, _080E0464 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _080E0468 @ =gUnknown_03004288 - b _080E0476 - .align 2, 0 -_080E045C: .4byte gBattleAnimBankTarget -_080E0460: .4byte REG_BLDCNT -_080E0464: .4byte 0x00003f42 -_080E0468: .4byte gUnknown_03004288 -_080E046C: - ldr r1, _080E0480 @ =REG_BLDCNT - ldr r2, _080E0484 @ =0x00003f44 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _080E0488 @ =gUnknown_030042C0 -_080E0476: - ldrh r0, [r1] - adds r0, 0xF0 - strh r0, [r1] - b _080E0590 - .align 2, 0 -_080E0480: .4byte REG_BLDCNT -_080E0484: .4byte 0x00003f44 -_080E0488: .4byte gUnknown_030042C0 -_080E048C: - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080E04B4 - mov r0, sp - bl sub_8078914 - ldr r0, _080E04B0 @ =gUnknown_030041B4 - ldrh r0, [r0] - strh r0, [r5, 0x1C] - mov r0, sp - ldrb r1, [r0, 0x8] - lsls r1, 4 - movs r0, 0 - movs r2, 0x20 - bl FillPalette - b _080E04C4 - .align 2, 0 -_080E04B0: .4byte gUnknown_030041B4 -_080E04B4: - ldr r0, _080E04CC @ =gUnknown_03004280 - ldrh r0, [r0] - strh r0, [r5, 0x1C] - movs r0, 0 - movs r1, 0x90 - movs r2, 0x20 - bl FillPalette -_080E04C4: - movs r0, 0x3 - bl sub_80E08CC - b _080E0590 - .align 2, 0 -_080E04CC: .4byte gUnknown_03004280 -_080E04D0: - ldr r4, _080E051C @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1F - movs r6, 0 - strh r0, [r5, 0x16] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_807A100 - subs r0, 0x7 - strh r0, [r5, 0x14] - ldrh r1, [r5, 0x16] - subs r1, r0 - lsls r1, 8 - strh r1, [r5, 0x22] - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - subs r1, r0, 0x4 - strh r1, [r5, 0x24] - adds r0, 0x4 - strh r0, [r5, 0x26] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080E0524 - ldr r0, _080E0520 @ =0x0000fff4 - b _080E0526 - .align 2, 0 -_080E051C: .4byte gBattleAnimBankTarget -_080E0520: .4byte 0x0000fff4 -_080E0524: - ldr r0, _080E0538 @ =0x0000ffc0 -_080E0526: - strh r0, [r5, 0x18] - ldrh r0, [r5, 0x18] - strh r0, [r5, 0x10] - strh r0, [r5, 0x12] - movs r0, 0xC - strh r0, [r5, 0x1E] - movs r0, 0x8 - strh r0, [r5, 0x20] - b _080E0590 - .align 2, 0 -_080E0538: .4byte 0x0000ffc0 -_080E053C: - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r0, 0x1 - bne _080E054C - ldr r0, _080E0548 @ =REG_BG1VOFS - b _080E054E - .align 2, 0 -_080E0548: .4byte REG_BG1VOFS -_080E054C: - ldr r0, _080E0598 @ =REG_BG2VOFS -_080E054E: - str r0, [sp, 0xC] - movs r3, 0 - add r4, sp, 0xC - ldr r6, _080E059C @ =gUnknown_03004DE0 - movs r0, 0xF0 - lsls r0, 3 - adds r7, r6, r0 -_080E055C: - lsls r1, r3, 1 - adds r2, r1, r6 - ldrh r0, [r5, 0x1C] - adds r0, 0x9F - subs r0, r3 - strh r0, [r2] - adds r1, r7 - ldrh r0, [r5, 0x1C] - adds r0, 0x9F - subs r0, r3 - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x6F - bls _080E055C - ldr r1, _080E05A0 @ =0xa2600001 - str r1, [r4, 0x4] - movs r2, 0 - movs r0, 0x1 - strb r0, [r4, 0x8] - strb r2, [r4, 0x9] - ldr r0, [sp, 0xC] - ldr r2, [r4, 0x8] - bl sub_80895F8 -_080E0590: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080E05F2 - .align 2, 0 -_080E0598: .4byte REG_BG2VOFS -_080E059C: .4byte gUnknown_03004DE0 -_080E05A0: .4byte 0xa2600001 -_080E05A4: - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080E05BC - ldr r1, _080E05B4 @ =REG_WINOUT - ldr r2, _080E05B8 @ =0x00003f3d - b _080E05C0 - .align 2, 0 -_080E05B4: .4byte REG_WINOUT -_080E05B8: .4byte 0x00003f3d -_080E05BC: - ldr r1, _080E05FC @ =REG_WINOUT - ldr r2, _080E0600 @ =0x00003f3b -_080E05C0: - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _080E0604 @ =REG_WININ - ldr r2, _080E0608 @ =0x00003f3f - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _080E060C @ =gUnknown_030042C4 - ldrh r0, [r5, 0x24] - lsls r0, 8 - ldrh r1, [r5, 0x26] - orrs r0, r1 - strh r0, [r2] - ldr r1, _080E0610 @ =gUnknown_03004240 - movs r0, 0xA0 - strh r0, [r1] - movs r0, 0 - strh r0, [r5, 0x8] - strh r0, [r5, 0xA] - strh r0, [r5, 0xC] - ldr r1, _080E0614 @ =REG_BLDALPHA - ldr r2, _080E0618 @ =0x0000080c - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080E061C @ =sub_80E0620 - str r0, [r5] -_080E05F2: - add sp, 0x18 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E05FC: .4byte REG_WINOUT -_080E0600: .4byte 0x00003f3b -_080E0604: .4byte REG_WININ -_080E0608: .4byte 0x00003f3f -_080E060C: .4byte gUnknown_030042C4 -_080E0610: .4byte gUnknown_03004240 -_080E0614: .4byte REG_BLDALPHA -_080E0618: .4byte 0x0000080c -_080E061C: .4byte sub_80E0620 - thumb_func_end sub_80E03BC - - thumb_func_start sub_80E0620 -sub_80E0620: @ 80E0620 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E0644 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080E063A - b _080E0784 -_080E063A: - lsls r0, 2 - ldr r1, _080E0648 @ =_080E064C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E0644: .4byte gTasks -_080E0648: .4byte _080E064C - .align 2, 0 -_080E064C: - .4byte _080E0660 - .4byte _080E068C - .4byte _080E06F4 - .4byte _080E0754 - .4byte _080E0768 -_080E0660: - ldrh r0, [r4, 0x12] - adds r0, 0x8 - strh r0, [r4, 0x12] - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r4, 0x16] - movs r3, 0x16 - ldrsh r1, [r4, r3] - cmp r0, r1 - blt _080E0676 - strh r2, [r4, 0x12] -_080E0676: - adds r0, r4, 0 - bl sub_80E079C - movs r0, 0x12 - ldrsh r1, [r4, r0] - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r1, r0 - beq _080E068A - b _080E0784 -_080E068A: - b _080E075A -_080E068C: - movs r3, 0x26 - ldrsh r0, [r4, r3] - movs r2, 0x24 - ldrsh r1, [r4, r2] - subs r0, r1 - cmp r0, 0x3F - bgt _080E06A8 - ldrh r0, [r4, 0x24] - subs r0, 0x4 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x26] - adds r0, 0x4 - strh r0, [r4, 0x26] - b _080E06AC -_080E06A8: - movs r0, 0x1 - strh r0, [r4, 0xA] -_080E06AC: - ldr r2, _080E06F0 @ =gUnknown_030042C4 - ldrh r0, [r4, 0x24] - lsls r0, 8 - ldrh r1, [r4, 0x26] - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0x10] - adds r0, 0x8 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r4, 0x14] - movs r3, 0x14 - ldrsh r1, [r4, r3] - cmp r0, r1 - blt _080E06CE - strh r2, [r4, 0x10] -_080E06CE: - adds r0, r4, 0 - bl sub_80E079C - movs r0, 0x10 - ldrsh r1, [r4, r0] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080E0784 - movs r3, 0xA - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080E0784 - movs r0, 0 - strh r0, [r4, 0xA] - b _080E075A - .align 2, 0 -_080E06F0: .4byte gUnknown_030042C4 -_080E06F4: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E0784 - 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 _080E0724 - ldrh r1, [r4, 0x1E] - movs r2, 0x1E - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080E0732 - subs r0, r1, 0x1 - strh r0, [r4, 0x1E] - b _080E0732 -_080E0724: - ldrh r1, [r4, 0x20] - movs r3, 0x20 - ldrsh r0, [r4, r3] - cmp r0, 0xF - bgt _080E0732 - adds r0, r1, 0x1 - strh r0, [r4, 0x20] -_080E0732: - ldr r2, _080E0750 @ =REG_BLDALPHA - ldrh r0, [r4, 0x20] - lsls r0, 8 - ldrh r1, [r4, 0x1E] - orrs r0, r1 - strh r0, [r2] - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E0784 - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x10 - bne _080E0784 - b _080E075A - .align 2, 0 -_080E0750: .4byte REG_BLDALPHA -_080E0754: - ldr r1, _080E0764 @ =gUnknown_03004DC0 - movs r0, 0x3 - strb r0, [r1, 0x15] -_080E075A: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E0784 - .align 2, 0 -_080E0764: .4byte gUnknown_03004DC0 -_080E0768: - ldr r0, _080E078C @ =gUnknown_030042C4 - movs r1, 0 - strh r1, [r0] - ldr r0, _080E0790 @ =gUnknown_03004240 - strh r1, [r0] - ldr r0, _080E0794 @ =REG_WININ - ldr r3, _080E0798 @ =0x00003f3f - adds r1, r3, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E0784: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E078C: .4byte gUnknown_030042C4 -_080E0790: .4byte gUnknown_03004240 -_080E0794: .4byte REG_WININ -_080E0798: .4byte 0x00003f3f - thumb_func_end sub_80E0620 - - thumb_func_start sub_80E079C -sub_80E079C: @ 80E079C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - ldrh r0, [r6, 0x12] - ldrh r4, [r6, 0x10] - subs r0, r4 - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - beq _080E0890 - movs r2, 0x22 - ldrsh r0, [r6, r2] - bl __divsi3 - mov r8, r0 - movs r3, 0x14 - ldrsh r0, [r6, r3] - lsls r5, r0, 8 - lsls r0, r4, 16 - movs r4, 0 - cmp r0, 0 - ble _080E07FC - ldr r0, _080E0888 @ =gUnknown_03004DE0 - mov r12, r0 - ldr r7, _080E088C @ =gUnknown_03004DC0 -_080E07D0: - lsls r2, r4, 16 - asrs r2, 16 - lsls r3, r2, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r3, r0 - add r3, r12 - adds r1, r2, 0 - subs r1, 0x9F - ldrh r0, [r6, 0x1C] - subs r0, r1 - strh r0, [r3] - adds r2, 0x1 - lsls r2, 16 - lsrs r4, r2, 16 - asrs r2, 16 - movs r1, 0x10 - ldrsh r0, [r6, r1] - cmp r2, r0 - blt _080E07D0 -_080E07FC: - ldrh r4, [r6, 0x10] - lsls r3, r4, 16 - asrs r1, r3, 16 - movs r2, 0x12 - ldrsh r0, [r6, r2] - cmp r1, r0 - bgt _080E0846 - ldr r0, _080E0888 @ =gUnknown_03004DE0 - mov r12, r0 - ldr r7, _080E088C @ =gUnknown_03004DC0 -_080E0810: - asrs r4, r3, 16 - cmp r4, 0 - blt _080E0832 - asrs r1, r5, 8 - subs r1, r4 - lsls r3, r4, 1 - ldrb r2, [r7, 0x14] - lsls r0, r2, 4 - subs r0, r2 - lsls r0, 7 - adds r3, r0 - add r3, r12 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r6, 0x1C] - adds r1, r2 - strh r1, [r3] -_080E0832: - add r5, r8 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r3, r4, 16 - asrs r1, r3, 16 - movs r2, 0x12 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _080E0810 -_080E0846: - movs r3, 0x1C - ldrsh r0, [r6, r3] - adds r0, 0x9F - lsls r2, r4, 16 - asrs r1, r2, 16 - subs r5, r0, r1 - movs r3, 0x16 - ldrsh r0, [r6, r3] - cmp r1, r0 - bge _080E08BE - ldr r7, _080E0888 @ =gUnknown_03004DE0 - ldr r4, _080E088C @ =gUnknown_03004DC0 -_080E085E: - asrs r3, r2, 16 - cmp r3, 0 - blt _080E0876 - lsls r2, r3, 1 - ldrb r1, [r4, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - strh r5, [r2] - subs r5, 0x1 -_080E0876: - adds r0, r3, 0x1 - lsls r2, r0, 16 - asrs r1, r2, 16 - movs r3, 0x16 - ldrsh r0, [r6, r3] - cmp r1, r0 - blt _080E085E - b _080E08BE - .align 2, 0 -_080E0888: .4byte gUnknown_03004DE0 -_080E088C: .4byte gUnknown_03004DC0 -_080E0890: - movs r1, 0x1C - ldrsh r0, [r6, r1] - adds r5, r0, 0 - adds r5, 0x9F - movs r4, 0 - ldr r3, _080E08C8 @ =gUnknown_03004DE0 - movs r2, 0xF0 - lsls r2, 3 - adds r6, r3, r2 -_080E08A2: - lsls r0, r4, 16 - asrs r0, 16 - lsls r2, r0, 1 - adds r1, r2, r3 - strh r5, [r1] - adds r2, r6 - strh r5, [r2] - subs r5, 0x1 - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x6F - ble _080E08A2 -_080E08BE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E08C8: .4byte gUnknown_03004DE0 - thumb_func_end sub_80E079C - - thumb_func_start sub_80E08CC -sub_80E08CC: @ 80E08CC - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - movs r4, 0 - ldr r7, _080E0914 @ =gSprites - movs r1, 0x3 - ands r0, r1 - lsls r5, r0, 2 - movs r0, 0xD - negs r0, r0 - adds r6, r0, 0 -_080E08E2: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080E0902 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r0, [r1, 0x5] - ands r0, r6 - orrs r0, r5 - strb r0, [r1, 0x5] -_080E0902: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080E08E2 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E0914: .4byte gSprites - thumb_func_end sub_80E08CC - - thumb_func_start sub_80E0918 -sub_80E0918: @ 80E0918 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r6, _080E09B8 @ =gBattleAnimBankAttacker - ldrb r0, [r6] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - eors r0, r1 - negs r1, r0 - orrs r1, r0 - lsrs r4, r1, 31 - ldrb r0, [r6] - adds r1, r4, 0 - bl sub_8076034 - ldr r0, _080E09BC @ =gSprites - mov r9, r0 - ldr r0, _080E09C0 @ =gObjectBankIDs - mov r8, r0 - ldrb r0, [r6] - add r0, r8 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r9 - adds r1, 0x3E - ldrb r2, [r1] - movs r7, 0x5 - negs r7, r7 - adds r0, r7, 0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r6] - movs r5, 0x2 - eors r0, r5 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080E09A2 - ldrb r0, [r6] - eors r0, r5 - movs r1, 0x1 - eors r4, r1 - adds r1, r4, 0 - bl sub_8076034 - ldrb r0, [r6] - eors r0, r5 - add r0, r8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r9 - adds r0, 0x3E - ldrb r2, [r0] - adds r1, r7, 0 - ands r1, r2 - strb r1, [r0] -_080E09A2: - mov r0, r10 - bl DestroyAnimVisualTask - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E09B8: .4byte gBattleAnimBankAttacker -_080E09BC: .4byte gSprites -_080E09C0: .4byte gObjectBankIDs - thumb_func_end sub_80E0918 - - thumb_func_start sub_80E09C4 -sub_80E09C4: @ 80E09C4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _080E0A0C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - eors r0, r1 - negs r1, r0 - orrs r1, r0 - lsrs r5, r1, 31 - adds r0, r5, 0 - bl sub_8076464 - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080E0A00 - movs r0, 0x1 - eors r5, r0 - adds r0, r5, 0 - bl sub_8076464 -_080E0A00: - adds r0, r6, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E0A0C: .4byte gBattleAnimBankAttacker - thumb_func_end sub_80E09C4 - - thumb_func_start sub_80E0A10 -sub_80E0A10: @ 80E0A10 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080E0A40 @ =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] - ldrb r1, [r1, 0x4] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080E0A44 @ =sub_8078600 - str r0, [r4, 0x1C] - ldr r1, _080E0A48 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E0A40: .4byte gBattleAnimArgs -_080E0A44: .4byte sub_8078600 -_080E0A48: .4byte move_anim_8072740 - thumb_func_end sub_80E0A10 - - thumb_func_start sub_80E0A4C -sub_80E0A4C: @ 80E0A4C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r7, 0 - ldr r0, _080E0B50 @ =gUnknown_030042C4 - strh r7, [r0] - ldr r0, _080E0B54 @ =gUnknown_03004240 - strh r7, [r0] - ldr r1, _080E0B58 @ =REG_WININ - ldr r2, _080E0B5C @ =0x00003f3f - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080E0B60 @ =0x00003f3d - adds r0, r3, 0 - strh r0, [r1] - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _080E0B64 @ =REG_BLDCNT - ldr r2, _080E0B68 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080E0B6C @ =0x00000c08 - adds r0, r3, 0 - strh r0, [r1] - ldr r5, _080E0B70 @ =REG_BG1CNT - ldrb r1, [r5] - movs r0, 0x4 - negs r0, r0 - mov r8, r0 - ands r0, r1 - strb r0, [r5] - ldrb r1, [r5, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r5, 0x1] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E0AC4 - ldrb r0, [r5] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r5] -_080E0AC4: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080E0B40 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E0B40 - ldr r4, _080E0B74 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080E0AF4 - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - cmp r0, 0 - bne _080E0B40 -_080E0AF4: - ldrb r0, [r4] - movs r6, 0x2 - eors r0, r6 - bl IsAnimBankSpriteVisible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E0B40 - ldr r3, _080E0B78 @ =gSprites - ldr r1, _080E0B7C @ =gObjectBankIDs - ldrb r0, [r4] - eors r0, r6 - adds r0, r1 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldrb r1, [r5] - mov r0, r8 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r5] - movs r7, 0x1 -_080E0B40: - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080E0B84 - ldr r0, _080E0B80 @ =gSharedMem + 0x19348 - ldrh r5, [r0] - b _080E0BCC - .align 2, 0 -_080E0B50: .4byte gUnknown_030042C4 -_080E0B54: .4byte gUnknown_03004240 -_080E0B58: .4byte REG_WININ -_080E0B5C: .4byte 0x00003f3f -_080E0B60: .4byte 0x00003f3d -_080E0B64: .4byte REG_BLDCNT -_080E0B68: .4byte 0x00003f42 -_080E0B6C: .4byte 0x00000c08 -_080E0B70: .4byte REG_BG1CNT -_080E0B74: .4byte gBattleAnimBankAttacker -_080E0B78: .4byte gSprites -_080E0B7C: .4byte gObjectBankIDs -_080E0B80: .4byte gSharedMem + 0x19348 -_080E0B84: - ldr r4, _080E0BA4 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080E0BB0 - ldr r1, _080E0BA8 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E0BAC @ =gEnemyParty - b _080E0BC0 - .align 2, 0 -_080E0BA4: .4byte gBattleAnimBankAttacker -_080E0BA8: .4byte gBattlePartyID -_080E0BAC: .4byte gEnemyParty -_080E0BB0: - ldr r1, _080E0C58 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E0C5C @ =gPlayerParty -_080E0BC0: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 -_080E0BCC: - movs r0, 0 - bl GetAnimBankSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080E0C60 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_807A4A0 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, sp - bl sub_8078914 - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r2, _080E0C64 @ =0x040000d4 - add r0, sp, 0xC - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _080E0C68 @ =0x85000400 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r0, _080E0C6C @ =gUnknown_08D1D574 - bl LZDecompressVram - ldr r0, _080E0C70 @ =gUnknown_08D1D410 - ldr r1, [sp] - bl LZDecompressVram - ldr r0, _080E0C74 @ =gUnknown_08D1D54C - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r2, _080E0C78 @ =gUnknown_030042C0 - ldr r0, _080E0C7C @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x20] - negs r0, r0 - adds r0, 0x60 - strh r0, [r2] - ldr r2, _080E0C80 @ =gUnknown_030041B4 - ldrh r0, [r1, 0x22] - negs r0, r0 - adds r0, 0x20 - strh r0, [r2] - ldrb r0, [r1, 0x5] - lsrs r0, 4 - adds r0, 0x10 - adds r1, r0, 0 - ldr r2, _080E0C84 @ =gBattleAnimArgs - movs r3, 0x2 - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080E0C88 - adds r0, r1, 0 - movs r1, 0 - bl sub_8079108 - b _080E0C94 - .align 2, 0 -_080E0C58: .4byte gBattlePartyID -_080E0C5C: .4byte gPlayerParty -_080E0C60: .4byte gBattleAnimBankAttacker -_080E0C64: .4byte 0x040000d4 -_080E0C68: .4byte 0x85000400 -_080E0C6C: .4byte gUnknown_08D1D574 -_080E0C70: .4byte gUnknown_08D1D410 -_080E0C74: .4byte gUnknown_08D1D54C -_080E0C78: .4byte gUnknown_030042C0 -_080E0C7C: .4byte gSprites -_080E0C80: .4byte gUnknown_030041B4 -_080E0C84: .4byte gBattleAnimArgs -_080E0C88: - lsls r0, r1, 4 - ldrh r3, [r2, 0x4] - movs r1, 0x10 - movs r2, 0xB - bl BlendPalette -_080E0C94: - ldr r1, _080E0CC4 @ =gTasks - mov r2, r9 - lsls r0, r2, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - ldr r2, _080E0CC8 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0xA] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0xC] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0xE] - strh r7, [r0, 0x14] - ldr r1, _080E0CCC @ =sub_80E0CD0 - str r1, [r0] - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E0CC4: .4byte gTasks -_080E0CC8: .4byte gBattleAnimArgs -_080E0CCC: .4byte sub_80E0CD0 - thumb_func_end sub_80E0A4C - - thumb_func_start sub_80E0CD0 -sub_80E0CD0: @ 80E0CD0 - push {r4-r7,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080E0DF0 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x1C] - adds r0, 0x4 - movs r5, 0 - strh r0, [r4, 0x1C] - ldr r2, _080E0DF4 @ =gUnknown_030042C0 - ldrh r3, [r2] - subs r1, r3, 0x4 - strh r1, [r2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x80 - bne _080E0DE8 - strh r5, [r4, 0x1C] - adds r0, r3, 0 - adds r0, 0x7C - strh r0, [r2] - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080E0DE8 - movs r0, 0 - bl sub_8076464 - ldr r0, _080E0DF8 @ =gUnknown_030042C4 - strh r5, [r0] - ldr r0, _080E0DFC @ =gUnknown_03004240 - strh r5, [r0] - ldr r0, _080E0E00 @ =REG_WININ - ldr r2, _080E0E04 @ =0x00003f3f - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E0D40 - ldr r2, _080E0E08 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080E0D40: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - eors r0, r1 - strh r0, [r2] - ldr r0, _080E0E0C @ =REG_BLDCNT - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r6, _080E0E10 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1, 0x5] - lsrs r0, 4 - adds r0, 0x10 - adds r1, r0, 0 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080E0D84 - adds r0, r1, 0 - movs r1, 0x1 - bl sub_8079108 -_080E0D84: - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - mov r0, sp - bl sub_8078914 - ldr r2, [sp, 0x4] - str r5, [sp, 0xC] - ldr r1, _080E0E14 @ =0x040000d4 - add r0, sp, 0xC - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _080E0E18 @ =0x85000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080E0DE2 - ldr r2, _080E0E1C @ =gObjectBankIDs - ldr r0, _080E0E20 @ =gBattleAnimBankAttacker - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - adds r0, r2 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] -_080E0DE2: - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080E0DE8: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E0DF0: .4byte gTasks -_080E0DF4: .4byte gUnknown_030042C0 -_080E0DF8: .4byte gUnknown_030042C4 -_080E0DFC: .4byte gUnknown_03004240 -_080E0E00: .4byte REG_WININ -_080E0E04: .4byte 0x00003f3f -_080E0E08: .4byte REG_BG1CNT -_080E0E0C: .4byte REG_BLDCNT -_080E0E10: .4byte gSprites -_080E0E14: .4byte 0x040000d4 -_080E0E18: .4byte 0x85000200 -_080E0E1C: .4byte gObjectBankIDs -_080E0E20: .4byte gBattleAnimBankAttacker - thumb_func_end sub_80E0CD0 - - thumb_func_start sub_80E0E24 -sub_80E0E24: @ 80E0E24 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _080E0E44 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r2, r0, 0 - cmp r1, 0x7 - bhi _080E0E88 - lsls r0, r1, 2 - ldr r1, _080E0E48 @ =_080E0E4C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E0E44: .4byte gBattleAnimArgs -_080E0E48: .4byte _080E0E4C - .align 2, 0 -_080E0E4C: - .4byte _080E0E6C - .4byte _080E0E6C - .4byte _080E0E6C - .4byte _080E0E6C - .4byte _080E0E78 - .4byte _080E0E7C - .4byte _080E0E80 - .4byte _080E0E84 -_080E0E6C: - ldrb r0, [r2] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - b _080E0E8A -_080E0E78: - movs r4, 0 - b _080E0E90 -_080E0E7C: - movs r4, 0x2 - b _080E0E90 -_080E0E80: - movs r4, 0x1 - b _080E0E90 -_080E0E84: - movs r4, 0x3 - b _080E0E90 -_080E0E88: - movs r2, 0xFF -_080E0E8A: - movs r0, 0 - cmp r0, 0 - beq _080E0EB6 -_080E0E90: - adds r0, r4, 0 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080E0EB4 - ldr r0, _080E0EB0 @ =gObjectBankIDs - adds r0, r4, r0 - ldrb r2, [r0] - b _080E0EB6 - .align 2, 0 -_080E0EB0: .4byte gObjectBankIDs -_080E0EB4: - movs r2, 0xFF -_080E0EB6: - cmp r2, 0xFF - beq _080E0ED2 - ldr r1, _080E0EE0 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - ldr r1, _080E0EE4 @ =gBattleAnimArgs - ldrb r1, [r1, 0x2] - bl sub_8079108 -_080E0ED2: - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E0EE0: .4byte gSprites -_080E0EE4: .4byte gBattleAnimArgs - thumb_func_end sub_80E0E24 - - thumb_func_start sub_80E0EE8 -sub_80E0EE8: @ 80E0EE8 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080E0F14 @ =gUnknown_0202F7C4 - ldrb r0, [r2] - cmp r0, 0x1 - bhi _080E0EFC - ldr r1, _080E0F18 @ =gBattleAnimArgs - movs r0, 0 - strh r0, [r1, 0xE] -_080E0EFC: - ldrb r0, [r2] - cmp r0, 0x2 - bne _080E0F08 - ldr r1, _080E0F18 @ =gBattleAnimArgs - movs r0, 0x1 - strh r0, [r1, 0xE] -_080E0F08: - adds r0, r3, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080E0F14: .4byte gUnknown_0202F7C4 -_080E0F18: .4byte gBattleAnimArgs - thumb_func_end sub_80E0EE8 - - thumb_func_start sub_80E0F1C -sub_80E0F1C: @ 80E0F1C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080E0F74 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - movs r0, 0x14 - strh r0, [r4, 0x2E] - ldr r5, _080E0F78 @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080E0F7C @ =0x0000ffd8 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl sub_80786EC - ldr r0, _080E0F80 @ =sub_80E0F84 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E0F74: .4byte gBattleAnimBankAttacker -_080E0F78: .4byte gBattleAnimBankTarget -_080E0F7C: .4byte 0x0000ffd8 -_080E0F80: .4byte sub_80E0F84 - thumb_func_end sub_80E0F1C - - thumb_func_start sub_80E0F84 -sub_80E0F84: @ 80E0F84 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080E0FD8 - ldrh r0, [r5, 0x24] - ldrh r1, [r5, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x26] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - strh r1, [r5, 0x26] - strh r1, [r5, 0x24] - movs r0, 0x14 - strh r0, [r5, 0x2E] - ldr r4, _080E0FE0 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - movs r0, 0x28 - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl sub_80786EC - ldr r0, _080E0FE4 @ =sub_80E0FE8 - str r0, [r5, 0x1C] -_080E0FD8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E0FE0: .4byte gBattleAnimBankAttacker -_080E0FE4: .4byte sub_80E0FE8 - thumb_func_end sub_80E0F84 - - thumb_func_start sub_80E0FE8 -sub_80E0FE8: @ 80E0FE8 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080E0FFC - adds r0, r4, 0 - bl move_anim_8072740 -_080E0FFC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E0FE8 - - thumb_func_start sub_80E1004 -sub_80E1004: @ 80E1004 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_8078764 - ldr r0, _080E1064 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080E1024 - ldr r1, _080E1068 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080E1024: - ldr r4, _080E1068 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, _080E106C @ =gBattleAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x6] - adds r0, r4 - strh r0, [r6, 0x36] - ldr r0, _080E1070 @ =sub_8078B34 - str r0, [r6, 0x1C] - ldr r1, _080E1074 @ =move_anim_8072740 - adds r0, r6, 0 - bl StoreSpriteCallbackInData - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E1064: .4byte gBattleAnimBankAttacker -_080E1068: .4byte gBattleAnimArgs -_080E106C: .4byte gBattleAnimBankTarget -_080E1070: .4byte sub_8078B34 -_080E1074: .4byte move_anim_8072740 - thumb_func_end sub_80E1004 - - thumb_func_start sub_80E1078 -sub_80E1078: @ 80E1078 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r4, _080E10F8 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077EE4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077EE4 - lsls r0, 24 - lsrs r7, r0, 24 - bl Random - movs r4, 0x1F - adds r5, r4, 0 - ands r5, r0 - bl Random - ands r4, r0 - adds r1, r5, 0 - cmp r1, 0x10 - ble _080E10C0 - movs r0, 0x10 - subs r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 -_080E10C0: - lsls r0, r4, 16 - asrs r1, r0, 16 - cmp r1, 0x10 - ble _080E10D0 - movs r0, 0x10 - subs r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 -_080E10D0: - ldr r0, _080E10FC @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r6, 0x2E] - mov r1, r8 - adds r0, r1, r5 - strh r0, [r6, 0x32] - adds r0, r7, r4 - strh r0, [r6, 0x36] - ldr r0, _080E1100 @ =sub_8078B34 - str r0, [r6, 0x1C] - ldr r1, _080E1104 @ =move_anim_8074EE0 - adds r0, r6, 0 - bl StoreSpriteCallbackInData - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E10F8: .4byte gBattleAnimBankTarget -_080E10FC: .4byte gBattleAnimArgs -_080E1100: .4byte sub_8078B34 -_080E1104: .4byte move_anim_8074EE0 - thumb_func_end sub_80E1078 - - thumb_func_start sub_80E1108 -sub_80E1108: @ 80E1108 - push {r4-r6,lr} - adds r5, r0, 0 - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x1 - ldr r3, _080E1168 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080E116C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r6, _080E1170 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080E117C - ldr r4, _080E1174 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r6, 0x2] - adds r0, r2 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r3, [r6, 0x4] - adds r0, r3 - strh r0, [r5, 0x22] - movs r1, 0x2 - ldrsh r0, [r6, r1] - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - ble _080E1162 - movs r1, 0x1 -_080E1162: - strh r1, [r5, 0x2E] - ldr r0, _080E1178 @ =sub_80E1198 - b _080E118A - .align 2, 0 -_080E1168: .4byte 0x000003ff -_080E116C: .4byte 0xfffffc00 -_080E1170: .4byte gBattleAnimArgs -_080E1174: .4byte gBattleAnimBankAttacker -_080E1178: .4byte sub_80E1198 -_080E117C: - ldrh r0, [r6, 0x2] - strh r0, [r5, 0x20] - ldrh r0, [r6, 0x4] - strh r0, [r5, 0x22] - negs r0, r0 - strh r0, [r5, 0x26] - ldr r0, _080E1194 @ =sub_80E11D4 -_080E118A: - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E1194: .4byte sub_80E11D4 - thumb_func_end sub_80E1108 - - thumb_func_start sub_80E1198 -sub_80E1198: @ 80E1198 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E11B6 - movs r0, 0 - strh r0, [r2, 0x30] - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x20] - adds r0, r1 - strh r0, [r2, 0x20] -_080E11B6: - ldrh r0, [r2, 0x22] - subs r0, 0x4 - strh r0, [r2, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x4 - negs r1, r1 - cmp r0, r1 - bge _080E11CE - adds r0, r2, 0 - bl move_anim_8072740 -_080E11CE: - pop {r0} - bx r0 - thumb_func_end sub_80E1198 - - thumb_func_start sub_80E11D4 -sub_80E11D4: @ 80E11D4 - push {lr} - adds r3, r0, 0 - movs r0, 0x2E - ldrsh r1, [r3, r0] - cmp r1, 0 - beq _080E11E6 - cmp r1, 0x1 - beq _080E11FC - b _080E123E -_080E11E6: - ldrh r0, [r3, 0x26] - adds r0, 0x4 - strh r0, [r3, 0x26] - lsls r0, 16 - cmp r0, 0 - blt _080E123E - strh r1, [r3, 0x26] - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - b _080E123E -_080E11FC: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - cmp r0, 0 - ble _080E123E - movs r0, 0 - strh r0, [r3, 0x30] - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - ldrb r2, [r1] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x32] - adds r0, 0x1 - strh r0, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _080E123E - adds r0, r3, 0 - bl move_anim_8072740 -_080E123E: - pop {r0} - bx r0 - thumb_func_end sub_80E11D4 - - thumb_func_start sub_80E1244 -sub_80E1244: @ 80E1244 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E1264 @ =gTasks - adds r1, r0, r1 - ldr r0, _080E1268 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r0, 0 - bne _080E1270 - ldr r0, _080E126C @ =sub_80E1284 - b _080E1272 - .align 2, 0 -_080E1264: .4byte gTasks -_080E1268: .4byte gBattleAnimArgs -_080E126C: .4byte sub_80E1284 -_080E1270: - ldr r0, _080E1280 @ =sub_80E143C -_080E1272: - str r0, [r1] - ldr r1, [r1] - adds r0, r2, 0 - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_080E1280: .4byte sub_80E143C - thumb_func_end sub_80E1244 - - thumb_func_start sub_80E1284 -sub_80E1284: @ 80E1284 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E12A8 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080E129E - b _080E1432 -_080E129E: - lsls r0, 2 - ldr r1, _080E12AC @ =_080E12B0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E12A8: .4byte gTasks -_080E12AC: .4byte _080E12B0 - .align 2, 0 -_080E12B0: - .4byte _080E12C4 - .4byte _080E134C - .4byte _080E135C - .4byte _080E1400 - .4byte _080E1414 -_080E12C4: - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - ldr r0, _080E12EC @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1E] - cmp r0, 0x1 - bne _080E12F8 - ldr r0, _080E12F0 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r4, 0x20] - ldr r0, _080E12F4 @ =gUnknown_030041B4 - b _080E1300 - .align 2, 0 -_080E12EC: .4byte gBattleAnimBankAttacker -_080E12F0: .4byte gUnknown_030042C0 -_080E12F4: .4byte gUnknown_030041B4 -_080E12F8: - ldr r0, _080E133C @ =gUnknown_03004288 - ldrh r0, [r0] - strh r0, [r4, 0x20] - ldr r0, _080E1340 @ =gUnknown_03004280 -_080E1300: - ldrh r0, [r0] - strh r0, [r4, 0x22] - ldr r0, _080E1344 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl sub_8077FC0 - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - subs r1, 0x20 - strh r1, [r4, 0x24] - adds r0, 0x20 - strh r0, [r4, 0x26] - cmp r1, 0 - bge _080E1322 - movs r0, 0 - strh r0, [r4, 0x24] -_080E1322: - ldr r2, _080E1348 @ =gSprites - movs r3, 0x1C - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _080E1406 - .align 2, 0 -_080E133C: .4byte gUnknown_03004288 -_080E1340: .4byte gUnknown_03004280 -_080E1344: .4byte gBattleAnimBankAttacker -_080E1348: .4byte gSprites -_080E134C: - ldrb r0, [r4, 0x1E] - movs r2, 0x24 - ldrsh r1, [r4, r2] - movs r3, 0x26 - ldrsh r2, [r4, r3] - bl sub_80E1668 - b _080E1406 -_080E135C: - ldrh r0, [r4, 0xC] - adds r0, 0x6 - movs r1, 0x7F - ands r0, r1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080E137E - movs r0, 0 - strh r0, [r4, 0x10] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] -_080E137E: - ldr r1, _080E13A0 @ =gSineTable - movs r2, 0xC - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 20 - ldrh r3, [r4, 0xE] - adds r2, r0, r3 - strh r2, [r4, 0x12] - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080E13A8 - ldr r1, _080E13A4 @ =gUnknown_030041B4 - b _080E13AA - .align 2, 0 -_080E13A0: .4byte gSineTable -_080E13A4: .4byte gUnknown_030041B4 -_080E13A8: - ldr r1, _080E13CC @ =gUnknown_03004280 -_080E13AA: - ldrh r0, [r4, 0x22] - subs r0, r2 - strh r0, [r1] - movs r2, 0x12 - ldrsh r0, [r4, r2] - cmp r0, 0x3F - ble _080E1432 - ldrh r0, [r4, 0x24] - movs r1, 0x78 - subs r2, r1, r0 - strh r2, [r4, 0x12] - movs r3, 0x1E - ldrsh r0, [r4, r3] - cmp r0, 0x1 - bne _080E13D4 - ldr r1, _080E13D0 @ =gUnknown_030041B4 - b _080E13D6 - .align 2, 0 -_080E13CC: .4byte gUnknown_03004280 -_080E13D0: .4byte gUnknown_030041B4 -_080E13D4: - ldr r1, _080E13F8 @ =gUnknown_03004280 -_080E13D6: - ldrh r0, [r4, 0x22] - subs r0, r2 - strh r0, [r1] - ldr r2, _080E13FC @ =gSprites - movs r1, 0x1C - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r2, [r1, 0x20] - movs r3, 0x88 - lsls r3, 1 - adds r0, r3, 0 - subs r0, r2 - strh r0, [r1, 0x24] - b _080E1406 - .align 2, 0 -_080E13F8: .4byte gUnknown_03004280 -_080E13FC: .4byte gSprites -_080E1400: - ldr r1, _080E1410 @ =gUnknown_03004DC0 - movs r0, 0x3 - strb r0, [r1, 0x15] -_080E1406: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E1432 - .align 2, 0 -_080E1410: .4byte gUnknown_03004DC0 -_080E1414: - adds r0, r2, 0 - bl DestroyAnimVisualTask - ldr r2, _080E1438 @ =gSprites - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080E1432: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E1438: .4byte gSprites - thumb_func_end sub_80E1284 - - thumb_func_start sub_80E143C -sub_80E143C: @ 80E143C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E147C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r3, r1, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r3] - movs r4, 0 - strh r4, [r1, 0x24] - strh r4, [r1, 0x26] - ldr r0, _080E1480 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E1488 - ldr r0, _080E1484 @ =gUnknown_030041B4 - b _080E148A - .align 2, 0 -_080E147C: .4byte gSprites -_080E1480: .4byte gBattleAnimBankAttacker -_080E1484: .4byte gUnknown_030041B4 -_080E1488: - ldr r0, _080E1498 @ =gUnknown_03004280 -_080E148A: - strh r4, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E1498: .4byte gUnknown_03004280 - thumb_func_end sub_80E143C - - thumb_func_start sub_80E149C -sub_80E149C: @ 80E149C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E14BC @ =gTasks - adds r1, r0, r1 - ldr r0, _080E14C0 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r0, 0 - bne _080E14C8 - ldr r0, _080E14C4 @ =sub_80E14DC - b _080E14CA - .align 2, 0 -_080E14BC: .4byte gTasks -_080E14C0: .4byte gBattleAnimArgs -_080E14C4: .4byte sub_80E14DC -_080E14C8: - ldr r0, _080E14D8 @ =sub_80E1560 -_080E14CA: - str r0, [r1] - ldr r1, [r1] - adds r0, r2, 0 - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_080E14D8: .4byte sub_80E1560 - thumb_func_end sub_80E149C - - thumb_func_start sub_80E14DC -sub_80E14DC: @ 80E14DC - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E14FC @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0 - beq _080E1500 - cmp r5, 0x1 - beq _080E1554 - b _080E155A - .align 2, 0 -_080E14FC: .4byte gTasks -_080E1500: - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - ldr r3, _080E1550 @ =gSprites - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r5, [r0, 0x24] - movs r1, 0x1C - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r2, [r1, 0x22] - movs r0, 0xA0 - subs r0, r2 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E155A - .align 2, 0 -_080E1550: .4byte gSprites -_080E1554: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E155A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E14DC - - thumb_func_start sub_80E1560 -sub_80E1560: @ 80E1560 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E1584 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bhi _080E1662 - lsls r0, 2 - ldr r1, _080E1588 @ =_080E158C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E1584: .4byte gTasks -_080E1588: .4byte _080E158C - .align 2, 0 -_080E158C: - .4byte _080E15A0 - .4byte _080E15F4 - .4byte _080E1602 - .4byte _080E161C - .4byte _080E165C -_080E15A0: - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - ldr r0, _080E15C4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1E] - cmp r0, 0x1 - bne _080E15CC - ldr r0, _080E15C8 @ =gUnknown_030042C0 - b _080E15CE - .align 2, 0 -_080E15C4: .4byte gBattleAnimBankAttacker -_080E15C8: .4byte gUnknown_030042C0 -_080E15CC: - ldr r0, _080E15EC @ =gUnknown_03004288 -_080E15CE: - ldrh r0, [r0] - strh r0, [r4, 0x20] - ldr r0, _080E15F0 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl sub_8077FC0 - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - subs r1, 0x20 - strh r1, [r4, 0x24] - adds r0, 0x20 - strh r0, [r4, 0x26] - b _080E164A - .align 2, 0 -_080E15EC: .4byte gUnknown_03004288 -_080E15F0: .4byte gBattleAnimBankAttacker -_080E15F4: - ldrb r0, [r4, 0x1E] - movs r1, 0x26 - ldrsh r2, [r4, r1] - movs r1, 0 - bl sub_80E1668 - b _080E164A -_080E1602: - ldr r2, _080E1618 @ =gSprites - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x60 - strh r1, [r0, 0x26] - b _080E164A - .align 2, 0 -_080E1618: .4byte gSprites -_080E161C: - ldr r2, _080E1654 @ =gSprites - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - subs r1, 0x8 - strh r1, [r0, 0x26] - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x26 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E1662 - ldr r1, _080E1658 @ =gUnknown_03004DC0 - movs r0, 0x3 - strb r0, [r1, 0x15] -_080E164A: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E1662 - .align 2, 0 -_080E1654: .4byte gSprites -_080E1658: .4byte gUnknown_03004DC0 -_080E165C: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E1662: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E1560 - - thumb_func_start sub_80E1668 -sub_80E1668: @ 80E1668 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r4, r2, 16 - cmp r0, 0x1 - bne _080E168C - ldr r0, _080E1684 @ =gUnknown_030042C0 - ldrh r3, [r0] - ldr r0, _080E1688 @ =REG_BG1HOFS - b _080E1692 - .align 2, 0 -_080E1684: .4byte gUnknown_030042C0 -_080E1688: .4byte REG_BG1HOFS -_080E168C: - ldr r0, _080E1718 @ =gUnknown_03004288 - ldrh r3, [r0] - ldr r0, _080E171C @ =REG_BG2HOFS -_080E1692: - str r0, [sp] - lsls r0, r1, 16 - cmp r0, 0 - bge _080E169C - movs r1, 0 -_080E169C: - lsls r2, r1, 16 - lsls r0, r4, 16 - asrs r4, r0, 16 - cmp r2, r0 - bge _080E16C8 - ldr r5, _080E1720 @ =gUnknown_03004DE0 - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_080E16AE: - asrs r2, 16 - lsls r1, r2, 1 - adds r0, r1, r5 - strh r3, [r0] - adds r1, r6 - strh r3, [r1] - adds r2, 0x1 - lsls r2, 16 - lsrs r1, r2, 16 - lsls r2, r1, 16 - asrs r0, r2, 16 - cmp r0, r4 - blt _080E16AE -_080E16C8: - lsls r1, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - bgt _080E16F6 - ldr r4, _080E1720 @ =gUnknown_03004DE0 - lsls r0, r3, 16 - asrs r0, 16 - adds r3, r0, 0 - adds r3, 0xF0 - movs r0, 0xF0 - lsls r0, 3 - adds r5, r4, r0 -_080E16E0: - asrs r2, r1, 16 - lsls r1, r2, 1 - adds r0, r1, r4 - strh r3, [r0] - adds r1, r5 - strh r3, [r1] - adds r2, 0x1 - lsls r1, r2, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - ble _080E16E0 -_080E16F6: - ldr r0, _080E1724 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r2, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r2, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl sub_80895F8 - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E1718: .4byte gUnknown_03004288 -_080E171C: .4byte REG_BG2HOFS -_080E1720: .4byte gUnknown_03004DE0 -_080E1724: .4byte 0xa2600001 - thumb_func_end sub_80E1668 - - thumb_func_start sub_80E1728 -sub_80E1728: @ 80E1728 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, _080E173C @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r7, r0, 0 - cmp r1, 0 - bne _080E1744 - ldr r0, _080E1740 @ =gBattleAnimBankAttacker - b _080E1746 - .align 2, 0 -_080E173C: .4byte gBattleAnimArgs -_080E1740: .4byte gBattleAnimBankAttacker -_080E1744: - ldr r0, _080E17A8 @ =gBattleAnimBankTarget -_080E1746: - ldrb r4, [r0] - movs r6, 0x18 - adds r1, r7, 0 - movs r2, 0x2 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - bne _080E1762 - negs r0, r6 - lsls r0, 16 - lsrs r6, r0, 16 - movs r2, 0x4 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x4] -_080E1762: - adds r0, r4, 0 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x20] - adds r0, r4, 0 - bl sub_8077FC0 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1E - strh r0, [r5, 0x22] - ldrh r1, [r7, 0xA] - strh r1, [r5, 0x2E] - ldrh r1, [r7, 0x4] - ldrh r2, [r5, 0x20] - adds r1, r2 - strh r1, [r5, 0x32] - ldrh r1, [r7, 0x6] - adds r0, r1 - strh r0, [r5, 0x36] - ldrh r0, [r7, 0x8] - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl sub_80786EC - ldr r0, _080E17AC @ =sub_80E17B0 - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E17A8: .4byte gBattleAnimBankTarget -_080E17AC: .4byte sub_80E17B0 - thumb_func_end sub_80E1728 - - thumb_func_start sub_80E17B0 -sub_80E17B0: @ 80E17B0 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080E17C4 - adds r0, r4, 0 - bl move_anim_8072740 -_080E17C4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E17B0 - - thumb_func_start sub_80E17CC -sub_80E17CC: @ 80E17CC - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, _080E17E0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E17E8 - ldr r0, _080E17E4 @ =gBattleAnimBankAttacker - b _080E17EA - .align 2, 0 -_080E17E0: .4byte gBattleAnimArgs -_080E17E4: .4byte gBattleAnimBankAttacker -_080E17E8: - ldr r0, _080E1848 @ =gBattleAnimBankTarget -_080E17EA: - ldrb r5, [r0] - adds r0, r5, 0 - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E184C @ =0x0000fff0 - adds r0, r2 - ldr r4, _080E1850 @ =gBattleAnimArgs - movs r3, 0x2 - ldrsh r1, [r4, r3] - lsls r1, 5 - adds r0, r1 - strh r0, [r6, 0x20] - adds r0, r5, 0 - bl sub_8077FC0 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r6, 0x22] - ldrh r2, [r6, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0x2 - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r1, r0 - ldr r3, _080E1854 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080E1858 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r6, 0x4] - ldr r1, _080E185C @ =move_anim_8072740 - adds r0, r6, 0 - bl StoreSpriteCallbackInData - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x2E] - ldr r0, _080E1860 @ =sub_80782D8 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E1848: .4byte gBattleAnimBankTarget -_080E184C: .4byte 0x0000fff0 -_080E1850: .4byte gBattleAnimArgs -_080E1854: .4byte 0x000003ff -_080E1858: .4byte 0xfffffc00 -_080E185C: .4byte move_anim_8072740 -_080E1860: .4byte sub_80782D8 - thumb_func_end sub_80E17CC - - thumb_func_start sub_80E1864 -sub_80E1864: @ 80E1864 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080E1888 @ =gTasks - adds r4, r0, r1 - ldr r0, _080E188C @ =gBattleAnimArgs - ldrh r2, [r0, 0x2] - movs r3, 0x2 - ldrsh r1, [r0, r3] - adds r6, r0, 0 - cmp r1, 0 - beq _080E1890 - adds r0, r2, 0x3 - b _080E189C - .align 2, 0 -_080E1888: .4byte gTasks -_080E188C: .4byte gBattleAnimArgs -_080E1890: - ldr r0, _080E18BC @ =gMovePowerMoveAnim - ldrh r0, [r0] - movs r1, 0xA - bl __udivsi3 - adds r0, 0x3 -_080E189C: - strh r0, [r4, 0x26] - strh r0, [r4, 0x24] - adds r1, r6, 0 - ldrh r0, [r1, 0x4] - strh r0, [r4, 0xE] - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x4 - beq _080E18C8 - cmp r0, 0x5 - bne _080E1908 - ldr r0, _080E18C0 @ =gUnknown_030041B0 - ldrh r0, [r0] - strh r0, [r4, 0x22] - ldr r0, _080E18C4 @ =sub_80E1934 - b _080E1926 - .align 2, 0 -_080E18BC: .4byte gMovePowerMoveAnim -_080E18C0: .4byte gUnknown_030041B0 -_080E18C4: .4byte sub_80E1934 -_080E18C8: - movs r0, 0 - strh r0, [r4, 0x22] - movs r5, 0 -_080E18CE: - lsls r0, r5, 24 - lsrs r0, 24 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080E18F8 - movs r3, 0x22 - ldrsh r0, [r4, r3] - adds r0, 0x9 - lsls r0, 1 - adds r1, r4, 0 - adds r1, 0x8 - adds r1, r0 - ldr r0, _080E1904 @ =gObjectBankIDs - adds r0, r5, r0 - ldrb r0, [r0] - strh r0, [r1] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] -_080E18F8: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _080E18CE - b _080E1924 - .align 2, 0 -_080E1904: .4byte gObjectBankIDs -_080E1908: - ldrb r0, [r6] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1A] - cmp r0, 0xFF - bne _080E1920 - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _080E1928 -_080E1920: - movs r0, 0x1 - strh r0, [r4, 0x22] -_080E1924: - ldr r0, _080E1930 @ =sub_80E1A2C -_080E1926: - str r0, [r4] -_080E1928: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E1930: .4byte sub_80E1A2C - thumb_func_end sub_80E1864 - - thumb_func_start sub_80E1934 -sub_80E1934: @ 80E1934 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E1958 @ =gTasks - adds r3, r0, r1 - movs r0, 0x8 - ldrsh r1, [r3, r0] - cmp r1, 0x1 - beq _080E19B8 - cmp r1, 0x1 - bgt _080E195C - cmp r1, 0 - beq _080E1962 - b _080E1A24 - .align 2, 0 -_080E1958: .4byte gTasks -_080E195C: - cmp r1, 0x2 - beq _080E1A18 - b _080E1A24 -_080E1962: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E1A24 - strh r1, [r3, 0xA] - ldrh r1, [r3, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E198C - ldr r1, _080E1988 @ =gUnknown_030041B0 - ldrh r0, [r3, 0x26] - ldrh r2, [r3, 0x22] - adds r0, r2 - strh r0, [r1] - b _080E1996 - .align 2, 0 -_080E1988: .4byte gUnknown_030041B0 -_080E198C: - ldr r0, _080E19B4 @ =gUnknown_030041B0 - ldrh r1, [r3, 0x22] - ldrh r2, [r3, 0x26] - subs r1, r2 - strh r1, [r0] -_080E1996: - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xE - ldrsh r1, [r3, r2] - cmp r0, r1 - bne _080E1A24 - movs r0, 0 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x24] - subs r0, 0x1 - strh r0, [r3, 0x24] - b _080E1A0C - .align 2, 0 -_080E19B4: .4byte gUnknown_030041B0 -_080E19B8: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E1A24 - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r0, [r3, 0xC] - ands r1, r0 - cmp r1, 0 - bne _080E19E4 - ldr r1, _080E19E0 @ =gUnknown_030041B0 - ldrh r0, [r3, 0x24] - ldrh r2, [r3, 0x22] - adds r0, r2 - strh r0, [r1] - b _080E19EE - .align 2, 0 -_080E19E0: .4byte gUnknown_030041B0 -_080E19E4: - ldr r0, _080E1A14 @ =gUnknown_030041B0 - ldrh r1, [r3, 0x22] - ldrh r2, [r3, 0x24] - subs r1, r2 - strh r1, [r0] -_080E19EE: - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080E1A24 - movs r0, 0 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x24] - subs r0, 0x1 - strh r0, [r3, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _080E1A24 -_080E1A0C: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080E1A24 - .align 2, 0 -_080E1A14: .4byte gUnknown_030041B0 -_080E1A18: - ldr r1, _080E1A28 @ =gUnknown_030041B0 - ldrh r0, [r3, 0x22] - strh r0, [r1] - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E1A24: - pop {r0} - bx r0 - .align 2, 0 -_080E1A28: .4byte gUnknown_030041B0 - thumb_func_end sub_80E1934 - - thumb_func_start sub_80E1A2C -sub_80E1A2C: @ 80E1A2C - push {r4-r7,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080E1A50 @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080E1A8C - cmp r5, 0x1 - bgt _080E1A54 - cmp r5, 0 - beq _080E1A5A - b _080E1B06 - .align 2, 0 -_080E1A50: .4byte gTasks -_080E1A54: - cmp r5, 0x2 - beq _080E1AC8 - b _080E1B06 -_080E1A5A: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E1B06 - strh r5, [r4, 0xA] - adds r0, r4, 0 - bl sub_80E1B10 - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080E1B06 - strh r5, [r4, 0xC] - ldrh r0, [r4, 0x24] - subs r0, 0x1 - strh r0, [r4, 0x24] - b _080E1AC0 -_080E1A8C: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E1B06 - strh r5, [r4, 0xA] - adds r0, r4, 0 - bl sub_80E1B10 - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080E1B06 - strh r5, [r4, 0xC] - ldrh r0, [r4, 0x24] - subs r0, 0x1 - strh r0, [r4, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _080E1B06 -_080E1AC0: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E1B06 -_080E1AC8: - movs r2, 0 - movs r7, 0x22 - ldrsh r0, [r4, r7] - cmp r2, r0 - bge _080E1B00 - ldr r0, _080E1B0C @ =gSprites - mov r12, r0 - adds r5, r4, 0 - adds r5, 0x8 - movs r6, 0 -_080E1ADC: - adds r0, r2, 0 - adds r0, 0x9 - lsls r0, 1 - adds r0, r5, r0 - movs r7, 0 - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r12 - strh r6, [r0, 0x24] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r2, r0 - blt _080E1ADC -_080E1B00: - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080E1B06: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1B0C: .4byte gSprites - thumb_func_end sub_80E1A2C - - thumb_func_start sub_80E1B10 -sub_80E1B10: @ 80E1B10 - push {r4-r7,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0xC] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _080E1B38 - movs r0, 0x24 - ldrsh r1, [r3, r0] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r2, [r3, 0x24] - adds r0, r4, 0 - ands r0, r2 - adds r1, r0 - lsls r1, 16 - lsrs r4, r1, 16 - b _080E1B48 -_080E1B38: - movs r1, 0x24 - ldrsh r0, [r3, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - negs r0, r0 - lsls r0, 16 - lsrs r4, r0, 16 -_080E1B48: - movs r2, 0 - movs r7, 0x22 - ldrsh r0, [r3, r7] - cmp r2, r0 - bge _080E1B7C - ldr r6, _080E1B84 @ =gSprites - adds r5, r3, 0 - adds r5, 0x8 -_080E1B58: - adds r0, r2, 0 - adds r0, 0x9 - lsls r0, 1 - adds r0, r5, r0 - movs r7, 0 - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r4, [r0, 0x24] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0x22 - ldrsh r0, [r3, r1] - cmp r2, r0 - blt _080E1B58 -_080E1B7C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1B84: .4byte gSprites - thumb_func_end sub_80E1B10 - - thumb_func_start sub_80E1B88 -sub_80E1B88: @ 80E1B88 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, _080E1BA8 @ =gBattleAnimArgs - movs r2, 0 - ldr r0, _080E1BAC @ =gMovePowerMoveAnim - ldrh r0, [r0] - cmp r0, 0x63 - bls _080E1B9C - movs r2, 0x1 -_080E1B9C: - strh r2, [r3, 0x1E] - adds r0, r1, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080E1BA8: .4byte gBattleAnimArgs -_080E1BAC: .4byte gMovePowerMoveAnim - thumb_func_end sub_80E1B88 - - thumb_func_start sub_80E1BB0 -sub_80E1BB0: @ 80E1BB0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, _080E1BC8 @ =gBattleAnimArgs - ldrh r1, [r2] - movs r0, 0x1 - ands r0, r1 - adds r6, r2, 0 - cmp r0, 0 - beq _080E1BD0 - ldr r0, _080E1BCC @ =gBattleAnimBankTarget - b _080E1BD2 - .align 2, 0 -_080E1BC8: .4byte gBattleAnimArgs -_080E1BCC: .4byte gBattleAnimBankTarget -_080E1BD0: - ldr r0, _080E1C40 @ =gBattleAnimBankAttacker -_080E1BD2: - ldrb r0, [r0] - adds r5, r0, 0 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - ble _080E1BE2 - movs r0, 0x2 - eors r5, r0 -_080E1BE2: - ldr r0, _080E1C44 @ =sub_80E1C58 - ldrb r1, [r6, 0x2] - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080E1C48 @ =gTasks - adds r4, r0 - adds r0, r5, 0 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x20 - subs r1, r0 - ldr r2, _080E1C4C @ =0x000001ff - adds r0, r2, 0 - ands r1, r0 - strh r1, [r4, 0xA] - adds r0, r5, 0 - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x40 - subs r1, r0 - movs r0, 0xFF - ands r1, r0 - strh r1, [r4, 0xC] - ldr r2, _080E1C50 @ =gUnknown_030041B0 - ldrh r0, [r4, 0xA] - strh r0, [r2] - ldr r0, _080E1C54 @ =gUnknown_030041B8 - strh r1, [r0] - ldrh r0, [r6, 0x4] - strh r0, [r4, 0xE] - adds r0, r7, 0 - bl DestroyAnimVisualTask - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1C40: .4byte gBattleAnimBankAttacker -_080E1C44: .4byte sub_80E1C58 -_080E1C48: .4byte gTasks -_080E1C4C: .4byte 0x000001ff -_080E1C50: .4byte gUnknown_030041B0 -_080E1C54: .4byte gUnknown_030041B8 - thumb_func_end sub_80E1BB0 - - thumb_func_start sub_80E1C58 -sub_80E1C58: @ 80E1C58 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080E1C88 @ =gTasks - adds r2, r0, r1 - ldr r0, _080E1C8C @ =gBattleAnimArgs - movs r4, 0xE - ldrsh r1, [r0, r4] - movs r4, 0xE - ldrsh r0, [r2, r4] - cmp r1, r0 - bne _080E1C98 - ldr r0, _080E1C90 @ =gUnknown_030041B0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080E1C94 @ =gUnknown_030041B8 - strh r1, [r0] - adds r0, r3, 0 - bl DestroyTask - b _080E1CA4 - .align 2, 0 -_080E1C88: .4byte gTasks -_080E1C8C: .4byte gBattleAnimArgs -_080E1C90: .4byte gUnknown_030041B0 -_080E1C94: .4byte gUnknown_030041B8 -_080E1C98: - ldr r1, _080E1CAC @ =gUnknown_030041B0 - ldrh r0, [r2, 0xA] - strh r0, [r1] - ldr r1, _080E1CB0 @ =gUnknown_030041B8 - ldrh r0, [r2, 0xC] - strh r0, [r1] -_080E1CA4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E1CAC: .4byte gUnknown_030041B0 -_080E1CB0: .4byte gUnknown_030041B8 - thumb_func_end sub_80E1C58 - - thumb_func_start sub_80E1CB4 -sub_80E1CB4: @ 80E1CB4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080E1CEC @ =gBattleAnimArgs - 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] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldr r0, _080E1CF0 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080E1CF4 - ldrh r0, [r5, 0x6] - negs r0, r0 - strh r0, [r4, 0x30] - movs r0, 0x1 - strh r0, [r4, 0x36] - b _080E1D02 - .align 2, 0 -_080E1CEC: .4byte gBattleAnimArgs -_080E1CF0: .4byte gBattleAnimBankAttacker -_080E1CF4: - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - strh r1, [r4, 0x36] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080E1D02: - ldr r0, _080E1D18 @ =gBattleAnimArgs - ldrh r0, [r0, 0x8] - strh r0, [r4, 0x34] - ldr r1, _080E1D1C @ =sub_80E1D20 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E1D18: .4byte gBattleAnimArgs -_080E1D1C: .4byte sub_80E1D20 - thumb_func_end sub_80E1CB4 - - thumb_func_start sub_80E1D20 -sub_80E1D20: @ 80E1D20 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x1E - bl Cos - strh r0, [r4, 0x24] - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r1, 0xA - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - cmp r0, 0x7F - bhi _080E1D52 - ldrb r0, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4, 0x5] - b _080E1D5A -_080E1D52: - ldrb r0, [r4, 0x5] - movs r1, 0xC - orrs r0, r1 - strb r0, [r4, 0x5] -_080E1D5A: - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x2E] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x34 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080E1D7E - adds r0, r4, 0 - bl move_anim_8072740 -_080E1D7E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E1D20 - - thumb_func_start sub_80E1D84 -sub_80E1D84: @ 80E1D84 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldr r4, _080E1DBC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - bl sub_80E1DC4 - movs r1, 0x2 - ldrsb r1, [r4, r1] - ldrb r2, [r4, 0x4] - ldrb r3, [r4, 0x6] - ldrh r4, [r4, 0x8] - str r4, [sp] - bl BeginNormalPaletteFade - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080E1DC0 @ =sub_80E1E0C - str r0, [r5, 0x1C] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E1DBC: .4byte gBattleAnimArgs -_080E1DC0: .4byte sub_80E1E0C - thumb_func_end sub_80E1D84 - - thumb_func_start sub_80E1DC4 -sub_80E1DC4: @ 80E1DC4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - lsls r0, 16 - lsrs r0, 16 - movs r4, 0x1 - mov r8, r0 - mov r1, r8 - ands r1, r4 - mov r8, r1 - lsls r0, 16 - asrs r1, r0, 17 - ands r1, r4 - asrs r2, r0, 18 - ands r2, r4 - asrs r3, r0, 19 - ands r3, r4 - asrs r6, r0, 20 - ands r6, r4 - asrs r5, r0, 21 - ands r5, r4 - asrs r0, 22 - ands r0, r4 - str r6, [sp] - str r5, [sp, 0x4] - str r0, [sp, 0x8] - mov r0, r8 - bl sub_80791A8 - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80E1DC4 - - thumb_func_start sub_80E1E0C -sub_80E1E0C: @ 80E1E0C - push {lr} - adds r2, r0, 0 - ldr r0, _080E1E28 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E1E22 - adds r0, r2, 0 - bl move_anim_8072740 -_080E1E22: - pop {r0} - bx r0 - .align 2, 0 -_080E1E28: .4byte gPaletteFade - thumb_func_end sub_80E1E0C - - thumb_func_start sub_80E1E2C -sub_80E1E2C: @ 80E1E2C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080E1E78 @ =gBattleAnimArgs - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x2E] - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x32] - ldrh r0, [r4, 0x6] - strh r0, [r5, 0x34] - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x36] - ldrh r0, [r4, 0xA] - strh r0, [r5, 0x38] - ldrh r0, [r4, 0xC] - strh r0, [r5, 0x3A] - ldrh r0, [r4] - strh r0, [r5, 0x3C] - movs r1, 0x3C - ldrsh r0, [r5, r1] - bl sub_80E1DC4 - ldrb r1, [r4, 0x8] - ldrh r2, [r4, 0x6] - bl BlendPalettes - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080E1E7C @ =sub_80E1E80 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E1E78: .4byte gBattleAnimArgs -_080E1E7C: .4byte sub_80E1E80 - thumb_func_end sub_80E1E2C - - thumb_func_start sub_80E1E80 -sub_80E1E80: @ 80E1E80 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080E1E94 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - b _080E1F04 -_080E1E94: - ldr r0, _080E1EB0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E1F04 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E1EB8 - ldr r0, _080E1EB4 @ =sub_80E1F0C - str r0, [r4, 0x1C] - b _080E1F04 - .align 2, 0 -_080E1EB0: .4byte gPaletteFade -_080E1EB4: .4byte sub_80E1F0C -_080E1EB8: - movs r2, 0x3C - ldrsh r0, [r4, r2] - bl sub_80E1DC4 - adds r3, r0, 0 - ldrh r1, [r4, 0x30] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080E1EDE - ldrh r1, [r4, 0x36] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x34] - adds r0, r3, 0 - bl BlendPalettes - b _080E1EEC -_080E1EDE: - ldrh r1, [r4, 0x3A] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x38] - adds r0, r3, 0 - bl BlendPalettes -_080E1EEC: - ldrh r0, [r4, 0x30] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - eors r0, r1 - strh r0, [r4, 0x30] - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x32] - subs r0, 0x1 - strh r0, [r4, 0x32] -_080E1F04: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E1E80 - - thumb_func_start sub_80E1F0C -sub_80E1F0C: @ 80E1F0C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080E1F38 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E1F32 - movs r1, 0x3C - ldrsh r0, [r4, r1] - bl sub_80E1DC4 - movs r1, 0 - movs r2, 0 - bl BlendPalettes - adds r0, r4, 0 - bl move_anim_8072740 -_080E1F32: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E1F38: .4byte gPaletteFade - thumb_func_end sub_80E1F0C - - thumb_func_start sub_80E1F3C -sub_80E1F3C: @ 80E1F3C - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080E1F80 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - movs r2, 0 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - strh r2, [r4, 0x2E] - movs r0, 0xA - strh r0, [r4, 0x30] - movs r0, 0x8 - strh r0, [r4, 0x32] - movs r0, 0x28 - strh r0, [r4, 0x34] - movs r0, 0x70 - strh r0, [r4, 0x36] - strh r2, [r4, 0x38] - ldr r1, _080E1F84 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r1, _080E1F88 @ =sub_8078174 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E1F80: .4byte gBattleAnimArgs -_080E1F84: .4byte move_anim_8074EE0 -_080E1F88: .4byte sub_8078174 - thumb_func_end sub_80E1F3C - - thumb_func_start sub_80E1F8C -sub_80E1F8C: @ 80E1F8C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080E1FD0 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r3, _080E1FD4 @ =gBattleAnimArgs - ldrh r1, [r3] - movs r5, 0 - strh r1, [r4, 0x8] - ldrh r1, [r3, 0x2] - strh r1, [r4, 0xA] - ldrh r1, [r3, 0x4] - strh r1, [r4, 0xC] - ldrh r1, [r3, 0x6] - strh r1, [r4, 0xE] - ldrh r2, [r3, 0x8] - strh r2, [r4, 0x10] - ldrh r1, [r3, 0xA] - strh r1, [r4, 0x12] - strh r5, [r4, 0x18] - lsls r2, 24 - lsrs r2, 24 - movs r1, 0 - bl sub_80E1FDC - ldr r0, _080E1FD8 @ =sub_80E202C - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E1FD0: .4byte gTasks -_080E1FD4: .4byte gBattleAnimArgs -_080E1FD8: .4byte sub_80E202C - thumb_func_end sub_80E1F8C - - thumb_func_start sub_80E1FDC -sub_80E1FDC: @ 80E1FDC - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r1, _080E2028 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - bl sub_80E1DC4 - movs r1, 0xA - ldrsb r1, [r4, r1] - ldrh r2, [r4, 0x12] - str r2, [sp] - adds r2, r5, 0 - adds r3, r6, 0 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x18] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x18] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E2028: .4byte gTasks - thumb_func_end sub_80E1FDC - - thumb_func_start sub_80E202C -sub_80E202C: @ 80E202C - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, r3, 0 - ldr r0, _080E2064 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E208E - ldr r1, _080E2068 @ =gTasks - lsls r2, r3, 2 - adds r0, r2, r3 - lsls r0, 3 - adds r3, r0, r1 - movs r5, 0xC - ldrsh r0, [r3, r5] - adds r6, r1, 0 - adds r5, r2, 0 - cmp r0, 0 - ble _080E2088 - movs r1, 0x18 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080E206C - ldrb r1, [r3, 0xE] - ldrb r2, [r3, 0x10] - b _080E2070 - .align 2, 0 -_080E2064: .4byte gPaletteFade -_080E2068: .4byte gTasks -_080E206C: - ldrb r1, [r3, 0x10] - ldrb r2, [r3, 0xE] -_080E2070: - adds r0, r5, r4 - lsls r0, 3 - adds r0, r6 - movs r3, 0xC - ldrsh r0, [r0, r3] - cmp r0, 0x1 - bne _080E2080 - movs r2, 0 -_080E2080: - adds r0, r4, 0 - bl sub_80E1FDC - b _080E208E -_080E2088: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E208E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E202C - - thumb_func_start sub_80E2094 -sub_80E2094: @ 80E2094 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080E20D8 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r3, _080E20DC @ =gBattleAnimArgs - ldrh r1, [r3] - movs r5, 0 - strh r1, [r4, 0x8] - ldrh r1, [r3, 0x2] - strh r1, [r4, 0xA] - ldrh r1, [r3, 0x4] - strh r1, [r4, 0xC] - ldrh r1, [r3, 0x6] - strh r1, [r4, 0xE] - ldrh r2, [r3, 0x8] - strh r2, [r4, 0x10] - ldrh r1, [r3, 0xA] - strh r1, [r4, 0x12] - strh r5, [r4, 0x18] - lsls r2, 24 - lsrs r2, 24 - movs r1, 0 - bl sub_80E20E4 - ldr r0, _080E20E0 @ =sub_80E2140 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E20D8: .4byte gTasks -_080E20DC: .4byte gBattleAnimArgs -_080E20E0: .4byte sub_80E2140 - thumb_func_end sub_80E2094 - - thumb_func_start sub_80E20E4 -sub_80E20E4: @ 80E20E4 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r1, _080E213C @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldrh r0, [r4, 0x8] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r2, 0x1 - lsls r2, r0 - movs r1, 0xA - ldrsb r1, [r4, r1] - ldrh r0, [r4, 0x12] - str r0, [sp] - adds r0, r2, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x18] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x18] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E213C: .4byte gTasks - thumb_func_end sub_80E20E4 - - thumb_func_start sub_80E2140 -sub_80E2140: @ 80E2140 - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, r3, 0 - ldr r0, _080E2178 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E21A2 - ldr r1, _080E217C @ =gTasks - lsls r2, r3, 2 - adds r0, r2, r3 - lsls r0, 3 - adds r3, r0, r1 - movs r5, 0xC - ldrsh r0, [r3, r5] - adds r6, r1, 0 - adds r5, r2, 0 - cmp r0, 0 - ble _080E219C - movs r1, 0x18 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080E2180 - ldrb r1, [r3, 0xE] - ldrb r2, [r3, 0x10] - b _080E2184 - .align 2, 0 -_080E2178: .4byte gPaletteFade -_080E217C: .4byte gTasks -_080E2180: - ldrb r1, [r3, 0x10] - ldrb r2, [r3, 0xE] -_080E2184: - adds r0, r5, r4 - lsls r0, 3 - adds r0, r6 - movs r3, 0xC - ldrsh r0, [r0, r3] - cmp r0, 0x1 - bne _080E2194 - movs r2, 0 -_080E2194: - adds r0, r4, 0 - bl sub_80E20E4 - b _080E21A2 -_080E219C: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E21A2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E2140 - - thumb_func_start sub_80E21A8 -sub_80E21A8: @ 80E21A8 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080E2208 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r5, _080E220C @ =gBattleAnimArgs - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x8] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0xA] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0xC] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0xE] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x10] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x12] - ldrh r0, [r5, 0xC] - strh r0, [r4, 0x14] - ldrh r0, [r5] - strh r0, [r4, 0x16] - ldrh r0, [r5] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r1, 0x1 - lsls r1, r0 - ldrb r3, [r5, 0x8] - ldrh r0, [r5, 0x6] - str r0, [sp] - adds r0, r1, 0 - movs r1, 0 - adds r2, r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080E2210 @ =sub_80E2214 - str r0, [r4] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E2208: .4byte gTasks -_080E220C: .4byte gBattleAnimArgs -_080E2210: .4byte sub_80E2214 - thumb_func_end sub_80E21A8 - - thumb_func_start sub_80E2214 -sub_80E2214: @ 80E2214 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080E2238 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0x8] - movs r2, 0x8 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080E223C - subs r0, r1, 0x1 - strh r0, [r4, 0x8] - b _080E22C0 - .align 2, 0 -_080E2238: .4byte gTasks -_080E223C: - ldr r0, _080E2258 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E22C0 - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _080E2260 - ldr r0, _080E225C @ =sub_80E22CC - str r0, [r4] - b _080E22C0 - .align 2, 0 -_080E2258: .4byte gPaletteFade -_080E225C: .4byte sub_80E22CC -_080E2260: - ldrh r0, [r4, 0x16] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r2, 0x1 - lsls r2, r0 - ldrh r1, [r4, 0xA] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080E228E - ldrb r3, [r4, 0x10] - ldrh r0, [r4, 0xE] - str r0, [sp] - adds r0, r2, 0 - movs r1, 0 - adds r2, r3, 0 - bl BeginNormalPaletteFade - b _080E229E -_080E228E: - ldrb r3, [r4, 0x14] - ldrh r0, [r4, 0x12] - str r0, [sp] - adds r0, r2, 0 - movs r1, 0 - adds r2, r3, 0 - bl BeginNormalPaletteFade -_080E229E: - ldr r0, _080E22C8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xA] - movs r3, 0x80 - lsls r3, 1 - adds r2, r3, 0 - eors r0, r2 - strh r0, [r1, 0xA] - movs r2, 0xFF - ands r0, r2 - strh r0, [r1, 0x8] - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] -_080E22C0: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E22C8: .4byte gTasks - thumb_func_end sub_80E2214 - - thumb_func_start sub_80E22CC -sub_80E22CC: @ 80E22CC - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080E231C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080E2312 - ldr r1, _080E2320 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x16] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r1, 0x1 - lsls r1, r0 - str r5, [sp] - adds r0, r1, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl BeginNormalPaletteFade - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E2312: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E231C: .4byte gPaletteFade -_080E2320: .4byte gTasks - thumb_func_end sub_80E22CC - - thumb_func_start sub_80E2324 -sub_80E2324: @ 80E2324 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r2, 0 - ldr r0, _080E239C @ =gBattleAnimBankAttacker - ldrb r6, [r0] - ldr r0, _080E23A0 @ =gBattleAnimBankTarget - ldrb r7, [r0] - ldr r4, _080E23A4 @ =gBattleAnimArgs - ldrh r1, [r4] - movs r5, 0x80 - lsls r5, 1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080E235E - str r2, [sp] - str r2, [sp, 0x4] - str r2, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r3, 0 - bl sub_80791A8 - adds r2, r0, 0 -_080E235E: - ldrh r1, [r4, 0x2] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080E2370 - movs r0, 0x80 - lsls r0, 9 - lsls r0, r6 - orrs r2, r0 -_080E2370: - ldrh r1, [r4, 0x4] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080E2382 - movs r0, 0x80 - lsls r0, 9 - lsls r0, r7 - orrs r2, r0 -_080E2382: - adds r0, r2, 0 - bl InvertPlttBuffer - mov r0, r8 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E239C: .4byte gBattleAnimBankAttacker -_080E23A0: .4byte gBattleAnimBankTarget -_080E23A4: .4byte gBattleAnimArgs - thumb_func_end sub_80E2324 - - thumb_func_start unref_sub_80E23A8 -unref_sub_80E23A8: @ 80E23A8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r5, 0 - ldr r1, _080E249C @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E23EA - ldr r1, _080E24A0 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0xC] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0xE] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x10] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0xA] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x12] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x14] - ldrh r0, [r1, 0xC] - strh r0, [r4, 0x16] -_080E23EA: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - ldr r0, _080E24A4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - mov r9, r0 - ldr r0, _080E24A8 @ =gBattleAnimBankTarget - ldrb r0, [r0] - mov r10, r0 - ldrh r1, [r4, 0xC] - movs r7, 0x80 - lsls r7, 1 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _080E240C - ldr r5, _080E24AC @ =0x0000ffff -_080E240C: - movs r6, 0x1 - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _080E243C - ldr r2, _080E24B0 @ =gSprites - ldr r0, _080E24B4 @ =gHealthboxIDs - add r0, r9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x14 - adds r0, r2 - ldr r0, [r0] - ldrh r0, [r0, 0x2] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r1, r6, 0 - lsls r1, r0 - lsls r1, 16 - orrs r5, r1 -_080E243C: - ldrh r1, [r4, 0xE] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _080E2450 - adds r0, r6, 0 - mov r2, r9 - lsls r0, r2 - lsls r0, 16 - orrs r5, r0 -_080E2450: - ldrh r1, [r4, 0x10] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _080E2464 - adds r0, r6, 0 - mov r1, r10 - lsls r0, r1 - lsls r0, 16 - orrs r5, r0 -_080E2464: - movs r1, 0x12 - ldrsb r1, [r4, r1] - movs r2, 0x14 - ldrsb r2, [r4, r2] - movs r3, 0x16 - ldrsb r3, [r4, r3] - adds r0, r5, 0 - bl TintPlttBuffer - movs r2, 0x8 - ldrsh r1, [r4, r2] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080E248E - adds r0, r5, 0 - bl UnfadePlttBuffer - mov r0, r8 - bl DestroyAnimVisualTask -_080E248E: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E249C: .4byte gTasks -_080E24A0: .4byte gBattleAnimArgs -_080E24A4: .4byte gBattleAnimBankAttacker -_080E24A8: .4byte gBattleAnimBankTarget -_080E24AC: .4byte 0x0000ffff -_080E24B0: .4byte gSprites -_080E24B4: .4byte gHealthboxIDs - thumb_func_end unref_sub_80E23A8 - - thumb_func_start sub_80E24B8 -sub_80E24B8: @ 80E24B8 - push {r4,lr} - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080E24EC @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x34] - movs r2, 0x6 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _080E2500 - cmp r0, 0x1 - bgt _080E24F0 - cmp r0, 0 - beq _080E24F6 - b _080E2518 - .align 2, 0 -_080E24EC: .4byte gBattleAnimArgs -_080E24F0: - cmp r0, 0x2 - beq _080E2508 - b _080E2518 -_080E24F6: - ldr r1, _080E24FC @ =gUnknown_030041B0 - b _080E250A - .align 2, 0 -_080E24FC: .4byte gUnknown_030041B0 -_080E2500: - ldr r1, _080E2504 @ =gUnknown_030041B8 - b _080E250A - .align 2, 0 -_080E2504: .4byte gUnknown_030041B8 -_080E2508: - ldr r1, _080E2514 @ =gSpriteCoordOffsetX -_080E250A: - adds r0, r4, 0 - bl StoreSpriteCallbackInData - b _080E2520 - .align 2, 0 -_080E2514: .4byte gSpriteCoordOffsetX -_080E2518: - ldr r1, _080E2550 @ =gSpriteCoordOffsetY - adds r0, r4, 0 - bl StoreSpriteCallbackInData -_080E2520: - movs r0, 0x3A - ldrsh r1, [r4, r0] - movs r2, 0x3C - ldrsh r0, [r4, r2] - lsls r0, 16 - orrs r1, r0 - ldr r0, [r1] - strh r0, [r4, 0x36] - ldr r0, _080E2554 @ =gBattleAnimArgs - ldrh r0, [r0, 0x6] - strh r0, [r4, 0x38] - subs r0, 0x2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080E2544 - bl sub_80E260C -_080E2544: - ldr r0, _080E2558 @ =sub_80E255C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2550: .4byte gSpriteCoordOffsetY -_080E2554: .4byte gBattleAnimArgs -_080E2558: .4byte sub_80E255C - thumb_func_end sub_80E24B8 - - thumb_func_start sub_80E255C -sub_80E255C: @ 80E255C - push {r4-r7,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x34] - movs r2, 0x34 - ldrsh r0, [r3, r2] - cmp r0, 0 - ble _080E25A0 - subs r0, r1, 0x1 - strh r0, [r3, 0x34] - ldrh r1, [r3, 0x30] - movs r2, 0x30 - ldrsh r0, [r3, r2] - cmp r0, 0 - ble _080E257E - subs r0, r1, 0x1 - strh r0, [r3, 0x30] - b _080E25FA -_080E257E: - ldrh r0, [r3, 0x32] - strh r0, [r3, 0x30] - movs r0, 0x3A - ldrsh r1, [r3, r0] - movs r2, 0x3C - ldrsh r0, [r3, r2] - lsls r0, 16 - orrs r1, r0 - movs r0, 0x2E - ldrsh r2, [r3, r0] - ldr r0, [r1] - adds r0, r2 - str r0, [r1] - ldrh r0, [r3, 0x2E] - negs r0, r0 - strh r0, [r3, 0x2E] - b _080E25FA -_080E25A0: - movs r2, 0x3A - ldrsh r1, [r3, r2] - movs r2, 0x3C - ldrsh r0, [r3, r2] - lsls r0, 16 - orrs r1, r0 - movs r2, 0x36 - ldrsh r0, [r3, r2] - str r0, [r1] - ldrh r0, [r3, 0x38] - subs r0, 0x2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080E25F4 - movs r4, 0 - ldr r5, _080E2600 @ =gNoOfAllBanks - ldrb r0, [r5] - cmp r4, r0 - bcs _080E25F4 - ldr r2, _080E2604 @ =gSprites - mov r12, r2 - ldr r6, _080E2608 @ =gObjectBankIDs - movs r7, 0x3 - negs r7, r7 -_080E25D2: - adds r0, r4, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r12 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r7, 0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r5] - cmp r4, r0 - bcc _080E25D2 -_080E25F4: - adds r0, r3, 0 - bl move_anim_8072740 -_080E25FA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E2600: .4byte gNoOfAllBanks -_080E2604: .4byte gSprites -_080E2608: .4byte gObjectBankIDs - thumb_func_end sub_80E255C - - thumb_func_start sub_80E260C -sub_80E260C: @ 80E260C - push {r4-r6,lr} - ldr r6, _080E2680 @ =gSprites - ldr r4, _080E2684 @ =gObjectBankIDs - ldr r5, _080E2688 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x3 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1] - ldr r3, _080E268C @ =gBattleAnimBankTarget - ldrb r0, [r3] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - ldr r0, _080E2690 @ =gBattleAnimArgs - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x2 - bne _080E2694 - ldrb r0, [r5] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] - ldrb r0, [r3] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - b _080E26B0 - .align 2, 0 -_080E2680: .4byte gSprites -_080E2684: .4byte gObjectBankIDs -_080E2688: .4byte gBattleAnimBankAttacker -_080E268C: .4byte gBattleAnimBankTarget -_080E2690: .4byte gBattleAnimArgs -_080E2694: - cmp r0, 0 - bne _080E269C - ldrb r0, [r5] - b _080E269E -_080E269C: - ldrb r0, [r3] -_080E269E: - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x2 -_080E26B0: - orrs r1, r2 - strb r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E260C - - thumb_func_start sub_80E26BC -sub_80E26BC: @ 80E26BC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080E26FC @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r1 - ldr r3, _080E2700 @ =gBattleAnimArgs - ldrh r1, [r3] - strh r1, [r2, 0x8] - ldrh r1, [r3, 0x2] - strh r1, [r2, 0xA] - ldrh r1, [r3, 0x4] - strh r1, [r2, 0xC] - ldrh r1, [r3, 0x6] - strh r1, [r2, 0xE] - ldrh r1, [r3, 0x6] - strh r1, [r2, 0x18] - ldr r4, _080E2704 @ =gUnknown_030041B0 - ldrh r1, [r3] - strh r1, [r4] - ldr r4, _080E2708 @ =gUnknown_030041B8 - ldrh r1, [r3, 0x2] - strh r1, [r4] - ldr r1, _080E270C @ =sub_80E2710 - str r1, [r2] - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E26FC: .4byte gTasks -_080E2700: .4byte gBattleAnimArgs -_080E2704: .4byte gUnknown_030041B0 -_080E2708: .4byte gUnknown_030041B8 -_080E270C: .4byte sub_80E2710 - thumb_func_end sub_80E26BC - - thumb_func_start sub_80E2710 -sub_80E2710: @ 80E2710 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080E2740 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r1 - ldrh r2, [r3, 0xE] - movs r4, 0xE - ldrsh r0, [r3, r4] - mov r12, r1 - cmp r0, 0 - bne _080E2796 - ldr r0, _080E2744 @ =gUnknown_030041B0 - ldrh r2, [r0] - movs r7, 0x8 - ldrsh r1, [r3, r7] - adds r6, r0, 0 - cmp r2, r1 - bne _080E2748 - ldrh r0, [r3, 0x8] - negs r0, r0 - b _080E274A - .align 2, 0 -_080E2740: .4byte gTasks -_080E2744: .4byte gUnknown_030041B0 -_080E2748: - ldrh r0, [r3, 0x8] -_080E274A: - strh r0, [r6] - ldr r2, _080E2768 @ =gUnknown_030041B8 - ldrh r3, [r2] - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - mov r7, r12 - adds r4, r0, r7 - movs r7, 0xA - ldrsh r0, [r4, r7] - cmn r3, r0 - bne _080E276C - movs r0, 0 - b _080E2770 - .align 2, 0 -_080E2768: .4byte gUnknown_030041B8 -_080E276C: - ldrh r0, [r4, 0xA] - negs r0, r0 -_080E2770: - strh r0, [r2] - adds r0, r1, r5 - lsls r0, 3 - add r0, r12 - ldrh r1, [r0, 0x18] - strh r1, [r0, 0xE] - ldrh r1, [r0, 0xC] - subs r1, 0x1 - strh r1, [r0, 0xC] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0 - bne _080E279A - strh r1, [r6] - strh r1, [r2] - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _080E279A -_080E2796: - subs r0, r2, 0x1 - strh r0, [r3, 0xE] -_080E279A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E2710 - - thumb_func_start sub_80E27A0 -sub_80E27A0: @ 80E27A0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080E27C0 @ =gBattleAnimArgs - ldrb r1, [r4, 0x6] - bl StartSpriteAffineAnim - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E27C4 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80787B0 - b _080E27CC - .align 2, 0 -_080E27C0: .4byte gBattleAnimArgs -_080E27C4: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8078764 -_080E27CC: - ldr r0, _080E27E0 @ =sub_80785E4 - str r0, [r5, 0x1C] - ldr r1, _080E27E4 @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E27E0: .4byte sub_80785E4 -_080E27E4: .4byte move_anim_8072740 - thumb_func_end sub_80E27A0 - - thumb_func_start sub_80E27E8 -sub_80E27E8: @ 80E27E8 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080E2808 @ =gBattleAnimArgs - ldrb r1, [r4, 0x6] - bl StartSpriteAffineAnim - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E280C - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80787B0 - b _080E2814 - .align 2, 0 -_080E2808: .4byte gBattleAnimArgs -_080E280C: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8078764 -_080E2814: - ldr r0, _080E282C @ =gBattleAnimArgs - ldrh r0, [r0, 0x8] - strh r0, [r5, 0x2E] - ldr r0, _080E2830 @ =sub_80785E4 - str r0, [r5, 0x1C] - ldr r1, _080E2834 @ =sub_80DA48C - adds r0, r5, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E282C: .4byte gBattleAnimArgs -_080E2830: .4byte sub_80785E4 -_080E2834: .4byte sub_80DA48C - thumb_func_end sub_80E27E8 - - thumb_func_start sub_80E2838 -sub_80E2838: @ 80E2838 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080E2868 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080E285C - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E285C - ldr r1, _080E286C @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] -_080E285C: - adds r0, r4, 0 - bl sub_80E27A0 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2868: .4byte gBattleAnimBankAttacker -_080E286C: .4byte gBattleAnimArgs - thumb_func_end sub_80E2838 - - thumb_func_start sub_80E2870 -sub_80E2870: @ 80E2870 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080E28A8 @ =gBattleAnimArgs - movs r0, 0x2 - ldrsh r1, [r5, r0] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080E288C - bl Random - movs r1, 0x3 - ands r1, r0 - strh r1, [r5, 0x2] -_080E288C: - ldrb r1, [r5, 0x2] - adds r0, r4, 0 - bl StartSpriteAffineAnim - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080E28AC - adds r0, r4, 0 - movs r1, 0 - bl sub_80787B0 - b _080E28B4 - .align 2, 0 -_080E28A8: .4byte gBattleAnimArgs -_080E28AC: - adds r0, r4, 0 - movs r1, 0 - bl sub_8078764 -_080E28B4: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x30 - bl __umodsi3 - ldr r1, _080E28F8 @ =0x0000ffe8 - adds r0, r1 - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x18 - bl __umodsi3 - ldr r1, _080E28FC @ =0x0000fff4 - adds r0, r1 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldr r1, _080E2900 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r0, _080E2904 @ =sub_80785E4 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E28F8: .4byte 0x0000ffe8 -_080E28FC: .4byte 0x0000fff4 -_080E2900: .4byte move_anim_8074EE0 -_080E2904: .4byte sub_80785E4 - thumb_func_end sub_80E2870 - - thumb_func_start sub_80E2908 -sub_80E2908: @ 80E2908 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080E2968 @ =gBattleAnimArgs - ldrb r0, [r5] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x2E] - ldr r2, _080E296C @ =gSprites - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - ldrh r0, [r0, 0x20] - adds r1, r0 - strh r1, [r4, 0x20] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - strh r1, [r4, 0x22] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x24] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x26] - ldrb r1, [r5, 0x6] - adds r0, r4, 0 - bl StartSpriteAffineAnim - ldr r1, _080E2970 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r0, _080E2974 @ =sub_80785E4 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E2968: .4byte gBattleAnimArgs -_080E296C: .4byte gSprites -_080E2970: .4byte move_anim_8074EE0 -_080E2974: .4byte sub_80785E4 - thumb_func_end sub_80E2908 - - thumb_func_start sub_80E2978 -sub_80E2978: @ 80E2978 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080E2990 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E2994 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80787B0 - b _080E299C - .align 2, 0 -_080E2990: .4byte gBattleAnimArgs -_080E2994: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8078764 -_080E299C: - ldr r0, _080E29B4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x6] - strh r0, [r4, 0x2E] - ldr r1, _080E29B8 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r0, _080E29BC @ =sub_80782D8 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E29B4: .4byte gBattleAnimArgs -_080E29B8: .4byte move_anim_8072740 -_080E29BC: .4byte sub_80782D8 - thumb_func_end sub_80E2978 - - thumb_func_start sub_80E29C0 -sub_80E29C0: @ 80E29C0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080E29E0 @ =gBattleAnimArgs - ldrb r1, [r4, 0x6] - bl StartSpriteAffineAnim - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E29E4 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80787B0 - b _080E29EC - .align 2, 0 -_080E29E0: .4byte gBattleAnimArgs -_080E29E4: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8078764 -_080E29EC: - ldr r0, _080E29F8 @ =sub_80E29FC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E29F8: .4byte sub_80E29FC - thumb_func_end sub_80E29C0 - - thumb_func_start sub_80E29FC -sub_80E29FC: @ 80E29FC - push {lr} - adds r3, r0, 0 - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x2E] - adds r1, r0, 0x1 - strh r1, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080E2A32 - adds r0, r3, 0 - bl move_anim_8072740 -_080E2A32: - pop {r0} - bx r0 - thumb_func_end sub_80E29FC - - thumb_func_start sub_80E2A38 -sub_80E2A38: @ 80E2A38 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r4, _080E2A78 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - bl sub_80E1DC4 - adds r6, r0, 0 - ldrh r3, [r4] - lsls r3, 16 - asrs r0, r3, 23 - movs r4, 0x1 - ands r0, r4 - asrs r1, r3, 24 - ands r1, r4 - asrs r2, r3, 25 - ands r2, r4 - asrs r3, 26 - ands r3, r4 - bl sub_80792C0 - orrs r6, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_80E2C8C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E2A78: .4byte gBattleAnimArgs - thumb_func_end sub_80E2A38 - - thumb_func_start sub_80E2A7C -sub_80E2A7C: @ 80E2A7C - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - mov r1, sp - movs r0, 0xFF - strb r0, [r1, 0x1] - movs r0, 0x1 - bl sub_80E1DC4 - adds r5, r0, 0 - ldr r0, _080E2AA8 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x7 - bhi _080E2B26 - lsls r0, 2 - ldr r1, _080E2AAC @ =_080E2AB0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E2AA8: .4byte gBattleAnimArgs -_080E2AAC: .4byte _080E2AB0 - .align 2, 0 -_080E2AB0: - .4byte _080E2AD2 - .4byte _080E2ADE - .4byte _080E2AD0 - .4byte _080E2ADC - .4byte _080E2AEC - .4byte _080E2B04 - .4byte _080E2B0C - .4byte _080E2B18 -_080E2AD0: - movs r5, 0 -_080E2AD2: - mov r0, sp - ldr r1, _080E2AD8 @ =gBattleAnimBankAttacker - b _080E2AE2 - .align 2, 0 -_080E2AD8: .4byte gBattleAnimBankAttacker -_080E2ADC: - movs r5, 0 -_080E2ADE: - mov r0, sp - ldr r1, _080E2AE8 @ =gBattleAnimBankTarget -_080E2AE2: - ldrb r1, [r1] - strb r1, [r0] - b _080E2B26 - .align 2, 0 -_080E2AE8: .4byte gBattleAnimBankTarget -_080E2AEC: - mov r1, sp - ldr r0, _080E2AFC @ =gBattleAnimBankAttacker - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _080E2B00 @ =gBattleAnimBankTarget - ldrb r0, [r0] - strb r0, [r1, 0x1] - b _080E2B26 - .align 2, 0 -_080E2AFC: .4byte gBattleAnimBankAttacker -_080E2B00: .4byte gBattleAnimBankTarget -_080E2B04: - mov r1, sp - movs r0, 0xFF - strb r0, [r1] - b _080E2B26 -_080E2B0C: - movs r5, 0 - mov r2, sp - ldr r0, _080E2B14 @ =gBattleAnimBankAttacker - b _080E2B1E - .align 2, 0 -_080E2B14: .4byte gBattleAnimBankAttacker -_080E2B18: - movs r5, 0 - mov r2, sp - ldr r0, _080E2B70 @ =gBattleAnimBankTarget -_080E2B1E: - ldrb r0, [r0] - movs r1, 0x2 - eors r0, r1 - strb r0, [r2] -_080E2B26: - movs r4, 0 - mov r6, sp -_080E2B2A: - ldrb r0, [r6] - cmp r4, r0 - beq _080E2B54 - ldrb r0, [r6, 0x1] - cmp r4, r0 - beq _080E2B54 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080E2B54 - adds r0, r4, 0 - bl sub_80793A8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x80 - lsls r1, 9 - lsls r1, r0 - orrs r5, r1 -_080E2B54: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080E2B2A - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80E2C8C - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E2B70: .4byte gBattleAnimBankTarget - thumb_func_end sub_80E2A7C - - thumb_func_start sub_80E2B74 -sub_80E2B74: @ 80E2B74 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080E2B98 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - bl sub_80E1DC4 - adds r2, r0, 0 - ldr r0, _080E2B9C @ =gBattleTerrain - ldrb r0, [r0] - cmp r0, 0x9 - bhi _080E2C4A - lsls r0, 2 - ldr r1, _080E2BA0 @ =_080E2BA4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E2B98: .4byte gBattleAnimArgs -_080E2B9C: .4byte gBattleTerrain -_080E2BA0: .4byte _080E2BA4 - .align 2, 0 -_080E2BA4: - .4byte _080E2BCC - .4byte _080E2BDC - .4byte _080E2BE8 - .4byte _080E2BF8 - .4byte _080E2C04 - .4byte _080E2C14 - .4byte _080E2C24 - .4byte _080E2C34 - .4byte _080E2C44 - .4byte _080E2C44 -_080E2BCC: - ldr r1, _080E2BD4 @ =gBattleAnimArgs - ldr r0, _080E2BD8 @ =0x00000b0c - b _080E2C48 - .align 2, 0 -_080E2BD4: .4byte gBattleAnimArgs -_080E2BD8: .4byte 0x00000b0c -_080E2BDC: - ldr r1, _080E2BE4 @ =gBattleAnimArgs - movs r0, 0x9E - lsls r0, 4 - b _080E2C48 - .align 2, 0 -_080E2BE4: .4byte gBattleAnimArgs -_080E2BE8: - ldr r1, _080E2BF0 @ =gBattleAnimArgs - ldr r0, _080E2BF4 @ =0x00002f1e - b _080E2C48 - .align 2, 0 -_080E2BF0: .4byte gBattleAnimArgs -_080E2BF4: .4byte 0x00002f1e -_080E2BF8: - ldr r1, _080E2C00 @ =gBattleAnimArgs - movs r0, 0x90 - lsls r0, 7 - b _080E2C48 - .align 2, 0 -_080E2C00: .4byte gBattleAnimArgs -_080E2C04: - ldr r1, _080E2C0C @ =gBattleAnimArgs - ldr r0, _080E2C10 @ =0x00007ecb - b _080E2C48 - .align 2, 0 -_080E2C0C: .4byte gBattleAnimArgs -_080E2C10: .4byte 0x00007ecb -_080E2C14: - ldr r1, _080E2C1C @ =gBattleAnimArgs - ldr r0, _080E2C20 @ =0x00007ecb - b _080E2C48 - .align 2, 0 -_080E2C1C: .4byte gBattleAnimArgs -_080E2C20: .4byte 0x00007ecb -_080E2C24: - ldr r1, _080E2C2C @ =gBattleAnimArgs - ldr r0, _080E2C30 @ =0x00002a16 - b _080E2C48 - .align 2, 0 -_080E2C2C: .4byte gBattleAnimArgs -_080E2C30: .4byte 0x00002a16 -_080E2C34: - ldr r1, _080E2C3C @ =gBattleAnimArgs - ldr r0, _080E2C40 @ =0x00000d2e - b _080E2C48 - .align 2, 0 -_080E2C3C: .4byte gBattleAnimArgs -_080E2C40: .4byte 0x00000d2e -_080E2C44: - ldr r1, _080E2C58 @ =gBattleAnimArgs - ldr r0, _080E2C5C @ =0x00007fff -_080E2C48: - strh r0, [r1, 0x8] -_080E2C4A: - adds r0, r4, 0 - adds r1, r2, 0 - bl sub_80E2C8C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2C58: .4byte gBattleAnimArgs -_080E2C5C: .4byte 0x00007fff - thumb_func_end sub_80E2B74 - - thumb_func_start sub_80E2C60 -sub_80E2C60: @ 80E2C60 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080E2C88 @ =gBattleAnimArgs - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r1, 0x1 - lsls r1, r0 - adds r0, r4, 0 - bl sub_80E2C8C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2C88: .4byte gBattleAnimArgs - thumb_func_end sub_80E2C60 - - thumb_func_start sub_80E2C8C -sub_80E2C8C: @ 80E2C8C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080E2CC4 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - strh r1, [r2, 0x8] - lsrs r1, 16 - strh r1, [r2, 0xA] - ldr r3, _080E2CC8 @ =gBattleAnimArgs - ldrh r1, [r3, 0x2] - strh r1, [r2, 0xC] - ldrh r1, [r3, 0x4] - strh r1, [r2, 0xE] - ldrh r1, [r3, 0x6] - strh r1, [r2, 0x10] - ldrh r1, [r3, 0x8] - strh r1, [r2, 0x12] - ldrh r1, [r3, 0x4] - strh r1, [r2, 0x1C] - ldr r1, _080E2CCC @ =sub_80E2CD0 - str r1, [r2] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_080E2CC4: .4byte gTasks -_080E2CC8: .4byte gBattleAnimArgs -_080E2CCC: .4byte sub_80E2CD0 - thumb_func_end sub_80E2C8C - - thumb_func_start sub_80E2CD0 -sub_80E2CD0: @ 80E2CD0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 - ldr r2, _080E2D50 @ =gTasks - lsls r5, r7, 2 - adds r0, r5, r7 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1A] - mov r8, r0 - movs r4, 0x1A - ldrsh r1, [r3, r4] - movs r4, 0xC - ldrsh r0, [r3, r4] - mov r9, r2 - cmp r1, r0 - bne _080E2D66 - strh r6, [r3, 0x1A] - movs r0, 0x8 - ldrsh r4, [r3, r0] - movs r1, 0xA - ldrsh r0, [r3, r1] - lsls r0, 16 - orrs r4, r0 - mov r8, r5 - cmp r4, 0 - beq _080E2D32 - adds r5, r3, 0 -_080E2D10: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080E2D24 - ldrb r2, [r5, 0x1C] - ldrh r3, [r5, 0x12] - adds r0, r6, 0 - movs r1, 0x10 - bl BlendPalette -_080E2D24: - adds r0, r6, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r6, r0, 16 - lsrs r4, 1 - cmp r4, 0 - bne _080E2D10 -_080E2D32: - mov r4, r8 - adds r0, r4, r7 - lsls r0, 3 - mov r1, r9 - adds r2, r0, r1 - ldrh r0, [r2, 0x1C] - movs r4, 0x1C - ldrsh r3, [r2, r4] - movs r4, 0x10 - ldrsh r1, [r2, r4] - cmp r3, r1 - bge _080E2D54 - adds r0, 0x1 - strh r0, [r2, 0x1C] - b _080E2D6C - .align 2, 0 -_080E2D50: .4byte gTasks -_080E2D54: - cmp r3, r1 - ble _080E2D5E - subs r0, 0x1 - strh r0, [r2, 0x1C] - b _080E2D6C -_080E2D5E: - adds r0, r7, 0 - bl DestroyAnimVisualTask - b _080E2D6C -_080E2D66: - mov r0, r8 - adds r0, 0x1 - strh r0, [r3, 0x1A] -_080E2D6C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E2CD0 - - thumb_func_start sub_80E2D78 -sub_80E2D78: @ 80E2D78 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r4, _080E2DAC @ =gBattleAnimArgs - ldrb r0, [r4] - ldrb r1, [r4, 0x2] - ldrb r2, [r4, 0x4] - ldrb r3, [r4, 0x6] - ldrb r4, [r4, 0x8] - str r4, [sp] - bl BeginHardwarePaletteFade - ldr r1, _080E2DB0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080E2DB4 @ =sub_80E2DB8 - str r1, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E2DAC: .4byte gBattleAnimArgs -_080E2DB0: .4byte gTasks -_080E2DB4: .4byte sub_80E2DB8 - thumb_func_end sub_80E2D78 - - thumb_func_start sub_80E2DB8 -sub_80E2DB8: @ 80E2DB8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080E2DD4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E2DD0 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E2DD0: - pop {r0} - bx r0 - .align 2, 0 -_080E2DD4: .4byte gPaletteFade - thumb_func_end sub_80E2DB8 - - thumb_func_start sub_80E2DD8 -sub_80E2DD8: @ 80E2DD8 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080E2E04 @ =gTasks - adds r1, r0 - ldr r2, _080E2E08 @ =gBattleAnimArgs - ldrh r0, [r2] - movs r3, 0 - strh r0, [r1, 0x8] - strh r3, [r1, 0xA] - ldrh r0, [r2, 0x2] - strh r0, [r1, 0xC] - ldrh r0, [r2, 0x4] - strh r0, [r1, 0xE] - ldrh r0, [r2, 0x6] - strh r0, [r1, 0x10] - strh r3, [r1, 0x12] - ldr r0, _080E2E0C @ =sub_80E2E10 - str r0, [r1] - bx lr - .align 2, 0 -_080E2E04: .4byte gTasks -_080E2E08: .4byte gBattleAnimArgs -_080E2E0C: .4byte sub_80E2E10 - thumb_func_end sub_80E2DD8 - - thumb_func_start sub_80E2E10 -sub_80E2E10: @ 80E2E10 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r2, r5, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080E2E3C @ =gTasks - adds r4, r0, r1 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E2ED4 - ldrh r1, [r4, 0xA] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080E2E40 - subs r0, r1, 0x1 - strh r0, [r4, 0xA] - b _080E2EE2 - .align 2, 0 -_080E2E3C: .4byte gTasks -_080E2E40: - ldrb r0, [r4, 0x8] - bl duplicate_obj_of_side_rel2move_in_transparent_mode - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - blt _080E2EBE - ldr r6, _080E2ECC @ =gSprites - movs r1, 0x14 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r3, r1, r6 - movs r2, 0x8 - ldrsh r0, [r4, r2] - movs r2, 0x2 - cmp r0, 0 - beq _080E2E68 - movs r2, 0x1 -_080E2E68: - lsls r2, 2 - ldrb r1, [r3, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3, 0x5] - movs r0, 0x14 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r4, 0xE] - strh r1, [r0, 0x2E] - movs r2, 0x14 - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r5, [r0, 0x30] - movs r0, 0x14 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x5 - strh r1, [r0, 0x32] - movs r2, 0x14 - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080E2ED0 @ =sub_80E2EE8 - str r1, [r0] - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] -_080E2EBE: - ldrh r0, [r4, 0x10] - subs r0, 0x1 - strh r0, [r4, 0x10] - ldrh r0, [r4, 0xC] - strh r0, [r4, 0xA] - b _080E2EE2 - .align 2, 0 -_080E2ECC: .4byte gSprites -_080E2ED0: .4byte sub_80E2EE8 -_080E2ED4: - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E2EE2 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E2EE2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E2E10 - - thumb_func_start sub_80E2EE8 -sub_80E2EE8: @ 80E2EE8 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080E2EFC - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - b _080E2F20 -_080E2EFC: - ldr r3, _080E2F28 @ =gTasks - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x30 - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl obj_delete_but_dont_free_vram -_080E2F20: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2F28: .4byte gTasks - thumb_func_end sub_80E2EE8 - - thumb_func_start sub_80E2F2C -sub_80E2F2C: @ 80E2F2C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r7, 0 - ldr r0, _080E3038 @ =gUnknown_030042C4 - strh r7, [r0] - ldr r0, _080E303C @ =gUnknown_03004240 - strh r7, [r0] - ldr r1, _080E3040 @ =REG_WININ - ldr r2, _080E3044 @ =0x00003f3f - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080E3048 @ =0x00003f3d - adds r0, r3, 0 - strh r0, [r1] - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _080E304C @ =REG_BLDCNT - ldr r2, _080E3050 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080E3054 @ =0x00000c08 - adds r0, r3, 0 - strh r0, [r1] - ldr r4, _080E3058 @ =REG_BG1CNT - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - mov r8, r0 - ands r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E2FAC - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080E2FAC: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080E3028 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E3028 - ldr r5, _080E305C @ =gBattleAnimBankAttacker - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080E2FDC - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - cmp r0, 0 - bne _080E3028 -_080E2FDC: - ldrb r0, [r5] - movs r6, 0x2 - eors r0, r6 - bl IsAnimBankSpriteVisible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E3028 - ldr r3, _080E3060 @ =gSprites - ldr r1, _080E3064 @ =gObjectBankIDs - ldrb r0, [r5] - eors r0, r6 - adds r0, r1 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldrb r1, [r4] - mov r0, r8 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4] - movs r7, 0x1 -_080E3028: - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080E306C - ldr r0, _080E3068 @ =gSharedMem + 0x19348 - ldrh r4, [r0] - b _080E30B4 - .align 2, 0 -_080E3038: .4byte gUnknown_030042C4 -_080E303C: .4byte gUnknown_03004240 -_080E3040: .4byte REG_WININ -_080E3044: .4byte 0x00003f3f -_080E3048: .4byte 0x00003f3d -_080E304C: .4byte REG_BLDCNT -_080E3050: .4byte 0x00003f42 -_080E3054: .4byte 0x00000c08 -_080E3058: .4byte REG_BG1CNT -_080E305C: .4byte gBattleAnimBankAttacker -_080E3060: .4byte gSprites -_080E3064: .4byte gObjectBankIDs -_080E3068: .4byte gSharedMem + 0x19348 -_080E306C: - ldr r4, _080E308C @ =gBattleAnimBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080E3098 - ldr r1, _080E3090 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E3094 @ =gEnemyParty - b _080E30A8 - .align 2, 0 -_080E308C: .4byte gBattleAnimBankAttacker -_080E3090: .4byte gBattlePartyID -_080E3094: .4byte gEnemyParty -_080E3098: - ldr r1, _080E3160 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E3164 @ =gPlayerParty -_080E30A8: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 -_080E30B4: - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080E3168 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_807A4A0 - lsls r0, 24 - lsrs r4, r0, 24 - mov r0, sp - bl sub_8078914 - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r2, _080E316C @ =0x040000d4 - add r0, sp, 0xC - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _080E3170 @ =0x85000400 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r0, _080E3174 @ =gUnknown_08D20A30 - bl LZDecompressVram - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080E3106 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080E3106: - ldr r0, _080E3178 @ =gUnknown_08D20A14 - ldr r1, [sp] - bl LZDecompressVram - ldr r0, _080E317C @ =gUnknown_083DB568 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - adds r1, 0x1 - movs r2, 0x2 - bl LoadPalette - ldr r2, _080E3180 @ =gUnknown_030042C0 - ldr r0, _080E3184 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x20] - negs r0, r0 - adds r0, 0x20 - strh r0, [r2] - ldr r2, _080E3188 @ =gUnknown_030041B4 - ldrh r0, [r1, 0x22] - negs r0, r0 - adds r0, 0x20 - strh r0, [r2] - ldr r1, _080E318C @ =gTasks - mov r2, r9 - lsls r0, r2, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x8] - strh r7, [r0, 0x14] - ldr r1, _080E3190 @ =sub_80E3194 - str r1, [r0] - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3160: .4byte gBattlePartyID -_080E3164: .4byte gPlayerParty -_080E3168: .4byte gBattleAnimBankAttacker -_080E316C: .4byte 0x040000d4 -_080E3170: .4byte 0x85000400 -_080E3174: .4byte gUnknown_08D20A30 -_080E3178: .4byte gUnknown_08D20A14 -_080E317C: .4byte gUnknown_083DB568 -_080E3180: .4byte gUnknown_030042C0 -_080E3184: .4byte gSprites -_080E3188: .4byte gUnknown_030041B4 -_080E318C: .4byte gTasks -_080E3190: .4byte sub_80E3194 - thumb_func_end sub_80E2F2C - - thumb_func_start sub_80E3194 -sub_80E3194: @ 80E3194 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080E32AC @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x1C] - adds r0, 0x4 - movs r5, 0 - strh r0, [r4, 0x1C] - ldr r7, _080E32B0 @ =gUnknown_030041B4 - ldrh r2, [r7] - subs r1, r2, 0x4 - strh r1, [r7] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x40 - bne _080E329E - strh r5, [r4, 0x1C] - adds r0, r2, 0 - adds r0, 0x3C - strh r0, [r7] - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080E329E - movs r0, 0 - bl sub_8076464 - ldr r0, _080E32B4 @ =gUnknown_030042C4 - strh r5, [r0] - ldr r0, _080E32B8 @ =gUnknown_03004240 - strh r5, [r0] - ldr r0, _080E32BC @ =REG_WININ - ldr r2, _080E32C0 @ =0x00003f3f - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E3208 - ldr r2, _080E32C4 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080E3208: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - eors r0, r1 - strh r0, [r2] - ldr r0, _080E32C8 @ =REG_BLDCNT - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - movs r0, 0 - bl GetAnimBankSpriteId - ldr r0, _080E32CC @ =gSprites - mov r8, r0 - movs r2, 0x8 - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - bl DestroySprite - mov r0, sp - bl sub_8078914 - ldr r2, [sp, 0x4] - str r5, [sp, 0xC] - ldr r1, _080E32D0 @ =0x040000d4 - add r0, sp, 0xC - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _080E32D4 @ =0x85000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r3, 0x14 - ldrsh r0, [r4, r3] - cmp r0, 0x1 - bne _080E3288 - ldr r2, _080E32D8 @ =gObjectBankIDs - ldr r0, _080E32DC @ =gBattleAnimBankAttacker - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - adds r0, r2 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] -_080E3288: - ldr r2, _080E32C4 @ =REG_BG1CNT - ldrb r1, [r2, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - movs r0, 0 - strh r0, [r7] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E329E: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E32AC: .4byte gTasks -_080E32B0: .4byte gUnknown_030041B4 -_080E32B4: .4byte gUnknown_030042C4 -_080E32B8: .4byte gUnknown_03004240 -_080E32BC: .4byte REG_WININ -_080E32C0: .4byte 0x00003f3f -_080E32C4: .4byte REG_BG1CNT -_080E32C8: .4byte REG_BLDCNT -_080E32CC: .4byte gSprites -_080E32D0: .4byte 0x040000d4 -_080E32D4: .4byte 0x85000200 -_080E32D8: .4byte gObjectBankIDs -_080E32DC: .4byte gBattleAnimBankAttacker - thumb_func_end sub_80E3194 - - thumb_func_start sub_80E32E0 -sub_80E32E0: @ 80E32E0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r0, _080E332C @ =gTasks - mov r12, r0 - ldr r1, _080E3330 @ =sub_80E3338 - mov r8, r1 - lsls r1, r3, 2 - adds r0, r1, r3 - lsls r4, r0, 3 - mov r7, r12 - adds r7, 0x8 - adds r5, r1, 0 - ldr r6, _080E3334 @ =gBattleAnimArgs -_080E3302: - lsls r0, r2, 1 - adds r1, r0, r4 - adds r1, r7 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _080E3302 - adds r0, r5, r3 - lsls r0, 3 - add r0, r12 - mov r1, r8 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E332C: .4byte gTasks -_080E3330: .4byte sub_80E3338 -_080E3334: .4byte gBattleAnimArgs - thumb_func_end sub_80E32E0 - - thumb_func_start sub_80E3338 -sub_80E3338: @ 80E3338 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r0, 0 - str r0, [sp, 0x1C] - movs r1, 0 - str r1, [sp, 0x20] - add r7, sp, 0xC - ldr r2, _080E3388 @ =gTasks - mov r3, r9 - lsls r1, r3, 2 - adds r0, r1, r3 - lsls r0, 3 - mov r10, r1 - adds r1, r2, 0 - adds r1, 0x8 - adds r1, r0, r1 - adds r3, r7, 0 - movs r4, 0 - movs r2, 0x7 -_080E336C: - ldrh r0, [r1] - strh r0, [r3] - strh r4, [r1] - adds r1, 0x2 - adds r3, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _080E336C - movs r1, 0x4 - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _080E3390 - ldr r0, _080E338C @ =gBattleAnimBankAttacker - b _080E3392 - .align 2, 0 -_080E3388: .4byte gTasks -_080E338C: .4byte gBattleAnimBankAttacker -_080E3390: - ldr r0, _080E34B4 @ =gBattleAnimBankTarget -_080E3392: - ldrb r5, [r0] - movs r0, 0x2 - mov r8, r5 - mov r2, r8 - eors r2, r0 - mov r8, r2 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E33BC - movs r3, 0x6 - ldrsh r0, [r7, r3] - cmp r0, 0 - beq _080E33C0 - mov r0, r8 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _080E33C0 -_080E33BC: - movs r0, 0 - strh r0, [r7, 0x6] -_080E33C0: - ldr r0, _080E34B8 @ =gUnknown_030042C4 - movs r1, 0 - strh r1, [r0] - ldr r0, _080E34BC @ =gUnknown_03004240 - strh r1, [r0] - ldr r1, _080E34C0 @ =REG_WININ - ldr r2, _080E34C4 @ =0x00003f3f - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080E34C8 @ =0x00003f3d - adds r0, r3, 0 - strh r0, [r1] - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _080E34CC @ =REG_BLDCNT - ldr r2, _080E34D0 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0x80 - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - ldr r4, _080E34D4 @ =REG_BG1CNT - ldrb r1, [r4] - movs r6, 0x4 - negs r6, r6 - adds r0, r6, 0 - ands r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E3432 - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080E3432: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080E34A4 - movs r1, 0x6 - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _080E34A4 - adds r0, r5, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080E345E - adds r0, r5, 0 - bl GetBankIdentity - lsls r0, 24 - cmp r0, 0 - bne _080E34A4 -_080E345E: - mov r0, r8 - bl IsAnimBankSpriteVisible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E34A4 - ldr r1, _080E34D8 @ =gSprites - ldr r0, _080E34DC @ =gObjectBankIDs - add r0, r8 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldrb r1, [r4] - adds r0, r6, 0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4] - movs r2, 0x1 - str r2, [sp, 0x20] -_080E34A4: - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080E34E4 - ldr r0, _080E34E0 @ =gSharedMem + 0x19348 - ldrh r4, [r0] - b _080E3522 - .align 2, 0 -_080E34B4: .4byte gBattleAnimBankTarget -_080E34B8: .4byte gUnknown_030042C4 -_080E34BC: .4byte gUnknown_03004240 -_080E34C0: .4byte REG_WININ -_080E34C4: .4byte 0x00003f3f -_080E34C8: .4byte 0x00003f3d -_080E34CC: .4byte REG_BLDCNT -_080E34D0: .4byte 0x00003f42 -_080E34D4: .4byte REG_BG1CNT -_080E34D8: .4byte gSprites -_080E34DC: .4byte gObjectBankIDs -_080E34E0: .4byte gSharedMem + 0x19348 -_080E34E4: - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080E3508 - ldr r1, _080E3500 @ =gBattlePartyID - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E3504 @ =gEnemyParty - b _080E3516 - .align 2, 0 -_080E3500: .4byte gBattlePartyID -_080E3504: .4byte gEnemyParty -_080E3508: - ldr r1, _080E3568 @ =gBattlePartyID - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E356C @ =gPlayerParty -_080E3516: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 -_080E3522: - ldr r6, _080E3570 @ =gObjectBankIDs - adds r0, r5, r6 - ldrb r1, [r0] - adds r0, r5, 0 - adds r2, r4, 0 - bl sub_807A4A0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0x6 - ldrsh r0, [r7, r3] - cmp r0, 0 - beq _080E3550 - mov r1, r8 - adds r0, r1, r6 - ldrb r1, [r0] - mov r0, r8 - adds r2, r4, 0 - bl sub_807A4A0 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x1C] -_080E3550: - mov r0, sp - bl sub_8078914 - movs r2, 0 - ldrsh r0, [r7, r2] - cmp r0, 0 - bne _080E3578 - ldr r0, _080E3574 @ =gBattleStatMask1_Tilemap - ldr r1, [sp, 0x4] - bl LZDecompressVram - b _080E3580 - .align 2, 0 -_080E3568: .4byte gBattlePartyID -_080E356C: .4byte gPlayerParty -_080E3570: .4byte gObjectBankIDs -_080E3574: .4byte gBattleStatMask1_Tilemap -_080E3578: - ldr r0, _080E35B0 @ =gBattleStatMask2_Tilemap - ldr r1, [sp, 0x4] - bl LZDecompressVram -_080E3580: - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080E3598 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080E3598: - ldr r0, _080E35B4 @ =gBattleStatMask_Gfx - ldr r1, [sp] - bl LZDecompressVram - ldrh r0, [r7, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bne _080E35BC - ldr r0, _080E35B8 @ =gBattleStatMask2_Pal - b _080E35FE - .align 2, 0 -_080E35B0: .4byte gBattleStatMask2_Tilemap -_080E35B4: .4byte gBattleStatMask_Gfx -_080E35B8: .4byte gBattleStatMask2_Pal -_080E35BC: - cmp r0, 0x1 - bne _080E35C8 - ldr r0, _080E35C4 @ =gBattleStatMask1_Pal - b _080E35FE - .align 2, 0 -_080E35C4: .4byte gBattleStatMask1_Pal -_080E35C8: - cmp r0, 0x2 - bne _080E35D4 - ldr r0, _080E35D0 @ =gBattleStatMask3_Pal - b _080E35FE - .align 2, 0 -_080E35D0: .4byte gBattleStatMask3_Pal -_080E35D4: - cmp r0, 0x3 - bne _080E35E0 - ldr r0, _080E35DC @ =gBattleStatMask4_Pal - b _080E35FE - .align 2, 0 -_080E35DC: .4byte gBattleStatMask4_Pal -_080E35E0: - cmp r0, 0x4 - bne _080E35EC - ldr r0, _080E35E8 @ =gBattleStatMask6_Pal - b _080E35FE - .align 2, 0 -_080E35E8: .4byte gBattleStatMask6_Pal -_080E35EC: - cmp r0, 0x5 - bne _080E35F8 - ldr r0, _080E35F4 @ =gBattleStatMask7_Pal - b _080E35FE - .align 2, 0 -_080E35F4: .4byte gBattleStatMask7_Pal -_080E35F8: - cmp r0, 0x6 - bne _080E3610 - ldr r0, _080E360C @ =gBattleStatMask8_Pal -_080E35FE: - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - b _080E361E - .align 2, 0 -_080E360C: .4byte gBattleStatMask8_Pal -_080E3610: - ldr r0, _080E3644 @ =gBattleStatMask5_Pal - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette -_080E361E: - ldr r2, _080E3648 @ =gUnknown_030042C0 - movs r1, 0 - strh r1, [r2] - ldr r0, _080E364C @ =gUnknown_030041B4 - strh r1, [r0] - movs r3, 0 - ldrsh r0, [r7, r3] - cmp r0, 0x1 - bne _080E3658 - movs r0, 0x40 - strh r0, [r2] - ldr r2, _080E3650 @ =gTasks - mov r0, r10 - add r0, r9 - lsls r0, 3 - adds r0, r2 - ldr r1, _080E3654 @ =0x0000fffd - strh r1, [r0, 0xA] - b _080E3668 - .align 2, 0 -_080E3644: .4byte gBattleStatMask5_Pal -_080E3648: .4byte gUnknown_030042C0 -_080E364C: .4byte gUnknown_030041B4 -_080E3650: .4byte gTasks -_080E3654: .4byte 0x0000fffd -_080E3658: - ldr r0, _080E3680 @ =gTasks - mov r1, r10 - add r1, r9 - lsls r1, 3 - adds r1, r0 - movs r2, 0x3 - strh r2, [r1, 0xA] - adds r2, r0, 0 -_080E3668: - movs r1, 0x8 - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _080E3684 - mov r0, r10 - add r0, r9 - lsls r0, 3 - adds r0, r2 - movs r1, 0xA - strh r1, [r0, 0x10] - movs r1, 0x14 - b _080E3692 - .align 2, 0 -_080E3680: .4byte gTasks -_080E3684: - mov r0, r10 - add r0, r9 - lsls r0, 3 - adds r0, r2 - movs r1, 0xD - strh r1, [r0, 0x10] - movs r1, 0x1E -_080E3692: - strh r1, [r0, 0x12] - mov r1, r10 - add r1, r9 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - ldrh r0, [r7, 0x6] - strh r0, [r1, 0xC] - mov r2, sp - ldrh r2, [r2, 0x1C] - strh r2, [r1, 0xE] - mov r3, sp - ldrh r3, [r3, 0x20] - strh r3, [r1, 0x14] - ldr r0, _080E36D8 @ =gObjectBankIDs - add r0, r8 - ldrb r0, [r0] - strh r0, [r1, 0x16] - ldr r0, _080E36DC @ =sub_80E3704 - str r0, [r1] - movs r1, 0 - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _080E36E0 - movs r0, 0x40 - negs r0, r0 - bl sub_8077094 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xEF - bl PlaySE12WithPanning - b _080E36F4 - .align 2, 0 -_080E36D8: .4byte gObjectBankIDs -_080E36DC: .4byte sub_80E3704 -_080E36E0: - movs r0, 0x40 - negs r0, r0 - bl sub_8077094 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xF5 - bl PlaySE12WithPanning -_080E36F4: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E3338 - - thumb_func_start sub_80E3704 -sub_80E3704: @ 80E3704 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, _080E3730 @ =gUnknown_030041B4 - ldr r1, _080E3734 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0xA] - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] - movs r3, 0x26 - ldrsh r2, [r4, r3] - cmp r2, 0x1 - beq _080E3774 - cmp r2, 0x1 - bgt _080E3738 - cmp r2, 0 - beq _080E373E - b _080E3866 - .align 2, 0 -_080E3730: .4byte gUnknown_030041B4 -_080E3734: .4byte gTasks -_080E3738: - cmp r2, 0x2 - beq _080E378E - b _080E3866 -_080E373E: - ldrh r0, [r4, 0x1E] - adds r1, r0, 0x1 - strh r1, [r4, 0x1E] - lsls r0, 16 - cmp r0, 0 - bgt _080E374C - b _080E3866 -_080E374C: - strh r2, [r4, 0x1E] - ldrh r1, [r4, 0x20] - adds r1, 0x1 - strh r1, [r4, 0x20] - ldr r2, _080E3770 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r0, 0x20 - ldrsh r1, [r4, r0] - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080E3866 - b _080E3786 - .align 2, 0 -_080E3770: .4byte REG_BLDALPHA -_080E3774: - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x12 - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080E3866 -_080E3786: - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] - b _080E3866 -_080E378E: - ldrh r0, [r4, 0x1E] - adds r1, r0, 0x1 - strh r1, [r4, 0x1E] - lsls r0, 16 - cmp r0, 0 - ble _080E3866 - movs r0, 0 - strh r0, [r4, 0x1E] - ldrh r1, [r4, 0x20] - subs r1, 0x1 - strh r1, [r4, 0x20] - ldr r7, _080E386C @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r7] - movs r0, 0x20 - ldrsh r5, [r4, r0] - cmp r5, 0 - bne _080E3866 - movs r0, 0 - bl sub_8076464 - ldr r0, _080E3870 @ =gUnknown_030042C4 - strh r5, [r0] - ldr r0, _080E3874 @ =gUnknown_03004240 - strh r5, [r0] - ldr r0, _080E3878 @ =REG_WININ - ldr r2, _080E387C @ =0x00003f3f - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E37E8 - ldr r2, _080E3880 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080E37E8: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - eors r0, r1 - strh r0, [r2] - ldr r0, _080E3884 @ =REG_BLDCNT - strh r5, [r0] - strh r5, [r7] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _080E3888 @ =gSprites - adds r0, r5 - bl DestroySprite - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E3828 - movs r2, 0xE - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite -_080E3828: - movs r3, 0x14 - ldrsh r0, [r4, r3] - cmp r0, 0x1 - bne _080E3854 - movs r1, 0x16 - ldrsh r0, [r4, r1] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r5 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] -_080E3854: - ldr r2, _080E3880 @ =REG_BG1CNT - ldrb r1, [r2, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E3866: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E386C: .4byte REG_BLDALPHA -_080E3870: .4byte gUnknown_030042C4 -_080E3874: .4byte gUnknown_03004240 -_080E3878: .4byte REG_WININ -_080E387C: .4byte 0x00003f3f -_080E3880: .4byte REG_BG1CNT -_080E3884: .4byte REG_BLDCNT -_080E3888: .4byte gSprites - thumb_func_end sub_80E3704 - - thumb_func_start sub_80E388C -sub_80E388C: @ 80E388C - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x1 - bl sub_80792C0 - adds r6, r0, 0 - movs r1, 0 - bl sub_80E39BC - ldr r0, _080E38EC @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - lsrs r0, r6, 16 - movs r5, 0 - strh r0, [r4, 0x24] - str r5, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80791A8 - adds r6, r0, 0 - ldr r1, _080E38F0 @ =0x0000ffff - ands r6, r1 - adds r0, r6, 0 - bl sub_80E39BC - strh r6, [r4, 0x26] - strh r5, [r4, 0x8] - strh r5, [r4, 0xA] - ldr r0, _080E38F4 @ =sub_80E38F8 - str r0, [r4] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E38EC: .4byte gTasks -_080E38F0: .4byte 0x0000ffff -_080E38F4: .4byte sub_80E38F8 - thumb_func_end sub_80E388C - - thumb_func_start sub_80E38F8 -sub_80E38F8: @ 80E38F8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E391C @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080E393C - cmp r1, 0x1 - bgt _080E3920 - cmp r1, 0 - beq _080E3926 - b _080E39B6 - .align 2, 0 -_080E391C: .4byte gTasks -_080E3920: - cmp r1, 0x2 - beq _080E39B0 - b _080E39B6 -_080E3926: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080E39B6 - strh r1, [r4, 0xA] - movs r0, 0x10 - strh r0, [r4, 0xC] - b _080E39A4 -_080E393C: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E39B6 - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - movs r5, 0 - movs r6, 0x1 -_080E3958: - movs r1, 0x26 - ldrsh r0, [r4, r1] - asrs r0, r5 - ands r0, r6 - cmp r0, 0 - beq _080E3972 - lsls r0, r5, 20 - lsrs r0, 16 - ldrb r2, [r4, 0xC] - movs r1, 0x10 - ldr r3, _080E39AC @ =0x0000ffff - bl BlendPalette -_080E3972: - movs r1, 0x24 - ldrsh r0, [r4, r1] - asrs r0, r5 - ands r0, r6 - cmp r0, 0 - beq _080E3992 - lsls r0, r5, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r0, 16 - ldrb r2, [r4, 0xC] - movs r1, 0x10 - movs r3, 0 - bl BlendPalette -_080E3992: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xF - bls _080E3958 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E39B6 -_080E39A4: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E39B6 - .align 2, 0 -_080E39AC: .4byte 0x0000ffff -_080E39B0: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E39B6: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E38F8 - - thumb_func_start sub_80E39BC -sub_80E39BC: @ 80E39BC - push {r4-r6,lr} - adds r3, r0, 0 - lsls r1, 16 - lsrs r6, r1, 16 - movs r2, 0 -_080E39C6: - movs r0, 0x1 - ands r0, r3 - lsrs r4, r3, 1 - adds r5, r2, 0x1 - cmp r0, 0 - beq _080E39F2 - lsls r0, r2, 20 - lsrs r2, r0, 16 - adds r0, r2, 0 - adds r0, 0x10 - cmp r2, r0 - bge _080E39F2 - ldr r1, _080E3A04 @ =gPlttBufferFaded - adds r3, r0, 0 -_080E39E2: - lsls r0, r2, 1 - adds r0, r1 - strh r6, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r3 - blt _080E39E2 -_080E39F2: - adds r3, r4, 0 - lsls r0, r5, 16 - lsrs r2, r0, 16 - cmp r2, 0x1F - bls _080E39C6 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E3A04: .4byte gPlttBufferFaded - thumb_func_end sub_80E39BC - - thumb_func_start sub_80E3A08 -sub_80E3A08: @ 80E3A08 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - movs r2, 0 - ldr r0, _080E3A50 @ =gBattleAnimBankAttacker - ldrb r3, [r0] - movs r5, 0x1 -_080E3A18: - cmp r3, r2 - beq _080E3A26 - adds r1, r2, 0 - adds r1, 0x10 - adds r0, r5, 0 - lsls r0, r1 - orrs r4, r0 -_080E3A26: - adds r2, 0x1 - cmp r2, 0x3 - bls _080E3A18 - movs r2, 0x5 - ldr r0, _080E3A54 @ =gBattleAnimArgs - adds r1, r0, 0 - adds r1, 0x8 -_080E3A34: - ldrh r0, [r1] - strh r0, [r1, 0x2] - subs r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bne _080E3A34 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80E2C8C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E3A50: .4byte gBattleAnimBankAttacker -_080E3A54: .4byte gBattleAnimArgs - thumb_func_end sub_80E3A08 - - thumb_func_start sub_80E3A58 -sub_80E3A58: @ 80E3A58 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl sub_80789D4 - ldr r0, _080E3AC0 @ =sub_80E3AD0 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080E3AC4 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E3A94 - ldr r0, _080E3AC8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080E3A94 - ldrh r0, [r4] - negs r0, r0 - strh r0, [r4] - ldrh r0, [r4, 0x2] - negs r0, r0 - strh r0, [r4, 0x2] -_080E3A94: - ldr r0, _080E3ACC @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r2, _080E3AC4 @ =gBattleAnimArgs - ldrh r0, [r2] - strh r0, [r1, 0xA] - ldrh r0, [r2, 0x2] - strh r0, [r1, 0xC] - ldrh r0, [r2, 0x6] - strh r0, [r1, 0xE] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - adds r0, r6, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E3AC0: .4byte sub_80E3AD0 -_080E3AC4: .4byte gBattleAnimArgs -_080E3AC8: .4byte gBattleAnimBankAttacker -_080E3ACC: .4byte gTasks - thumb_func_end sub_80E3A58 - - thumb_func_start sub_80E3AD0 -sub_80E3AD0: @ 80E3AD0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080E3B3C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r3, [r1, 0xA] - ldrh r0, [r1, 0x1C] - adds r3, r0 - movs r4, 0 - mov r12, r4 - strh r3, [r1, 0x1C] - ldrh r2, [r1, 0xC] - ldrh r7, [r1, 0x1E] - adds r2, r7 - strh r2, [r1, 0x1E] - ldr r6, _080E3B40 @ =gUnknown_030041B0 - lsls r0, r3, 16 - asrs r0, 24 - ldrh r4, [r6] - adds r0, r4 - strh r0, [r6] - ldr r4, _080E3B44 @ =gUnknown_030041B8 - lsls r0, r2, 16 - asrs r0, 24 - ldrh r7, [r4] - adds r0, r7 - strh r0, [r4] - movs r0, 0xFF - ands r3, r0 - strh r3, [r1, 0x1C] - ands r2, r0 - strh r2, [r1, 0x1E] - ldr r0, _080E3B48 @ =gBattleAnimArgs - movs r3, 0xE - ldrsh r2, [r0, r3] - movs r7, 0xE - ldrsh r0, [r1, r7] - cmp r2, r0 - bne _080E3B36 - mov r0, r12 - strh r0, [r6] - strh r0, [r4] - movs r0, 0x1 - bl sub_80789D4 - adds r0, r5, 0 - bl DestroyTask -_080E3B36: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3B3C: .4byte gTasks -_080E3B40: .4byte gUnknown_030041B0 -_080E3B44: .4byte gUnknown_030041B8 -_080E3B48: .4byte gBattleAnimArgs - thumb_func_end sub_80E3AD0 - - thumb_func_start sub_80E3B4C -sub_80E3B4C: @ 80E3B4C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080E3B70 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - ldr r1, _080E3B74 @ =gBattleAnimArgs - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0xE] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E3B70: .4byte gBattleAnimBankAttacker -_080E3B74: .4byte gBattleAnimArgs - thumb_func_end sub_80E3B4C - - thumb_func_start sub_80E3B78 -sub_80E3B78: @ 80E3B78 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080E3B9C @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - ldr r1, _080E3BA0 @ =gBattleAnimArgs - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0xE] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E3B9C: .4byte gBattleAnimBankTarget -_080E3BA0: .4byte gBattleAnimArgs - thumb_func_end sub_80E3B78 - - thumb_func_start sub_80E3BA4 -sub_80E3BA4: @ 80E3BA4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r5, _080E3BD0 @ =gBattleAnimArgs - movs r4, 0 - ldr r0, _080E3BD4 @ =gBattleAnimBankAttacker - ldrb r2, [r0] - movs r0, 0x2 - ldr r1, _080E3BD8 @ =gBattleAnimBankTarget - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bne _080E3BC0 - movs r4, 0x1 -_080E3BC0: - strh r4, [r5, 0xE] - adds r0, r3, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E3BD0: .4byte gBattleAnimArgs -_080E3BD4: .4byte gBattleAnimBankAttacker -_080E3BD8: .4byte gBattleAnimBankTarget - thumb_func_end sub_80E3BA4 - - thumb_func_start sub_80E3BDC -sub_80E3BDC: @ 80E3BDC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r6, _080E3C3C @ =gSprites -_080E3BE6: - ldr r0, _080E3C40 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - cmp r4, r0 - beq _080E3C24 - lsls r0, r4, 24 - lsrs r0, 24 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080E3C24 - ldr r0, _080E3C44 @ =gObjectBankIDs - adds r0, r4, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldr r1, _080E3C48 @ =gBattleAnimArgs - adds r2, 0x3E - movs r0, 0x1 - ldrb r3, [r1] - ands r3, r0 - lsls r3, 2 - ldrb r0, [r2] - movs r7, 0x5 - negs r7, r7 - adds r1, r7, 0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2] -_080E3C24: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080E3BE6 - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3C3C: .4byte gSprites -_080E3C40: .4byte gBattleAnimBankAttacker -_080E3C44: .4byte gObjectBankIDs -_080E3C48: .4byte gBattleAnimArgs - thumb_func_end sub_80E3BDC - - thumb_func_start sub_80E3C4C -sub_80E3C4C: @ 80E3C4C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r1, [sp, 0x3C] - ldr r4, [sp, 0x40] - ldr r5, [sp, 0x44] - ldr r6, [sp, 0x48] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp, 0xC] - lsls r3, 24 - lsrs r7, r3, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp, 0x10] - lsls r5, 24 - lsrs r5, 24 - str r5, [sp, 0x14] - lsls r6, 24 - lsrs r6, 24 - mov r10, r6 - movs r0, 0 - str r0, [sp, 0x18] - movs r0, 0x2 - adds r6, r7, 0 - eors r6, r0 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E3CAE - mov r1, r8 - cmp r1, 0 - beq _080E3CB2 - adds r0, r6, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _080E3CB2 -_080E3CAE: - movs r2, 0 - mov r8, r2 -_080E3CB2: - ldr r0, _080E3D34 @ =gUnknown_030042C4 - movs r1, 0 - strh r1, [r0] - ldr r0, _080E3D38 @ =gUnknown_03004240 - strh r1, [r0] - ldr r1, _080E3D3C @ =REG_WININ - ldr r3, _080E3D40 @ =0x00003f3f - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080E3D44 @ =0x00003f3d - adds r0, r2, 0 - strh r0, [r1] - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _080E3D48 @ =REG_BLDCNT - ldr r2, _080E3D4C @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0x80 - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - ldr r4, _080E3D50 @ =REG_BG1CNT - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E3D22 - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080E3D22: - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080E3D58 - ldr r0, _080E3D54 @ =gSharedMem + 0x19348 - ldrh r4, [r0] - b _080E3D96 - .align 2, 0 -_080E3D34: .4byte gUnknown_030042C4 -_080E3D38: .4byte gUnknown_03004240 -_080E3D3C: .4byte REG_WININ -_080E3D40: .4byte 0x00003f3f -_080E3D44: .4byte 0x00003f3d -_080E3D48: .4byte REG_BLDCNT -_080E3D4C: .4byte 0x00003f42 -_080E3D50: .4byte REG_BG1CNT -_080E3D54: .4byte gSharedMem + 0x19348 -_080E3D58: - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080E3D7C - ldr r1, _080E3D74 @ =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E3D78 @ =gEnemyParty - b _080E3D8A - .align 2, 0 -_080E3D74: .4byte gBattlePartyID -_080E3D78: .4byte gEnemyParty -_080E3D7C: - ldr r1, _080E3E48 @ =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E3E4C @ =gPlayerParty -_080E3D8A: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 -_080E3D96: - ldr r5, _080E3E50 @ =gObjectBankIDs - adds r0, r7, r5 - ldrb r1, [r0] - adds r0, r7, 0 - adds r2, r4, 0 - bl sub_807A4A0 - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, r8 - cmp r0, 0 - beq _080E3DC0 - adds r0, r6, r5 - ldrb r1, [r0] - adds r0, r6, 0 - adds r2, r4, 0 - bl sub_807A4A0 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x18] -_080E3DC0: - mov r0, sp - bl sub_8078914 - ldr r1, [sp, 0x4] - ldr r0, [sp, 0x50] - bl LZDecompressVram - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080E3DE6 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080E3DE6: - ldr r1, [sp] - ldr r0, [sp, 0x4C] - bl LZDecompressVram - mov r0, sp - ldrb r1, [r0, 0x8] - lsls r1, 4 - ldr r0, [sp, 0x54] - movs r2, 0x20 - bl LoadCompressedPalette - ldr r0, _080E3E54 @ =gUnknown_030042C0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080E3E58 @ =gUnknown_030041B4 - strh r1, [r0] - ldr r1, _080E3E5C @ =gTasks - mov r2, r9 - lsls r0, r2, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - mov r3, sp - ldrh r3, [r3, 0xC] - strh r3, [r0, 0xA] - mov r1, sp - ldrh r1, [r1, 0x10] - strh r1, [r0, 0x10] - mov r2, r10 - strh r2, [r0, 0x12] - mov r3, sp - ldrh r3, [r3, 0x14] - strh r3, [r0, 0x14] - strh r7, [r0, 0x8] - mov r1, r8 - strh r1, [r0, 0xC] - mov r2, sp - ldrh r2, [r2, 0x18] - strh r2, [r0, 0xE] - ldr r1, _080E3E60 @ =sub_80E3E64 - str r1, [r0] - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3E48: .4byte gBattlePartyID -_080E3E4C: .4byte gPlayerParty -_080E3E50: .4byte gObjectBankIDs -_080E3E54: .4byte gUnknown_030042C0 -_080E3E58: .4byte gUnknown_030041B4 -_080E3E5C: .4byte gTasks -_080E3E60: .4byte sub_80E3E64 - thumb_func_end sub_80E3C4C - - thumb_func_start sub_80E3E64 -sub_80E3E64: @ 80E3E64 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080E3E9C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r3, r0, r1 - movs r0, 0xA - ldrsh r2, [r3, r0] - adds r5, r1, 0 - cmp r2, 0 - bge _080E3E80 - negs r2, r2 -_080E3E80: - ldrh r0, [r3, 0x22] - adds r4, r0, r2 - strh r4, [r3, 0x22] - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0 - bge _080E3EA4 - ldr r2, _080E3EA0 @ =gUnknown_030041B4 - lsls r1, r4, 16 - asrs r1, 24 - ldrh r0, [r2] - subs r0, r1 - strh r0, [r2] - b _080E3EB0 - .align 2, 0 -_080E3E9C: .4byte gTasks -_080E3EA0: .4byte gUnknown_030041B4 -_080E3EA4: - ldr r1, _080E3ED4 @ =gUnknown_030041B4 - lsls r0, r4, 16 - asrs r0, 24 - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] -_080E3EB0: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r5 - ldrh r1, [r4, 0x22] - movs r0, 0xFF - ands r0, r1 - movs r2, 0 - strh r0, [r4, 0x22] - movs r3, 0x26 - ldrsh r0, [r4, r3] - cmp r0, 0x1 - beq _080E3F18 - cmp r0, 0x1 - bgt _080E3ED8 - cmp r0, 0 - beq _080E3EDE - b _080E3FE2 - .align 2, 0 -_080E3ED4: .4byte gUnknown_030041B4 -_080E3ED8: - cmp r0, 0x2 - beq _080E3F32 - b _080E3FE2 -_080E3EDE: - ldrh r0, [r4, 0x1E] - adds r1, r0, 0x1 - strh r1, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x14 - ldrsh r1, [r4, r3] - cmp r0, r1 - blt _080E3FE2 - strh r2, [r4, 0x1E] - ldrh r1, [r4, 0x20] - adds r1, 0x1 - strh r1, [r4, 0x20] - ldr r2, _080E3F14 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r0, 0x20 - ldrsh r1, [r4, r0] - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080E3FE2 - b _080E3F2A - .align 2, 0 -_080E3F14: .4byte REG_BLDALPHA -_080E3F18: - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x12 - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080E3FE2 -_080E3F2A: - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] - b _080E3FE2 -_080E3F32: - ldrh r0, [r4, 0x1E] - adds r1, r0, 0x1 - strh r1, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x14 - ldrsh r1, [r4, r3] - cmp r0, r1 - blt _080E3FE2 - strh r2, [r4, 0x1E] - ldrh r1, [r4, 0x20] - subs r1, 0x1 - strh r1, [r4, 0x20] - ldr r7, _080E3FE8 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r7] - movs r0, 0x20 - ldrsh r5, [r4, r0] - cmp r5, 0 - bne _080E3FE2 - movs r0, 0 - bl sub_8076464 - ldr r0, _080E3FEC @ =gUnknown_030042C4 - strh r5, [r0] - ldr r0, _080E3FF0 @ =gUnknown_03004240 - strh r5, [r0] - ldr r0, _080E3FF4 @ =REG_WININ - ldr r2, _080E3FF8 @ =0x00003f3f - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080E3F90 - ldr r2, _080E3FFC @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080E3F90: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - eors r0, r1 - strh r0, [r2] - ldr r0, _080E4000 @ =REG_BLDCNT - strh r5, [r0] - strh r5, [r7] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _080E4004 @ =gSprites - adds r0, r5 - bl DestroySprite - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E3FD0 - movs r2, 0xE - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite -_080E3FD0: - ldr r2, _080E3FFC @ =REG_BG1CNT - ldrb r1, [r2, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E3FE2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3FE8: .4byte REG_BLDALPHA -_080E3FEC: .4byte gUnknown_030042C4 -_080E3FF0: .4byte gUnknown_03004240 -_080E3FF4: .4byte REG_WININ -_080E3FF8: .4byte 0x00003f3f -_080E3FFC: .4byte REG_BG1CNT -_080E4000: .4byte REG_BLDCNT -_080E4004: .4byte gSprites - thumb_func_end sub_80E3E64 - - thumb_func_start sub_80E4008 -sub_80E4008: @ 80E4008 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E4020 @ =gBattleAnimArgs - ldr r1, _080E4024 @ =gBattleTerrain - ldrb r1, [r1] - strh r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080E4020: .4byte gBattleAnimArgs -_080E4024: .4byte gBattleTerrain - thumb_func_end sub_80E4008 - - thumb_func_start sub_80E4028 -sub_80E4028: @ 80E4028 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r0, _080E4068 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E406C - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80791A8 - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E4084 - movs r2, 0x1 -_080E405A: - lsrs r1, 1 - adds r4, 0x1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _080E405A - b _080E4084 - .align 2, 0 -_080E4068: .4byte gBattleAnimArgs -_080E406C: - cmp r0, 0x1 - bne _080E4078 - ldr r0, _080E4074 @ =gBattleAnimBankAttacker - b _080E407E - .align 2, 0 -_080E4074: .4byte gBattleAnimBankAttacker -_080E4078: - cmp r0, 0x2 - bne _080E4084 - ldr r0, _080E409C @ =gBattleAnimBankTarget -_080E407E: - ldrb r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 -_080E4084: - ldr r0, _080E40A0 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r0, r1] - lsls r5, r0, 5 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080E40A8 - ldr r0, _080E40A4 @ =gSharedMem + 0x14800 - b _080E40AA - .align 2, 0 -_080E409C: .4byte gBattleAnimBankTarget -_080E40A0: .4byte gBattleAnimArgs -_080E40A4: .4byte gSharedMem + 0x14800 -_080E40A8: - ldr r0, _080E40C8 @ =gSharedMem + 0x18000 -_080E40AA: - adds r2, r5, r0 - lsls r1, r4, 5 - ldr r0, _080E40CC @ =gPlttBufferUnfaded - adds r1, r0 - adds r0, r2, 0 - movs r2, 0x20 - bl memcpy - adds r0, r6, 0 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E40C8: .4byte gSharedMem + 0x18000 -_080E40CC: .4byte gPlttBufferUnfaded - thumb_func_end sub_80E4028 - - thumb_func_start sub_80E40D0 -sub_80E40D0: @ 80E40D0 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r0, _080E4110 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E4114 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80791A8 - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E412C - movs r2, 0x1 -_080E4102: - lsrs r1, 1 - adds r4, 0x1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _080E4102 - b _080E412C - .align 2, 0 -_080E4110: .4byte gBattleAnimArgs -_080E4114: - cmp r0, 0x1 - bne _080E4120 - ldr r0, _080E411C @ =gBattleAnimBankAttacker - b _080E4126 - .align 2, 0 -_080E411C: .4byte gBattleAnimBankAttacker -_080E4120: - cmp r0, 0x2 - bne _080E412C - ldr r0, _080E4148 @ =gBattleAnimBankTarget -_080E4126: - ldrb r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 -_080E412C: - lsls r1, r4, 5 - ldr r0, _080E414C @ =gPlttBufferUnfaded - adds r5, r1, r0 - ldr r0, _080E4150 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r0, r1] - lsls r4, r0, 5 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080E4158 - ldr r0, _080E4154 @ =gSharedMem + 0x14800 - b _080E415A - .align 2, 0 -_080E4148: .4byte gBattleAnimBankTarget -_080E414C: .4byte gPlttBufferUnfaded -_080E4150: .4byte gBattleAnimArgs -_080E4154: .4byte gSharedMem + 0x14800 -_080E4158: - ldr r0, _080E4174 @ =gSharedMem + 0x18000 -_080E415A: - adds r1, r4, r0 - adds r0, r5, 0 - movs r2, 0x20 - bl memcpy - adds r0, r6, 0 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E4174: .4byte gSharedMem + 0x18000 - thumb_func_end sub_80E40D0 - - thumb_func_start sub_80E4178 -sub_80E4178: @ 80E4178 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _080E41B8 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E41BC - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80791A8 - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E41D4 - movs r2, 0x1 -_080E41AA: - lsrs r1, 1 - adds r4, 0x1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _080E41AA - b _080E41D4 - .align 2, 0 -_080E41B8: .4byte gBattleAnimArgs -_080E41BC: - cmp r0, 0x1 - bne _080E41C8 - ldr r0, _080E41C4 @ =gBattleAnimBankAttacker - b _080E41CE - .align 2, 0 -_080E41C4: .4byte gBattleAnimBankAttacker -_080E41C8: - cmp r0, 0x2 - bne _080E41D4 - ldr r0, _080E41F4 @ =gBattleAnimBankTarget -_080E41CE: - ldrb r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 -_080E41D4: - lsls r1, r4, 5 - ldr r0, _080E41F8 @ =gPlttBufferUnfaded - adds r0, r1, r0 - ldr r2, _080E41FC @ =gPlttBufferFaded - adds r1, r2 - movs r2, 0x20 - bl memcpy - adds r0, r5, 0 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E41F4: .4byte gBattleAnimBankTarget -_080E41F8: .4byte gPlttBufferUnfaded -_080E41FC: .4byte gPlttBufferFaded - thumb_func_end sub_80E4178 - - thumb_func_start sub_80E4200 -sub_80E4200: @ 80E4200 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl NotInBattle - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080E4220 - ldr r1, _080E421C @ =gBattleAnimArgs - movs r0, 0x1 - strh r0, [r1, 0xE] - b _080E4224 - .align 2, 0 -_080E421C: .4byte gBattleAnimArgs -_080E4220: - ldr r0, _080E4230 @ =gBattleAnimArgs - strh r1, [r0, 0xE] -_080E4224: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E4230: .4byte gBattleAnimArgs - thumb_func_end sub_80E4200 - - thumb_func_start sub_80E4234 -sub_80E4234: @ 80E4234 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E4254 @ =gBattleAnimBankAttacker - ldr r1, _080E4258 @ =gBankTarget - ldrb r1, [r1] - strb r1, [r2] - ldr r2, _080E425C @ =gBattleAnimBankTarget - ldr r1, _080E4260 @ =gEffectBank - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080E4254: .4byte gBattleAnimBankAttacker -_080E4258: .4byte gBankTarget -_080E425C: .4byte gBattleAnimBankTarget -_080E4260: .4byte gEffectBank - thumb_func_end sub_80E4234 - - thumb_func_start sub_80E4264 -sub_80E4264: @ 80E4264 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080E428C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - adds r4, r0, 0 - ldr r0, _080E4290 @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080E4298 - ldr r1, _080E4294 @ =gBattleAnimArgs - movs r0, 0x1 - b _080E429C - .align 2, 0 -_080E428C: .4byte gBattleAnimBankAttacker -_080E4290: .4byte gBattleAnimBankTarget -_080E4294: .4byte gBattleAnimArgs -_080E4298: - ldr r1, _080E42AC @ =gBattleAnimArgs - movs r0, 0 -_080E429C: - strh r0, [r1, 0xE] - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E42AC: .4byte gBattleAnimArgs - thumb_func_end sub_80E4264 - - thumb_func_start sub_80E42B0 -sub_80E42B0: @ 80E42B0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E42C8 @ =gBattleAnimBankTarget - ldr r1, _080E42CC @ =gBankTarget - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080E42C8: .4byte gBattleAnimBankTarget -_080E42CC: .4byte gBankTarget - thumb_func_end sub_80E42B0 - - thumb_func_start sub_80E42D0 -sub_80E42D0: @ 80E42D0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E42F0 @ =gBattleAnimBankAttacker - ldr r1, _080E42F4 @ =gBankAttacker - ldrb r1, [r1] - strb r1, [r2] - ldr r2, _080E42F8 @ =gBattleAnimBankTarget - ldr r1, _080E42FC @ =gEffectBank - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080E42F0: .4byte gBattleAnimBankAttacker -_080E42F4: .4byte gBankAttacker -_080E42F8: .4byte gBattleAnimBankTarget -_080E42FC: .4byte gEffectBank - thumb_func_end sub_80E42D0 - - thumb_func_start sub_80E4300 -sub_80E4300: @ 80E4300 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - beq _080E4318 - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080E434E -_080E4318: - ldr r0, _080E4354 @ =gTasks - lsls r3, r4, 2 - adds r3, r4 - lsls r3, 3 - adds r3, r0 - ldr r1, _080E4358 @ =gBattleAnimBankAttacker - ldrb r0, [r1] - lsls r0, 2 - ldr r2, _080E435C @ =gSharedMem + 0x17800 - adds r0, r2 - ldr r0, [r0] - lsls r0, 31 - lsrs r0, 31 - strh r0, [r3, 0x8] - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] - ldr r0, _080E4360 @ =sub_80E4368 - str r0, [r3] - ldr r1, _080E4364 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_080E434E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E4354: .4byte gTasks -_080E4358: .4byte gBattleAnimBankAttacker -_080E435C: .4byte gSharedMem + 0x17800 -_080E4360: .4byte sub_80E4368 -_080E4364: .4byte gAnimVisualTaskCount - thumb_func_end sub_80E4300 - - thumb_func_start sub_80E4368 -sub_80E4368: @ 80E4368 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080E43B0 @ =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bne _080E43A8 - ldr r0, _080E43B4 @ =gBattleAnimBankAttacker - ldrb r3, [r0] - lsls r3, 2 - ldr r0, _080E43B8 @ =gSharedMem + 0x17800 - adds r3, r0 - ldr r1, _080E43BC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrb r0, [r0, 0x8] - movs r1, 0x1 - ands r1, r0 - ldrb r2, [r3] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, 0 - bl DestroyTask -_080E43A8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E43B0: .4byte gBattleAnimArgs -_080E43B4: .4byte gBattleAnimBankAttacker -_080E43B8: .4byte gSharedMem + 0x17800 -_080E43BC: .4byte gTasks - thumb_func_end sub_80E4368 - - thumb_func_start sub_80E43C0 -sub_80E43C0: @ 80E43C0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080E43D8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E43E0 - ldr r0, _080E43DC @ =sub_80E4C34 - b _080E4408 - .align 2, 0 -_080E43D8: .4byte gBattleTypeFlags -_080E43DC: .4byte sub_80E4C34 -_080E43E0: - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - beq _080E4400 - ldr r0, _080E43F8 @ =gGameVersion - ldrb r0, [r0] - cmp r0, 0x2 - beq _080E4400 - movs r4, 0x3 - ldr r0, _080E43FC @ =task00_battle_intro_80BC6C8 - b _080E4408 - .align 2, 0 -_080E43F8: .4byte gGameVersion -_080E43FC: .4byte task00_battle_intro_80BC6C8 -_080E4400: - ldr r1, _080E4434 @ =gUnknown_083DB56C - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] -_080E4408: - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080E4438 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x8] - strh r4, [r1, 0xA] - strh r0, [r1, 0xC] - strh r0, [r1, 0xE] - strh r0, [r1, 0x10] - strh r0, [r1, 0x12] - strh r0, [r1, 0x14] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E4434: .4byte gUnknown_083DB56C -_080E4438: .4byte gTasks - thumb_func_end sub_80E43C0 - - thumb_func_start sub_80E443C -sub_80E443C: @ 80E443C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r0, _080E4474 @ =gUnknown_030042C0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080E4478 @ =gUnknown_030041B4 - strh r1, [r0] - ldr r0, _080E447C @ =gUnknown_03004288 - strh r1, [r0] - ldr r0, _080E4480 @ =gUnknown_03004280 - strh r1, [r0] - ldr r0, _080E4484 @ =REG_BLDCNT - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0xC - ldr r2, _080E4488 @ =0x00003f3f - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_080E4474: .4byte gUnknown_030042C0 -_080E4478: .4byte gUnknown_030041B4 -_080E447C: .4byte gUnknown_03004288 -_080E4480: .4byte gUnknown_03004280 -_080E4484: .4byte REG_BLDCNT -_080E4488: .4byte 0x00003f3f - thumb_func_end sub_80E443C - - thumb_func_start task_battle_intro_80BC47C -task_battle_intro_80BC47C: @ 80E448C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080E44C4 @ =gUnknown_030042C0 - ldrh r0, [r1] - adds r0, 0x6 - strh r0, [r1] - ldr r1, _080E44C8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - mov r8, r1 - cmp r0, 0x4 - bls _080E44B8 - b _080E46BE -_080E44B8: - lsls r0, 2 - ldr r1, _080E44CC @ =_080E44D0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E44C4: .4byte gUnknown_030042C0 -_080E44C8: .4byte gTasks -_080E44CC: .4byte _080E44D0 - .align 2, 0 -_080E44D0: - .4byte _080E44E4 - .4byte _080E4514 - .4byte _080E4540 - .4byte _080E4588 - .4byte _080E46B8 -_080E44E4: - ldr r0, _080E44FC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E4500 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r8 - movs r1, 0x10 - b _080E450A - .align 2, 0 -_080E44FC: .4byte gBattleTypeFlags -_080E4500: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r8 - movs r1, 0x1 -_080E450A: - strh r1, [r0, 0xC] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _080E46BE -_080E4514: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - mov r3, r8 - adds r1, r0, r3 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080E452C - b _080E46BE -_080E452C: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, _080E453C @ =REG_WININ - movs r0, 0x3F - strh r0, [r1] - b _080E46BE - .align 2, 0 -_080E453C: .4byte REG_WININ -_080E4540: - ldr r1, _080E457C @ =gUnknown_03004240 - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080E4558 - b _080E46BE -_080E4558: - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - add r1, r8 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - ldr r2, _080E4580 @ =gUnknown_02024DE8 - ldrh r1, [r2] - ldr r0, _080E4584 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080E46BE - .align 2, 0 -_080E457C: .4byte gUnknown_03004240 -_080E4580: .4byte gUnknown_02024DE8 -_080E4584: .4byte 0x0000fffe -_080E4588: - lsls r0, r4, 2 - adds r1, r0, r4 - lsls r1, 3 - mov r5, r8 - adds r2, r1, r5 - ldrh r3, [r2, 0xE] - movs r5, 0xE - ldrsh r1, [r2, r5] - mov r12, r0 - cmp r1, 0 - beq _080E45A4 - subs r0, r3, 0x1 - strh r0, [r2, 0xE] - b _080E45D2 -_080E45A4: - movs r1, 0xA - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _080E45C4 - ldr r2, _080E45BC @ =gUnknown_030041B4 - ldrh r1, [r2] - ldr r0, _080E45C0 @ =0x0000ffb0 - cmp r1, r0 - beq _080E45D2 - subs r0, r1, 0x2 - b _080E45D0 - .align 2, 0 -_080E45BC: .4byte gUnknown_030041B4 -_080E45C0: .4byte 0x0000ffb0 -_080E45C4: - ldr r2, _080E4690 @ =gUnknown_030041B4 - ldrh r1, [r2] - ldr r0, _080E4694 @ =0x0000ffc8 - cmp r1, r0 - beq _080E45D2 - subs r0, r1, 0x1 -_080E45D0: - strh r0, [r2] -_080E45D2: - ldr r2, _080E4698 @ =gUnknown_03004240 - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080E45E6 - ldr r3, _080E469C @ =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_080E45E6: - mov r5, r12 - adds r0, r5, r4 - lsls r0, 3 - mov r2, r8 - adds r1, r0, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080E45FE - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080E45FE: - movs r3, 0 - ldr r5, _080E46A0 @ =gUnknown_03004DC0 - mov r9, r5 - ldr r7, _080E46A4 @ =gUnknown_03004DE0 - mov r6, r9 - adds r5, r1, 0 -_080E460A: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080E460A - cmp r3, 0x9F - bgt _080E464E - ldr r7, _080E46A4 @ =gUnknown_03004DE0 - ldr r6, _080E46A0 @ =gUnknown_03004DC0 - ldr r1, _080E46A8 @ =gTasks - mov r2, r12 - adds r0, r2, r4 - lsls r0, 3 - adds r5, r0, r1 -_080E4634: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080E4634 -_080E464E: - mov r3, r12 - adds r0, r3, r4 - lsls r0, 3 - mov r5, r8 - adds r1, r0, r5 - movs r0, 0xC - ldrsh r2, [r1, r0] - cmp r2, 0 - bne _080E46BE - movs r0, 0x3 - mov r3, r9 - strb r0, [r3, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, _080E46AC @ =0x0600e000 - ldr r2, _080E46B0 @ =0x05000200 - mov r0, sp - bl CpuSet - ldr r1, _080E46B4 @ =REG_BG1CNT - movs r5, 0x9C - lsls r5, 8 - adds r0, r5, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0xBC - lsls r2, 7 - adds r0, r2, 0 - strh r0, [r1] - b _080E46BE - .align 2, 0 -_080E4690: .4byte gUnknown_030041B4 -_080E4694: .4byte 0x0000ffc8 -_080E4698: .4byte gUnknown_03004240 -_080E469C: .4byte 0xfffffc04 -_080E46A0: .4byte gUnknown_03004DC0 -_080E46A4: .4byte gUnknown_03004DE0 -_080E46A8: .4byte gTasks -_080E46AC: .4byte 0x0600e000 -_080E46B0: .4byte 0x05000200 -_080E46B4: .4byte REG_BG1CNT -_080E46B8: - adds r0, r4, 0 - bl sub_80E443C -_080E46BE: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end task_battle_intro_80BC47C - - thumb_func_start task00_battle_intro_80BC6C8 -task00_battle_intro_80BC6C8: @ 80E46CC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080E46F8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0xA - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x3 - beq _080E470C - cmp r0, 0x3 - bgt _080E46FC - cmp r0, 0x2 - beq _080E4700 - b _080E4714 - .align 2, 0 -_080E46F8: .4byte gTasks -_080E46FC: - cmp r0, 0x4 - bne _080E4714 -_080E4700: - ldr r1, _080E4708 @ =gUnknown_030042C0 - ldrh r0, [r1] - adds r0, 0x8 - b _080E4712 - .align 2, 0 -_080E4708: .4byte gUnknown_030042C0 -_080E470C: - ldr r1, _080E4750 @ =gUnknown_030042C0 - ldrh r0, [r1] - adds r0, 0x6 -_080E4712: - strh r0, [r1] -_080E4714: - lsls r0, r5, 2 - adds r1, r0, r5 - lsls r1, 3 - adds r4, r1, r2 - movs r3, 0xA - ldrsh r1, [r4, r3] - adds r6, r0, 0 - cmp r1, 0x4 - bne _080E4778 - ldr r7, _080E4754 @ =gUnknown_030041B4 - ldrh r0, [r4, 0x14] - bl Cos2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080E473A - ldr r1, _080E4758 @ =0x000001ff - adds r0, r1 -_080E473A: - asrs r0, 9 - subs r0, 0x8 - strh r0, [r7] - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0xB3 - bgt _080E475C - adds r0, r1, 0x4 - b _080E475E - .align 2, 0 -_080E4750: .4byte gUnknown_030042C0 -_080E4754: .4byte gUnknown_030041B4 -_080E4758: .4byte 0x000001ff -_080E475C: - adds r0, r1, 0x6 -_080E475E: - strh r0, [r4, 0x14] - ldr r2, _080E4794 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r3, r0, r2 - movs r4, 0x14 - ldrsh r1, [r3, r4] - movs r0, 0xB4 - lsls r0, 1 - cmp r1, r0 - bne _080E4778 - movs r0, 0 - strh r0, [r3, 0x14] -_080E4778: - adds r0, r6, r5 - lsls r0, 3 - adds r0, r2 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x4 - bls _080E4788 - b _080E4996 -_080E4788: - lsls r0, 2 - ldr r1, _080E4798 @ =_080E479C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E4794: .4byte gTasks -_080E4798: .4byte _080E479C - .align 2, 0 -_080E479C: - .4byte _080E47B0 - .4byte _080E47E0 - .4byte _080E480C - .4byte _080E485C - .4byte _080E4990 -_080E47B0: - ldr r1, _080E47CC @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r2, r0, r1 - movs r3, 0x10 - strh r3, [r2, 0x10] - ldr r0, _080E47D0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E47D4 - strh r3, [r2, 0xC] - b _080E47D8 - .align 2, 0 -_080E47CC: .4byte gTasks -_080E47D0: .4byte gBattleTypeFlags -_080E47D4: - movs r0, 0x1 - strh r0, [r2, 0xC] -_080E47D8: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _080E4996 -_080E47E0: - ldr r0, _080E4804 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080E47F6 - b _080E4996 -_080E47F6: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, _080E4808 @ =REG_WININ - movs r0, 0x3F - strh r0, [r1] - b _080E4996 - .align 2, 0 -_080E4804: .4byte gTasks -_080E4808: .4byte REG_WININ -_080E480C: - ldr r1, _080E484C @ =gUnknown_03004240 - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080E4824 - b _080E4996 -_080E4824: - ldr r0, _080E4850 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - movs r0, 0x1 - strh r0, [r1, 0x12] - ldr r2, _080E4854 @ =gUnknown_02024DE8 - ldrh r1, [r2] - ldr r0, _080E4858 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080E4996 - .align 2, 0 -_080E484C: .4byte gUnknown_03004240 -_080E4850: .4byte gTasks -_080E4854: .4byte gUnknown_02024DE8 -_080E4858: .4byte 0x0000fffe -_080E485C: - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r2 - ldrh r3, [r1, 0xE] - movs r4, 0xE - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _080E4898 - subs r0, r3, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - asrs r3, r0, 16 - cmp r3, 0 - bne _080E48B8 - ldr r1, _080E488C @ =REG_BLDCNT - ldr r4, _080E4890 @ =0x00001842 - adds r0, r4, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0xF - strh r0, [r1] - ldr r0, _080E4894 @ =REG_BLDY - strh r3, [r0] - b _080E48B8 - .align 2, 0 -_080E488C: .4byte REG_BLDCNT -_080E4890: .4byte 0x00001842 -_080E4894: .4byte REG_BLDY -_080E4898: - ldrh r3, [r1, 0x10] - movs r0, 0x1F - ands r0, r3 - cmp r0, 0 - beq _080E48B8 - ldrh r0, [r1, 0x12] - subs r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - cmp r0, 0 - bne _080E48B8 - adds r0, r3, 0 - adds r0, 0xFF - strh r0, [r1, 0x10] - movs r0, 0x4 - strh r0, [r1, 0x12] -_080E48B8: - ldr r3, _080E4970 @ =gUnknown_03004240 - ldrh r1, [r3] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080E48CC - ldr r4, _080E4974 @ =0xfffffc04 - adds r0, r1, r4 - strh r0, [r3] -_080E48CC: - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080E48E0 - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080E48E0: - movs r3, 0 - ldr r4, _080E4978 @ =gUnknown_03004DC0 - mov r8, r4 - ldr r0, _080E497C @ =gUnknown_03004DE0 - mov r12, r0 - mov r7, r8 - adds r4, r1, 0 -_080E48EE: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r12 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080E48EE - cmp r3, 0x9F - bgt _080E4932 - ldr r1, _080E497C @ =gUnknown_03004DE0 - mov r12, r1 - ldr r7, _080E4978 @ =gUnknown_03004DC0 - ldr r1, _080E4980 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r4, r0, r1 -_080E4918: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r12 - ldrh r0, [r4, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080E4918 -_080E4932: - ldr r1, _080E4980 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0xC - ldrsh r2, [r1, r3] - cmp r2, 0 - bne _080E4996 - movs r0, 0x3 - mov r4, r8 - strb r0, [r4, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, _080E4984 @ =0x0600e000 - ldr r2, _080E4988 @ =0x05000200 - mov r0, sp - bl CpuSet - ldr r1, _080E498C @ =REG_BG1CNT - movs r2, 0x9C - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0xBC - lsls r3, 7 - adds r0, r3, 0 - strh r0, [r1] - b _080E4996 - .align 2, 0 -_080E4970: .4byte gUnknown_03004240 -_080E4974: .4byte 0xfffffc04 -_080E4978: .4byte gUnknown_03004DC0 -_080E497C: .4byte gUnknown_03004DE0 -_080E4980: .4byte gTasks -_080E4984: .4byte 0x0600e000 -_080E4988: .4byte 0x05000200 -_080E498C: .4byte REG_BG1CNT -_080E4990: - adds r0, r5, 0 - bl sub_80E443C -_080E4996: - ldr r0, _080E49B8 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r2, r1, r0 - movs r4, 0x8 - ldrsh r0, [r2, r4] - cmp r0, 0x4 - beq _080E49AC - ldr r1, _080E49BC @ =REG_BLDALPHA - ldrh r0, [r2, 0x10] - strh r0, [r1] -_080E49AC: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E49B8: .4byte gTasks -_080E49BC: .4byte REG_BLDALPHA - thumb_func_end task00_battle_intro_80BC6C8 - - thumb_func_start task_battle_intro_anim -task_battle_intro_anim: @ 80E49C0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080E49F4 @ =gUnknown_030042C0 - ldrh r0, [r1] - adds r0, 0x8 - strh r0, [r1] - ldr r1, _080E49F8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r5, r1, 0 - cmp r0, 0x4 - bls _080E49EA - b _080E4C06 -_080E49EA: - lsls r0, 2 - ldr r1, _080E49FC @ =_080E4A00 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E49F4: .4byte gUnknown_030042C0 -_080E49F8: .4byte gTasks -_080E49FC: .4byte _080E4A00 - .align 2, 0 -_080E4A00: - .4byte _080E4A14 - .4byte _080E4A6C - .4byte _080E4A9C - .4byte _080E4AEC - .4byte _080E4C00 -_080E4A14: - ldr r1, _080E4A48 @ =REG_BLDCNT - ldr r3, _080E4A4C @ =0x00001842 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _080E4A50 @ =REG_BLDALPHA - ldr r6, _080E4A54 @ =0x00000808 - adds r2, r6, 0 - strh r2, [r0] - adds r1, 0x4 - movs r0, 0 - strh r0, [r1] - ldr r1, _080E4A58 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r3, r0, r1 - strh r2, [r3, 0x10] - ldr r0, _080E4A5C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E4A60 - movs r0, 0x10 - b _080E4A62 - .align 2, 0 -_080E4A48: .4byte REG_BLDCNT -_080E4A4C: .4byte 0x00001842 -_080E4A50: .4byte REG_BLDALPHA -_080E4A54: .4byte 0x00000808 -_080E4A58: .4byte gTasks -_080E4A5C: .4byte gBattleTypeFlags -_080E4A60: - movs r0, 0x1 -_080E4A62: - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080E4C06 -_080E4A6C: - ldr r0, _080E4A94 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080E4A84 - b _080E4C06 -_080E4A84: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, _080E4A98 @ =REG_WININ - movs r0, 0x3F - strh r0, [r1] - b _080E4C06 - .align 2, 0 -_080E4A94: .4byte gTasks -_080E4A98: .4byte REG_WININ -_080E4A9C: - ldr r1, _080E4ADC @ =gUnknown_03004240 - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080E4AB4 - b _080E4C06 -_080E4AB4: - ldr r0, _080E4AE0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - movs r0, 0x1 - strh r0, [r1, 0x12] - ldr r2, _080E4AE4 @ =gUnknown_02024DE8 - ldrh r1, [r2] - ldr r0, _080E4AE8 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080E4C06 - .align 2, 0 -_080E4ADC: .4byte gUnknown_03004240 -_080E4AE0: .4byte gTasks -_080E4AE4: .4byte gUnknown_02024DE8 -_080E4AE8: .4byte 0x0000fffe -_080E4AEC: - lsls r0, r4, 2 - adds r1, r0, r4 - lsls r1, 3 - adds r2, r1, r5 - ldrh r3, [r2, 0xE] - movs r6, 0xE - ldrsh r1, [r2, r6] - mov r12, r0 - cmp r1, 0 - beq _080E4B06 - subs r0, r3, 0x1 - strh r0, [r2, 0xE] - b _080E4B26 -_080E4B06: - ldrh r1, [r2, 0x10] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - beq _080E4B26 - ldrh r0, [r2, 0x12] - subs r0, 0x1 - strh r0, [r2, 0x12] - lsls r0, 16 - cmp r0, 0 - bne _080E4B26 - adds r0, r1, 0 - adds r0, 0xFF - strh r0, [r2, 0x10] - movs r0, 0x6 - strh r0, [r2, 0x12] -_080E4B26: - ldr r2, _080E4BE0 @ =gUnknown_03004240 - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080E4B3A - ldr r3, _080E4BE4 @ =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_080E4B3A: - mov r6, r12 - adds r0, r6, r4 - lsls r0, 3 - adds r1, r0, r5 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080E4B50 - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080E4B50: - movs r3, 0 - ldr r6, _080E4BE8 @ =gUnknown_03004DC0 - mov r8, r6 - ldr r7, _080E4BEC @ =gUnknown_03004DE0 - adds r5, r1, 0 -_080E4B5A: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080E4B5A - cmp r3, 0x9F - bgt _080E4B9E - ldr r7, _080E4BEC @ =gUnknown_03004DE0 - ldr r6, _080E4BE8 @ =gUnknown_03004DC0 - ldr r1, _080E4BF0 @ =gTasks - mov r2, r12 - adds r0, r2, r4 - lsls r0, 3 - adds r5, r0, r1 -_080E4B84: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080E4B84 -_080E4B9E: - ldr r1, _080E4BF0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0xC - ldrsh r2, [r1, r3] - cmp r2, 0 - bne _080E4C06 - movs r0, 0x3 - mov r6, r8 - strb r0, [r6, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, _080E4BF4 @ =0x0600e000 - ldr r2, _080E4BF8 @ =0x05000200 - mov r0, sp - bl CpuSet - ldr r1, _080E4BFC @ =REG_BG1CNT - movs r2, 0x9C - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0xBC - lsls r3, 7 - adds r0, r3, 0 - strh r0, [r1] - b _080E4C06 - .align 2, 0 -_080E4BE0: .4byte gUnknown_03004240 -_080E4BE4: .4byte 0xfffffc04 -_080E4BE8: .4byte gUnknown_03004DC0 -_080E4BEC: .4byte gUnknown_03004DE0 -_080E4BF0: .4byte gTasks -_080E4BF4: .4byte 0x0600e000 -_080E4BF8: .4byte 0x05000200 -_080E4BFC: .4byte REG_BG1CNT -_080E4C00: - adds r0, r4, 0 - bl sub_80E443C -_080E4C06: - ldr r0, _080E4C2C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r2, r1, r0 - movs r6, 0x8 - ldrsh r0, [r2, r6] - cmp r0, 0x4 - beq _080E4C1E - ldr r1, _080E4C30 @ =REG_BLDALPHA - ldrh r0, [r2, 0x10] - strh r0, [r1] -_080E4C1E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E4C2C: .4byte gTasks -_080E4C30: .4byte REG_BLDALPHA - thumb_func_end task_battle_intro_anim - - thumb_func_start sub_80E4C34 -sub_80E4C34: @ 80E4C34 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080E4C80 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r7, r0, r1 - movs r1, 0x8 - ldrsh r0, [r7, r1] - cmp r0, 0x1 - ble _080E4CAA - movs r2, 0x10 - ldrsh r0, [r7, r2] - cmp r0, 0 - bne _080E4CAA - ldr r2, _080E4C84 @ =gUnknown_030042C0 - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080E4C72 - cmp r1, 0x4F - bhi _080E4C8C -_080E4C72: - adds r0, r1, 0x3 - strh r0, [r2] - ldr r1, _080E4C88 @ =gUnknown_03004288 - ldrh r0, [r1] - subs r0, 0x3 - strh r0, [r1] - b _080E4CAA - .align 2, 0 -_080E4C80: .4byte gTasks -_080E4C84: .4byte gUnknown_030042C0 -_080E4C88: .4byte gUnknown_03004288 -_080E4C8C: - str r5, [sp] - ldr r1, _080E4CCC @ =0x0600e000 - ldr r4, _080E4CD0 @ =0x05000200 - mov r0, sp - adds r2, r4, 0 - bl CpuSet - str r5, [sp, 0x4] - add r0, sp, 0x4 - ldr r1, _080E4CD4 @ =0x0600f000 - adds r2, r4, 0 - bl CpuSet - movs r0, 0x1 - strh r0, [r7, 0x10] -_080E4CAA: - ldr r0, _080E4CD8 @ =gTasks - lsls r2, r6, 2 - adds r1, r2, r6 - lsls r1, 3 - adds r1, r0 - movs r3, 0x8 - ldrsh r1, [r1, r3] - mov r12, r0 - adds r5, r2, 0 - cmp r1, 0x4 - bls _080E4CC2 - b _080E4EBA -_080E4CC2: - lsls r0, r1, 2 - ldr r1, _080E4CDC @ =_080E4CE0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E4CCC: .4byte 0x0600e000 -_080E4CD0: .4byte 0x05000200 -_080E4CD4: .4byte 0x0600f000 -_080E4CD8: .4byte gTasks -_080E4CDC: .4byte _080E4CE0 - .align 2, 0 -_080E4CE0: - .4byte _080E4CF4 - .4byte _080E4D06 - .4byte _080E4DA8 - .4byte _080E4DEC - .4byte _080E4EB4 -_080E4CF4: - adds r0, r5, r6 - lsls r0, 3 - add r0, r12 - movs r1, 0x10 - strh r1, [r0, 0xC] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _080E4EBA -_080E4D06: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r12 - adds r1, r0, r2 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080E4D1C - b _080E4EBA -_080E4D1C: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r5, _080E4D8C @ =gSprites - ldr r4, _080E4D90 @ =gSharedMem - ldr r3, _080E4D94 @ =0x0001608a - adds r6, r4, r3 - ldrb r0, [r6] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r3, [r1, 0x1] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - movs r3, 0x8 - mov r8, r3 - mov r3, r8 - orrs r0, r3 - strb r0, [r1, 0x1] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r6, r5, 0 - adds r6, 0x1C - adds r0, r6 - ldr r3, _080E4D98 @ =sub_800FE20 - str r3, [r0] - ldr r0, _080E4D9C @ =0x0001608b - adds r4, r0 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - ands r2, r1 - mov r1, r8 - orrs r2, r1 - strb r2, [r0, 0x1] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - str r3, [r0] - ldr r1, _080E4DA0 @ =REG_WININ - movs r0, 0x3F - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080E4DA4 @ =0x00003f06 - b _080E4E94 - .align 2, 0 -_080E4D8C: .4byte gSprites -_080E4D90: .4byte gSharedMem -_080E4D94: .4byte 0x0001608a -_080E4D98: .4byte sub_800FE20 -_080E4D9C: .4byte 0x0001608b -_080E4DA0: .4byte REG_WININ -_080E4DA4: .4byte 0x00003f06 -_080E4DA8: - ldr r1, _080E4DE0 @ =gUnknown_03004240 - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080E4DC0 - b _080E4EBA -_080E4DC0: - adds r1, r5, r6 - lsls r1, 3 - add r1, r12 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - ldr r2, _080E4DE4 @ =gUnknown_02024DE8 - ldrh r1, [r2] - ldr r0, _080E4DE8 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080E4EBA - .align 2, 0 -_080E4DE0: .4byte gUnknown_03004240 -_080E4DE4: .4byte gUnknown_02024DE8 -_080E4DE8: .4byte 0x0000fffe -_080E4DEC: - ldr r2, _080E4E9C @ =gUnknown_03004240 - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080E4E00 - ldr r3, _080E4EA0 @ =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_080E4E00: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r12 - adds r1, r0, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080E4E16 - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080E4E16: - movs r3, 0 - ldr r0, _080E4EA4 @ =gUnknown_03004DC0 - mov r9, r0 - ldr r2, _080E4EA8 @ =gUnknown_03004DE0 - mov r8, r2 - mov r7, r9 - adds r4, r1, 0 -_080E4E24: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r8 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080E4E24 - cmp r3, 0x9F - bgt _080E4E68 - ldr r0, _080E4EA8 @ =gUnknown_03004DE0 - mov r8, r0 - ldr r7, _080E4EA4 @ =gUnknown_03004DC0 - ldr r1, _080E4EAC @ =gTasks - adds r0, r5, r6 - lsls r0, 3 - adds r4, r0, r1 -_080E4E4E: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r8 - ldrh r0, [r4, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080E4E4E -_080E4E68: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r12 - adds r1, r0, r2 - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080E4EBA - movs r0, 0x3 - mov r2, r9 - strb r0, [r2, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, _080E4EB0 @ =REG_BG1CNT - movs r3, 0x9C - lsls r3, 8 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0xBC - lsls r2, 7 -_080E4E94: - adds r0, r2, 0 - strh r0, [r1] - b _080E4EBA - .align 2, 0 -_080E4E9C: .4byte gUnknown_03004240 -_080E4EA0: .4byte 0xfffffc04 -_080E4EA4: .4byte gUnknown_03004DC0 -_080E4EA8: .4byte gUnknown_03004DE0 -_080E4EAC: .4byte gTasks -_080E4EB0: .4byte REG_BG1CNT -_080E4EB4: - adds r0, r6, 0 - bl sub_80E443C -_080E4EBA: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E4C34 - - thumb_func_start unref_sub_80E4EC8 -unref_sub_80E4EC8: @ 80E4EC8 - push {r4,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - movs r4, 0x80 - lsls r4, 7 - str r4, [sp] - movs r4, 0x1E - str r4, [sp, 0x4] - movs r4, 0x1 - str r4, [sp, 0x8] - bl sub_80E4EF8 - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - thumb_func_end unref_sub_80E4EC8 - - thumb_func_start sub_80E4EF8 -sub_80E4EF8: @ 80E4EF8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r9, r1 - adds r4, r2, 0 - ldr r1, [sp, 0x24] - mov r8, r1 - ldr r1, [sp, 0x28] - ldr r5, [sp, 0x2C] - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - mov r7, r9 - lsls r7, 24 - adds r0, r7, 0 - lsrs r0, 24 - mov r9, r0 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp] - mov r3, r8 - lsls r3, 16 - mov r8, r3 - lsrs r6, r3, 16 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r5, 24 - lsrs r5, 24 - adds r0, r4, 0 - bl GetBankByPlayerAI - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E4FCC @ =0x040000d4 - ldr r1, _080E4FD0 @ =gUnknown_081FAF4C - lsls r4, 2 - adds r4, r1 - ldr r1, _080E4FD4 @ =gBattleMonForms - adds r0, r1 - ldrb r1, [r0] - lsls r1, 11 - ldr r0, [r4] - adds r0, r1 - str r0, [r2] - movs r0, 0xC0 - lsls r0, 19 - adds r6, r0 - str r6, [r2, 0x4] - ldr r0, _080E4FD8 @ =0x80000400 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - mov r0, r8 - lsrs r0, 21 - lsls r5, 9 - subs r5, r0, r5 - mov r0, r9 - adds r1, r0, 0 - adds r1, 0x8 - cmp r0, r1 - bge _080E4FBC - mov r9, r1 - mov r1, r10 - lsls r1, 1 - mov r8, r1 - lsls r7, 11 - mov r12, r7 -_080E4F86: - mov r2, r10 - adds r4, r2, 0 - adds r4, 0x8 - adds r1, r0, 0x1 - cmp r2, r4 - bge _080E4FB6 - ldr r3, [sp] - lsls r6, r3, 12 - lsls r0, 6 - movs r7, 0xC0 - lsls r7, 19 - adds r0, r7 - add r0, r12 - mov r7, r8 - adds r3, r7, r0 - subs r2, r4, r2 -_080E4FA6: - adds r0, r5, 0 - orrs r0, r6 - strh r0, [r3] - adds r5, 0x1 - adds r3, 0x2 - subs r2, 0x1 - cmp r2, 0 - bne _080E4FA6 -_080E4FB6: - adds r0, r1, 0 - cmp r0, r9 - blt _080E4F86 -_080E4FBC: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E4FCC: .4byte 0x040000d4 -_080E4FD0: .4byte gUnknown_081FAF4C -_080E4FD4: .4byte gBattleMonForms -_080E4FD8: .4byte 0x80000400 - thumb_func_end sub_80E4EF8 - - thumb_func_start unref_sub_80E4FDC -unref_sub_80E4FDC: @ 80E4FDC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, [sp, 0x24] - ldr r5, [sp, 0x28] - mov r8, r5 - ldr r5, [sp, 0x2C] - ldr r6, [sp, 0x30] - mov r9, r6 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r1, 24 - lsls r2, 24 - lsls r3, 24 - lsls r4, 24 - lsrs r4, 24 - mov r10, r4 - mov r7, r8 - lsls r7, 16 - lsrs r6, r7, 16 - lsls r5, 24 - lsrs r5, 24 - mov r0, r9 - lsls r0, 24 - mov r9, r0 - ldr r4, _080E509C @ =0x040000d4 - ldr r0, _080E50A0 @ =gUnknown_081FAF4C - lsrs r2, 22 - adds r2, r0 - lsrs r3, 13 - ldr r0, [r2] - adds r0, r3 - str r0, [r4] - movs r0, 0xC0 - lsls r0, 19 - adds r6, r0 - str r6, [r4, 0x4] - ldr r0, _080E50A4 @ =0x80000400 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - adds r2, r7, 0 - lsrs r2, 21 - mov r6, r9 - lsrs r6, 15 - subs r4, r2, r6 - lsrs r0, r1, 24 - adds r1, r0, 0 - adds r1, 0x8 - cmp r0, r1 - bge _080E508C - mov r9, r1 - mov r7, r12 - lsls r7, 1 - mov r8, r7 - lsls r5, 11 - str r5, [sp] -_080E5054: - mov r2, r12 - adds r3, r2, 0 - adds r3, 0x8 - adds r5, r0, 0x1 - cmp r2, r3 - bge _080E5086 - mov r1, r10 - lsls r6, r1, 12 - lsls r0, 6 - movs r7, 0xC0 - lsls r7, 19 - adds r0, r7 - ldr r1, [sp] - adds r0, r1, r0 - mov r7, r8 - adds r1, r7, r0 - subs r2, r3, r2 -_080E5076: - adds r0, r4, 0 - orrs r0, r6 - strh r0, [r1] - adds r4, 0x1 - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bne _080E5076 -_080E5086: - adds r0, r5, 0 - cmp r0, r9 - blt _080E5054 -_080E508C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E509C: .4byte 0x040000d4 -_080E50A0: .4byte gUnknown_081FAF4C -_080E50A4: .4byte 0x80000400 - thumb_func_end unref_sub_80E4FDC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_intro.s b/asm/battle_intro.s new file mode 100755 index 000000000..721583c30 --- /dev/null +++ b/asm/battle_intro.s @@ -0,0 +1,1667 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ intro + + thumb_func_start sub_80E43C0 +sub_80E43C0: @ 80E43C0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080E43D8 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080E43E0 + ldr r0, _080E43DC @ =sub_80E4C34 + b _080E4408 + .align 2, 0 +_080E43D8: .4byte gBattleTypeFlags +_080E43DC: .4byte sub_80E4C34 +_080E43E0: + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + beq _080E4400 + ldr r0, _080E43F8 @ =gGameVersion + ldrb r0, [r0] + cmp r0, 0x2 + beq _080E4400 + movs r4, 0x3 + ldr r0, _080E43FC @ =task00_battle_intro_80BC6C8 + b _080E4408 + .align 2, 0 +_080E43F8: .4byte gGameVersion +_080E43FC: .4byte task00_battle_intro_80BC6C8 +_080E4400: + ldr r1, _080E4434 @ =gUnknown_083DB56C + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] +_080E4408: + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080E4438 @ =gTasks + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + movs r0, 0 + strh r0, [r1, 0x8] + strh r4, [r1, 0xA] + strh r0, [r1, 0xC] + strh r0, [r1, 0xE] + strh r0, [r1, 0x10] + strh r0, [r1, 0x12] + strh r0, [r1, 0x14] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E4434: .4byte gUnknown_083DB56C +_080E4438: .4byte gTasks + thumb_func_end sub_80E43C0 + + thumb_func_start sub_80E443C +sub_80E443C: @ 80E443C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl DestroyTask + ldr r0, _080E4474 @ =gUnknown_030042C0 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E4478 @ =gUnknown_030041B4 + strh r1, [r0] + ldr r0, _080E447C @ =gUnknown_03004288 + strh r1, [r0] + ldr r0, _080E4480 @ =gUnknown_03004280 + strh r1, [r0] + ldr r0, _080E4484 @ =REG_BLDCNT + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + subs r0, 0xC + ldr r2, _080E4488 @ =0x00003f3f + adds r1, r2, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_080E4474: .4byte gUnknown_030042C0 +_080E4478: .4byte gUnknown_030041B4 +_080E447C: .4byte gUnknown_03004288 +_080E4480: .4byte gUnknown_03004280 +_080E4484: .4byte REG_BLDCNT +_080E4488: .4byte 0x00003f3f + thumb_func_end sub_80E443C + + thumb_func_start task_battle_intro_80BC47C +task_battle_intro_80BC47C: @ 80E448C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080E44C4 @ =gUnknown_030042C0 + ldrh r0, [r1] + adds r0, 0x6 + strh r0, [r1] + ldr r1, _080E44C8 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + mov r8, r1 + cmp r0, 0x4 + bls _080E44B8 + b _080E46BE +_080E44B8: + lsls r0, 2 + ldr r1, _080E44CC @ =_080E44D0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E44C4: .4byte gUnknown_030042C0 +_080E44C8: .4byte gTasks +_080E44CC: .4byte _080E44D0 + .align 2, 0 +_080E44D0: + .4byte _080E44E4 + .4byte _080E4514 + .4byte _080E4540 + .4byte _080E4588 + .4byte _080E46B8 +_080E44E4: + ldr r0, _080E44FC @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080E4500 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + add r0, r8 + movs r1, 0x10 + b _080E450A + .align 2, 0 +_080E44FC: .4byte gBattleTypeFlags +_080E4500: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + add r0, r8 + movs r1, 0x1 +_080E450A: + strh r1, [r0, 0xC] + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] + b _080E46BE +_080E4514: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + mov r3, r8 + adds r1, r0, r3 + ldrh r0, [r1, 0xC] + subs r0, 0x1 + strh r0, [r1, 0xC] + lsls r0, 16 + cmp r0, 0 + beq _080E452C + b _080E46BE +_080E452C: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + ldr r1, _080E453C @ =REG_WININ + movs r0, 0x3F + strh r0, [r1] + b _080E46BE + .align 2, 0 +_080E453C: .4byte REG_WININ +_080E4540: + ldr r1, _080E457C @ =gUnknown_03004240 + ldrh r0, [r1] + subs r0, 0xFF + strh r0, [r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0xC0 + lsls r1, 6 + cmp r0, r1 + beq _080E4558 + b _080E46BE +_080E4558: + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + add r1, r8 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0xF0 + strh r0, [r1, 0xC] + movs r0, 0x20 + strh r0, [r1, 0xE] + ldr r2, _080E4580 @ =gUnknown_02024DE8 + ldrh r1, [r2] + ldr r0, _080E4584 @ =0x0000fffe + ands r0, r1 + strh r0, [r2] + b _080E46BE + .align 2, 0 +_080E457C: .4byte gUnknown_03004240 +_080E4580: .4byte gUnknown_02024DE8 +_080E4584: .4byte 0x0000fffe +_080E4588: + lsls r0, r4, 2 + adds r1, r0, r4 + lsls r1, 3 + mov r5, r8 + adds r2, r1, r5 + ldrh r3, [r2, 0xE] + movs r5, 0xE + ldrsh r1, [r2, r5] + mov r12, r0 + cmp r1, 0 + beq _080E45A4 + subs r0, r3, 0x1 + strh r0, [r2, 0xE] + b _080E45D2 +_080E45A4: + movs r1, 0xA + ldrsh r0, [r2, r1] + cmp r0, 0x1 + bne _080E45C4 + ldr r2, _080E45BC @ =gUnknown_030041B4 + ldrh r1, [r2] + ldr r0, _080E45C0 @ =0x0000ffb0 + cmp r1, r0 + beq _080E45D2 + subs r0, r1, 0x2 + b _080E45D0 + .align 2, 0 +_080E45BC: .4byte gUnknown_030041B4 +_080E45C0: .4byte 0x0000ffb0 +_080E45C4: + ldr r2, _080E4690 @ =gUnknown_030041B4 + ldrh r1, [r2] + ldr r0, _080E4694 @ =0x0000ffc8 + cmp r1, r0 + beq _080E45D2 + subs r0, r1, 0x1 +_080E45D0: + strh r0, [r2] +_080E45D2: + ldr r2, _080E4698 @ =gUnknown_03004240 + ldrh r1, [r2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _080E45E6 + ldr r3, _080E469C @ =0xfffffc04 + adds r0, r1, r3 + strh r0, [r2] +_080E45E6: + mov r5, r12 + adds r0, r5, r4 + lsls r0, 3 + mov r2, r8 + adds r1, r0, r2 + ldrh r2, [r1, 0xC] + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080E45FE + subs r0, r2, 0x2 + strh r0, [r1, 0xC] +_080E45FE: + movs r3, 0 + ldr r5, _080E46A0 @ =gUnknown_03004DC0 + mov r9, r5 + ldr r7, _080E46A4 @ =gUnknown_03004DE0 + mov r6, r9 + adds r5, r1, 0 +_080E460A: + lsls r2, r3, 1 + ldrb r1, [r6, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r7 + ldrh r0, [r5, 0xC] + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x4F + ble _080E460A + cmp r3, 0x9F + bgt _080E464E + ldr r7, _080E46A4 @ =gUnknown_03004DE0 + ldr r6, _080E46A0 @ =gUnknown_03004DC0 + ldr r1, _080E46A8 @ =gTasks + mov r2, r12 + adds r0, r2, r4 + lsls r0, 3 + adds r5, r0, r1 +_080E4634: + lsls r2, r3, 1 + ldrb r1, [r6, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r7 + ldrh r0, [r5, 0xC] + negs r0, r0 + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x9F + ble _080E4634 +_080E464E: + mov r3, r12 + adds r0, r3, r4 + lsls r0, 3 + mov r5, r8 + adds r1, r0, r5 + movs r0, 0xC + ldrsh r2, [r1, r0] + cmp r2, 0 + bne _080E46BE + movs r0, 0x3 + mov r3, r9 + strb r0, [r3, 0x15] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + str r2, [sp] + ldr r1, _080E46AC @ =0x0600e000 + ldr r2, _080E46B0 @ =0x05000200 + mov r0, sp + bl CpuSet + ldr r1, _080E46B4 @ =REG_BG1CNT + movs r5, 0x9C + lsls r5, 8 + adds r0, r5, 0 + strh r0, [r1] + adds r1, 0x2 + movs r2, 0xBC + lsls r2, 7 + adds r0, r2, 0 + strh r0, [r1] + b _080E46BE + .align 2, 0 +_080E4690: .4byte gUnknown_030041B4 +_080E4694: .4byte 0x0000ffc8 +_080E4698: .4byte gUnknown_03004240 +_080E469C: .4byte 0xfffffc04 +_080E46A0: .4byte gUnknown_03004DC0 +_080E46A4: .4byte gUnknown_03004DE0 +_080E46A8: .4byte gTasks +_080E46AC: .4byte 0x0600e000 +_080E46B0: .4byte 0x05000200 +_080E46B4: .4byte REG_BG1CNT +_080E46B8: + adds r0, r4, 0 + bl sub_80E443C +_080E46BE: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end task_battle_intro_80BC47C + + thumb_func_start task00_battle_intro_80BC6C8 +task00_battle_intro_80BC6C8: @ 80E46CC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080E46F8 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r2, 0xA + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x3 + beq _080E470C + cmp r0, 0x3 + bgt _080E46FC + cmp r0, 0x2 + beq _080E4700 + b _080E4714 + .align 2, 0 +_080E46F8: .4byte gTasks +_080E46FC: + cmp r0, 0x4 + bne _080E4714 +_080E4700: + ldr r1, _080E4708 @ =gUnknown_030042C0 + ldrh r0, [r1] + adds r0, 0x8 + b _080E4712 + .align 2, 0 +_080E4708: .4byte gUnknown_030042C0 +_080E470C: + ldr r1, _080E4750 @ =gUnknown_030042C0 + ldrh r0, [r1] + adds r0, 0x6 +_080E4712: + strh r0, [r1] +_080E4714: + lsls r0, r5, 2 + adds r1, r0, r5 + lsls r1, 3 + adds r4, r1, r2 + movs r3, 0xA + ldrsh r1, [r4, r3] + adds r6, r0, 0 + cmp r1, 0x4 + bne _080E4778 + ldr r7, _080E4754 @ =gUnknown_030041B4 + ldrh r0, [r4, 0x14] + bl Cos2 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080E473A + ldr r1, _080E4758 @ =0x000001ff + adds r0, r1 +_080E473A: + asrs r0, 9 + subs r0, 0x8 + strh r0, [r7] + ldrh r1, [r4, 0x14] + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0xB3 + bgt _080E475C + adds r0, r1, 0x4 + b _080E475E + .align 2, 0 +_080E4750: .4byte gUnknown_030042C0 +_080E4754: .4byte gUnknown_030041B4 +_080E4758: .4byte 0x000001ff +_080E475C: + adds r0, r1, 0x6 +_080E475E: + strh r0, [r4, 0x14] + ldr r2, _080E4794 @ =gTasks + adds r0, r6, r5 + lsls r0, 3 + adds r3, r0, r2 + movs r4, 0x14 + ldrsh r1, [r3, r4] + movs r0, 0xB4 + lsls r0, 1 + cmp r1, r0 + bne _080E4778 + movs r0, 0 + strh r0, [r3, 0x14] +_080E4778: + adds r0, r6, r5 + lsls r0, 3 + adds r0, r2 + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0x4 + bls _080E4788 + b _080E4996 +_080E4788: + lsls r0, 2 + ldr r1, _080E4798 @ =_080E479C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E4794: .4byte gTasks +_080E4798: .4byte _080E479C + .align 2, 0 +_080E479C: + .4byte _080E47B0 + .4byte _080E47E0 + .4byte _080E480C + .4byte _080E485C + .4byte _080E4990 +_080E47B0: + ldr r1, _080E47CC @ =gTasks + adds r0, r6, r5 + lsls r0, 3 + adds r2, r0, r1 + movs r3, 0x10 + strh r3, [r2, 0x10] + ldr r0, _080E47D0 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080E47D4 + strh r3, [r2, 0xC] + b _080E47D8 + .align 2, 0 +_080E47CC: .4byte gTasks +_080E47D0: .4byte gBattleTypeFlags +_080E47D4: + movs r0, 0x1 + strh r0, [r2, 0xC] +_080E47D8: + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + b _080E4996 +_080E47E0: + ldr r0, _080E4804 @ =gTasks + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0xC] + subs r0, 0x1 + strh r0, [r1, 0xC] + lsls r0, 16 + cmp r0, 0 + beq _080E47F6 + b _080E4996 +_080E47F6: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + ldr r1, _080E4808 @ =REG_WININ + movs r0, 0x3F + strh r0, [r1] + b _080E4996 + .align 2, 0 +_080E4804: .4byte gTasks +_080E4808: .4byte REG_WININ +_080E480C: + ldr r1, _080E484C @ =gUnknown_03004240 + ldrh r0, [r1] + subs r0, 0xFF + strh r0, [r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0xC0 + lsls r1, 6 + cmp r0, r1 + beq _080E4824 + b _080E4996 +_080E4824: + ldr r0, _080E4850 @ =gTasks + adds r1, r6, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0xF0 + strh r0, [r1, 0xC] + movs r0, 0x20 + strh r0, [r1, 0xE] + movs r0, 0x1 + strh r0, [r1, 0x12] + ldr r2, _080E4854 @ =gUnknown_02024DE8 + ldrh r1, [r2] + ldr r0, _080E4858 @ =0x0000fffe + ands r0, r1 + strh r0, [r2] + b _080E4996 + .align 2, 0 +_080E484C: .4byte gUnknown_03004240 +_080E4850: .4byte gTasks +_080E4854: .4byte gUnknown_02024DE8 +_080E4858: .4byte 0x0000fffe +_080E485C: + adds r0, r6, r5 + lsls r0, 3 + adds r1, r0, r2 + ldrh r3, [r1, 0xE] + movs r4, 0xE + ldrsh r0, [r1, r4] + cmp r0, 0 + beq _080E4898 + subs r0, r3, 0x1 + strh r0, [r1, 0xE] + lsls r0, 16 + asrs r3, r0, 16 + cmp r3, 0 + bne _080E48B8 + ldr r1, _080E488C @ =REG_BLDCNT + ldr r4, _080E4890 @ =0x00001842 + adds r0, r4, 0 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0xF + strh r0, [r1] + ldr r0, _080E4894 @ =REG_BLDY + strh r3, [r0] + b _080E48B8 + .align 2, 0 +_080E488C: .4byte REG_BLDCNT +_080E4890: .4byte 0x00001842 +_080E4894: .4byte REG_BLDY +_080E4898: + ldrh r3, [r1, 0x10] + movs r0, 0x1F + ands r0, r3 + cmp r0, 0 + beq _080E48B8 + ldrh r0, [r1, 0x12] + subs r0, 0x1 + strh r0, [r1, 0x12] + lsls r0, 16 + cmp r0, 0 + bne _080E48B8 + adds r0, r3, 0 + adds r0, 0xFF + strh r0, [r1, 0x10] + movs r0, 0x4 + strh r0, [r1, 0x12] +_080E48B8: + ldr r3, _080E4970 @ =gUnknown_03004240 + ldrh r1, [r3] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _080E48CC + ldr r4, _080E4974 @ =0xfffffc04 + adds r0, r1, r4 + strh r0, [r3] +_080E48CC: + adds r0, r6, r5 + lsls r0, 3 + adds r1, r0, r2 + ldrh r2, [r1, 0xC] + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080E48E0 + subs r0, r2, 0x2 + strh r0, [r1, 0xC] +_080E48E0: + movs r3, 0 + ldr r4, _080E4978 @ =gUnknown_03004DC0 + mov r8, r4 + ldr r0, _080E497C @ =gUnknown_03004DE0 + mov r12, r0 + mov r7, r8 + adds r4, r1, 0 +_080E48EE: + lsls r2, r3, 1 + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + add r2, r12 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x4F + ble _080E48EE + cmp r3, 0x9F + bgt _080E4932 + ldr r1, _080E497C @ =gUnknown_03004DE0 + mov r12, r1 + ldr r7, _080E4978 @ =gUnknown_03004DC0 + ldr r1, _080E4980 @ =gTasks + adds r0, r6, r5 + lsls r0, 3 + adds r4, r0, r1 +_080E4918: + lsls r2, r3, 1 + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + add r2, r12 + ldrh r0, [r4, 0xC] + negs r0, r0 + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x9F + ble _080E4918 +_080E4932: + ldr r1, _080E4980 @ =gTasks + adds r0, r6, r5 + lsls r0, 3 + adds r1, r0, r1 + movs r3, 0xC + ldrsh r2, [r1, r3] + cmp r2, 0 + bne _080E4996 + movs r0, 0x3 + mov r4, r8 + strb r0, [r4, 0x15] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + str r2, [sp] + ldr r1, _080E4984 @ =0x0600e000 + ldr r2, _080E4988 @ =0x05000200 + mov r0, sp + bl CpuSet + ldr r1, _080E498C @ =REG_BG1CNT + movs r2, 0x9C + lsls r2, 8 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r3, 0xBC + lsls r3, 7 + adds r0, r3, 0 + strh r0, [r1] + b _080E4996 + .align 2, 0 +_080E4970: .4byte gUnknown_03004240 +_080E4974: .4byte 0xfffffc04 +_080E4978: .4byte gUnknown_03004DC0 +_080E497C: .4byte gUnknown_03004DE0 +_080E4980: .4byte gTasks +_080E4984: .4byte 0x0600e000 +_080E4988: .4byte 0x05000200 +_080E498C: .4byte REG_BG1CNT +_080E4990: + adds r0, r5, 0 + bl sub_80E443C +_080E4996: + ldr r0, _080E49B8 @ =gTasks + adds r1, r6, r5 + lsls r1, 3 + adds r2, r1, r0 + movs r4, 0x8 + ldrsh r0, [r2, r4] + cmp r0, 0x4 + beq _080E49AC + ldr r1, _080E49BC @ =REG_BLDALPHA + ldrh r0, [r2, 0x10] + strh r0, [r1] +_080E49AC: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E49B8: .4byte gTasks +_080E49BC: .4byte REG_BLDALPHA + thumb_func_end task00_battle_intro_80BC6C8 + + thumb_func_start task_battle_intro_anim +task_battle_intro_anim: @ 80E49C0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080E49F4 @ =gUnknown_030042C0 + ldrh r0, [r1] + adds r0, 0x8 + strh r0, [r1] + ldr r1, _080E49F8 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r5, r1, 0 + cmp r0, 0x4 + bls _080E49EA + b _080E4C06 +_080E49EA: + lsls r0, 2 + ldr r1, _080E49FC @ =_080E4A00 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E49F4: .4byte gUnknown_030042C0 +_080E49F8: .4byte gTasks +_080E49FC: .4byte _080E4A00 + .align 2, 0 +_080E4A00: + .4byte _080E4A14 + .4byte _080E4A6C + .4byte _080E4A9C + .4byte _080E4AEC + .4byte _080E4C00 +_080E4A14: + ldr r1, _080E4A48 @ =REG_BLDCNT + ldr r3, _080E4A4C @ =0x00001842 + adds r0, r3, 0 + strh r0, [r1] + ldr r0, _080E4A50 @ =REG_BLDALPHA + ldr r6, _080E4A54 @ =0x00000808 + adds r2, r6, 0 + strh r2, [r0] + adds r1, 0x4 + movs r0, 0 + strh r0, [r1] + ldr r1, _080E4A58 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r3, r0, r1 + strh r2, [r3, 0x10] + ldr r0, _080E4A5C @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080E4A60 + movs r0, 0x10 + b _080E4A62 + .align 2, 0 +_080E4A48: .4byte REG_BLDCNT +_080E4A4C: .4byte 0x00001842 +_080E4A50: .4byte REG_BLDALPHA +_080E4A54: .4byte 0x00000808 +_080E4A58: .4byte gTasks +_080E4A5C: .4byte gBattleTypeFlags +_080E4A60: + movs r0, 0x1 +_080E4A62: + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + b _080E4C06 +_080E4A6C: + ldr r0, _080E4A94 @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0xC] + subs r0, 0x1 + strh r0, [r1, 0xC] + lsls r0, 16 + cmp r0, 0 + beq _080E4A84 + b _080E4C06 +_080E4A84: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + ldr r1, _080E4A98 @ =REG_WININ + movs r0, 0x3F + strh r0, [r1] + b _080E4C06 + .align 2, 0 +_080E4A94: .4byte gTasks +_080E4A98: .4byte REG_WININ +_080E4A9C: + ldr r1, _080E4ADC @ =gUnknown_03004240 + ldrh r0, [r1] + subs r0, 0xFF + strh r0, [r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0xC0 + lsls r1, 6 + cmp r0, r1 + beq _080E4AB4 + b _080E4C06 +_080E4AB4: + ldr r0, _080E4AE0 @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0xF0 + strh r0, [r1, 0xC] + movs r0, 0x20 + strh r0, [r1, 0xE] + movs r0, 0x1 + strh r0, [r1, 0x12] + ldr r2, _080E4AE4 @ =gUnknown_02024DE8 + ldrh r1, [r2] + ldr r0, _080E4AE8 @ =0x0000fffe + ands r0, r1 + strh r0, [r2] + b _080E4C06 + .align 2, 0 +_080E4ADC: .4byte gUnknown_03004240 +_080E4AE0: .4byte gTasks +_080E4AE4: .4byte gUnknown_02024DE8 +_080E4AE8: .4byte 0x0000fffe +_080E4AEC: + lsls r0, r4, 2 + adds r1, r0, r4 + lsls r1, 3 + adds r2, r1, r5 + ldrh r3, [r2, 0xE] + movs r6, 0xE + ldrsh r1, [r2, r6] + mov r12, r0 + cmp r1, 0 + beq _080E4B06 + subs r0, r3, 0x1 + strh r0, [r2, 0xE] + b _080E4B26 +_080E4B06: + ldrh r1, [r2, 0x10] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + beq _080E4B26 + ldrh r0, [r2, 0x12] + subs r0, 0x1 + strh r0, [r2, 0x12] + lsls r0, 16 + cmp r0, 0 + bne _080E4B26 + adds r0, r1, 0 + adds r0, 0xFF + strh r0, [r2, 0x10] + movs r0, 0x6 + strh r0, [r2, 0x12] +_080E4B26: + ldr r2, _080E4BE0 @ =gUnknown_03004240 + ldrh r1, [r2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _080E4B3A + ldr r3, _080E4BE4 @ =0xfffffc04 + adds r0, r1, r3 + strh r0, [r2] +_080E4B3A: + mov r6, r12 + adds r0, r6, r4 + lsls r0, 3 + adds r1, r0, r5 + ldrh r2, [r1, 0xC] + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080E4B50 + subs r0, r2, 0x2 + strh r0, [r1, 0xC] +_080E4B50: + movs r3, 0 + ldr r6, _080E4BE8 @ =gUnknown_03004DC0 + mov r8, r6 + ldr r7, _080E4BEC @ =gUnknown_03004DE0 + adds r5, r1, 0 +_080E4B5A: + lsls r2, r3, 1 + ldrb r1, [r6, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r7 + ldrh r0, [r5, 0xC] + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x4F + ble _080E4B5A + cmp r3, 0x9F + bgt _080E4B9E + ldr r7, _080E4BEC @ =gUnknown_03004DE0 + ldr r6, _080E4BE8 @ =gUnknown_03004DC0 + ldr r1, _080E4BF0 @ =gTasks + mov r2, r12 + adds r0, r2, r4 + lsls r0, 3 + adds r5, r0, r1 +_080E4B84: + lsls r2, r3, 1 + ldrb r1, [r6, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r7 + ldrh r0, [r5, 0xC] + negs r0, r0 + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x9F + ble _080E4B84 +_080E4B9E: + ldr r1, _080E4BF0 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r1 + movs r3, 0xC + ldrsh r2, [r1, r3] + cmp r2, 0 + bne _080E4C06 + movs r0, 0x3 + mov r6, r8 + strb r0, [r6, 0x15] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + str r2, [sp] + ldr r1, _080E4BF4 @ =0x0600e000 + ldr r2, _080E4BF8 @ =0x05000200 + mov r0, sp + bl CpuSet + ldr r1, _080E4BFC @ =REG_BG1CNT + movs r2, 0x9C + lsls r2, 8 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r3, 0xBC + lsls r3, 7 + adds r0, r3, 0 + strh r0, [r1] + b _080E4C06 + .align 2, 0 +_080E4BE0: .4byte gUnknown_03004240 +_080E4BE4: .4byte 0xfffffc04 +_080E4BE8: .4byte gUnknown_03004DC0 +_080E4BEC: .4byte gUnknown_03004DE0 +_080E4BF0: .4byte gTasks +_080E4BF4: .4byte 0x0600e000 +_080E4BF8: .4byte 0x05000200 +_080E4BFC: .4byte REG_BG1CNT +_080E4C00: + adds r0, r4, 0 + bl sub_80E443C +_080E4C06: + ldr r0, _080E4C2C @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r2, r1, r0 + movs r6, 0x8 + ldrsh r0, [r2, r6] + cmp r0, 0x4 + beq _080E4C1E + ldr r1, _080E4C30 @ =REG_BLDALPHA + ldrh r0, [r2, 0x10] + strh r0, [r1] +_080E4C1E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E4C2C: .4byte gTasks +_080E4C30: .4byte REG_BLDALPHA + thumb_func_end task_battle_intro_anim + + thumb_func_start sub_80E4C34 +sub_80E4C34: @ 80E4C34 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080E4C80 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r7, r0, r1 + movs r1, 0x8 + ldrsh r0, [r7, r1] + cmp r0, 0x1 + ble _080E4CAA + movs r2, 0x10 + ldrsh r0, [r7, r2] + cmp r0, 0 + bne _080E4CAA + ldr r2, _080E4C84 @ =gUnknown_030042C0 + ldrh r1, [r2] + movs r0, 0x80 + lsls r0, 8 + ands r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0 + bne _080E4C72 + cmp r1, 0x4F + bhi _080E4C8C +_080E4C72: + adds r0, r1, 0x3 + strh r0, [r2] + ldr r1, _080E4C88 @ =gUnknown_03004288 + ldrh r0, [r1] + subs r0, 0x3 + strh r0, [r1] + b _080E4CAA + .align 2, 0 +_080E4C80: .4byte gTasks +_080E4C84: .4byte gUnknown_030042C0 +_080E4C88: .4byte gUnknown_03004288 +_080E4C8C: + str r5, [sp] + ldr r1, _080E4CCC @ =0x0600e000 + ldr r4, _080E4CD0 @ =0x05000200 + mov r0, sp + adds r2, r4, 0 + bl CpuSet + str r5, [sp, 0x4] + add r0, sp, 0x4 + ldr r1, _080E4CD4 @ =0x0600f000 + adds r2, r4, 0 + bl CpuSet + movs r0, 0x1 + strh r0, [r7, 0x10] +_080E4CAA: + ldr r0, _080E4CD8 @ =gTasks + lsls r2, r6, 2 + adds r1, r2, r6 + lsls r1, 3 + adds r1, r0 + movs r3, 0x8 + ldrsh r1, [r1, r3] + mov r12, r0 + adds r5, r2, 0 + cmp r1, 0x4 + bls _080E4CC2 + b _080E4EBA +_080E4CC2: + lsls r0, r1, 2 + ldr r1, _080E4CDC @ =_080E4CE0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E4CCC: .4byte 0x0600e000 +_080E4CD0: .4byte 0x05000200 +_080E4CD4: .4byte 0x0600f000 +_080E4CD8: .4byte gTasks +_080E4CDC: .4byte _080E4CE0 + .align 2, 0 +_080E4CE0: + .4byte _080E4CF4 + .4byte _080E4D06 + .4byte _080E4DA8 + .4byte _080E4DEC + .4byte _080E4EB4 +_080E4CF4: + adds r0, r5, r6 + lsls r0, 3 + add r0, r12 + movs r1, 0x10 + strh r1, [r0, 0xC] + ldrh r1, [r0, 0x8] + adds r1, 0x1 + strh r1, [r0, 0x8] + b _080E4EBA +_080E4D06: + adds r0, r5, r6 + lsls r0, 3 + mov r2, r12 + adds r1, r0, r2 + ldrh r0, [r1, 0xC] + subs r0, 0x1 + strh r0, [r1, 0xC] + lsls r0, 16 + cmp r0, 0 + beq _080E4D1C + b _080E4EBA +_080E4D1C: + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + ldr r5, _080E4D8C @ =gSprites + ldr r4, _080E4D90 @ =gSharedMem + ldr r3, _080E4D94 @ =0x0001608a + adds r6, r4, r3 + ldrb r0, [r6] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r3, [r1, 0x1] + movs r2, 0xD + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + movs r3, 0x8 + mov r8, r3 + mov r3, r8 + orrs r0, r3 + strb r0, [r1, 0x1] + ldrb r1, [r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r6, r5, 0 + adds r6, 0x1C + adds r0, r6 + ldr r3, _080E4D98 @ =sub_800FE20 + str r3, [r0] + ldr r0, _080E4D9C @ =0x0001608b + adds r4, r0 + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r0, 0x1] + ands r2, r1 + mov r1, r8 + orrs r2, r1 + strb r2, [r0, 0x1] + ldrb r1, [r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + str r3, [r0] + ldr r1, _080E4DA0 @ =REG_WININ + movs r0, 0x3F + strh r0, [r1] + adds r1, 0x2 + ldr r2, _080E4DA4 @ =0x00003f06 + b _080E4E94 + .align 2, 0 +_080E4D8C: .4byte gSprites +_080E4D90: .4byte gSharedMem +_080E4D94: .4byte 0x0001608a +_080E4D98: .4byte sub_800FE20 +_080E4D9C: .4byte 0x0001608b +_080E4DA0: .4byte REG_WININ +_080E4DA4: .4byte 0x00003f06 +_080E4DA8: + ldr r1, _080E4DE0 @ =gUnknown_03004240 + ldrh r0, [r1] + subs r0, 0xFF + strh r0, [r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0xC0 + lsls r1, 6 + cmp r0, r1 + beq _080E4DC0 + b _080E4EBA +_080E4DC0: + adds r1, r5, r6 + lsls r1, 3 + add r1, r12 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + movs r0, 0xF0 + strh r0, [r1, 0xC] + movs r0, 0x20 + strh r0, [r1, 0xE] + ldr r2, _080E4DE4 @ =gUnknown_02024DE8 + ldrh r1, [r2] + ldr r0, _080E4DE8 @ =0x0000fffe + ands r0, r1 + strh r0, [r2] + b _080E4EBA + .align 2, 0 +_080E4DE0: .4byte gUnknown_03004240 +_080E4DE4: .4byte gUnknown_02024DE8 +_080E4DE8: .4byte 0x0000fffe +_080E4DEC: + ldr r2, _080E4E9C @ =gUnknown_03004240 + ldrh r1, [r2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _080E4E00 + ldr r3, _080E4EA0 @ =0xfffffc04 + adds r0, r1, r3 + strh r0, [r2] +_080E4E00: + adds r0, r5, r6 + lsls r0, 3 + mov r2, r12 + adds r1, r0, r2 + ldrh r2, [r1, 0xC] + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080E4E16 + subs r0, r2, 0x2 + strh r0, [r1, 0xC] +_080E4E16: + movs r3, 0 + ldr r0, _080E4EA4 @ =gUnknown_03004DC0 + mov r9, r0 + ldr r2, _080E4EA8 @ =gUnknown_03004DE0 + mov r8, r2 + mov r7, r9 + adds r4, r1, 0 +_080E4E24: + lsls r2, r3, 1 + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + add r2, r8 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x4F + ble _080E4E24 + cmp r3, 0x9F + bgt _080E4E68 + ldr r0, _080E4EA8 @ =gUnknown_03004DE0 + mov r8, r0 + ldr r7, _080E4EA4 @ =gUnknown_03004DC0 + ldr r1, _080E4EAC @ =gTasks + adds r0, r5, r6 + lsls r0, 3 + adds r4, r0, r1 +_080E4E4E: + lsls r2, r3, 1 + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + add r2, r8 + ldrh r0, [r4, 0xC] + negs r0, r0 + strh r0, [r2] + adds r3, 0x1 + cmp r3, 0x9F + ble _080E4E4E +_080E4E68: + adds r0, r5, r6 + lsls r0, 3 + mov r2, r12 + adds r1, r0, r2 + movs r3, 0xC + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080E4EBA + movs r0, 0x3 + mov r2, r9 + strb r0, [r2, 0x15] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + ldr r1, _080E4EB0 @ =REG_BG1CNT + movs r3, 0x9C + lsls r3, 8 + adds r0, r3, 0 + strh r0, [r1] + adds r1, 0x2 + movs r2, 0xBC + lsls r2, 7 +_080E4E94: + adds r0, r2, 0 + strh r0, [r1] + b _080E4EBA + .align 2, 0 +_080E4E9C: .4byte gUnknown_03004240 +_080E4EA0: .4byte 0xfffffc04 +_080E4EA4: .4byte gUnknown_03004DC0 +_080E4EA8: .4byte gUnknown_03004DE0 +_080E4EAC: .4byte gTasks +_080E4EB0: .4byte REG_BG1CNT +_080E4EB4: + adds r0, r6, 0 + bl sub_80E443C +_080E4EBA: + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80E4C34 + + thumb_func_start unref_sub_80E4EC8 +unref_sub_80E4EC8: @ 80E4EC8 + push {r4,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + movs r4, 0x80 + lsls r4, 7 + str r4, [sp] + movs r4, 0x1E + str r4, [sp, 0x4] + movs r4, 0x1 + str r4, [sp, 0x8] + bl sub_80E4EF8 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + thumb_func_end unref_sub_80E4EC8 + + thumb_func_start sub_80E4EF8 +sub_80E4EF8: @ 80E4EF8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r9, r1 + adds r4, r2, 0 + ldr r1, [sp, 0x24] + mov r8, r1 + ldr r1, [sp, 0x28] + ldr r5, [sp, 0x2C] + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + mov r7, r9 + lsls r7, 24 + adds r0, r7, 0 + lsrs r0, 24 + mov r9, r0 + lsls r4, 24 + lsrs r4, 24 + lsls r3, 24 + lsrs r3, 24 + str r3, [sp] + mov r3, r8 + lsls r3, 16 + mov r8, r3 + lsrs r6, r3, 16 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r5, 24 + lsrs r5, 24 + adds r0, r4, 0 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E4FCC @ =0x040000d4 + ldr r1, _080E4FD0 @ =gUnknown_081FAF4C + lsls r4, 2 + adds r4, r1 + ldr r1, _080E4FD4 @ =gBattleMonForms + adds r0, r1 + ldrb r1, [r0] + lsls r1, 11 + ldr r0, [r4] + adds r0, r1 + str r0, [r2] + movs r0, 0xC0 + lsls r0, 19 + adds r6, r0 + str r6, [r2, 0x4] + ldr r0, _080E4FD8 @ =0x80000400 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + mov r0, r8 + lsrs r0, 21 + lsls r5, 9 + subs r5, r0, r5 + mov r0, r9 + adds r1, r0, 0 + adds r1, 0x8 + cmp r0, r1 + bge _080E4FBC + mov r9, r1 + mov r1, r10 + lsls r1, 1 + mov r8, r1 + lsls r7, 11 + mov r12, r7 +_080E4F86: + mov r2, r10 + adds r4, r2, 0 + adds r4, 0x8 + adds r1, r0, 0x1 + cmp r2, r4 + bge _080E4FB6 + ldr r3, [sp] + lsls r6, r3, 12 + lsls r0, 6 + movs r7, 0xC0 + lsls r7, 19 + adds r0, r7 + add r0, r12 + mov r7, r8 + adds r3, r7, r0 + subs r2, r4, r2 +_080E4FA6: + adds r0, r5, 0 + orrs r0, r6 + strh r0, [r3] + adds r5, 0x1 + adds r3, 0x2 + subs r2, 0x1 + cmp r2, 0 + bne _080E4FA6 +_080E4FB6: + adds r0, r1, 0 + cmp r0, r9 + blt _080E4F86 +_080E4FBC: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E4FCC: .4byte 0x040000d4 +_080E4FD0: .4byte gUnknown_081FAF4C +_080E4FD4: .4byte gBattleMonForms +_080E4FD8: .4byte 0x80000400 + thumb_func_end sub_80E4EF8 + + thumb_func_start unref_sub_80E4FDC +unref_sub_80E4FDC: @ 80E4FDC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, [sp, 0x24] + ldr r5, [sp, 0x28] + mov r8, r5 + ldr r5, [sp, 0x2C] + ldr r6, [sp, 0x30] + mov r9, r6 + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + lsls r1, 24 + lsls r2, 24 + lsls r3, 24 + lsls r4, 24 + lsrs r4, 24 + mov r10, r4 + mov r7, r8 + lsls r7, 16 + lsrs r6, r7, 16 + lsls r5, 24 + lsrs r5, 24 + mov r0, r9 + lsls r0, 24 + mov r9, r0 + ldr r4, _080E509C @ =0x040000d4 + ldr r0, _080E50A0 @ =gUnknown_081FAF4C + lsrs r2, 22 + adds r2, r0 + lsrs r3, 13 + ldr r0, [r2] + adds r0, r3 + str r0, [r4] + movs r0, 0xC0 + lsls r0, 19 + adds r6, r0 + str r6, [r4, 0x4] + ldr r0, _080E50A4 @ =0x80000400 + str r0, [r4, 0x8] + ldr r0, [r4, 0x8] + adds r2, r7, 0 + lsrs r2, 21 + mov r6, r9 + lsrs r6, 15 + subs r4, r2, r6 + lsrs r0, r1, 24 + adds r1, r0, 0 + adds r1, 0x8 + cmp r0, r1 + bge _080E508C + mov r9, r1 + mov r7, r12 + lsls r7, 1 + mov r8, r7 + lsls r5, 11 + str r5, [sp] +_080E5054: + mov r2, r12 + adds r3, r2, 0 + adds r3, 0x8 + adds r5, r0, 0x1 + cmp r2, r3 + bge _080E5086 + mov r1, r10 + lsls r6, r1, 12 + lsls r0, 6 + movs r7, 0xC0 + lsls r7, 19 + adds r0, r7 + ldr r1, [sp] + adds r0, r1, r0 + mov r7, r8 + adds r1, r7, r0 + subs r2, r3, r2 +_080E5076: + adds r0, r4, 0 + orrs r0, r6 + strh r0, [r1] + adds r4, 0x1 + adds r1, 0x2 + subs r2, 0x1 + cmp r2, 0 + bne _080E5076 +_080E5086: + adds r0, r5, 0 + cmp r0, r9 + blt _080E5054 +_080E508C: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E509C: .4byte 0x040000d4 +_080E50A0: .4byte gUnknown_081FAF4C +_080E50A4: .4byte 0x80000400 + thumb_func_end unref_sub_80E4FDC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/beta_beat_up.s b/asm/beta_beat_up.s new file mode 100755 index 000000000..d6e1ba675 --- /dev/null +++ b/asm/beta_beat_up.s @@ -0,0 +1,63 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ beta_beat_up + + thumb_func_start sub_80D6234 +sub_80D6234: @ 80D6234 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D6254 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D625C + ldr r0, _080D6258 @ =gBattleAnimArgs + ldrh r1, [r4, 0x20] + ldrh r0, [r0] + subs r1, r0 + strh r1, [r4, 0x20] + b _080D6266 + .align 2, 0 +_080D6254: .4byte gBattleAnimBankAttacker +_080D6258: .4byte gBattleAnimArgs +_080D625C: + ldr r0, _080D6270 @ =gBattleAnimArgs + ldrh r0, [r0] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] +_080D6266: + ldr r0, _080D6274 @ =sub_80D6278 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6270: .4byte gBattleAnimArgs +_080D6274: .4byte sub_80D6278 + thumb_func_end sub_80D6234 + + thumb_func_start sub_80D6278 +sub_80D6278: @ 80D6278 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080D628E + adds r0, r2, 0 + bl move_anim_8074EE0 +_080D628E: + pop {r0} + bx r0 + thumb_func_end sub_80D6278 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/bubble.s b/asm/bubble.s new file mode 100755 index 000000000..466e31b0d --- /dev/null +++ b/asm/bubble.s @@ -0,0 +1,248 @@ + .include "constants/gba_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. diff --git a/asm/bug.s b/asm/bug.s new file mode 100755 index 000000000..987e46bbf --- /dev/null +++ b/asm/bug.s @@ -0,0 +1,825 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ bug + + thumb_func_start sub_80DC824 +sub_80DC824: @ 80DC824 + push {r4-r6,lr} + adds r6, r0, 0 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DC850 + adds r0, r6, 0 + movs r1, 0x2 + bl StartSpriteAffineAnim + ldr r0, _080DC84C @ =gBattleAnimArgs + ldrh r1, [r0, 0x4] + negs r1, r1 + strh r1, [r0, 0x4] + ldrh r1, [r0] + negs r1, r1 + strh r1, [r0] + b _080DC880 + .align 2, 0 +_080DC84C: .4byte gBattleAnimArgs +_080DC850: + ldr r0, _080DC8E4 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DC880 + adds r0, r6, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + ldr r1, _080DC8E8 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r1, 0x6] + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080DC880: + ldr r5, _080DC8E4 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077EE4 + lsls r0, 24 + ldr r4, _080DC8E8 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077EE4 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r6, 0x36] + ldr r0, _080DC8EC @ =sub_8078B34 + str r0, [r6, 0x1C] + ldr r1, _080DC8F0 @ =move_anim_8072740 + adds r0, r6, 0 + bl StoreSpriteCallbackInData + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DC8E4: .4byte gBattleAnimBankTarget +_080DC8E8: .4byte gBattleAnimArgs +_080DC8EC: .4byte sub_8078B34 +_080DC8F0: .4byte move_anim_8072740 + thumb_func_end sub_80DC824 + + thumb_func_start sub_80DC8F4 +sub_80DC8F4: @ 80DC8F4 + push {r4-r6,lr} + adds r6, r0, 0 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DC918 + ldr r1, _080DC914 @ =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] + adds r0, r6, 0 + movs r1, 0x2 + bl StartSpriteAffineAnim + b _080DC934 + .align 2, 0 +_080DC914: .4byte gBattleAnimArgs +_080DC918: + ldr r0, _080DC990 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DC934 + ldr r0, _080DC994 @ =gBattleAnimArgs + ldrh r1, [r0, 0x2] + negs r1, r1 + strh r1, [r0, 0x2] + ldrh r1, [r0] + negs r1, r1 + strh r1, [r0] +_080DC934: + ldr r5, _080DC990 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077EE4 + lsls r0, 24 + ldr r4, _080DC994 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077EE4 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x2E] + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x36] + ldr r0, _080DC998 @ =sub_8078B34 + str r0, [r6, 0x1C] + ldr r1, _080DC99C @ =move_anim_8072740 + adds r0, r6, 0 + bl StoreSpriteCallbackInData + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DC990: .4byte gBattleAnimBankTarget +_080DC994: .4byte gBattleAnimArgs +_080DC998: .4byte sub_8078B34 +_080DC99C: .4byte move_anim_8072740 + thumb_func_end sub_80DC8F4 + + thumb_func_start sub_80DC9A0 +sub_80DC9A0: @ 80DC9A0 + push {r4,r5,lr} + adds r5, r0, 0 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DC9BC + ldr r0, _080DC9FC @ =gBattleAnimArgs + movs r2, 0x4 + ldrsh r1, [r0, r2] + lsrs r2, r1, 31 + adds r1, r2 + asrs r1, 1 + strh r1, [r0, 0x4] +_080DC9BC: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r1, _080DC9FC @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080DCA04 + ldr r4, _080DCA00 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + b _080DCA16 + .align 2, 0 +_080DC9FC: .4byte gBattleAnimArgs +_080DCA00: .4byte gBattleAnimBankTarget +_080DCA04: + ldr r0, _080DCA2C @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_807A3FC +_080DCA16: + adds r0, r5, 0 + bl sub_8078BD4 + ldr r0, _080DCA30 @ =gBattleAnimArgs + ldrh r0, [r0, 0x6] + strh r0, [r5, 0x38] + ldr r0, _080DCA34 @ =sub_80DCA38 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DCA2C: .4byte gBattleAnimBankTarget +_080DCA30: .4byte gBattleAnimArgs +_080DCA34: .4byte sub_80DCA38 + thumb_func_end sub_80DC9A0 + + thumb_func_start sub_80DCA38 +sub_80DCA38: @ 80DCA38 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + beq _080DCA4E + adds r0, r4, 0 + bl move_anim_8072740 + b _080DCA6A +_080DCA4E: + movs r1, 0x3A + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x3A] + adds r0, 0xD + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3A] +_080DCA6A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DCA38 + + thumb_func_start sub_80DCA70 +sub_80DCA70: @ 80DCA70 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080DCAA0 @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_807A3FC + ldr r0, _080DCAA4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DCAAC + ldr r0, _080DCAA8 @ =gBattleAnimArgs + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + b _080DCAB8 + .align 2, 0 +_080DCAA0: .4byte gBattleAnimBankTarget +_080DCAA4: .4byte gBattleAnimBankAttacker +_080DCAA8: .4byte gBattleAnimArgs +_080DCAAC: + ldr r1, _080DCAE0 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + adds r0, r1, 0 +_080DCAB8: + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080DCAE4 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DCAD4 + ldrh r0, [r4, 0x22] + adds r0, 0x8 + strh r0, [r4, 0x22] +_080DCAD4: + ldr r0, _080DCAE8 @ =sub_80DCAEC + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DCAE0: .4byte gBattleAnimArgs +_080DCAE4: .4byte gBattleAnimBankTarget +_080DCAE8: .4byte sub_80DCAEC + thumb_func_end sub_80DCA70 + + thumb_func_start sub_80DCAEC +sub_80DCAEC: @ 80DCAEC + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080DCB20 + movs r0, 0 + strh r0, [r3, 0x2E] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] +_080DCB20: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x33 + bne _080DCB34 + adds r0, r3, 0 + bl move_anim_8072740 +_080DCB34: + pop {r0} + bx r0 + thumb_func_end sub_80DCAEC + + thumb_func_start sub_80DCB38 +sub_80DCB38: @ 80DCB38 + ldr r2, _080DCB54 @ =REG_BLDCNT + movs r3, 0xFD + lsls r3, 6 + adds r1, r3, 0 + strh r1, [r2] + adds r2, 0x2 + movs r1, 0x10 + strh r1, [r2] + movs r1, 0x10 + strh r1, [r0, 0x2E] + ldr r1, _080DCB58 @ =sub_80DCB5C + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080DCB54: .4byte REG_BLDCNT +_080DCB58: .4byte sub_80DCB5C + thumb_func_end sub_80DCB38 + + thumb_func_start sub_80DCB5C +sub_80DCB5C: @ 80DCB5C + push {lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x32] + movs r2, 0x32 + ldrsh r0, [r3, r2] + cmp r0, 0x13 + bgt _080DCB70 + adds r0, r1, 0x1 + strh r0, [r3, 0x32] + b _080DCBA8 +_080DCB70: + ldrh r1, [r3, 0x30] + adds r0, r1, 0x1 + strh r0, [r3, 0x30] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DCBA8 + ldrh r1, [r3, 0x2E] + subs r1, 0x1 + strh r1, [r3, 0x2E] + ldr r2, _080DCBAC @ =REG_BLDALPHA + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r1, 0x2E + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080DCBA8 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080DCBB0 @ =sub_80DCBB4 + str r0, [r3, 0x1C] +_080DCBA8: + pop {r0} + bx r0 + .align 2, 0 +_080DCBAC: .4byte REG_BLDALPHA +_080DCBB0: .4byte sub_80DCBB4 + thumb_func_end sub_80DCB5C + + thumb_func_start sub_80DCBB4 +sub_80DCBB4: @ 80DCBB4 + push {lr} + ldr r1, _080DCBC8 @ =REG_BLDCNT + movs r2, 0 + strh r2, [r1] + adds r1, 0x2 + strh r2, [r1] + bl move_anim_8072740 + pop {r0} + bx r0 + .align 2, 0 +_080DCBC8: .4byte REG_BLDCNT + thumb_func_end sub_80DCBB4 + + thumb_func_start sub_80DCBCC +sub_80DCBCC: @ 80DCBCC + push {r4-r7,lr} + sub sp, 0x4 + adds r7, r0, 0 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DCBEC + ldr r1, _080DCBE8 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + b _080DCC0E + .align 2, 0 +_080DCBE8: .4byte gBattleAnimArgs +_080DCBEC: + ldr r0, _080DCCE8 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DCC0E + ldr r1, _080DCCEC @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r1, 0x6] +_080DCC0E: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080DCC5E + ldr r0, _080DCCE8 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + adds r4, r0, 0 + ldr r5, _080DCCF0 @ =gBattleAnimBankTarget + ldrb r0, [r5] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080DCC5E + ldrb r0, [r5] + bl GetBankIdentity + lsls r0, 24 + cmp r0, 0 + beq _080DCC4C + ldrb r0, [r5] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DCC5E +_080DCC4C: + ldr r0, _080DCCEC @ =gBattleAnimArgs + movs r2, 0x4 + ldrsh r1, [r0, r2] + negs r1, r1 + strh r1, [r0, 0x4] + movs r2, 0 + ldrsh r1, [r0, r2] + negs r1, r1 + strh r1, [r0] +_080DCC5E: + adds r0, r7, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r5, _080DCCF0 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + adds r4, r0, 0 + lsls r4, 24 + ldr r6, _080DCCEC @ =gBattleAnimArgs + lsrs r4, 24 + ldrh r0, [r6, 0x4] + adds r4, r0 + lsls r4, 16 + lsrs r4, 16 + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r6, 0x6] + adds r1, r2 + lsls r1, 16 + ldrh r2, [r7, 0x20] + lsls r0, r4, 16 + asrs r0, 16 + subs r0, r2 + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r7, 0x22] + lsrs r5, r1, 16 + asrs r1, 16 + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_80790F0 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 24 + adds r0, r1 + lsrs r0, 16 + movs r3, 0x80 + lsls r3, 1 + str r0, [sp] + adds r0, r7, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8078FDC + ldrh r0, [r6, 0x8] + strh r0, [r7, 0x2E] + strh r4, [r7, 0x32] + strh r5, [r7, 0x36] + ldr r0, _080DCCF4 @ =sub_8078B34 + str r0, [r7, 0x1C] + ldr r1, _080DCCF8 @ =move_anim_8072740 + adds r0, r7, 0 + bl StoreSpriteCallbackInData + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DCCE8: .4byte gBattleAnimBankAttacker +_080DCCEC: .4byte gBattleAnimArgs +_080DCCF0: .4byte gBattleAnimBankTarget +_080DCCF4: .4byte sub_8078B34 +_080DCCF8: .4byte move_anim_8072740 + thumb_func_end sub_80DCBCC + + thumb_func_start sub_80DCCFC +sub_80DCCFC: @ 80DCCFC + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080DCD68 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DCD1C + ldr r1, _080DCD6C @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080DCD1C: + ldr r4, _080DCD6C @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _080DCD70 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r6, 0x36] + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + adds r0, r6, 0 + bl sub_80786EC + ldr r0, _080DCD74 @ =sub_80DCD78 + str r0, [r6, 0x1C] + adds r2, r6, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DCD68: .4byte gBattleAnimBankAttacker +_080DCD6C: .4byte gBattleAnimArgs +_080DCD70: .4byte gBattleAnimBankTarget +_080DCD74: .4byte sub_80DCD78 + thumb_func_end sub_80DCCFC + + thumb_func_start sub_80DCD78 +sub_80DCD78: @ 80DCD78 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r2] + adds r0, r4, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080DCDA4 + adds r0, r4, 0 + bl move_anim_8072740 + b _080DCE34 +_080DCDA4: + movs r0, 0x2E + adds r0, r4 + mov r8, r0 + ldrh r7, [r4, 0x20] + ldrh r5, [r4, 0x24] + ldrh r1, [r4, 0x22] + mov r12, r1 + ldrh r6, [r4, 0x26] + mov r2, r8 + add r1, sp, 0x4 + movs r3, 0x7 +_080DCDBA: + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080DCDBA + adds r0, r7, r5 + lsls r0, 16 + lsrs r5, r0, 16 + mov r2, r12 + adds r0, r2, r6 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + bne _080DCE34 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + lsls r1, r5, 16 + asrs r1, 16 + subs r0, r1 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r1, r2 + lsls r2, r6, 16 + asrs r2, 16 + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl sub_80790F0 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 24 + adds r0, r1 + lsrs r0, 16 + movs r3, 0x80 + lsls r3, 1 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8078FDC + add r2, sp, 0x4 + mov r1, r8 + movs r3, 0x7 +_080DCE26: + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _080DCE26 +_080DCE34: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80DCD78 + + thumb_func_start sub_80DCE40 +sub_80DCE40: @ 80DCE40 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080DCE54 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DCE5C + ldr r4, _080DCE58 @ =gBattleAnimBankAttacker + b _080DCE5E + .align 2, 0 +_080DCE54: .4byte gBattleAnimArgs +_080DCE58: .4byte gBattleAnimBankAttacker +_080DCE5C: + ldr r4, _080DCE90 @ =gBattleAnimBankTarget +_080DCE5E: + 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 + adds r0, 0x12 + strh r0, [r5, 0x22] + ldr r1, _080DCE94 @ =move_anim_8074EE0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r0, _080DCE98 @ =sub_80785E4 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DCE90: .4byte gBattleAnimBankTarget +_080DCE94: .4byte move_anim_8074EE0 +_080DCE98: .4byte sub_80785E4 + thumb_func_end sub_80DCE40 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/contest.s b/asm/contest.s index fc2afd521..2f048fbc3 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -7156,7 +7156,7 @@ _080AEC34: ldr r6, _080AEC78 @ =gContestMoves lsls r5, r4, 3 ldr r7, _080AEC80 @ =gContestEffects - ldr r0, _080AEC84 @ =gUnknown_083CADD4 + ldr r0, _080AEC84 @ =gContestEffectStrings mov r9, r0 ldr r4, _080AEC88 @ =0x0600c816 ldr r3, _080AEC8C @ =0x0600c7d6 @@ -7188,7 +7188,7 @@ _080AEC74: .4byte gUnknown_03004210 _080AEC78: .4byte gContestMoves _080AEC7C: .4byte 0x00004040 _080AEC80: .4byte gContestEffects -_080AEC84: .4byte gUnknown_083CADD4 +_080AEC84: .4byte gContestEffectStrings _080AEC88: .4byte 0x0600c816 _080AEC8C: .4byte 0x0600c7d6 _080AEC90: diff --git a/asm/current.s b/asm/current.s new file mode 100755 index 000000000..df72b56af --- /dev/null +++ b/asm/current.s @@ -0,0 +1,2389 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ current + + thumb_func_start sub_80D648C +sub_80D648C: @ 80D648C + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r5, _080D6500 @ =gBattleAnimArgs + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r6, _080D6504 @ =gBattleAnimBankTarget + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x38] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x3A] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x3C] + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0xC + ldrsh r0, [r5, r3] + lsls r0, 2 + adds r1, r0 + ldr r3, _080D6508 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080D650C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r1, _080D6510 @ =sub_80D6514 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D6500: .4byte gBattleAnimArgs +_080D6504: .4byte gBattleAnimBankTarget +_080D6508: .4byte 0x000003ff +_080D650C: .4byte 0xfffffc00 +_080D6510: .4byte sub_80D6514 + thumb_func_end sub_80D648C + + thumb_func_start sub_80D6514 +sub_80D6514: @ 80D6514 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + bne _080D657E + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r2, 0x3C + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r2, [r4, 0x3C] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + cmp r0, 0 + bne _080D6584 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _080D6584 +_080D657E: + adds r0, r4, 0 + bl move_anim_8072740 +_080D6584: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D6514 + + thumb_func_start sub_80D658C +sub_80D658C: @ 80D658C + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x38] + subs r0, 0x1 + strh r0, [r3, 0x38] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080D65C4 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x36] + strh r0, [r3, 0x38] +_080D65C4: + ldrh r0, [r3, 0x34] + subs r1, r0, 0x1 + strh r1, [r3, 0x34] + lsls r0, 16 + cmp r0, 0 + bgt _080D65D6 + adds r0, r3, 0 + bl move_anim_8072740 +_080D65D6: + pop {r0} + bx r0 + thumb_func_end sub_80D658C + + thumb_func_start sub_80D65DC +sub_80D65DC: @ 80D65DC + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _080D6644 @ =gMain + ldr r1, _080D6648 @ =0x0000043d + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D65FE + ldr r0, _080D664C @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D6606 +_080D65FE: + ldr r1, _080D6650 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] +_080D6606: + ldr r5, _080D664C @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + ldr r4, _080D6650 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4] + strh r0, [r6, 0x34] + ldrh r0, [r4, 0x6] + strh r0, [r6, 0x36] + strh r0, [r6, 0x38] + ldr r0, _080D6654 @ =sub_80D658C + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D6644: .4byte gMain +_080D6648: .4byte 0x0000043d +_080D664C: .4byte gBattleAnimBankTarget +_080D6650: .4byte gBattleAnimArgs +_080D6654: .4byte sub_80D658C + thumb_func_end sub_80D65DC + + thumb_func_start sub_80D6658 +sub_80D6658: @ 80D6658 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r1, _080D6674 @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x2E] + movs r2, 0xE + ldrsh r0, [r1, r2] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080D667C + ldr r0, _080D6678 @ =gBattleAnimBankTarget + b _080D667E + .align 2, 0 +_080D6674: .4byte gBattleAnimArgs +_080D6678: .4byte gBattleAnimBankTarget +_080D667C: + ldr r0, _080D670C @ =gBattleAnimBankAttacker +_080D667E: + ldrb r6, [r0] + ldr r0, _080D6710 @ =gMain + ldr r3, _080D6714 @ =0x0000043d + adds r0, r3 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D669C + adds r0, r6, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D66A4 +_080D669C: + ldr r1, _080D6718 @ =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080D66A4: + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + ldr r4, _080D6718 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r4, 0x2] + adds r0, r2 + strh r0, [r5, 0x22] + ldrh r1, [r4, 0xE] + ldr r0, _080D671C @ =0x00007fff + ands r0, r1 + strh r0, [r5, 0x36] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x38] + ldrh r0, [r4, 0xA] + strh r0, [r5, 0x3A] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x3C] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0xC + ldrsh r0, [r4, r3] + lsls r0, 2 + adds r1, r0 + ldr r3, _080D6720 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080D6724 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r1, _080D6728 @ =sub_80D672C + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D670C: .4byte gBattleAnimBankAttacker +_080D6710: .4byte gMain +_080D6714: .4byte 0x0000043d +_080D6718: .4byte gBattleAnimArgs +_080D671C: .4byte 0x00007fff +_080D6720: .4byte 0x000003ff +_080D6724: .4byte 0xfffffc00 +_080D6728: .4byte sub_80D672C + thumb_func_end sub_80D6658 + + thumb_func_start sub_80D672C +sub_80D672C: @ 80D672C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x3C] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, 0 + bne _080D6782 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080D6782: + ldrh r0, [r4, 0x2E] + subs r1, r0, 0x1 + strh r1, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080D6794 + adds r0, r4, 0 + bl move_anim_8072740 +_080D6794: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D672C + + thumb_func_start sub_80D679C +sub_80D679C: @ 80D679C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8078764 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + ldr r3, _080D67D8 @ =gBattleAnimArgs + movs r5, 0x6 + ldrsh r0, [r3, r5] + lsls r0, 2 + adds r1, r0 + ldr r5, _080D67DC @ =0x000003ff + adds r0, r5, 0 + ands r1, r0 + ldr r0, _080D67E0 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + movs r1, 0x6 + ldrsh r0, [r3, r1] + cmp r0, 0x1 + bne _080D67E4 + ldrb r0, [r4, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + b _080D67F2 + .align 2, 0 +_080D67D8: .4byte gBattleAnimArgs +_080D67DC: .4byte 0x000003ff +_080D67E0: .4byte 0xfffffc00 +_080D67E4: + cmp r0, 0x2 + bne _080D67F6 + ldrb r0, [r4, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x20 +_080D67F2: + orrs r1, r0 + strb r1, [r4, 0x3] +_080D67F6: + ldr r0, _080D6810 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r0, _080D6814 @ =sub_80782D8 + str r0, [r4, 0x1C] + ldr r1, _080D6818 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6810: .4byte gBattleAnimArgs +_080D6814: .4byte sub_80782D8 +_080D6818: .4byte move_anim_8072740 + thumb_func_end sub_80D679C + + thumb_func_start sub_80D681C +sub_80D681C: @ 80D681C + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _080D6864 @ =gBattleAnimBankTarget + ldrb r0, [r6] + movs r1, 0 + bl sub_8077ABC + ldr r1, _080D6868 @ =gTasks + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r1 + lsls r0, 24 + ldr r5, _080D686C @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r5] + adds r0, r1 + strh r0, [r4, 0x8] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x2] + adds r0, r1 + strh r0, [r4, 0xA] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0xC] + ldr r0, _080D6870 @ =sub_80D6874 + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D6864: .4byte gBattleAnimBankTarget +_080D6868: .4byte gTasks +_080D686C: .4byte gBattleAnimArgs +_080D6870: .4byte sub_80D6874 + thumb_func_end sub_80D681C + + thumb_func_start sub_80D6874 +sub_80D6874: @ 80D6874 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r5, 0 + movs r7, 0 + ldr r1, _080D68B4 @ =gTasks + lsls r0, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + ldrb r2, [r0, 0xC] + str r2, [sp] + ldrh r4, [r0, 0x8] + ldrh r6, [r0, 0xA] + movs r3, 0xC + ldrsh r0, [r0, r3] + mov r10, r1 + cmp r0, 0 + bne _080D68B8 + movs r0, 0 + mov r8, r0 + movs r2, 0x1 + movs r1, 0x10 + mov r12, r1 + b _080D68C2 + .align 2, 0 +_080D68B4: .4byte gTasks +_080D68B8: + movs r2, 0x10 + mov r12, r2 + movs r3, 0x8 + mov r8, r3 + movs r2, 0x4 +_080D68C2: + mov r0, r9 + lsls r1, r0, 2 + adds r0, r1, r0 + lsls r0, 3 + add r0, r10 + movs r3, 0x1C + ldrsh r0, [r0, r3] + mov r10, r1 + cmp r0, 0xA + bhi _080D69B8 + lsls r0, 2 + ldr r1, _080D68E0 @ =_080D68E4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D68E0: .4byte _080D68E4 + .align 2, 0 +_080D68E4: + .4byte _080D6910 + .4byte _080D69B8 + .4byte _080D6924 + .4byte _080D69B8 + .4byte _080D6944 + .4byte _080D69B8 + .4byte _080D695A + .4byte _080D69B8 + .4byte _080D697C + .4byte _080D69B8 + .4byte _080D69B0 +_080D6910: + ldr r0, _080D6920 @ =gSpriteTemplate_83D9938 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + mov r4, r12 + lsls r3, r4, 16 + b _080D6992 + .align 2, 0 +_080D6920: .4byte gSpriteTemplate_83D9938 +_080D6924: + mov r0, r12 + lsls r3, r0, 17 + mov r1, r8 + adds r0, r1, r2 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _080D6940 @ =gSpriteTemplate_83D9938 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + b _080D6992 + .align 2, 0 +_080D6940: .4byte gSpriteTemplate_83D9938 +_080D6944: + mov r3, r12 + lsls r0, r3, 16 + asrs r0, 16 + lsls r3, r0, 1 + adds r3, r0 + lsls r0, r2, 1 + add r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + b _080D6986 +_080D695A: + mov r0, r12 + lsls r3, r0, 18 + lsls r0, r2, 1 + adds r0, r2 + add r0, r8 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r0, _080D6978 @ =gSpriteTemplate_83D9938 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + b _080D6992 + .align 2, 0 +_080D6978: .4byte gSpriteTemplate_83D9938 +_080D697C: + mov r1, r12 + lsls r0, r1, 16 + asrs r0, 16 + lsls r3, r0, 2 + adds r3, r0 +_080D6986: + ldr r0, _080D69AC @ =gSpriteTemplate_83D9938 + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r2, 16 + lsls r3, 16 +_080D6992: + asrs r3, 16 + adds r2, r3 + lsls r2, 16 + asrs r2, 16 + movs r3, 0x2 + bl CreateSprite + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + b _080D69B8 + .align 2, 0 +_080D69AC: .4byte gSpriteTemplate_83D9938 +_080D69B0: + mov r0, r9 + bl DestroyAnimVisualTask + b _080D69FC +_080D69B8: + cmp r7, 0 + beq _080D69EC + ldr r4, _080D6A0C @ =gSprites + lsls r3, r5, 4 + adds r3, r5 + lsls r3, 2 + adds r0, r3, r4 + ldrh r5, [r0, 0x4] + lsls r2, r5, 22 + lsrs r2, 22 + add r2, r8 + ldr r6, _080D6A10 @ =0x000003ff + adds r1, r6, 0 + ands r2, r1 + ldr r1, _080D6A14 @ =0xfffffc00 + ands r1, r5 + orrs r1, r2 + strh r1, [r0, 0x4] + mov r1, sp + ldrh r1, [r1] + strh r1, [r0, 0x2E] + adds r4, 0x1C + adds r3, r4 + ldr r1, [r3] + bl _call_via_r1 +_080D69EC: + ldr r0, _080D6A18 @ =gTasks + mov r1, r10 + add r1, r9 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x1C] + adds r0, 0x1 + strh r0, [r1, 0x1C] +_080D69FC: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D6A0C: .4byte gSprites +_080D6A10: .4byte 0x000003ff +_080D6A14: .4byte 0xfffffc00 +_080D6A18: .4byte gTasks + thumb_func_end sub_80D6874 + + thumb_func_start sub_80D6A1C +sub_80D6A1C: @ 80D6A1C + push {lr} + adds r3, r0, 0 + movs r1, 0x2E + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080D6A3E + ldrb r1, [r3, 0x1] + movs r2, 0x3F + adds r0, r2, 0 + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r3, 0x1] + ldrb r0, [r3, 0x3] + ands r2, r0 + strb r2, [r3, 0x3] + b _080D6A52 +_080D6A3E: + ldrb r2, [r3, 0x1] + movs r1, 0x3F + adds r0, r1, 0 + ands r0, r2 + strb r0, [r3, 0x1] + ldrb r0, [r3, 0x3] + ands r1, r0 + movs r0, 0x40 + orrs r1, r0 + strb r1, [r3, 0x3] +_080D6A52: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bne _080D6A66 + adds r0, r3, 0 + bl DestroySprite +_080D6A66: + pop {r0} + bx r0 + thumb_func_end sub_80D6A1C + + thumb_func_start sub_80D6A6C +sub_80D6A6C: @ 80D6A6C + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _080D6AD4 @ =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] + ldrh r3, [r4, 0x22] + adds r0, r3 + strh r0, [r4, 0x22] + ldr r0, _080D6AD8 @ =gBattleAnimSpriteTemplate_83D9950 + adds r1, 0x20 + lsls r1, 16 + asrs r1, 16 + movs r7, 0x22 + ldrsh r2, [r4, r7] + adds r3, r4, 0 + adds r3, 0x43 + ldrb r3, [r3] + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080D6ADC @ =gSprites + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r6, r2, r3 + ldrh r5, [r6, 0x4] + lsls r1, r5, 22 + lsrs r1, 22 + adds r1, 0x8 + ldr r7, _080D6AE0 @ =0x000003ff + adds r0, r7, 0 + ands r1, r0 + ldr r0, _080D6AE4 @ =0xfffffc00 + ands r0, r5 + orrs r0, r1 + strh r0, [r6, 0x4] + ldr r1, _080D6AE8 @ =gAnimVisualTaskCount + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + adds r3, 0x1C + adds r2, r3 + ldr r0, _080D6AEC @ =sub_80D6AF0 + str r0, [r2] + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D6AD4: .4byte gBattleAnimArgs +_080D6AD8: .4byte gBattleAnimSpriteTemplate_83D9950 +_080D6ADC: .4byte gSprites +_080D6AE0: .4byte 0x000003ff +_080D6AE4: .4byte 0xfffffc00 +_080D6AE8: .4byte gAnimVisualTaskCount +_080D6AEC: .4byte sub_80D6AF0 + thumb_func_end sub_80D6A6C + + thumb_func_start sub_80D6AF0 +sub_80D6AF0: @ 80D6AF0 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080D6B24 + movs r0, 0 + strh r0, [r3, 0x2E] + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] +_080D6B24: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x33 + bne _080D6B38 + adds r0, r3, 0 + bl move_anim_8072740 +_080D6B38: + pop {r0} + bx r0 + thumb_func_end sub_80D6AF0 + + thumb_func_start sub_80D6B3C +sub_80D6B3C: @ 80D6B3C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080D6B5C @ =gTasks + adds r5, r1, r0 + ldr r0, _080D6B60 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D6B68 + ldr r4, _080D6B64 @ =gBattleAnimBankAttacker + b _080D6B6A + .align 2, 0 +_080D6B5C: .4byte gTasks +_080D6B60: .4byte gBattleAnimArgs +_080D6B64: .4byte gBattleAnimBankAttacker +_080D6B68: + ldr r4, _080D6BAC @ =gBattleAnimBankTarget +_080D6B6A: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x24] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x26] + ldr r2, _080D6BB0 @ =gBattleAnimArgs + ldrh r0, [r2, 0x2] + movs r1, 0 + strh r0, [r5, 0x14] + strh r1, [r5, 0x16] + strh r1, [r5, 0x18] + strh r1, [r5, 0x1A] + strh r1, [r5, 0x1C] + ldrh r0, [r2, 0x6] + strh r0, [r5, 0x1E] + strh r1, [r5, 0x20] + ldrh r0, [r2, 0x4] + strh r0, [r5, 0x22] + ldr r0, _080D6BB4 @ =sub_80D6BB8 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6BAC: .4byte gBattleAnimBankTarget +_080D6BB0: .4byte gBattleAnimArgs +_080D6BB4: .4byte sub_80D6BB8 + thumb_func_end sub_80D6B3C + + thumb_func_start sub_80D6BB8 +sub_80D6BB8: @ 80D6BB8 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + adds r2, r6, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080D6CA0 @ =gTasks + adds r5, r0, r1 + movs r1, 0x14 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080D6CB8 + ldrh r0, [r5, 0x20] + adds r0, 0x1 + movs r7, 0 + strh r0, [r5, 0x20] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x22 + ldrsh r1, [r5, r2] + cmp r0, r1 + ble _080D6CC6 + strh r7, [r5, 0x20] + ldr r0, _080D6CA4 @ =gSpriteTemplate_83D99B8 + movs r3, 0x24 + ldrsh r1, [r5, r3] + movs r3, 0x26 + ldrsh r2, [r5, r3] + movs r3, 0x2 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080D6CC6 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _080D6CA8 @ =gSprites + adds r4, r0 + ldr r1, _080D6CAC @ =gUnknown_083D9968 + movs r2, 0x1A + ldrsh r0, [r5, r2] + lsls r0, 1 + adds r0, r1 + movs r3, 0 + ldrsb r3, [r0, r3] + ldrh r0, [r4, 0x20] + adds r3, r0 + strh r3, [r4, 0x20] + movs r2, 0x1A + ldrsh r0, [r5, r2] + lsls r0, 1 + adds r1, 0x1 + adds r0, r1 + movs r2, 0 + ldrsb r2, [r0, r2] + ldrh r0, [r4, 0x22] + adds r2, r0 + strh r2, [r4, 0x22] + movs r1, 0x18 + ldrsh r0, [r5, r1] + lsls r1, r0, 2 + adds r1, r0 + movs r0, 0x28 + subs r0, r1 + strh r0, [r4, 0x2E] + strh r3, [r4, 0x30] + ldrh r0, [r5, 0x24] + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + ldrh r0, [r5, 0x26] + strh r0, [r4, 0x36] + strh r6, [r4, 0x38] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r1, _080D6CB0 @ =sub_80D6D00 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D6CB4 @ =sub_8078600 + str r0, [r4, 0x1C] + ldrh r0, [r5, 0x1A] + adds r0, 0x1 + strh r0, [r5, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _080D6C70 + strh r7, [r5, 0x1A] +_080D6C70: + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x1E + ldrsh r1, [r5, r2] + cmp r0, r1 + blt _080D6C92 + strh r7, [r5, 0x1C] + ldrh r1, [r5, 0x18] + movs r3, 0x18 + ldrsh r0, [r5, r3] + cmp r0, 0x5 + bgt _080D6C92 + adds r0, r1, 0x1 + strh r0, [r5, 0x18] +_080D6C92: + ldrh r0, [r5, 0x16] + adds r0, 0x1 + strh r0, [r5, 0x16] + ldrh r0, [r5, 0x14] + subs r0, 0x1 + strh r0, [r5, 0x14] + b _080D6CC6 + .align 2, 0 +_080D6CA0: .4byte gTasks +_080D6CA4: .4byte gSpriteTemplate_83D99B8 +_080D6CA8: .4byte gSprites +_080D6CAC: .4byte gUnknown_083D9968 +_080D6CB0: .4byte sub_80D6D00 +_080D6CB4: .4byte sub_8078600 +_080D6CB8: + movs r1, 0x16 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D6CC6 + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080D6CC6: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D6BB8 + + thumb_func_start sub_80D6CCC +sub_80D6CCC: @ 80D6CCC + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + beq _080D6CF4 + ldr r2, _080D6CFC @ =gTasks + movs r0, 0x38 + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x16] + subs r1, 0x1 + strh r1, [r0, 0x16] + adds r0, r4, 0 + bl DestroySprite +_080D6CF4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6CFC: .4byte gTasks + thumb_func_end sub_80D6CCC + + thumb_func_start sub_80D6D00 +sub_80D6D00: @ 80D6D00 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl StartSpriteAnim + ldr r0, _080D6D14 @ =sub_80D6CCC + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6D14: .4byte sub_80D6CCC + thumb_func_end sub_80D6D00 + + thumb_func_start sub_80D6D18 +sub_80D6D18: @ 80D6D18 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080D6D2C @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D6D34 + ldr r4, _080D6D30 @ =gBattleAnimBankAttacker + b _080D6D36 + .align 2, 0 +_080D6D2C: .4byte gBattleAnimArgs +_080D6D30: .4byte gBattleAnimBankAttacker +_080D6D34: + ldr r4, _080D6D64 @ =gBattleAnimBankTarget +_080D6D36: + 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 r1, _080D6D68 @ =move_anim_8074EE0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D6D6C @ =sub_80785E4 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6D64: .4byte gBattleAnimBankTarget +_080D6D68: .4byte move_anim_8074EE0 +_080D6D6C: .4byte sub_80785E4 + thumb_func_end sub_80D6D18 + + thumb_func_start sub_80D6D70 +sub_80D6D70: @ 80D6D70 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080D6D84 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D6D8C + ldr r4, _080D6D88 @ =gBattleAnimBankAttacker + b _080D6D8E + .align 2, 0 +_080D6D84: .4byte gBattleAnimArgs +_080D6D88: .4byte gBattleAnimBankAttacker +_080D6D8C: + ldr r4, _080D6DC8 @ =gBattleAnimBankTarget +_080D6D8E: + 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 r1, _080D6DCC @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + strh r0, [r5, 0x24] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x26] + ldr r1, _080D6DD0 @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D6DD4 @ =sub_8078600 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6DC8: .4byte gBattleAnimBankTarget +_080D6DCC: .4byte gBattleAnimArgs +_080D6DD0: .4byte move_anim_8072740 +_080D6DD4: .4byte sub_8078600 + thumb_func_end sub_80D6D70 + + thumb_func_start sub_80D6DD8 +sub_80D6DD8: @ 80D6DD8 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + ldr r4, _080D6E30 @ =gBattleAnimBankAttacker + 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] + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x3A] + movs r0, 0x10 + strh r0, [r5, 0x3C] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080D6E26 + movs r1, 0x3C + ldrsh r0, [r5, r1] + negs r0, r0 + strh r0, [r5, 0x3C] +_080D6E26: + ldr r0, _080D6E34 @ =sub_80D6E38 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6E30: .4byte gBattleAnimBankAttacker +_080D6E34: .4byte sub_80D6E38 + thumb_func_end sub_80D6DD8 + + thumb_func_start sub_80D6E38 +sub_80D6E38: @ 80D6E38 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D6E4A + cmp r0, 0x1 + beq _080D6E60 + b _080D6E90 +_080D6E4A: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x28 + ble _080D6E90 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080D6E90 +_080D6E60: + ldrh r2, [r4, 0x3C] + ldrh r1, [r4, 0x20] + adds r0, r2, r1 + strh r0, [r4, 0x20] + ldr r3, _080D6E98 @ =gSprites + movs r0, 0x3A + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x24] + adds r2, r1 + strh r2, [r0, 0x24] + ldrh r0, [r4, 0x20] + adds r0, 0x50 + lsls r0, 16 + movs r1, 0xC8 + lsls r1, 17 + cmp r0, r1 + bls _080D6E90 + adds r0, r4, 0 + bl move_anim_8074EE0 +_080D6E90: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6E98: .4byte gSprites + thumb_func_end sub_80D6E38 + + thumb_func_start sub_80D6E9C +sub_80D6E9C: @ 80D6E9C + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080D6EC0 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080D6F30 + cmp r0, 0x1 + bgt _080D6EC4 + cmp r0, 0 + beq _080D6ED0 + b _080D7000 + .align 2, 0 +_080D6EC0: .4byte gTasks +_080D6EC4: + cmp r0, 0x2 + beq _080D6F8C + cmp r0, 0x3 + bne _080D6ECE + b _080D6FE0 +_080D6ECE: + b _080D7000 +_080D6ED0: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r5, 0x26] + ldr r4, _080D6F04 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x24] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D6F0C + ldr r0, _080D6F08 @ =0x0000ffe0 + strh r0, [r5, 0x24] + movs r0, 0x2 + b _080D6F12 + .align 2, 0 +_080D6F04: .4byte gBattleAnimBankAttacker +_080D6F08: .4byte 0x0000ffe0 +_080D6F0C: + movs r0, 0x20 + strh r0, [r5, 0x24] + ldr r0, _080D6F28 @ =0x0000fffe +_080D6F12: + strh r0, [r5, 0x22] + ldr r2, _080D6F2C @ =gSprites + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r5, 0x24] + strh r1, [r0, 0x24] + b _080D6FD2 + .align 2, 0 +_080D6F28: .4byte 0x0000fffe +_080D6F2C: .4byte gSprites +_080D6F30: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D7000 + movs r0, 0 + strh r0, [r5, 0xA] + ldr r4, _080D6F88 @ =gSprites + movs r1, 0x26 + ldrsh r0, [r5, r1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + adds r2, 0x3E + ldrb r3, [r2] + lsls r0, r3, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrh r1, [r5, 0x24] + movs r2, 0x24 + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080D6FD2 + ldrh r2, [r5, 0x22] + adds r2, r1, r2 + strh r2, [r5, 0x24] + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x24] + b _080D7000 + .align 2, 0 +_080D6F88: .4byte gSprites +_080D6F8C: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D7000 + movs r0, 0 + strh r0, [r5, 0xA] + ldr r1, _080D6FDC @ =gSprites + movs r2, 0x26 + ldrsh r0, [r5, r2] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + adds r2, 0x3E + ldrb r3, [r2] + lsls r0, r3, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + bne _080D7000 +_080D6FD2: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080D7000 + .align 2, 0 +_080D6FDC: .4byte gSprites +_080D6FE0: + ldr r2, _080D7008 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080D7000: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D7008: .4byte gSprites + thumb_func_end sub_80D6E9C + + thumb_func_start sub_80D700C +sub_80D700C: @ 80D700C + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080D7030 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080D7026 + b _080D714C +_080D7026: + cmp r0, 0x1 + bgt _080D7034 + cmp r0, 0 + beq _080D703C + b _080D718E + .align 2, 0 +_080D7030: .4byte gTasks +_080D7034: + cmp r0, 0x2 + bne _080D703A + b _080D7180 +_080D703A: + b _080D718E +_080D703C: + ldr r4, _080D707C @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080D7052 + movs r1, 0x1 +_080D7052: + movs r6, 0 + strh r1, [r5, 0xA] + ldr r0, _080D7080 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r2, [r0, r1] + adds r3, r0, 0 + cmp r2, 0 + beq _080D7088 + cmp r2, 0x4 + beq _080D70B0 + ldrh r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D70E8 + movs r0, 0x80 + lsls r0, 1 + strh r0, [r5, 0xE] + ldr r0, _080D7084 @ =0x0000fff0 + b _080D70F0 + .align 2, 0 +_080D707C: .4byte gBattleAnimBankAttacker +_080D7080: .4byte gBattleAnimArgs +_080D7084: .4byte 0x0000fff0 +_080D7088: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xE] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x12] + movs r2, 0xA + ldrsh r0, [r5, r2] + lsls r0, 7 + adds r0, 0x78 + strh r0, [r5, 0x10] + b _080D7126 +_080D70B0: + movs r0, 0xA + ldrsh r1, [r5, r0] + lsls r1, 7 + movs r0, 0x78 + subs r0, r1 + strh r0, [r5, 0xE] + ldr r4, _080D70E4 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x12] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + movs r2, 0xA + ldrsh r1, [r5, r2] + lsls r1, 5 + subs r0, r1 + strh r0, [r5, 0x10] + b _080D7126 + .align 2, 0 +_080D70E4: .4byte gBattleAnimBankTarget +_080D70E8: + ldr r0, _080D710C @ =0x0000fff0 + strh r0, [r5, 0xE] + movs r0, 0x80 + lsls r0, 1 +_080D70F0: + strh r0, [r5, 0x10] + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080D7110 + movs r2, 0 + ldrsh r0, [r3, r2] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 1 + movs r0, 0x50 + subs r0, r1 + strh r0, [r5, 0x12] + b _080D7126 + .align 2, 0 +_080D710C: .4byte 0x0000fff0 +_080D7110: + movs r0, 0 + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + adds r0, 0x28 + strh r0, [r5, 0x12] + ldrh r1, [r5, 0xE] + ldrh r0, [r5, 0x10] + strh r0, [r5, 0xE] + strh r1, [r5, 0x10] +_080D7126: + movs r2, 0xE + ldrsh r1, [r5, r2] + movs r2, 0x10 + ldrsh r0, [r5, r2] + cmp r1, r0 + bge _080D713C + movs r1, 0 + movs r0, 0x1 + strh r0, [r5, 0xA] + strh r1, [r5, 0x14] + b _080D7178 +_080D713C: + ldr r0, _080D7148 @ =0x0000ffff + strh r0, [r5, 0xA] + movs r0, 0x3 + strh r0, [r5, 0x14] + b _080D7178 + .align 2, 0 +_080D7148: .4byte 0x0000ffff +_080D714C: + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + cmp r0, 0 + ble _080D718E + movs r0, 0 + strh r0, [r5, 0xC] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80D7194 + lsls r0, 24 + cmp r0, 0 + bne _080D7178 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80D7194 + lsls r0, 24 + cmp r0, 0 + beq _080D718E +_080D7178: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080D718E +_080D7180: + movs r1, 0x16 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D718E + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080D718E: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80D700C + + thumb_func_start sub_80D7194 +sub_80D7194: @ 80D7194 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080D7220 @ =gSpriteTemplate_83D9B10 + movs r2, 0xE + ldrsh r1, [r4, r2] + movs r3, 0x12 + ldrsh r2, [r4, r3] + movs r3, 0x23 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080D71CA + ldr r1, _080D7224 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + strh r5, [r0, 0x3A] + movs r1, 0x7 + strh r1, [r0, 0x3C] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] +_080D71CA: + ldrh r1, [r4, 0xA] + ldrh r5, [r4, 0x14] + adds r0, r1, r5 + strh r0, [r4, 0x14] + lsls r0, 16 + cmp r0, 0 + bge _080D71DC + movs r0, 0x3 + strh r0, [r4, 0x14] +_080D71DC: + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0x3 + ble _080D71E8 + movs r0, 0 + strh r0, [r4, 0x14] +_080D71E8: + movs r3, 0xA + ldrsh r0, [r4, r3] + lsls r0, 4 + ldrh r5, [r4, 0xE] + adds r2, r0, r5 + strh r2, [r4, 0xE] + lsls r0, r1, 16 + asrs r3, r0, 16 + cmp r3, 0x1 + bne _080D7208 + lsls r0, r2, 16 + asrs r0, 16 + movs r5, 0x10 + ldrsh r1, [r4, r5] + cmp r0, r1 + bge _080D721C +_080D7208: + movs r0, 0x1 + negs r0, r0 + cmp r3, r0 + bne _080D7228 + lsls r0, r2, 16 + asrs r0, 16 + movs r2, 0x10 + ldrsh r1, [r4, r2] + cmp r0, r1 + bgt _080D7228 +_080D721C: + movs r0, 0x1 + b _080D722A + .align 2, 0 +_080D7220: .4byte gSpriteTemplate_83D9B10 +_080D7224: .4byte gSprites +_080D7228: + movs r0, 0 +_080D722A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80D7194 + + thumb_func_start sub_80D7230 +sub_80D7230: @ 80D7230 + 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, 0xC + ble _080D7270 + ldr r3, _080D7278 @ =gTasks + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + adds r0, r4, 0 + bl DestroySprite +_080D7270: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D7278: .4byte gTasks + thumb_func_end sub_80D7230 + + thumb_func_start sub_80D727C +sub_80D727C: @ 80D727C + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080D728E + cmp r0, 0x1 + beq _080D72C0 + b _080D72D4 +_080D728E: + ldr r4, _080D72BC @ =gBattleAnimBankAttacker + 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] + adds r0, r5, 0 + movs r1, 0x2 + bl StartSpriteAffineAnim + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080D72D4 + .align 2, 0 +_080D72BC: .4byte gBattleAnimBankAttacker +_080D72C0: + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080D72D4 + adds r0, r5, 0 + bl move_anim_8074EE0 +_080D72D4: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D727C + + thumb_func_start sub_80D72DC +sub_80D72DC: @ 80D72DC + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080D7300 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bls _080D72F6 + b _080D7468 +_080D72F6: + lsls r0, 2 + ldr r1, _080D7304 @ =_080D7308 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D7300: .4byte gTasks +_080D7304: .4byte _080D7308 + .align 2, 0 +_080D7308: + .4byte _080D731C + .4byte _080D73AC + .4byte _080D73E8 + .4byte _080D7444 + .4byte _080D7454 +_080D731C: + ldr r4, _080D73A0 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x16] + movs r0, 0x4 + strh r0, [r5, 0x18] + ldr r0, _080D73A4 @ =gBattleAnimBankTarget + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x1C] + movs r2, 0x1C + ldrsh r0, [r5, r2] + movs r2, 0x14 + ldrsh r1, [r5, r2] + subs r0, r1 + movs r1, 0x5 + bl __divsi3 + strh r0, [r5, 0x1A] + movs r0, 0x7 + strh r0, [r5, 0x10] + ldr r0, _080D73A8 @ =0x0000ffff + strh r0, [r5, 0x12] + movs r0, 0xC + strh r0, [r5, 0x1E] + subs r0, 0x4C + bl sub_8076F98 + lsls r0, 24 + asrs r0, 24 + strh r0, [r5, 0x20] + movs r0, 0x3F + bl sub_8076F98 + lsls r0, 24 + asrs r0, 24 + strh r0, [r5, 0x22] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x24] + movs r1, 0x22 + ldrsh r0, [r5, r1] + movs r2, 0x20 + ldrsh r1, [r5, r2] + subs r0, r1 + movs r1, 0x3 + bl __divsi3 + strh r0, [r5, 0x26] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + b _080D7466 + .align 2, 0 +_080D73A0: .4byte gBattleAnimBankAttacker +_080D73A4: .4byte gBattleAnimBankTarget +_080D73A8: .4byte 0x0000ffff +_080D73AC: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + cmp r0, 0 + ble _080D73DC + movs r0, 0 + strh r0, [r5, 0xA] + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80D7470 + lsls r0, 24 + cmp r0, 0 + beq _080D73DC + movs r1, 0xC + ldrsh r0, [r5, r1] + cmp r0, 0x5 + bne _080D73D6 + movs r0, 0x3 + b _080D73DA +_080D73D6: + ldrh r0, [r5, 0x8] + adds r0, 0x1 +_080D73DA: + strh r0, [r5, 0x8] +_080D73DC: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080D7468 + b _080D745E +_080D73E8: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080D73F6 + subs r0, r1, 0x1 + strh r0, [r5, 0x1E] +_080D73F6: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + movs r3, 0 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080D7468 + strh r3, [r5, 0xA] + ldrh r1, [r5, 0xC] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080D7422 + movs r0, 0x4 + strh r0, [r5, 0x16] + movs r0, 0x44 + strh r0, [r5, 0x18] + strh r3, [r5, 0x10] + strh r2, [r5, 0x12] + b _080D7432 +_080D7422: + movs r0, 0x44 + strh r0, [r5, 0x16] + movs r0, 0x4 + strh r0, [r5, 0x18] + movs r0, 0x7 + strh r0, [r5, 0x10] + ldr r0, _080D7440 @ =0x0000ffff + strh r0, [r5, 0x12] +_080D7432: + movs r1, 0x1E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080D7464 + movs r0, 0x4 + b _080D7466 + .align 2, 0 +_080D7440: .4byte 0x0000ffff +_080D7444: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D7468 + adds r0, r2, 0 + bl DestroyAnimVisualTask + b _080D7468 +_080D7454: + ldrh r1, [r5, 0x1E] + movs r2, 0x1E + ldrsh r0, [r5, r2] + cmp r0, 0 + beq _080D7464 +_080D745E: + subs r0, r1, 0x1 + strh r0, [r5, 0x1E] + b _080D7468 +_080D7464: + movs r0, 0x1 +_080D7466: + strh r0, [r5, 0x8] +_080D7468: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D72DC + + thumb_func_start sub_80D7470 +sub_80D7470: @ 80D7470 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080D7538 @ =gSpriteTemplate_83D9B40 + movs r2, 0x14 + ldrsh r1, [r4, r2] + movs r3, 0x16 + ldrsh r2, [r4, r3] + movs r3, 0x23 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080D74DC + ldr r1, _080D753C @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrh r2, [r3, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + ldrh r6, [r4, 0x10] + adds r1, r6 + ldr r6, _080D7540 @ =0x000003ff + adds r0, r6, 0 + ands r1, r0 + ldr r0, _080D7544 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x10] + adds r0, r1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bge _080D74C4 + movs r0, 0x7 + strh r0, [r4, 0x10] +_080D74C4: + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0x7 + ble _080D74D0 + movs r0, 0 + strh r0, [r4, 0x10] +_080D74D0: + strh r5, [r3, 0x3A] + movs r0, 0x3 + strh r0, [r3, 0x3C] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] +_080D74DC: + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _080D74FE + movs r5, 0x12 + ldrsh r0, [r4, r5] + cmp r0, 0 + ble _080D74FE + ldrh r1, [r4, 0x26] + ldrh r6, [r4, 0x24] + adds r1, r6 + strh r1, [r4, 0x24] + lsls r1, 24 + asrs r1, 24 + movs r0, 0x76 + bl PlaySE12WithPanning +_080D74FE: + movs r0, 0x12 + ldrsh r3, [r4, r0] + ldrh r2, [r4, 0x16] + cmp r3, 0 + bge _080D7514 + lsls r0, r2, 16 + asrs r0, 16 + movs r5, 0x18 + ldrsh r1, [r4, r5] + cmp r0, r1 + ble _080D7524 +_080D7514: + cmp r3, 0 + ble _080D7548 + lsls r0, r2, 16 + asrs r0, 16 + movs r6, 0x18 + ldrsh r1, [r4, r6] + cmp r0, r1 + blt _080D7548 +_080D7524: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x1A] + ldrh r1, [r4, 0x14] + adds r0, r1 + strh r0, [r4, 0x14] + movs r0, 0x1 + b _080D7554 + .align 2, 0 +_080D7538: .4byte gSpriteTemplate_83D9B40 +_080D753C: .4byte gSprites +_080D7540: .4byte 0x000003ff +_080D7544: .4byte 0xfffffc00 +_080D7548: + movs r3, 0x12 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r0, r2, r0 + strh r0, [r4, 0x16] + movs r0, 0 +_080D7554: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80D7470 + + thumb_func_start sub_80D755C +sub_80D755C: @ 80D755C + 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, 0xC + ble _080D7592 + ldr r3, _080D7598 @ =gTasks + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl DestroySprite +_080D7592: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D7598: .4byte gTasks + thumb_func_end sub_80D755C + + thumb_func_start sub_80D759C +sub_80D759C: @ 80D759C + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080D75C0 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080D7618 + cmp r0, 0x1 + bgt _080D75C4 + cmp r0, 0 + beq _080D75CA + b _080D764E + .align 2, 0 +_080D75C0: .4byte gTasks +_080D75C4: + cmp r0, 0x2 + beq _080D7640 + b _080D764E +_080D75CA: + ldr r0, _080D7614 @ =gBattleAnimBankTarget + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r5, 0x26] + strh r0, [r5, 0x24] + cmp r0, 0x10 + ble _080D75F4 + adds r2, r0, 0 +_080D75E4: + adds r1, r2, 0 + subs r1, 0x20 + adds r2, r1, 0 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x10 + bgt _080D75E4 + strh r1, [r5, 0x24] +_080D75F4: + ldr r4, _080D7614 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl sub_8079E90 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x2 + strh r0, [r5, 0x20] + b _080D7638 + .align 2, 0 +_080D7614: .4byte gBattleAnimBankTarget +_080D7618: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D764E + movs r0, 0 + strh r0, [r5, 0xA] + adds r0, r5, 0 + adds r1, r2, 0 + bl sub_80D7654 + lsls r0, 24 + cmp r0, 0 + beq _080D764E +_080D7638: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080D764E +_080D7640: + movs r1, 0x1C + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D764E + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080D764E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D759C + + thumb_func_start sub_80D7654 +sub_80D7654: @ 80D7654 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _080D76B0 @ =gBattleAnimSpriteTemplate_83D97D0 + movs r2, 0x22 + ldrsh r1, [r4, r2] + movs r3, 0x24 + ldrsh r2, [r4, r3] + ldrh r3, [r4, 0x20] + lsls r3, 24 + lsrs r3, 24 + bl CreateSprite + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080D7698 + ldr r3, _080D76B4 @ =gSprites + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r3, 0 + adds r1, 0x1C + adds r1, r0, r1 + ldr r2, _080D76B8 @ =sub_80D76C4 + str r2, [r1] + adds r0, r3 + strh r5, [r0, 0x3A] + movs r1, 0xA + strh r1, [r0, 0x3C] + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] +_080D7698: + ldrh r2, [r4, 0x24] + movs r0, 0x24 + ldrsh r1, [r4, r0] + movs r3, 0x26 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080D76BC + adds r0, r2, 0 + adds r0, 0x20 + strh r0, [r4, 0x24] + movs r0, 0 + b _080D76BE + .align 2, 0 +_080D76B0: .4byte gBattleAnimSpriteTemplate_83D97D0 +_080D76B4: .4byte gSprites +_080D76B8: .4byte sub_80D76C4 +_080D76BC: + movs r0, 0x1 +_080D76BE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80D7654 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/dark.s b/asm/dark.s new file mode 100755 index 000000000..5175d84f0 --- /dev/null +++ b/asm/dark.s @@ -0,0 +1,2013 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ dark + + thumb_func_start sub_80DFF1C +sub_80DFF1C: @ 80DFF1C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080DFF50 @ =gBattleAnimArgs + 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] + ldrb r1, [r5, 0x4] + adds r0, r4, 0 + bl StartSpriteAffineAnim + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x32] + ldr r0, _080DFF54 @ =sub_80DFF58 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DFF50: .4byte gBattleAnimArgs +_080DFF54: .4byte sub_80DFF58 + thumb_func_end sub_80DFF1C + + thumb_func_start sub_80DFF58 +sub_80DFF58: @ 80DFF58 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x36] + adds r0, r1 + strh r0, [r2, 0x36] + ldrh r1, [r2, 0x30] + ldrh r3, [r2, 0x38] + adds r1, r3 + strh r1, [r2, 0x38] + lsls r0, 16 + asrs r0, 24 + strh r0, [r2, 0x24] + lsls r1, 16 + asrs r1, 24 + strh r1, [r2, 0x26] + ldrh r0, [r2, 0x34] + adds r0, 0x1 + strh r0, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x32 + ldrsh r1, [r2, r3] + cmp r0, r1 + bne _080DFF8E + ldr r0, _080DFF94 @ =sub_80DFF98 + str r0, [r2, 0x1C] +_080DFF8E: + pop {r0} + bx r0 + .align 2, 0 +_080DFF94: .4byte sub_80DFF98 + thumb_func_end sub_80DFF58 + + thumb_func_start sub_80DFF98 +sub_80DFF98: @ 80DFF98 + push {lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x36] + ldrh r0, [r3, 0x2E] + subs r1, r0 + strh r1, [r3, 0x36] + ldrh r0, [r3, 0x38] + ldrh r2, [r3, 0x30] + subs r0, r2 + strh r0, [r3, 0x38] + lsls r1, 16 + asrs r1, 24 + strh r1, [r3, 0x24] + lsls r0, 16 + asrs r0, 24 + strh r0, [r3, 0x26] + ldrh r0, [r3, 0x34] + subs r0, 0x1 + strh r0, [r3, 0x34] + lsls r0, 16 + cmp r0, 0 + bne _080DFFCA + adds r0, r3, 0 + bl move_anim_8074EE0 +_080DFFCA: + pop {r0} + bx r0 + thumb_func_end sub_80DFF98 + + thumb_func_start sub_80DFFD0 +sub_80DFFD0: @ 80DFFD0 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _080DFFE4 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + adds r3, r0, 0 + cmp r1, 0 + bne _080DFFEC + ldr r0, _080DFFE8 @ =gBattleAnimBankAttacker + b _080DFFEE + .align 2, 0 +_080DFFE4: .4byte gBattleAnimArgs +_080DFFE8: .4byte gBattleAnimBankAttacker +_080DFFEC: + ldr r0, _080E001C @ =gBattleAnimBankTarget +_080DFFEE: + ldrb r5, [r0] + movs r6, 0x14 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x4 + ldr r7, _080E0020 @ =0x000003ff + adds r0, r7, 0 + ands r1, r0 + ldr r0, _080E0024 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + movs r1, 0x2 + ldrsh r0, [r3, r1] + cmp r0, 0x1 + beq _080E004C + cmp r0, 0x1 + bgt _080E0028 + cmp r0, 0 + beq _080E0032 + b _080E00A0 + .align 2, 0 +_080E001C: .4byte gBattleAnimBankTarget +_080E0020: .4byte 0x000003ff +_080E0024: .4byte 0xfffffc00 +_080E0028: + cmp r0, 0x2 + beq _080E0066 + cmp r0, 0x3 + beq _080E007E + b _080E00A0 +_080E0032: + adds r0, r5, 0 + movs r1, 0x5 + bl sub_807A100 + subs r0, 0x8 + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x8 + strh r0, [r4, 0x22] + b _080E00A0 +_080E004C: + adds r0, r5, 0 + movs r1, 0x5 + bl sub_807A100 + subs r0, 0xE + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x10 + strh r0, [r4, 0x22] + b _080E00A0 +_080E0066: + adds r0, r5, 0 + movs r1, 0x4 + bl sub_807A100 + adds r0, 0x8 + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x8 + b _080E0094 +_080E007E: + adds r0, r5, 0 + movs r1, 0x4 + bl sub_807A100 + adds r0, 0xE + strh r0, [r4, 0x20] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x10 +_080E0094: + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + movs r6, 0xEC +_080E00A0: + movs r0, 0x20 + strh r0, [r4, 0x2E] + lsls r0, r6, 24 + asrs r0, 24 + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + adds r0, 0xC + strh r0, [r4, 0x36] + ldr r0, _080E00C8 @ =0x0000fff4 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_80786EC + ldr r0, _080E00CC @ =sub_80E00D0 + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E00C8: .4byte 0x0000fff4 +_080E00CC: .4byte sub_80E00D0 + thumb_func_end sub_80DFFD0 + + thumb_func_start sub_80E00D0 +sub_80E00D0: @ 80E00D0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080E00E4 + adds r0, r4, 0 + bl move_anim_8074EE0 +_080E00E4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E00D0 + + thumb_func_start sub_80E00EC +sub_80E00EC: @ 80E00EC + push {r4-r7,lr} + sub sp, 0x18 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080E0150 @ =gTasks + adds r5, r1, r0 + ldr r4, _080E0154 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1F + movs r6, 0 + strh r0, [r5, 0x16] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_807A100 + subs r0, 0x7 + strh r0, [r5, 0x14] + ldrh r1, [r5, 0x16] + strh r1, [r5, 0x12] + strh r0, [r5, 0x10] + subs r1, r0 + lsls r1, 8 + strh r1, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r5, 0x24] + adds r0, 0x20 + strh r0, [r5, 0x26] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080E015C + ldr r0, _080E0158 @ =0x0000fff4 + b _080E015E + .align 2, 0 +_080E0150: .4byte gTasks +_080E0154: .4byte gBattleAnimBankAttacker +_080E0158: .4byte 0x0000fff4 +_080E015C: + ldr r0, _080E01A8 @ =0x0000ffc0 +_080E015E: + strh r0, [r5, 0x18] + ldr r0, _080E01AC @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xE] + cmp r0, 0x1 + bne _080E01C4 + add r4, sp, 0xC + adds r0, r4, 0 + bl sub_8078914 + ldr r0, _080E01B0 @ =gUnknown_030041B4 + ldrh r0, [r0] + strh r0, [r5, 0x1C] + ldr r1, _080E01B4 @ =REG_BLDCNT + ldr r2, _080E01B8 @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + ldrb r1, [r4, 0x8] + lsls r1, 4 + movs r0, 0 + movs r2, 0x20 + bl FillPalette + ldr r0, _080E01BC @ =REG_BG1VOFS + str r0, [sp] + movs r7, 0x2 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E01F4 + ldr r1, _080E01C0 @ =gUnknown_03004288 + b _080E01EE + .align 2, 0 +_080E01A8: .4byte 0x0000ffc0 +_080E01AC: .4byte gBattleAnimBankAttacker +_080E01B0: .4byte gUnknown_030041B4 +_080E01B4: .4byte REG_BLDCNT +_080E01B8: .4byte 0x00003f42 +_080E01BC: .4byte REG_BG1VOFS +_080E01C0: .4byte gUnknown_03004288 +_080E01C4: + ldr r0, _080E0278 @ =gUnknown_03004280 + ldrh r0, [r0] + strh r0, [r5, 0x1C] + ldr r1, _080E027C @ =REG_BLDCNT + ldr r2, _080E0280 @ =0x00003f44 + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0 + movs r1, 0x90 + movs r2, 0x20 + bl FillPalette + ldr r0, _080E0284 @ =REG_BG2VOFS + str r0, [sp] + movs r7, 0x4 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E01F4 + ldr r1, _080E0288 @ =gUnknown_030042C0 +_080E01EE: + ldrh r0, [r1] + adds r0, 0xF0 + strh r0, [r1] +_080E01F4: + ldr r0, _080E028C @ =0xa2600001 + str r0, [sp, 0x4] + mov r2, sp + movs r1, 0 + movs r0, 0x1 + strb r0, [r2, 0x8] + mov r0, sp + strb r1, [r0, 0x9] + strh r1, [r5, 0x1E] + movs r0, 0x10 + strh r0, [r5, 0x20] + strh r1, [r5, 0x8] + strh r1, [r5, 0xA] + strh r1, [r5, 0xC] + movs r0, 0x3 + bl sub_80E08CC + movs r3, 0 + ldr r4, _080E0290 @ =gUnknown_03004DE0 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r4, r0 +_080E0220: + lsls r1, r3, 1 + adds r2, r1, r4 + ldrh r0, [r5, 0x1C] + strh r0, [r2] + adds r1, r6 + ldrh r0, [r5, 0x1C] + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x6F + bls _080E0220 + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_80895F8 + ldr r1, _080E0294 @ =REG_WINOUT + movs r0, 0x3F + eors r7, r0 + movs r2, 0xFC + lsls r2, 6 + adds r0, r2, 0 + orrs r7, r0 + strh r7, [r1] + subs r1, 0x2 + adds r2, 0x3F + adds r0, r2, 0 + strh r0, [r1] + ldr r2, _080E0298 @ =gUnknown_030042C4 + ldrh r0, [r5, 0x24] + lsls r0, 8 + ldrh r1, [r5, 0x26] + orrs r0, r1 + strh r0, [r2] + ldr r1, _080E029C @ =gUnknown_03004240 + movs r0, 0xA0 + strh r0, [r1] + ldr r0, _080E02A0 @ =sub_80E02A4 + str r0, [r5] + add sp, 0x18 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E0278: .4byte gUnknown_03004280 +_080E027C: .4byte REG_BLDCNT +_080E0280: .4byte 0x00003f44 +_080E0284: .4byte REG_BG2VOFS +_080E0288: .4byte gUnknown_030042C0 +_080E028C: .4byte 0xa2600001 +_080E0290: .4byte gUnknown_03004DE0 +_080E0294: .4byte REG_WINOUT +_080E0298: .4byte gUnknown_030042C4 +_080E029C: .4byte gUnknown_03004240 +_080E02A0: .4byte sub_80E02A4 + thumb_func_end sub_80E00EC + + thumb_func_start sub_80E02A4 +sub_80E02A4: @ 80E02A4 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E02C8 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080E02BE + b _080E03B6 +_080E02BE: + lsls r0, 2 + ldr r1, _080E02CC @ =_080E02D0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E02C8: .4byte gTasks +_080E02CC: .4byte _080E02D0 + .align 2, 0 +_080E02D0: + .4byte _080E02E4 + .4byte _080E0344 + .4byte _080E035E + .4byte _080E039C + .4byte _080E03B0 +_080E02E4: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E03B6 + 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 _080E0314 + ldrh r1, [r4, 0x1E] + movs r2, 0x1E + ldrsh r0, [r4, r2] + cmp r0, 0xC + beq _080E0322 + adds r0, r1, 0x1 + strh r0, [r4, 0x1E] + b _080E0322 +_080E0314: + ldrh r1, [r4, 0x20] + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x8 + beq _080E0322 + subs r0, r1, 0x1 + strh r0, [r4, 0x20] +_080E0322: + ldr r2, _080E0340 @ =REG_BLDALPHA + ldrh r0, [r4, 0x20] + lsls r0, 8 + ldrh r1, [r4, 0x1E] + orrs r0, r1 + strh r0, [r2] + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0xC + bne _080E03B6 + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x8 + bne _080E03B6 + b _080E03A2 + .align 2, 0 +_080E0340: .4byte REG_BLDALPHA +_080E0344: + ldrh r0, [r4, 0x10] + subs r0, 0x8 + strh r0, [r4, 0x10] + adds r0, r4, 0 + bl sub_80E079C + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r1, r0 + bge _080E03B6 + b _080E03A2 +_080E035E: + ldrh r0, [r4, 0x10] + subs r0, 0x8 + strh r0, [r4, 0x10] + adds r0, r4, 0 + bl sub_80E079C + ldrh r1, [r4, 0x24] + adds r1, 0x4 + strh r1, [r4, 0x24] + ldrh r0, [r4, 0x26] + subs r2, r0, 0x4 + strh r2, [r4, 0x26] + lsls r1, 16 + lsls r0, r2, 16 + cmp r1, r0 + blt _080E0380 + strh r2, [r4, 0x24] +_080E0380: + ldr r3, _080E0398 @ =gUnknown_030042C4 + ldrh r2, [r4, 0x24] + lsls r0, r2, 8 + ldrh r1, [r4, 0x26] + orrs r0, r1 + strh r0, [r3] + lsls r2, 16 + lsls r1, 16 + cmp r2, r1 + bne _080E03B6 + b _080E03A2 + .align 2, 0 +_080E0398: .4byte gUnknown_030042C4 +_080E039C: + ldr r1, _080E03AC @ =gUnknown_03004DC0 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080E03A2: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E03B6 + .align 2, 0 +_080E03AC: .4byte gUnknown_03004DC0 +_080E03B0: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E03B6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E02A4 + + thumb_func_start sub_80E03BC +sub_80E03BC: @ 80E03BC + push {r4-r7,lr} + sub sp, 0x18 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080E03E4 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bls _080E03D8 + b _080E05F2 +_080E03D8: + lsls r0, 2 + ldr r1, _080E03E8 @ =_080E03EC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E03E4: .4byte gTasks +_080E03E8: .4byte _080E03EC + .align 2, 0 +_080E03EC: + .4byte _080E0400 + .4byte _080E048C + .4byte _080E04D0 + .4byte _080E053C + .4byte _080E05A4 +_080E0400: + bl NotInBattle + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E043C + ldr r0, _080E042C @ =gUnknown_030042C4 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E0430 @ =gUnknown_03004240 + strh r1, [r0] + ldr r0, _080E0434 @ =REG_WININ + ldr r2, _080E0438 @ =0x00003f3f + adds r1, r2, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080E05F2 + .align 2, 0 +_080E042C: .4byte gUnknown_030042C4 +_080E0430: .4byte gUnknown_03004240 +_080E0434: .4byte REG_WININ +_080E0438: .4byte 0x00003f3f +_080E043C: + ldr r0, _080E045C @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xE] + cmp r0, 0x1 + bne _080E046C + ldr r1, _080E0460 @ =REG_BLDCNT + ldr r2, _080E0464 @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080E0468 @ =gUnknown_03004288 + b _080E0476 + .align 2, 0 +_080E045C: .4byte gBattleAnimBankTarget +_080E0460: .4byte REG_BLDCNT +_080E0464: .4byte 0x00003f42 +_080E0468: .4byte gUnknown_03004288 +_080E046C: + ldr r1, _080E0480 @ =REG_BLDCNT + ldr r2, _080E0484 @ =0x00003f44 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080E0488 @ =gUnknown_030042C0 +_080E0476: + ldrh r0, [r1] + adds r0, 0xF0 + strh r0, [r1] + b _080E0590 + .align 2, 0 +_080E0480: .4byte REG_BLDCNT +_080E0484: .4byte 0x00003f44 +_080E0488: .4byte gUnknown_030042C0 +_080E048C: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080E04B4 + mov r0, sp + bl sub_8078914 + ldr r0, _080E04B0 @ =gUnknown_030041B4 + ldrh r0, [r0] + strh r0, [r5, 0x1C] + mov r0, sp + ldrb r1, [r0, 0x8] + lsls r1, 4 + movs r0, 0 + movs r2, 0x20 + bl FillPalette + b _080E04C4 + .align 2, 0 +_080E04B0: .4byte gUnknown_030041B4 +_080E04B4: + ldr r0, _080E04CC @ =gUnknown_03004280 + ldrh r0, [r0] + strh r0, [r5, 0x1C] + movs r0, 0 + movs r1, 0x90 + movs r2, 0x20 + bl FillPalette +_080E04C4: + movs r0, 0x3 + bl sub_80E08CC + b _080E0590 + .align 2, 0 +_080E04CC: .4byte gUnknown_03004280 +_080E04D0: + ldr r4, _080E051C @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1F + movs r6, 0 + strh r0, [r5, 0x16] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_807A100 + subs r0, 0x7 + strh r0, [r5, 0x14] + ldrh r1, [r5, 0x16] + subs r1, r0 + lsls r1, 8 + strh r1, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + subs r1, r0, 0x4 + strh r1, [r5, 0x24] + adds r0, 0x4 + strh r0, [r5, 0x26] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080E0524 + ldr r0, _080E0520 @ =0x0000fff4 + b _080E0526 + .align 2, 0 +_080E051C: .4byte gBattleAnimBankTarget +_080E0520: .4byte 0x0000fff4 +_080E0524: + ldr r0, _080E0538 @ =0x0000ffc0 +_080E0526: + strh r0, [r5, 0x18] + ldrh r0, [r5, 0x18] + strh r0, [r5, 0x10] + strh r0, [r5, 0x12] + movs r0, 0xC + strh r0, [r5, 0x1E] + movs r0, 0x8 + strh r0, [r5, 0x20] + b _080E0590 + .align 2, 0 +_080E0538: .4byte 0x0000ffc0 +_080E053C: + movs r2, 0xE + ldrsh r0, [r5, r2] + cmp r0, 0x1 + bne _080E054C + ldr r0, _080E0548 @ =REG_BG1VOFS + b _080E054E + .align 2, 0 +_080E0548: .4byte REG_BG1VOFS +_080E054C: + ldr r0, _080E0598 @ =REG_BG2VOFS +_080E054E: + str r0, [sp, 0xC] + movs r3, 0 + add r4, sp, 0xC + ldr r6, _080E059C @ =gUnknown_03004DE0 + movs r0, 0xF0 + lsls r0, 3 + adds r7, r6, r0 +_080E055C: + lsls r1, r3, 1 + adds r2, r1, r6 + ldrh r0, [r5, 0x1C] + adds r0, 0x9F + subs r0, r3 + strh r0, [r2] + adds r1, r7 + ldrh r0, [r5, 0x1C] + adds r0, 0x9F + subs r0, r3 + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x6F + bls _080E055C + ldr r1, _080E05A0 @ =0xa2600001 + str r1, [r4, 0x4] + movs r2, 0 + movs r0, 0x1 + strb r0, [r4, 0x8] + strb r2, [r4, 0x9] + ldr r0, [sp, 0xC] + ldr r2, [r4, 0x8] + bl sub_80895F8 +_080E0590: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080E05F2 + .align 2, 0 +_080E0598: .4byte REG_BG2VOFS +_080E059C: .4byte gUnknown_03004DE0 +_080E05A0: .4byte 0xa2600001 +_080E05A4: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080E05BC + ldr r1, _080E05B4 @ =REG_WINOUT + ldr r2, _080E05B8 @ =0x00003f3d + b _080E05C0 + .align 2, 0 +_080E05B4: .4byte REG_WINOUT +_080E05B8: .4byte 0x00003f3d +_080E05BC: + ldr r1, _080E05FC @ =REG_WINOUT + ldr r2, _080E0600 @ =0x00003f3b +_080E05C0: + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080E0604 @ =REG_WININ + ldr r2, _080E0608 @ =0x00003f3f + adds r0, r2, 0 + strh r0, [r1] + ldr r2, _080E060C @ =gUnknown_030042C4 + ldrh r0, [r5, 0x24] + lsls r0, 8 + ldrh r1, [r5, 0x26] + orrs r0, r1 + strh r0, [r2] + ldr r1, _080E0610 @ =gUnknown_03004240 + movs r0, 0xA0 + strh r0, [r1] + movs r0, 0 + strh r0, [r5, 0x8] + strh r0, [r5, 0xA] + strh r0, [r5, 0xC] + ldr r1, _080E0614 @ =REG_BLDALPHA + ldr r2, _080E0618 @ =0x0000080c + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _080E061C @ =sub_80E0620 + str r0, [r5] +_080E05F2: + add sp, 0x18 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E05FC: .4byte REG_WINOUT +_080E0600: .4byte 0x00003f3b +_080E0604: .4byte REG_WININ +_080E0608: .4byte 0x00003f3f +_080E060C: .4byte gUnknown_030042C4 +_080E0610: .4byte gUnknown_03004240 +_080E0614: .4byte REG_BLDALPHA +_080E0618: .4byte 0x0000080c +_080E061C: .4byte sub_80E0620 + thumb_func_end sub_80E03BC + + thumb_func_start sub_80E0620 +sub_80E0620: @ 80E0620 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E0644 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080E063A + b _080E0784 +_080E063A: + lsls r0, 2 + ldr r1, _080E0648 @ =_080E064C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E0644: .4byte gTasks +_080E0648: .4byte _080E064C + .align 2, 0 +_080E064C: + .4byte _080E0660 + .4byte _080E068C + .4byte _080E06F4 + .4byte _080E0754 + .4byte _080E0768 +_080E0660: + ldrh r0, [r4, 0x12] + adds r0, 0x8 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r4, 0x16] + movs r3, 0x16 + ldrsh r1, [r4, r3] + cmp r0, r1 + blt _080E0676 + strh r2, [r4, 0x12] +_080E0676: + adds r0, r4, 0 + bl sub_80E079C + movs r0, 0x12 + ldrsh r1, [r4, r0] + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _080E068A + b _080E0784 +_080E068A: + b _080E075A +_080E068C: + movs r3, 0x26 + ldrsh r0, [r4, r3] + movs r2, 0x24 + ldrsh r1, [r4, r2] + subs r0, r1 + cmp r0, 0x3F + bgt _080E06A8 + ldrh r0, [r4, 0x24] + subs r0, 0x4 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x26] + adds r0, 0x4 + strh r0, [r4, 0x26] + b _080E06AC +_080E06A8: + movs r0, 0x1 + strh r0, [r4, 0xA] +_080E06AC: + ldr r2, _080E06F0 @ =gUnknown_030042C4 + ldrh r0, [r4, 0x24] + lsls r0, 8 + ldrh r1, [r4, 0x26] + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r4, 0x10] + adds r0, 0x8 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + ldrh r2, [r4, 0x14] + movs r3, 0x14 + ldrsh r1, [r4, r3] + cmp r0, r1 + blt _080E06CE + strh r2, [r4, 0x10] +_080E06CE: + adds r0, r4, 0 + bl sub_80E079C + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080E0784 + movs r3, 0xA + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080E0784 + movs r0, 0 + strh r0, [r4, 0xA] + b _080E075A + .align 2, 0 +_080E06F0: .4byte gUnknown_030042C4 +_080E06F4: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E0784 + 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 _080E0724 + ldrh r1, [r4, 0x1E] + movs r2, 0x1E + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080E0732 + subs r0, r1, 0x1 + strh r0, [r4, 0x1E] + b _080E0732 +_080E0724: + ldrh r1, [r4, 0x20] + movs r3, 0x20 + ldrsh r0, [r4, r3] + cmp r0, 0xF + bgt _080E0732 + adds r0, r1, 0x1 + strh r0, [r4, 0x20] +_080E0732: + ldr r2, _080E0750 @ =REG_BLDALPHA + ldrh r0, [r4, 0x20] + lsls r0, 8 + ldrh r1, [r4, 0x1E] + orrs r0, r1 + strh r0, [r2] + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E0784 + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x10 + bne _080E0784 + b _080E075A + .align 2, 0 +_080E0750: .4byte REG_BLDALPHA +_080E0754: + ldr r1, _080E0764 @ =gUnknown_03004DC0 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080E075A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E0784 + .align 2, 0 +_080E0764: .4byte gUnknown_03004DC0 +_080E0768: + ldr r0, _080E078C @ =gUnknown_030042C4 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E0790 @ =gUnknown_03004240 + strh r1, [r0] + ldr r0, _080E0794 @ =REG_WININ + ldr r3, _080E0798 @ =0x00003f3f + adds r1, r3, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E0784: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E078C: .4byte gUnknown_030042C4 +_080E0790: .4byte gUnknown_03004240 +_080E0794: .4byte REG_WININ +_080E0798: .4byte 0x00003f3f + thumb_func_end sub_80E0620 + + thumb_func_start sub_80E079C +sub_80E079C: @ 80E079C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldrh r0, [r6, 0x12] + ldrh r4, [r6, 0x10] + subs r0, r4 + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0 + beq _080E0890 + movs r2, 0x22 + ldrsh r0, [r6, r2] + bl __divsi3 + mov r8, r0 + movs r3, 0x14 + ldrsh r0, [r6, r3] + lsls r5, r0, 8 + lsls r0, r4, 16 + movs r4, 0 + cmp r0, 0 + ble _080E07FC + ldr r0, _080E0888 @ =gUnknown_03004DE0 + mov r12, r0 + ldr r7, _080E088C @ =gUnknown_03004DC0 +_080E07D0: + lsls r2, r4, 16 + asrs r2, 16 + lsls r3, r2, 1 + ldrb r1, [r7, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r3, r0 + add r3, r12 + adds r1, r2, 0 + subs r1, 0x9F + ldrh r0, [r6, 0x1C] + subs r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + lsrs r4, r2, 16 + asrs r2, 16 + movs r1, 0x10 + ldrsh r0, [r6, r1] + cmp r2, r0 + blt _080E07D0 +_080E07FC: + ldrh r4, [r6, 0x10] + lsls r3, r4, 16 + asrs r1, r3, 16 + movs r2, 0x12 + ldrsh r0, [r6, r2] + cmp r1, r0 + bgt _080E0846 + ldr r0, _080E0888 @ =gUnknown_03004DE0 + mov r12, r0 + ldr r7, _080E088C @ =gUnknown_03004DC0 +_080E0810: + asrs r4, r3, 16 + cmp r4, 0 + blt _080E0832 + asrs r1, r5, 8 + subs r1, r4 + lsls r3, r4, 1 + ldrb r2, [r7, 0x14] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 7 + adds r3, r0 + add r3, r12 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r6, 0x1C] + adds r1, r2 + strh r1, [r3] +_080E0832: + add r5, r8 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + lsls r3, r4, 16 + asrs r1, r3, 16 + movs r2, 0x12 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _080E0810 +_080E0846: + movs r3, 0x1C + ldrsh r0, [r6, r3] + adds r0, 0x9F + lsls r2, r4, 16 + asrs r1, r2, 16 + subs r5, r0, r1 + movs r3, 0x16 + ldrsh r0, [r6, r3] + cmp r1, r0 + bge _080E08BE + ldr r7, _080E0888 @ =gUnknown_03004DE0 + ldr r4, _080E088C @ =gUnknown_03004DC0 +_080E085E: + asrs r3, r2, 16 + cmp r3, 0 + blt _080E0876 + lsls r2, r3, 1 + ldrb r1, [r4, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r7 + strh r5, [r2] + subs r5, 0x1 +_080E0876: + adds r0, r3, 0x1 + lsls r2, r0, 16 + asrs r1, r2, 16 + movs r3, 0x16 + ldrsh r0, [r6, r3] + cmp r1, r0 + blt _080E085E + b _080E08BE + .align 2, 0 +_080E0888: .4byte gUnknown_03004DE0 +_080E088C: .4byte gUnknown_03004DC0 +_080E0890: + movs r1, 0x1C + ldrsh r0, [r6, r1] + adds r5, r0, 0 + adds r5, 0x9F + movs r4, 0 + ldr r3, _080E08C8 @ =gUnknown_03004DE0 + movs r2, 0xF0 + lsls r2, 3 + adds r6, r3, r2 +_080E08A2: + lsls r0, r4, 16 + asrs r0, 16 + lsls r2, r0, 1 + adds r1, r2, r3 + strh r5, [r1] + adds r2, r6 + strh r5, [r2] + subs r5, 0x1 + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + asrs r0, 16 + cmp r0, 0x6F + ble _080E08A2 +_080E08BE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E08C8: .4byte gUnknown_03004DE0 + thumb_func_end sub_80E079C + + thumb_func_start sub_80E08CC +sub_80E08CC: @ 80E08CC + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + movs r4, 0 + ldr r7, _080E0914 @ =gSprites + movs r1, 0x3 + ands r0, r1 + lsls r5, r0, 2 + movs r0, 0xD + negs r0, r0 + adds r6, r0, 0 +_080E08E2: + lsls r0, r4, 24 + lsrs r0, 24 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080E0902 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r7 + ldrb r0, [r1, 0x5] + ands r0, r6 + orrs r0, r5 + strb r0, [r1, 0x5] +_080E0902: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _080E08E2 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E0914: .4byte gSprites + thumb_func_end sub_80E08CC + + thumb_func_start sub_80E0918 +sub_80E0918: @ 80E0918 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r6, _080E09B8 @ =gBattleAnimBankAttacker + ldrb r0, [r6] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r4, r1, 31 + ldrb r0, [r6] + adds r1, r4, 0 + bl sub_8076034 + ldr r0, _080E09BC @ =gSprites + mov r9, r0 + ldr r0, _080E09C0 @ =gObjectBankIDs + mov r8, r0 + ldrb r0, [r6] + add r0, r8 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r9 + adds r1, 0x3E + ldrb r2, [r1] + movs r7, 0x5 + negs r7, r7 + adds r0, r7, 0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080E09A2 + ldrb r0, [r6] + eors r0, r5 + movs r1, 0x1 + eors r4, r1 + adds r1, r4, 0 + bl sub_8076034 + ldrb r0, [r6] + eors r0, r5 + add r0, r8 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r9 + adds r0, 0x3E + ldrb r2, [r0] + adds r1, r7, 0 + ands r1, r2 + strb r1, [r0] +_080E09A2: + mov r0, r10 + bl DestroyAnimVisualTask + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E09B8: .4byte gBattleAnimBankAttacker +_080E09BC: .4byte gSprites +_080E09C0: .4byte gObjectBankIDs + thumb_func_end sub_80E0918 + + thumb_func_start sub_80E09C4 +sub_80E09C4: @ 80E09C4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r4, _080E0A0C @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r5, r1, 31 + adds r0, r5, 0 + bl sub_8076464 + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080E0A00 + movs r0, 0x1 + eors r5, r0 + adds r0, r5, 0 + bl sub_8076464 +_080E0A00: + adds r0, r6, 0 + bl DestroyAnimVisualTask + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E0A0C: .4byte gBattleAnimBankAttacker + thumb_func_end sub_80E09C4 + + thumb_func_start sub_80E0A10 +sub_80E0A10: @ 80E0A10 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080E0A40 @ =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] + ldrb r1, [r1, 0x4] + adds r0, r4, 0 + bl StartSpriteAnim + ldr r0, _080E0A44 @ =sub_8078600 + str r0, [r4, 0x1C] + ldr r1, _080E0A48 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E0A40: .4byte gBattleAnimArgs +_080E0A44: .4byte sub_8078600 +_080E0A48: .4byte move_anim_8072740 + thumb_func_end sub_80E0A10 + + thumb_func_start sub_80E0A4C +sub_80E0A4C: @ 80E0A4C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r7, 0 + ldr r0, _080E0B50 @ =gUnknown_030042C4 + strh r7, [r0] + ldr r0, _080E0B54 @ =gUnknown_03004240 + strh r7, [r0] + ldr r1, _080E0B58 @ =REG_WININ + ldr r2, _080E0B5C @ =0x00003f3f + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r3, _080E0B60 @ =0x00003f3d + adds r0, r3, 0 + strh r0, [r1] + movs r2, 0x80 + lsls r2, 19 + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _080E0B64 @ =REG_BLDCNT + ldr r2, _080E0B68 @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r3, _080E0B6C @ =0x00000c08 + adds r0, r3, 0 + strh r0, [r1] + ldr r5, _080E0B70 @ =REG_BG1CNT + ldrb r1, [r5] + movs r0, 0x4 + negs r0, r0 + mov r8, r0 + ands r0, r1 + strb r0, [r5] + ldrb r1, [r5, 0x1] + movs r0, 0x3F + ands r0, r1 + strb r0, [r5, 0x1] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E0AC4 + ldrb r0, [r5] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r5] +_080E0AC4: + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + beq _080E0B40 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E0B40 + ldr r4, _080E0B74 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _080E0AF4 + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + cmp r0, 0 + bne _080E0B40 +_080E0AF4: + ldrb r0, [r4] + movs r6, 0x2 + eors r0, r6 + bl IsAnimBankSpriteVisible + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E0B40 + ldr r3, _080E0B78 @ =gSprites + ldr r1, _080E0B7C @ =gObjectBankIDs + ldrb r0, [r4] + eors r0, r6 + adds r0, r1 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldrb r1, [r5] + mov r0, r8 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r5] + movs r7, 0x1 +_080E0B40: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E0B84 + ldr r0, _080E0B80 @ =gSharedMem + 0x19348 + ldrh r5, [r0] + b _080E0BCC + .align 2, 0 +_080E0B50: .4byte gUnknown_030042C4 +_080E0B54: .4byte gUnknown_03004240 +_080E0B58: .4byte REG_WININ +_080E0B5C: .4byte 0x00003f3f +_080E0B60: .4byte 0x00003f3d +_080E0B64: .4byte REG_BLDCNT +_080E0B68: .4byte 0x00003f42 +_080E0B6C: .4byte 0x00000c08 +_080E0B70: .4byte REG_BG1CNT +_080E0B74: .4byte gBattleAnimBankAttacker +_080E0B78: .4byte gSprites +_080E0B7C: .4byte gObjectBankIDs +_080E0B80: .4byte gSharedMem + 0x19348 +_080E0B84: + ldr r4, _080E0BA4 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080E0BB0 + ldr r1, _080E0BA8 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E0BAC @ =gEnemyParty + b _080E0BC0 + .align 2, 0 +_080E0BA4: .4byte gBattleAnimBankAttacker +_080E0BA8: .4byte gBattlePartyID +_080E0BAC: .4byte gEnemyParty +_080E0BB0: + ldr r1, _080E0C58 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E0C5C @ =gPlayerParty +_080E0BC0: + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r5, r0, 16 +_080E0BCC: + movs r0, 0 + bl GetAnimBankSpriteId + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080E0C60 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_807A4A0 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, sp + bl sub_8078914 + ldr r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0xC] + ldr r2, _080E0C64 @ =0x040000d4 + add r0, sp, 0xC + str r0, [r2] + str r1, [r2, 0x4] + ldr r0, _080E0C68 @ =0x85000400 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + ldr r0, _080E0C6C @ =gUnknown_08D1D574 + bl LZDecompressVram + ldr r0, _080E0C70 @ =gUnknown_08D1D410 + ldr r1, [sp] + bl LZDecompressVram + ldr r0, _080E0C74 @ =gUnknown_08D1D54C + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette + ldr r2, _080E0C78 @ =gUnknown_030042C0 + ldr r0, _080E0C7C @ =gSprites + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x20] + negs r0, r0 + adds r0, 0x60 + strh r0, [r2] + ldr r2, _080E0C80 @ =gUnknown_030041B4 + ldrh r0, [r1, 0x22] + negs r0, r0 + adds r0, 0x20 + strh r0, [r2] + ldrb r0, [r1, 0x5] + lsrs r0, 4 + adds r0, 0x10 + adds r1, r0, 0 + ldr r2, _080E0C84 @ =gBattleAnimArgs + movs r3, 0x2 + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _080E0C88 + adds r0, r1, 0 + movs r1, 0 + bl sub_8079108 + b _080E0C94 + .align 2, 0 +_080E0C58: .4byte gBattlePartyID +_080E0C5C: .4byte gPlayerParty +_080E0C60: .4byte gBattleAnimBankAttacker +_080E0C64: .4byte 0x040000d4 +_080E0C68: .4byte 0x85000400 +_080E0C6C: .4byte gUnknown_08D1D574 +_080E0C70: .4byte gUnknown_08D1D410 +_080E0C74: .4byte gUnknown_08D1D54C +_080E0C78: .4byte gUnknown_030042C0 +_080E0C7C: .4byte gSprites +_080E0C80: .4byte gUnknown_030041B4 +_080E0C84: .4byte gBattleAnimArgs +_080E0C88: + lsls r0, r1, 4 + ldrh r3, [r2, 0x4] + movs r1, 0x10 + movs r2, 0xB + bl BlendPalette +_080E0C94: + ldr r1, _080E0CC4 @ =gTasks + mov r2, r9 + lsls r0, r2, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + strh r5, [r0, 0x8] + ldr r2, _080E0CC8 @ =gBattleAnimArgs + ldrh r1, [r2] + strh r1, [r0, 0xA] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0xC] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0xE] + strh r7, [r0, 0x14] + ldr r1, _080E0CCC @ =sub_80E0CD0 + str r1, [r0] + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E0CC4: .4byte gTasks +_080E0CC8: .4byte gBattleAnimArgs +_080E0CCC: .4byte sub_80E0CD0 + thumb_func_end sub_80E0A4C + + thumb_func_start sub_80E0CD0 +sub_80E0CD0: @ 80E0CD0 + push {r4-r7,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080E0DF0 @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x1C] + adds r0, 0x4 + movs r5, 0 + strh r0, [r4, 0x1C] + ldr r2, _080E0DF4 @ =gUnknown_030042C0 + ldrh r3, [r2] + subs r1, r3, 0x4 + strh r1, [r2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x80 + bne _080E0DE8 + strh r5, [r4, 0x1C] + adds r0, r3, 0 + adds r0, 0x7C + strh r0, [r2] + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080E0DE8 + movs r0, 0 + bl sub_8076464 + ldr r0, _080E0DF8 @ =gUnknown_030042C4 + strh r5, [r0] + ldr r0, _080E0DFC @ =gUnknown_03004240 + strh r5, [r0] + ldr r0, _080E0E00 @ =REG_WININ + ldr r2, _080E0E04 @ =0x00003f3f + adds r1, r2, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E0D40 + ldr r2, _080E0E08 @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080E0D40: + movs r2, 0x80 + lsls r2, 19 + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + eors r0, r1 + strh r0, [r2] + ldr r0, _080E0E0C @ =REG_BLDCNT + strh r5, [r0] + adds r0, 0x2 + strh r5, [r0] + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldr r6, _080E0E10 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1, 0x5] + lsrs r0, 4 + adds r0, 0x10 + adds r1, r0, 0 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080E0D84 + adds r0, r1, 0 + movs r1, 0x1 + bl sub_8079108 +_080E0D84: + movs r3, 0x8 + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl DestroySprite + mov r0, sp + bl sub_8078914 + ldr r2, [sp, 0x4] + str r5, [sp, 0xC] + ldr r1, _080E0E14 @ =0x040000d4 + add r0, sp, 0xC + str r0, [r1] + str r2, [r1, 0x4] + ldr r0, _080E0E18 @ =0x85000200 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080E0DE2 + ldr r2, _080E0E1C @ =gObjectBankIDs + ldr r0, _080E0E20 @ =gBattleAnimBankAttacker + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + adds r0, r2 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r6 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] +_080E0DE2: + adds r0, r7, 0 + bl DestroyAnimVisualTask +_080E0DE8: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E0DF0: .4byte gTasks +_080E0DF4: .4byte gUnknown_030042C0 +_080E0DF8: .4byte gUnknown_030042C4 +_080E0DFC: .4byte gUnknown_03004240 +_080E0E00: .4byte REG_WININ +_080E0E04: .4byte 0x00003f3f +_080E0E08: .4byte REG_BG1CNT +_080E0E0C: .4byte REG_BLDCNT +_080E0E10: .4byte gSprites +_080E0E14: .4byte 0x040000d4 +_080E0E18: .4byte 0x85000200 +_080E0E1C: .4byte gObjectBankIDs +_080E0E20: .4byte gBattleAnimBankAttacker + thumb_func_end sub_80E0CD0 + + thumb_func_start sub_80E0E24 +sub_80E0E24: @ 80E0E24 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r0, _080E0E44 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + adds r2, r0, 0 + cmp r1, 0x7 + bhi _080E0E88 + lsls r0, r1, 2 + ldr r1, _080E0E48 @ =_080E0E4C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E0E44: .4byte gBattleAnimArgs +_080E0E48: .4byte _080E0E4C + .align 2, 0 +_080E0E4C: + .4byte _080E0E6C + .4byte _080E0E6C + .4byte _080E0E6C + .4byte _080E0E6C + .4byte _080E0E78 + .4byte _080E0E7C + .4byte _080E0E80 + .4byte _080E0E84 +_080E0E6C: + ldrb r0, [r2] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r2, r0, 24 + b _080E0E8A +_080E0E78: + movs r4, 0 + b _080E0E90 +_080E0E7C: + movs r4, 0x2 + b _080E0E90 +_080E0E80: + movs r4, 0x1 + b _080E0E90 +_080E0E84: + movs r4, 0x3 + b _080E0E90 +_080E0E88: + movs r2, 0xFF +_080E0E8A: + movs r0, 0 + cmp r0, 0 + beq _080E0EB6 +_080E0E90: + adds r0, r4, 0 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080E0EB4 + ldr r0, _080E0EB0 @ =gObjectBankIDs + adds r0, r4, r0 + ldrb r2, [r0] + b _080E0EB6 + .align 2, 0 +_080E0EB0: .4byte gObjectBankIDs +_080E0EB4: + movs r2, 0xFF +_080E0EB6: + cmp r2, 0xFF + beq _080E0ED2 + ldr r1, _080E0EE0 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + ldr r1, _080E0EE4 @ =gBattleAnimArgs + ldrb r1, [r1, 0x2] + bl sub_8079108 +_080E0ED2: + adds r0, r5, 0 + bl DestroyAnimVisualTask + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E0EE0: .4byte gSprites +_080E0EE4: .4byte gBattleAnimArgs + thumb_func_end sub_80E0E24 + + thumb_func_start sub_80E0EE8 +sub_80E0EE8: @ 80E0EE8 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080E0F14 @ =gUnknown_0202F7C4 + ldrb r0, [r2] + cmp r0, 0x1 + bhi _080E0EFC + ldr r1, _080E0F18 @ =gBattleAnimArgs + movs r0, 0 + strh r0, [r1, 0xE] +_080E0EFC: + ldrb r0, [r2] + cmp r0, 0x2 + bne _080E0F08 + ldr r1, _080E0F18 @ =gBattleAnimArgs + movs r0, 0x1 + strh r0, [r1, 0xE] +_080E0F08: + adds r0, r3, 0 + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080E0F14: .4byte gUnknown_0202F7C4 +_080E0F18: .4byte gBattleAnimArgs + thumb_func_end sub_80E0EE8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/devil.s b/asm/devil.s new file mode 100755 index 000000000..ae552f231 --- /dev/null +++ b/asm/devil.s @@ -0,0 +1,163 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D2ABC +sub_80D2ABC: @ 80D2ABC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D2AF6 + ldr r1, _080D2BB8 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0 + bl StartSpriteAnim + ldr r0, _080D2BBC @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079E90 + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + movs r0, 0x1 + strh r0, [r4, 0x32] +_080D2AF6: + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r0, r2 + strh r0, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + lsls r1, r0, 2 + adds r0, r1, 0 + cmp r1, 0 + bge _080D2B0C + adds r0, 0xFF +_080D2B0C: + asrs r0, 8 + lsls r0, 8 + subs r0, r1, r0 + strh r0, [r4, 0x30] + lsls r0, 16 + cmp r0, 0 + bge _080D2B1E + movs r0, 0 + strh r0, [r4, 0x30] +_080D2B1E: + movs r0, 0x30 + ldrsh r2, [r4, r0] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _080D2B2C + adds r0, 0x3 +_080D2B2C: + asrs r0, 2 + movs r1, 0x1E + subs r1, r0 + adds r0, r2, 0 + bl Cos + strh r0, [r4, 0x24] + movs r0, 0x30 + ldrsh r2, [r4, r0] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _080D2B48 + adds r0, 0x7 +_080D2B48: + asrs r0, 3 + movs r1, 0xA + subs r1, r0 + adds r0, r2, 0 + bl Sin + strh r0, [r4, 0x26] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0x80 + ble _080D2B6C + ldrh r1, [r4, 0x32] + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080D2B6C + ldr r0, _080D2BC0 @ =0x0000ffff + strh r0, [r4, 0x32] +_080D2B6C: + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D2B80 + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0 + bge _080D2B80 + movs r0, 0x1 + strh r0, [r4, 0x32] +_080D2B80: + ldrh r0, [r4, 0x34] + adds r1, r0, 0x1 + strh r1, [r4, 0x34] + subs r0, 0x9 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x46 + bls _080D2BC4 + movs r0, 0x2E + 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] + b _080D2BD2 + .align 2, 0 +_080D2BB8: .4byte gBattleAnimArgs +_080D2BBC: .4byte gBattleAnimBankTarget +_080D2BC0: .4byte 0x0000ffff +_080D2BC4: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080D2BD2: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x5A + ble _080D2BE0 + adds r0, r4, 0 + bl move_anim_8072740 +_080D2BE0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D2ABC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/dragon.s b/asm/dragon.s new file mode 100755 index 000000000..c384e3b6c --- /dev/null +++ b/asm/dragon.s @@ -0,0 +1,1214 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ dragon + + thumb_func_start sub_80DF5A0 +sub_80DF5A0: @ 80DF5A0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080DF5E8 @ =gBattleAnimBankAttacker + 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] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DF5F0 + ldr r2, _080DF5EC @ =gBattleAnimArgs + ldrh r0, [r5, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r5, 0x20] + ldrh r0, [r2, 0x6] + negs r0, r0 + strh r0, [r2, 0x6] + ldrh r0, [r2, 0x8] + negs r0, r0 + strh r0, [r2, 0x8] + adds r1, r2, 0 + b _080DF5FA + .align 2, 0 +_080DF5E8: .4byte gBattleAnimBankAttacker +_080DF5EC: .4byte gBattleAnimArgs +_080DF5F0: + ldr r1, _080DF630 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r5, 0x20] + adds r0, r2 + strh r0, [r5, 0x20] +_080DF5FA: + ldrh r0, [r1, 0x2] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x34] + ldrh r0, [r1, 0xA] + strh r0, [r5, 0x38] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080DF634 @ =move_anim_8074EE0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r0, _080DF638 @ =sub_8078504 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF630: .4byte gBattleAnimArgs +_080DF634: .4byte move_anim_8074EE0 +_080DF638: .4byte sub_8078504 + thumb_func_end sub_80DF5A0 + + thumb_func_start sub_80DF63C +sub_80DF63C: @ 80DF63C + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8078650 + ldr r4, _080DF694 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080DF698 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DF6A0 + ldr r2, _080DF69C @ =gBattleAnimArgs + ldrh r0, [r5, 0x20] + ldrh r1, [r2, 0x2] + subs r0, r1 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + adds r1, r0 + strh r1, [r5, 0x22] + ldrh r0, [r5, 0x32] + ldrh r1, [r2, 0x4] + subs r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r2, 0x6] + ldrh r1, [r5, 0x36] + adds r0, r1 + strh r0, [r5, 0x36] + b _080DF6CA + .align 2, 0 +_080DF694: .4byte gBattleAnimBankTarget +_080DF698: .4byte gBattleAnimBankAttacker +_080DF69C: .4byte gBattleAnimArgs +_080DF6A0: + ldr r1, _080DF6E4 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r5, 0x20] + adds r0, r2 + strh r0, [r5, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + ldrh r0, [r1, 0x4] + ldrh r2, [r5, 0x32] + adds r0, r2 + strh r0, [r5, 0x32] + ldrh r0, [r1, 0x6] + ldrh r1, [r5, 0x36] + adds r0, r1 + strh r0, [r5, 0x36] + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAnim +_080DF6CA: + ldr r0, _080DF6E4 @ =gBattleAnimArgs + ldrh r0, [r0, 0x8] + strh r0, [r5, 0x2E] + ldr r0, _080DF6E8 @ =sub_8078B34 + str r0, [r5, 0x1C] + ldr r1, _080DF6EC @ =move_anim_8074EE0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF6E4: .4byte gBattleAnimArgs +_080DF6E8: .4byte sub_8078B34 +_080DF6EC: .4byte move_anim_8074EE0 + thumb_func_end sub_80DF63C + + thumb_func_start sub_80DF6F0 +sub_80DF6F0: @ 80DF6F0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080DF704 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DF70C + ldr r4, _080DF708 @ =gBattleAnimBankAttacker + b _080DF70E + .align 2, 0 +_080DF704: .4byte gBattleAnimArgs +_080DF708: .4byte gBattleAnimBankAttacker +_080DF70C: + ldr r4, _080DF750 @ =gBattleAnimBankTarget +_080DF70E: + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080DF754 @ =gBattleAnimArgs + movs r0, 0x2 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_807867C + ldrh r0, [r4, 0x4] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + ldr r0, _080DF758 @ =sub_8078600 + str r0, [r5, 0x1C] + ldr r1, _080DF75C @ =move_anim_8074EE0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF750: .4byte gBattleAnimBankTarget +_080DF754: .4byte gBattleAnimArgs +_080DF758: .4byte sub_8078600 +_080DF75C: .4byte move_anim_8074EE0 + thumb_func_end sub_80DF6F0 + + thumb_func_start sub_80DF760 +sub_80DF760: @ 80DF760 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080DF788 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DF77A + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim +_080DF77A: + adds r0, r4, 0 + bl sub_80DF63C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF788: .4byte gBattleAnimBankAttacker + thumb_func_end sub_80DF760 + + thumb_func_start sub_80DF78C +sub_80DF78C: @ 80DF78C + push {r4-r7,lr} + adds r6, r0, 0 + ldr r4, _080DF7E0 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + strh r0, [r6, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x22] + strh r5, [r6, 0x36] + movs r0, 0x1 + strh r0, [r6, 0x38] + ldr r0, _080DF7E4 @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r6, 0x3A] + ldr r4, _080DF7E8 @ =gBankAttacker + ldrb r0, [r4] + movs r1, 0 + bl sub_807A100 + lsls r7, r0, 16 + lsrs r5, r7, 16 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_807A100 + lsls r1, r0, 16 + lsrs r0, r1, 16 + cmp r5, r0 + bls _080DF7EC + lsrs r0, r7, 17 + b _080DF7EE + .align 2, 0 +_080DF7E0: .4byte gBattleAnimBankAttacker +_080DF7E4: .4byte gBattleAnimArgs +_080DF7E8: .4byte gBankAttacker +_080DF7EC: + lsrs r0, r1, 17 +_080DF7EE: + strh r0, [r6, 0x3C] + movs r1, 0x3A + ldrsh r0, [r6, r1] + movs r2, 0x3C + ldrsh r1, [r6, r2] + bl Cos + strh r0, [r6, 0x24] + movs r1, 0x3A + ldrsh r0, [r6, r1] + movs r2, 0x3C + ldrsh r1, [r6, r2] + bl Sin + strh r0, [r6, 0x26] + ldr r0, _080DF818 @ =sub_80DF81C + str r0, [r6, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DF818: .4byte sub_80DF81C + thumb_func_end sub_80DF78C + + thumb_func_start sub_80DF81C +sub_80DF81C: @ 80DF81C + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r5, [r4, r0] + cmp r5, 0 + beq _080DF82E + cmp r5, 0x1 + beq _080DF89A + b _080DF91E +_080DF82E: + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x38] + subs r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3A] + movs r1, 0x3A + ldrsh r0, [r4, r1] + movs r2, 0x3C + ldrsh r1, [r4, r2] + bl Cos + strh r0, [r4, 0x24] + movs r1, 0x3A + ldrsh r0, [r4, r1] + movs r2, 0x3C + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080DF880 + strh r5, [r4, 0x36] + ldrh r1, [r4, 0x38] + movs r2, 0x38 + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080DF880 + adds r0, r1, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _080DF880 + movs r0, 0x10 + strh r0, [r4, 0x38] +_080DF880: + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _080DF91E + movs r0, 0 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080DF91E +_080DF89A: + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x38] + subs r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3A] + ldrh r1, [r4, 0x3C] + movs r2, 0x3C + ldrsh r0, [r4, r2] + cmp r0, 0x95 + bgt _080DF8C2 + adds r0, r1, 0 + adds r0, 0x8 + strh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x95 + ble _080DF8C2 + movs r0, 0x96 + strh r0, [r4, 0x3C] +_080DF8C2: + movs r1, 0x3A + ldrsh r0, [r4, r1] + movs r2, 0x3C + ldrsh r1, [r4, r2] + bl Cos + strh r0, [r4, 0x24] + movs r1, 0x3A + ldrsh r0, [r4, r1] + movs r2, 0x3C + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080DF90A + movs r0, 0 + strh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + movs r2, 0x38 + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080DF90A + adds r0, r1, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + ble _080DF90A + movs r0, 0x10 + strh r0, [r4, 0x38] +_080DF90A: + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080DF91E + adds r0, r4, 0 + bl move_anim_8072740 +_080DF91E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DF81C + + thumb_func_start sub_80DF924 +sub_80DF924: @ 80DF924 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080DF950 @ =gTasks + adds r4, r1, r0 + ldr r0, _080DF954 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DF960 + ldr r0, _080DF958 @ =REG_BG1HOFS + str r0, [sp] + ldr r0, _080DF95C @ =gUnknown_030042C0 + b _080DF966 + .align 2, 0 +_080DF950: .4byte gTasks +_080DF954: .4byte gBattleAnimBankAttacker +_080DF958: .4byte REG_BG1HOFS +_080DF95C: .4byte gUnknown_030042C0 +_080DF960: + ldr r0, _080DF9DC @ =REG_BG2HOFS + str r0, [sp] + ldr r0, _080DF9E0 @ =gUnknown_03004288 +_080DF966: + ldrh r0, [r0] + strh r0, [r4, 0xC] + ldr r0, _080DF9E4 @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r5, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r5, [r0, 0x9] + ldr r0, _080DF9E8 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl sub_8077FC0 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r4, 0xE] + adds r0, 0x20 + strh r0, [r4, 0x10] + cmp r1, 0 + bge _080DF996 + strh r5, [r4, 0xE] +_080DF996: + ldrh r3, [r4, 0xE] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bgt _080DF9C4 + ldr r5, _080DF9EC @ =gUnknown_03004DE0 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 +_080DF9A8: + lsls r1, r3, 1 + adds r2, r1, r5 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r1, r6 + ldrh r0, [r4, 0xC] + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + ble _080DF9A8 +_080DF9C4: + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_80895F8 + ldr r0, _080DF9F0 @ =sub_80DF9F4 + str r0, [r4] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DF9DC: .4byte REG_BG2HOFS +_080DF9E0: .4byte gUnknown_03004288 +_080DF9E4: .4byte 0xa2600001 +_080DF9E8: .4byte gBattleAnimBankAttacker +_080DF9EC: .4byte gUnknown_03004DE0 +_080DF9F0: .4byte sub_80DF9F4 + thumb_func_end sub_80DF924 + + thumb_func_start sub_80DF9F4 +sub_80DF9F4: @ 80DF9F4 + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080DFA18 @ =gTasks + adds r2, r0, r1 + movs r1, 0x8 + ldrsh r0, [r2, r1] + cmp r0, 0x4 + bhi _080DFAAA + lsls r0, 2 + ldr r1, _080DFA1C @ =_080DFA20 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DFA18: .4byte gTasks +_080DFA1C: .4byte _080DFA20 + .align 2, 0 +_080DFA20: + .4byte _080DFA34 + .4byte _080DFA56 + .4byte _080DFA66 + .4byte _080DFA92 + .4byte _080DFAA4 +_080DFA34: + ldrh r0, [r2, 0x16] + adds r0, 0x1 + strh r0, [r2, 0x16] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080DFA8A + movs r0, 0 + strh r0, [r2, 0x16] + ldrh r0, [r2, 0x14] + adds r0, 0x1 + strh r0, [r2, 0x14] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080DFA8A + b _080DFA84 +_080DFA56: + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3C + ble _080DFA8A + b _080DFA84 +_080DFA66: + ldrh r0, [r2, 0x16] + adds r0, 0x1 + strh r0, [r2, 0x16] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080DFA8A + movs r0, 0 + strh r0, [r2, 0x16] + ldrh r0, [r2, 0x14] + subs r0, 0x1 + strh r0, [r2, 0x14] + lsls r0, 16 + cmp r0, 0 + bne _080DFA8A +_080DFA84: + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] +_080DFA8A: + adds r0, r2, 0 + bl sub_80DFAB0 + b _080DFAAA +_080DFA92: + ldr r1, _080DFAA0 @ =gUnknown_03004DC0 + movs r0, 0x3 + strb r0, [r1, 0x15] + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + b _080DFAAA + .align 2, 0 +_080DFAA0: .4byte gUnknown_03004DC0 +_080DFAA4: + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080DFAAA: + pop {r0} + bx r0 + thumb_func_end sub_80DF9F4 + + thumb_func_start sub_80DFAB0 +sub_80DFAB0: @ 80DFAB0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + ldrh r3, [r5, 0x12] + ldrh r4, [r5, 0xE] + movs r1, 0x10 + ldrsh r0, [r5, r1] + cmp r4, r0 + bgt _080DFB06 + ldr r7, _080DFB1C @ =gUnknown_03004DE0 + mov r12, r7 + ldr r0, _080DFB20 @ =gSineTable + mov r8, r0 + ldr r6, _080DFB24 @ =gUnknown_03004DC0 +_080DFACE: + lsls r2, r4, 1 + ldrb r1, [r6, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + add r2, r12 + lsls r0, r3, 1 + add r0, r8 + movs r7, 0 + ldrsh r1, [r0, r7] + movs r7, 0x14 + ldrsh r0, [r5, r7] + muls r0, r1 + asrs r0, 7 + ldrh r1, [r5, 0xC] + adds r0, r1 + strh r0, [r2] + adds r3, 0x8 + movs r0, 0xFF + ands r3, r0 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + movs r7, 0x10 + ldrsh r0, [r5, r7] + cmp r4, r0 + ble _080DFACE +_080DFB06: + ldrh r0, [r5, 0x12] + adds r0, 0x9 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x12] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DFB1C: .4byte gUnknown_03004DE0 +_080DFB20: .4byte gSineTable +_080DFB24: .4byte gUnknown_03004DC0 + thumb_func_end sub_80DFAB0 + + thumb_func_start sub_80DFB28 +sub_80DFB28: @ 80DFB28 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r0, 0 + ldr r5, _080DFBC8 @ =gBattleAnimArgs + movs r0, 0x4 + ldrsh r1, [r5, r0] + lsls r0, r1, 1 + adds r0, r1 + movs r1, 0x5 + bl __divsi3 + adds r6, r0, 0 + ldr r1, _080DFBCC @ =gBattleAnimBankAttacker + mov r8, r1 + ldrb r0, [r1] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + mov r2, r8 + ldrb r0, [r2] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r3, [r5, 0x8] + adds r0, r3 + strh r0, [r4, 0x22] + movs r1, 0x2 + ldrsh r0, [r5, r1] + movs r2, 0x4 + ldrsh r1, [r5, r2] + bl Cos + strh r0, [r4, 0x30] + movs r3, 0x2 + ldrsh r0, [r5, r3] + lsls r6, 16 + asrs r6, 16 + adds r1, r6, 0 + bl Sin + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x30] + ldrh r2, [r5] + adds r3, r2, 0 + muls r3, r1 + adds r1, r3, 0 + ldrh r3, [r4, 0x20] + adds r1, r3 + strh r1, [r4, 0x20] + adds r1, r2, 0 + muls r1, r0 + adds r0, r1, 0 + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x34] + ldr r0, _080DFBD0 @ =sub_80DFBD8 + str r0, [r4, 0x1C] + adds r4, 0x2E + ldr r2, _080DFBD4 @ =gUnknown_03000730 + movs r1, 0x6 +_080DFBB0: + ldrh r0, [r4] + strh r0, [r2] + adds r4, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _080DFBB0 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DFBC8: .4byte gBattleAnimArgs +_080DFBCC: .4byte gBattleAnimBankAttacker +_080DFBD0: .4byte sub_80DFBD8 +_080DFBD4: .4byte gUnknown_03000730 + thumb_func_end sub_80DFB28 + + thumb_func_start sub_80DFBD8 +sub_80DFBD8: @ 80DFBD8 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x36] + adds r0, r1 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x38] + adds r0, r2 + strh r0, [r4, 0x38] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x24] + movs r2, 0x38 + ldrsh r0, [r4, r2] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x34 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080DFC1C + adds r0, r4, 0 + bl move_anim_8072740 +_080DFC1C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DFBD8 + + thumb_func_start sub_80DFC24 +sub_80DFC24: @ 80DFC24 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080DFC58 @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080DFC5C @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r1, 0x8] + ldr r0, _080DFC60 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + movs r2, 0x10 + strh r2, [r1, 0xA] + ldr r1, _080DFC64 @ =REG_BLDALPHA + strh r2, [r1] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DFC70 + ldr r1, _080DFC68 @ =REG_BLDCNT + ldr r2, _080DFC6C @ =0x00003f42 + b _080DFC74 + .align 2, 0 +_080DFC58: .4byte gTasks +_080DFC5C: .4byte gBattleAnimArgs +_080DFC60: .4byte gBattleAnimBankAttacker +_080DFC64: .4byte REG_BLDALPHA +_080DFC68: .4byte REG_BLDCNT +_080DFC6C: .4byte 0x00003f42 +_080DFC70: + ldr r1, _080DFC8C @ =REG_BLDCNT + ldr r2, _080DFC90 @ =0x00003f44 +_080DFC74: + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _080DFC94 @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldr r0, _080DFC98 @ =sub_80DFC9C + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DFC8C: .4byte REG_BLDCNT +_080DFC90: .4byte 0x00003f44 +_080DFC94: .4byte gTasks +_080DFC98: .4byte sub_80DFC9C + thumb_func_end sub_80DFC24 + + thumb_func_start sub_80DFC9C +sub_80DFC9C: @ 80DFC9C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080DFD04 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0xA] + lsrs r2, r0, 8 + lsls r0, 24 + lsrs r1, r0, 24 + movs r3, 0xC + ldrsh r0, [r4, r3] + ldrb r3, [r4, 0x8] + cmp r0, r3 + bne _080DFD18 + adds r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + subs r0, r1, 0x1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r2, 8 + orrs r1, r0 + movs r3, 0 + strh r1, [r4, 0xA] + ldr r0, _080DFD08 @ =REG_BLDALPHA + strh r1, [r0] + strh r3, [r4, 0xC] + cmp r2, 0x10 + bne _080DFD1E + ldr r2, _080DFD0C @ =gSprites + ldr r1, _080DFD10 @ =gObjectBankIDs + ldr r0, _080DFD14 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + adds r0, r5, 0 + bl DestroyAnimVisualTask + b _080DFD1E + .align 2, 0 +_080DFD04: .4byte gTasks +_080DFD08: .4byte REG_BLDALPHA +_080DFD0C: .4byte gSprites +_080DFD10: .4byte gObjectBankIDs +_080DFD14: .4byte gBattleAnimBankAttacker +_080DFD18: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] +_080DFD1E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DFC9C + + thumb_func_start sub_80DFD24 +sub_80DFD24: @ 80DFD24 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DFD48 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r0, _080DFD4C @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r1, 0x8] + movs r2, 0x80 + lsls r2, 5 + strh r2, [r1, 0xA] + ldr r0, _080DFD50 @ =sub_80DFD58 + str r0, [r1] + ldr r0, _080DFD54 @ =REG_BLDALPHA + strh r2, [r0] + bx lr + .align 2, 0 +_080DFD48: .4byte gTasks +_080DFD4C: .4byte gBattleAnimArgs +_080DFD50: .4byte sub_80DFD58 +_080DFD54: .4byte REG_BLDALPHA + thumb_func_end sub_80DFD24 + + thumb_func_start sub_80DFD58 +sub_80DFD58: @ 80DFD58 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080DFDA8 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r1 + ldrh r0, [r2, 0xA] + lsrs r1, r0, 8 + lsls r0, 24 + lsrs r5, r0, 24 + movs r3, 0xC + ldrsh r0, [r2, r3] + ldrb r3, [r2, 0x8] + cmp r0, r3 + bne _080DFDB4 + subs r0, r1, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r3, 8 + orrs r1, r0 + movs r0, 0 + strh r1, [r2, 0xA] + ldr r5, _080DFDAC @ =REG_BLDALPHA + strh r1, [r5] + strh r0, [r2, 0xC] + cmp r3, 0 + bne _080DFDBA + ldr r0, _080DFDB0 @ =REG_BLDCNT + strh r3, [r0] + strh r3, [r5] + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080DFDBA + .align 2, 0 +_080DFDA8: .4byte gTasks +_080DFDAC: .4byte REG_BLDALPHA +_080DFDB0: .4byte REG_BLDCNT +_080DFDB4: + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] +_080DFDBA: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DFD58 + + thumb_func_start sub_80DFDC0 +sub_80DFDC0: @ 80DFDC0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080DFDE8 @ =REG_BLDALPHA + movs r2, 0x80 + lsls r2, 5 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _080DFDEC @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DFDF8 + ldr r1, _080DFDF0 @ =REG_BLDCNT + ldr r2, _080DFDF4 @ =0x00003f42 + b _080DFDFC + .align 2, 0 +_080DFDE8: .4byte REG_BLDALPHA +_080DFDEC: .4byte gBattleAnimBankAttacker +_080DFDF0: .4byte REG_BLDCNT +_080DFDF4: .4byte 0x00003f42 +_080DFDF8: + ldr r1, _080DFE0C @ =REG_BLDCNT + ldr r2, _080DFE10 @ =0x00003f44 +_080DFDFC: + adds r0, r2, 0 + strh r0, [r1] + adds r0, r4, 0 + bl DestroyAnimVisualTask + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DFE0C: .4byte REG_BLDCNT +_080DFE10: .4byte 0x00003f44 + thumb_func_end sub_80DFDC0 + + thumb_func_start sub_80DFE14 +sub_80DFE14: @ 80DFE14 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r6, _080DFE80 @ =gBattleAnimBankTarget + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x30] + ldr r5, _080DFE84 @ =gBattleAnimBankAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + movs r0, 0x7E + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_8078A5C + ldrh r0, [r4, 0x30] + negs r0, r0 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x32] + negs r0, r0 + strh r0, [r4, 0x36] + ldr r0, _080DFE88 @ =0x0000ffd8 + strh r0, [r4, 0x3A] + ldr r1, _080DFE8C @ =sub_80DFE90 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DFE80: .4byte gBattleAnimBankTarget +_080DFE84: .4byte gBattleAnimBankAttacker +_080DFE88: .4byte 0x0000ffd8 +_080DFE8C: .4byte sub_80DFE90 + thumb_func_end sub_80DFE14 + + thumb_func_start sub_80DFE90 +sub_80DFE90: @ 80DFE90 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r5, [r4, 0x30] + ldrh r0, [r4, 0x34] + adds r2, r5, r0 + strh r2, [r4, 0x34] + ldrh r3, [r4, 0x32] + ldrh r6, [r4, 0x36] + adds r1, r3, r6 + strh r1, [r4, 0x36] + lsls r0, r2, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + movs r6, 0x3C + ldrsh r0, [r4, r6] + cmp r0, 0 + bne _080DFED2 + adds r0, r2, r5 + strh r0, [r4, 0x34] + adds r1, r3 + strh r1, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + lsls r1, 16 + asrs r1, 24 + strh r1, [r4, 0x26] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] +_080DFED2: + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x3A + ldrsh r1, [r4, r2] + bl Sin + ldrh r6, [r4, 0x26] + adds r0, r6 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + cmp r0, 0x7F + ble _080DFF02 + movs r0, 0 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x3A] + adds r0, 0x14 + strh r0, [r4, 0x3A] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] +_080DFF02: + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080DFF14 + adds r0, r4, 0 + bl move_anim_8072740 +_080DFF14: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80DFE90 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fight.s b/asm/fight.s new file mode 100755 index 000000000..c6ef33840 --- /dev/null +++ b/asm/fight.s @@ -0,0 +1,1749 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ fight + + thumb_func_start unc_080B08A0 +unc_080B08A0: @ 80D8FF0 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080D9020 @ =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_807867C + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + movs r0, 0xF + strh r0, [r4, 0x2E] + ldr r0, _080D9024 @ =sub_80782D8 + str r0, [r4, 0x1C] + ldr r1, _080D9028 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9020: .4byte gBattleAnimArgs +_080D9024: .4byte sub_80782D8 +_080D9028: .4byte move_anim_8072740 + thumb_func_end unc_080B08A0 + + thumb_func_start sub_80D902C +sub_80D902C: @ 80D902C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080D9070 @ =gBattleAnimArgs + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080D9054 + ldr r0, _080D9074 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D9054 + ldrh r0, [r4, 0x2] + negs r0, r0 + strh r0, [r4, 0x2] + ldrh r0, [r4, 0x6] + negs r0, r0 + strh r0, [r4, 0x6] +_080D9054: + ldr r4, _080D9070 @ =gBattleAnimArgs + ldrb r1, [r4, 0xC] + adds r0, r5, 0 + bl StartSpriteAnim + movs r0, 0 + strh r0, [r4, 0xC] + adds r0, r5, 0 + bl sub_8079534 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9070: .4byte gBattleAnimArgs +_080D9074: .4byte gBattleAnimBankAttacker + thumb_func_end sub_80D902C + + thumb_func_start sub_80D9078 +sub_80D9078: @ 80D9078 + push {r4,lr} + adds r4, r0, 0 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080D9094 + ldr r0, _080D90A0 @ =gBattleAnimArgs + ldrh r1, [r0, 0x2] + negs r1, r1 + strh r1, [r0, 0x2] + ldrh r1, [r0, 0x6] + negs r1, r1 + strh r1, [r0, 0x6] +_080D9094: + adds r0, r4, 0 + bl sub_80D902C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D90A0: .4byte gBattleAnimArgs + thumb_func_end sub_80D9078 + + thumb_func_start sub_80D90A4 +sub_80D90A4: @ 80D90A4 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080D90C4 @ =gBattleAnimArgs + ldrb r1, [r4, 0x8] + bl StartSpriteAnim + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D90C8 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80787B0 + b _080D90D0 + .align 2, 0 +_080D90C4: .4byte gBattleAnimArgs +_080D90C8: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8078764 +_080D90D0: + ldr r0, _080D90E8 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x2E] + ldr r0, _080D90EC @ =sub_80782D8 + str r0, [r5, 0x1C] + ldr r1, _080D90F0 @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D90E8: .4byte gBattleAnimArgs +_080D90EC: .4byte sub_80782D8 +_080D90F0: .4byte move_anim_8072740 + thumb_func_end sub_80D90A4 + + thumb_func_start sub_80D90F4 +sub_80D90F4: @ 80D90F4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + ldr r0, _080D9110 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + mov r9, r0 + cmp r1, 0 + bne _080D9118 + ldr r0, _080D9114 @ =gBattleAnimBankAttacker + b _080D911A + .align 2, 0 +_080D9110: .4byte gBattleAnimArgs +_080D9114: .4byte gBattleAnimBankAttacker +_080D9118: + ldr r0, _080D9260 @ =gBattleAnimBankTarget +_080D911A: + ldrb r0, [r0] + mov r8, r0 + mov r4, r9 + movs r3, 0x4 + ldrsh r0, [r4, r3] + cmp r0, 0 + bge _080D9138 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x5 + bl __umodsi3 + strh r0, [r4, 0x4] +_080D9138: + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl StartSpriteAnim + mov r0, r8 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + mov r0, r8 + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + mov r0, r8 + movs r1, 0x1 + bl sub_807A100 + 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_807A100 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bge _080D9182 + adds r0, 0x3 +_080D9182: + lsls r4, r0, 14 + lsrs r4, 16 + bl Random + lsls r0, 16 + lsrs r0, 16 + lsls r1, r6, 16 + asrs r1, 16 + bl __modsi3 + lsls r0, 16 + lsrs r6, r0, 16 + bl Random + 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 Random + movs r7, 0x1 + adds r1, r7, 0 + ands r1, r0 + cmp r1, 0 + beq _080D91C4 + lsls r0, r6, 16 + negs r0, r0 + lsrs r6, r0, 16 +_080D91C4: + bl Random + adds r1, r7, 0 + ands r1, r0 + cmp r1, 0 + beq _080D91D6 + lsls r0, r4, 16 + negs r0, r0 + lsrs r4, r0, 16 +_080D91D6: + ldr r0, _080D9264 @ =gBanksBySide + add r0, r8 + ldrb r1, [r0] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _080D91EC + lsls r0, r4, 16 + ldr r1, _080D9268 @ =0xfff00000 + adds r0, r1 + lsrs r4, r0, 16 +_080D91EC: + 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, _080D926C @ =gBattleAnimSpriteTemplate_83DB4A8 + 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 _080D9250 + movs r0, 0x3C + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080D9270 @ =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, _080D9274 @ =SpriteCallbackDummy + str r1, [r0] +_080D9250: + ldr r0, _080D9278 @ =sub_80D927C + str r0, [r5, 0x1C] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D9260: .4byte gBattleAnimBankTarget +_080D9264: .4byte gBanksBySide +_080D9268: .4byte 0xfff00000 +_080D926C: .4byte gBattleAnimSpriteTemplate_83DB4A8 +_080D9270: .4byte gSprites +_080D9274: .4byte SpriteCallbackDummy +_080D9278: .4byte sub_80D927C + thumb_func_end sub_80D90F4 + + thumb_func_start sub_80D927C +sub_80D927C: @ 80D927C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x2E] + movs r2, 0x2E + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _080D92C4 + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0x40 + beq _080D92B8 + ldr r4, _080D92C0 @ =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 +_080D92B8: + adds r0, r5, 0 + bl move_anim_8072740 + b _080D92C8 + .align 2, 0 +_080D92C0: .4byte gSprites +_080D92C4: + subs r0, r1, 0x1 + strh r0, [r5, 0x2E] +_080D92C8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D927C + + thumb_func_start sub_80D92D0 +sub_80D92D0: @ 80D92D0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8078764 + movs r0, 0x1E + strh r0, [r4, 0x2E] + ldr r0, _080D92F0 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D92F4 + ldrh r0, [r4, 0x20] + subs r0, 0x14 + strh r0, [r4, 0x32] + b _080D9306 + .align 2, 0 +_080D92F0: .4byte gBattleAnimArgs +_080D92F4: + 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] +_080D9306: + ldrh r0, [r4, 0x22] + subs r0, 0x14 + strh r0, [r4, 0x36] + ldr r0, _080D9320 @ =sub_8078B34 + str r0, [r4, 0x1C] + ldr r1, _080D9324 @ =sub_80D9328 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9320: .4byte sub_8078B34 +_080D9324: .4byte sub_80D9328 + thumb_func_end sub_80D92D0 + + thumb_func_start sub_80D9328 +sub_80D9328: @ 80D9328 + 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 _080D9368 + 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, _080D9370 @ =sub_8078B34 + str r0, [r5, 0x1C] + ldr r1, _080D9374 @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData +_080D9368: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D9370: .4byte sub_8078B34 +_080D9374: .4byte move_anim_8072740 + thumb_func_end sub_80D9328 + + thumb_func_start sub_80D9378 +sub_80D9378: @ 80D9378 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _080D93F4 @ =gBattleAnimBankAttacker + ldrb r1, [r0] + movs r0, 0x2 + ldr r2, _080D93F8 @ =gBattleAnimBankTarget + eors r0, r1 + ldrb r1, [r2] + cmp r0, r1 + bne _080D93A4 + ldrb r0, [r2] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080D93A4 + ldr r1, _080D93FC @ =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1] +_080D93A4: + adds r0, r6, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r0, _080D93F4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D93C2 + ldr r1, _080D93FC @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080D93C2: + ldr r4, _080D93FC @ =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 obj_translate_based_on_private_1_2_3_4 + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x3A] + strh r5, [r6, 0x3C] + ldr r0, _080D9400 @ =sub_80D9404 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D93F4: .4byte gBattleAnimBankAttacker +_080D93F8: .4byte gBattleAnimBankTarget +_080D93FC: .4byte gBattleAnimArgs +_080D9400: .4byte sub_80D9404 + thumb_func_end sub_80D9378 + + thumb_func_start sub_80D9404 +sub_80D9404: @ 80D9404 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + bne _080D9430 + 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 _080D9436 +_080D9430: + adds r0, r4, 0 + bl move_anim_8072740 +_080D9436: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9404 + + thumb_func_start sub_80D943C +sub_80D943C: @ 80D943C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r5, _080D9468 @ =gBattleAnimArgs + ldrb r1, [r5, 0x4] + adds r0, r4, 0 + bl StartSpriteAnim + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldr r0, _080D946C @ =sub_80782D8 + str r0, [r4, 0x1C] + ldr r1, _080D9470 @ =sub_80D9474 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9468: .4byte gBattleAnimArgs +_080D946C: .4byte sub_80782D8 +_080D9470: .4byte sub_80D9474 + thumb_func_end sub_80D943C + + thumb_func_start sub_80D9474 +sub_80D9474: @ 80D9474 + 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, _080D94A0 @ =sub_80782D8 + str r0, [r4, 0x1C] + ldr r1, _080D94A4 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D94A0: .4byte sub_80782D8 +_080D94A4: .4byte move_anim_8072740 + thumb_func_end sub_80D9474 + + thumb_func_start sub_80D94A8 +sub_80D94A8: @ 80D94A8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r0, _080D94C4 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r0, _080D94C8 @ =sub_80D94CC + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D94C4: .4byte gBattleAnimArgs +_080D94C8: .4byte sub_80D94CC + thumb_func_end sub_80D94A8 + + thumb_func_start sub_80D94CC +sub_80D94CC: @ 80D94CC + 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 _080D9510 + movs r0, 0x6 + strh r0, [r5, 0x2E] + ldr r4, _080D9518 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080D951C @ =sub_8078B34 + str r0, [r5, 0x1C] + ldr r1, _080D9520 @ =sub_80D9524 + adds r0, r5, 0 + bl StoreSpriteCallbackInData +_080D9510: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9518: .4byte gBattleAnimBankTarget +_080D951C: .4byte sub_8078B34 +_080D9520: .4byte sub_80D9524 + thumb_func_end sub_80D94CC + + thumb_func_start sub_80D9524 +sub_80D9524: @ 80D9524 + push {lr} + movs r1, 0xF + strh r1, [r0, 0x2E] + ldr r1, _080D9538 @ =sub_80782D8 + str r1, [r0, 0x1C] + ldr r1, _080D953C @ =move_anim_8072740 + bl StoreSpriteCallbackInData + pop {r0} + bx r0 + .align 2, 0 +_080D9538: .4byte sub_80782D8 +_080D953C: .4byte move_anim_8072740 + thumb_func_end sub_80D9524 + + thumb_func_start sub_80D9540 +sub_80D9540: @ 80D9540 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D956C + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r1, _080D9568 @ =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 _080D95C8 + .align 2, 0 +_080D9568: .4byte gBattleAnimArgs +_080D956C: + 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 _080D95BA + 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] +_080D95BA: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x78 + ble _080D95C8 + adds r0, r4, 0 + bl move_anim_8072740 +_080D95C8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9540 + + thumb_func_start sub_80D95D0 +sub_80D95D0: @ 80D95D0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080D95E4 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D95EC + ldr r4, _080D95E8 @ =gBattleAnimBankAttacker + b _080D95EE + .align 2, 0 +_080D95E4: .4byte gBattleAnimArgs +_080D95E8: .4byte gBattleAnimBankAttacker +_080D95EC: + ldr r4, _080D9634 @ =gBattleAnimBankTarget +_080D95EE: + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r1, _080D9638 @ =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, _080D963C @ =sub_80D9640 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9634: .4byte gBattleAnimBankTarget +_080D9638: .4byte gBattleAnimArgs +_080D963C: .4byte sub_80D9640 + thumb_func_end sub_80D95D0 + + thumb_func_start sub_80D9640 +sub_80D9640: @ 80D9640 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + cmp r2, 0 + beq _080D9652 + cmp r2, 0x1 + beq _080D9676 + b _080D96B0 +_080D9652: + ldrh r0, [r1, 0x30] + subs r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _080D96B0 + movs r2, 0x32 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080D966E + adds r0, r1, 0 + bl move_anim_8072740 + b _080D96B0 +_080D966E: + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + b _080D96B0 +_080D9676: + ldrh r0, [r1, 0x30] + adds r0, 0x1 + strh r0, [r1, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D969E + 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 _080D969A + movs r0, 0x2 + b _080D969C +_080D969A: + ldr r0, _080D96B4 @ =0x0000fffe +_080D969C: + strh r0, [r1, 0x24] +_080D969E: + ldrh r0, [r1, 0x32] + subs r0, 0x1 + strh r0, [r1, 0x32] + lsls r0, 16 + cmp r0, 0 + bne _080D96B0 + adds r0, r1, 0 + bl move_anim_8072740 +_080D96B0: + pop {r0} + bx r0 + .align 2, 0 +_080D96B4: .4byte 0x0000fffe + thumb_func_end sub_80D9640 + + thumb_func_start sub_80D96B8 +sub_80D96B8: @ 80D96B8 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080D96DC @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080D96E4 + ldr r4, _080D96E0 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r6, 0x4] + adds r0, r2 + b _080D96F6 + .align 2, 0 +_080D96DC: .4byte gBattleAnimArgs +_080D96E0: .4byte gBattleAnimBankAttacker +_080D96E4: + ldr r4, _080D9740 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 +_080D96F6: + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + 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, _080D9744 @ =gBattleAnimArgs + movs r4, 0x2 + ldrsh r0, [r3, r4] + lsls r0, 4 + adds r1, r0 + ldr r4, _080D9748 @ =0x000003ff + adds r0, r4, 0 + ands r1, r0 + ldr r0, _080D974C @ =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 _080D9764 + cmp r0, 0x1 + bgt _080D9750 + cmp r0, 0 + beq _080D975A + b _080D978A + .align 2, 0 +_080D9740: .4byte gBattleAnimBankTarget +_080D9744: .4byte gBattleAnimArgs +_080D9748: .4byte 0x000003ff +_080D974C: .4byte 0xfffffc00 +_080D9750: + cmp r0, 0x2 + beq _080D9774 + cmp r0, 0x3 + beq _080D9784 + b _080D978A +_080D975A: + ldr r0, _080D9760 @ =0x0000fffd + b _080D9784 + .align 2, 0 +_080D9760: .4byte 0x0000fffd +_080D9764: + movs r0, 0x3 + strh r0, [r5, 0x3A] + ldr r0, _080D9770 @ =0x0000fffd + strh r0, [r5, 0x3C] + b _080D9792 + .align 2, 0 +_080D9770: .4byte 0x0000fffd +_080D9774: + ldr r0, _080D9780 @ =0x0000fffd + strh r0, [r5, 0x3A] + movs r0, 0x3 + strh r0, [r5, 0x3C] + b _080D9792 + .align 2, 0 +_080D9780: .4byte 0x0000fffd +_080D9784: + strh r0, [r5, 0x3A] + strh r0, [r5, 0x3C] + b _080D9792 +_080D978A: + adds r0, r5, 0 + bl move_anim_8072740 + b _080D9796 +_080D9792: + ldr r0, _080D979C @ =sub_80D97A0 + str r0, [r5, 0x1C] +_080D9796: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D979C: .4byte sub_80D97A0 + thumb_func_end sub_80D96B8 + + thumb_func_start sub_80D97A0 +sub_80D97A0: @ 80D97A0 + 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 _080D97C8 + adds r0, r1, 0 + bl move_anim_8072740 +_080D97C8: + pop {r0} + bx r0 + thumb_func_end sub_80D97A0 + + thumb_func_start sub_80D97CC +sub_80D97CC: @ 80D97CC + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080D9818 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D9828 + ldr r4, _080D981C @ =gBankAttacker + 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, _080D9820 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl sub_8079ED4 + 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, _080D9824 @ =gBattleAnimBankTarget + b _080D9844 + .align 2, 0 +_080D9818: .4byte gBattleAnimArgs +_080D981C: .4byte gBankAttacker +_080D9820: .4byte gBattleAnimBankAttacker +_080D9824: .4byte gBattleAnimBankTarget +_080D9828: + ldr r0, _080D9860 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079ED4 + 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, _080D9864 @ =gBattleAnimBankAttacker +_080D9844: + 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, _080D9868 @ =sub_80D986C + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9860: .4byte gBattleAnimBankTarget +_080D9864: .4byte gBattleAnimBankAttacker +_080D9868: .4byte sub_80D986C + thumb_func_end sub_80D97CC + + thumb_func_start sub_80D986C +sub_80D986C: @ 80D986C + 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 _080D98C6 + ldr r1, _080D98CC @ =REG_BLDCNT + movs r0, 0 + strh r0, [r1] + 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 sub_8077ABC + 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 sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r1, _080D98D0 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D98D4 @ =sub_8078BB8 + str r0, [r4, 0x1C] +_080D98C6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D98CC: .4byte REG_BLDCNT +_080D98D0: .4byte move_anim_8074EE0 +_080D98D4: .4byte sub_8078BB8 + thumb_func_end sub_80D986C + + thumb_func_start sub_80D98D8 +sub_80D98D8: @ 80D98D8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080D9924 @ =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_8079BF4 + 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, _080D9928 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080D992C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r0, _080D9930 @ =sub_80D9934 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9924: .4byte gBattleAnimArgs +_080D9928: .4byte 0x000003ff +_080D992C: .4byte 0xfffffc00 +_080D9930: .4byte sub_80D9934 + thumb_func_end sub_80D98D8 + + thumb_func_start sub_80D9934 +sub_80D9934: @ 80D9934 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + movs r1, 0x2E + ldrsh r0, [r7, r1] + cmp r0, 0 + beq _080D9986 + movs r2, 0x36 + ldrsh r0, [r7, r2] + movs r2, 0x38 + ldrsh r1, [r7, r2] + bl sub_8079BFC + 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_8079BF4 + asrs r4, 8 + strh r4, [r7, 0x22] + lsls r4, 16 + asrs r4, 16 + movs r0, 0x8 + negs r0, r0 + cmp r4, r0 + bge _080D997E + adds r0, r7, 0 + bl move_anim_8072740 + b _080D99DC +_080D997E: + ldrh r0, [r7, 0x2E] + subs r0, 0x1 + strh r0, [r7, 0x2E] + b _080D99DC +_080D9986: + ldr r4, _080D99E8 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r2, _080D99EC @ =gBattleAnimBankTarget + mov r8, r2 + ldrb r0, [r2] + movs r1, 0x2 + bl sub_8077ABC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x3 + bl sub_8077ABC + 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, _080D99F0 @ =sub_80D99F4 + str r0, [r7, 0x1C] +_080D99DC: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D99E8: .4byte gBattleAnimBankAttacker +_080D99EC: .4byte gBattleAnimBankTarget +_080D99F0: .4byte sub_80D99F4 + thumb_func_end sub_80D9934 + + thumb_func_start sub_80D99F4 +sub_80D99F4: @ 80D99F4 + 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 _080D9A2E + adds r1, r3, 0 + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _080D9A2E + cmp r1, 0x78 + ble _080D9A34 +_080D9A2E: + adds r0, r2, 0 + bl move_anim_8072740 +_080D9A34: + pop {r0} + bx r0 + thumb_func_end sub_80D99F4 + + thumb_func_start sub_80D9A38 +sub_80D9A38: @ 80D9A38 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080D9A6C @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D9A7C + ldr r4, _080D9A70 @ =gBankAttacker + 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, _080D9A74 @ =gBattleAnimBankTarget + ldrb r4, [r0] + ldr r0, _080D9A78 @ =gBattleAnimBankAttacker + b _080D9A82 + .align 2, 0 +_080D9A6C: .4byte gBattleAnimArgs +_080D9A70: .4byte gBankAttacker +_080D9A74: .4byte gBattleAnimBankTarget +_080D9A78: .4byte gBattleAnimBankAttacker +_080D9A7C: + ldr r0, _080D9AB4 @ =gBattleAnimBankAttacker + ldrb r4, [r0] + ldr r0, _080D9AB8 @ =gBattleAnimBankTarget +_080D9A82: + ldrb r0, [r0] + bl sub_8079ED4 + 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 NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080D9ABC + ldrb r2, [r5, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x8 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x47 + b _080D9AD6 + .align 2, 0 +_080D9AB4: .4byte gBattleAnimBankAttacker +_080D9AB8: .4byte gBattleAnimBankTarget +_080D9ABC: + adds r0, r4, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D9ADC + ldrb r2, [r5, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x18 + orrs r1, r0 + lsls r1, 1 + subs r0, 0x57 +_080D9AD6: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x3] +_080D9ADC: + movs r0, 0x10 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8077ABC + 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 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 r1, _080D9B1C @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D9B20 @ =sub_8078BB8 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9B1C: .4byte move_anim_8072740 +_080D9B20: .4byte sub_8078BB8 + thumb_func_end sub_80D9A38 + + thumb_func_start sub_80D9B24 +sub_80D9B24: @ 80D9B24 + 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 _080D9B3A + adds r0, r4, 0 + bl move_anim_8072740 +_080D9B3A: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9B24 + + thumb_func_start sub_80D9B48 +sub_80D9B48: @ 80D9B48 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, _080D9BC4 @ =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 r1, _080D9BC8 @ =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, _080D9BCC @ =gUnknown_0202F7C4 + ldrb r6, [r0] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D9B92 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_080D9B92: + movs r0, 0x1 + ands r6, r0 + cmp r6, 0 + beq _080D9BA6 + ldrh r0, [r5, 0x32] + negs r0, r0 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x30] + adds r0, 0x1 + strh r0, [r5, 0x30] +_080D9BA6: + 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, _080D9BD0 @ =sub_80D9B24 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D9BC4: .4byte gBattleAnimBankTarget +_080D9BC8: .4byte gBattleAnimArgs +_080D9BCC: .4byte gUnknown_0202F7C4 +_080D9BD0: .4byte sub_80D9B24 + thumb_func_end sub_80D9B48 + + thumb_func_start sub_80D9BD4 +sub_80D9BD4: @ 80D9BD4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D9BEC @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D9BF0 + adds r0, r4, 0 + movs r1, 0 + bl sub_80787B0 + b _080D9BF8 + .align 2, 0 +_080D9BEC: .4byte gBattleAnimArgs +_080D9BF0: + adds r0, r4, 0 + movs r1, 0 + bl sub_8078764 +_080D9BF8: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080D9C0C + adds r0, r4, 0 + movs r1, 0x2 + bl StartSpriteAnim + b _080D9C22 +_080D9C0C: + ldr r0, _080D9C34 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D9C22 + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim +_080D9C22: + ldr r0, _080D9C38 @ =sub_8078600 + str r0, [r4, 0x1C] + ldr r1, _080D9C3C @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9C34: .4byte gBattleAnimBankAttacker +_080D9C38: .4byte sub_8078600 +_080D9C3C: .4byte move_anim_8072740 + thumb_func_end sub_80D9BD4 + + thumb_func_start sub_80D9C40 +sub_80D9C40: @ 80D9C40 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080D9C7A + 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 _080D9C7A + adds r0, r4, 0 + bl move_anim_8072740 +_080D9C7A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9C40 + + thumb_func_start sub_80D9C80 +sub_80D9C80: @ 80D9C80 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080D9CB0 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080D9CB8 + cmp r0, 0x1 + bgt _080D9CD2 + cmp r0, 0 + bne _080D9CD2 + movs r0, 0 + bl sub_80789D4 + ldr r0, _080D9CB4 @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r4, 0x18] + b _080D9CCA + .align 2, 0 +_080D9CB0: .4byte gTasks +_080D9CB4: .4byte gBattleAnimArgs +_080D9CB8: + 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 _080D9CDE +_080D9CCA: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080D9CDE +_080D9CD2: + movs r2, 0xA0 + lsls r2, 3 + adds r0, r2, 0 + ldrh r1, [r4, 0x1A] + adds r0, r1 + strh r0, [r4, 0x1A] +_080D9CDE: + movs r2, 0xB0 + lsls r2, 4 + adds r0, r2, 0 + ldrh r1, [r4, 0x1C] + adds r0, r1 + strh r0, [r4, 0x1C] + ldr r0, _080D9D0C @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D9D14 + ldr r1, _080D9D10 @ =gUnknown_030041B0 + ldrh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 24 + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] + adds r7, r1, 0 + b _080D9D24 + .align 2, 0 +_080D9D0C: .4byte gBattleAnimBankTarget +_080D9D10: .4byte gUnknown_030041B0 +_080D9D14: + ldr r2, _080D9D64 @ =gUnknown_030041B0 + ldrh r1, [r4, 0x1A] + lsls r1, 16 + asrs r1, 24 + ldrh r0, [r2] + subs r0, r1 + strh r0, [r2] + adds r7, r2, 0 +_080D9D24: + ldr r3, _080D9D68 @ =gUnknown_030041B8 + 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, _080D9D6C @ =gBattleAnimArgs + movs r2, 0xE + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080D9D5C + strh r5, [r7] + strh r5, [r3] + movs r0, 0x1 + bl sub_80789D4 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080D9D5C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D9D64: .4byte gUnknown_030041B0 +_080D9D68: .4byte gUnknown_030041B8 +_080D9D6C: .4byte gBattleAnimArgs + thumb_func_end sub_80D9C80 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fire.s b/asm/fire.s new file mode 100755 index 000000000..bafe1d7e1 --- /dev/null +++ b/asm/fire.s @@ -0,0 +1,360 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ fire + + thumb_func_start sub_80D4ED8 +sub_80D4ED8: @ 80D4ED8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D4F0C @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r4, 0x2E] + movs r0, 0x3C + strh r0, [r4, 0x30] + movs r0, 0x9 + strh r0, [r4, 0x32] + movs r0, 0x1E + strh r0, [r4, 0x34] + movs r0, 0xFE + lsls r0, 8 + strh r0, [r4, 0x36] + ldr r1, _080D4F10 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r1, _080D4F14 @ =sub_8078174 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D4F0C: .4byte gBattleAnimArgs +_080D4F10: .4byte move_anim_8072740 +_080D4F14: .4byte sub_8078174 + thumb_func_end sub_80D4ED8 + + thumb_func_start sub_80D4F18 +sub_80D4F18: @ 80D4F18 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080D4F50 @ =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_807867C + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x32] + ldr r0, _080D4F54 @ =sub_8078394 + str r0, [r4, 0x1C] + ldr r1, _080D4F58 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D4F50: .4byte gBattleAnimArgs +_080D4F54: .4byte sub_8078394 +_080D4F58: .4byte move_anim_8072740 + thumb_func_end sub_80D4F18 + + thumb_func_start sub_80D4F5C +sub_80D4F5C: @ 80D4F5C + push {r4,lr} + adds r4, r0, 0 + bl sub_8078650 + ldr r0, _080D4F90 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D4F98 + ldr r2, _080D4F94 @ =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r2, 0x8] + negs r0, r0 + strh r0, [r4, 0x32] + adds r1, r2, 0 + b _080D4FAE + .align 2, 0 +_080D4F90: .4byte gBattleAnimBankAttacker +_080D4F94: .4byte gBattleAnimArgs +_080D4F98: + ldr r1, _080D4FC4 @ =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, 0x8] + strh r0, [r4, 0x32] +_080D4FAE: + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x34] + ldr r0, _080D4FC8 @ =sub_80D5038 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D4FC4: .4byte gBattleAnimArgs +_080D4FC8: .4byte sub_80D5038 + thumb_func_end sub_80D4F5C + + thumb_func_start sub_80D4FCC +sub_80D4FCC: @ 80D4FCC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D4FF8 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D5000 + ldr r2, _080D4FFC @ =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r2, 0x8] + strh r0, [r4, 0x32] + adds r1, r2, 0 + b _080D5018 + .align 2, 0 +_080D4FF8: .4byte gBattleAnimBankAttacker +_080D4FFC: .4byte gBattleAnimArgs +_080D5000: + ldr r1, _080D5030 @ =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, 0x8] + negs r0, r0 + strh r0, [r4, 0x32] +_080D5018: + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x34] + ldr r0, _080D5034 @ =sub_80D5038 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D5030: .4byte gBattleAnimArgs +_080D5034: .4byte sub_80D5038 + thumb_func_end sub_80D4FCC + + thumb_func_start sub_80D5038 +sub_80D5038: @ 80D5038 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x36 + ldrsh r1, [r2, r3] + cmp r0, r1 + bge _080D505E + ldrh r0, [r2, 0x32] + ldrh r1, [r2, 0x24] + adds r0, r1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x34] + ldrh r3, [r2, 0x26] + adds r0, r3 + strh r0, [r2, 0x26] +_080D505E: + movs r0, 0x2E + ldrsh r1, [r2, r0] + movs r3, 0x30 + ldrsh r0, [r2, r3] + cmp r1, r0 + bne _080D5070 + adds r0, r2, 0 + bl move_anim_8074EE0 +_080D5070: + pop {r0} + bx r0 + thumb_func_end sub_80D5038 + + thumb_func_start sub_80D5074 +sub_80D5074: @ 80D5074 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078650 + ldr r0, _080D5098 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D50A0 + ldr r0, _080D509C @ =gBattleAnimArgs + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + b _080D50B2 + .align 2, 0 +_080D5098: .4byte gBattleAnimBankAttacker +_080D509C: .4byte gBattleAnimArgs +_080D50A0: + ldr r0, _080D50E0 @ =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + adds r2, r4, 0 + adds r2, 0x43 + movs r1, 0x8 + strb r1, [r2] +_080D50B2: + adds r2, r0, 0 + ldrh r0, [r2, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x22] + ldrh r0, [r2, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r2, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r2, 0x8] + strh r0, [r4, 0x32] + ldrh r0, [r2, 0xA] + strh r0, [r4, 0x34] + ldrh r0, [r2, 0xC] + strh r0, [r4, 0x36] + strh r1, [r4, 0x38] + ldr r0, _080D50E4 @ =sub_80D50E8 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D50E0: .4byte gBattleAnimArgs +_080D50E4: .4byte sub_80D50E8 + thumb_func_end sub_80D5074 + + thumb_func_start sub_80D50E8 +sub_80D50E8: @ 80D50E8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D5170 + movs r2, 0x38 + ldrsh r1, [r4, r2] + ldr r0, _080D5154 @ =0x00002710 + cmp r1, r0 + ble _080D5106 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1 + strb r0, [r1] +_080D5106: + movs r1, 0x2E + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 24 + ldrh r2, [r4, 0x30] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 24 + ldrh r2, [r4, 0x30] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + ldrh r0, [r4, 0x36] + ldrh r2, [r4, 0x38] + adds r0, r2 + strh r0, [r4, 0x38] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080D515C + ldr r2, _080D5158 @ =0xffffff00 + b _080D5164 + .align 2, 0 +_080D5154: .4byte 0x00002710 +_080D5158: .4byte 0xffffff00 +_080D515C: + cmp r0, 0 + bge _080D5168 + movs r2, 0x80 + lsls r2, 1 +_080D5164: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_080D5168: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _080D5176 +_080D5170: + adds r0, r4, 0 + bl move_anim_8074EE0 +_080D5176: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D50E8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fire_2.s b/asm/fire_2.s new file mode 100755 index 000000000..b96962bdf --- /dev/null +++ b/asm/fire_2.s @@ -0,0 +1,955 @@ + .include "constants/gba_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. diff --git a/asm/flying.s b/asm/flying.s new file mode 100755 index 000000000..cf0b1053c --- /dev/null +++ b/asm/flying.s @@ -0,0 +1,3057 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ flying + + thumb_func_start sub_80DA034 +sub_80DA034: @ 80DA034 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_8078764 + ldrh r0, [r4, 0x22] + adds r0, 0x14 + strh r0, [r4, 0x22] + movs r0, 0xBF + strh r0, [r4, 0x30] + ldr r1, _080DA058 @ =sub_80DA05C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA058: .4byte sub_80DA05C + thumb_func_end sub_80DA034 + + thumb_func_start sub_80DA05C +sub_80DA05C: @ 80DA05C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x47 + bne _080DA096 + adds r0, r4, 0 + bl move_anim_8072740 +_080DA096: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DA05C + + thumb_func_start sub_80DA09C +sub_80DA09C: @ 80DA09C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080DA0CC @ =gTasks + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r1, _080DA0D0 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x8] + ldrh r0, [r1] + strh r0, [r4, 0xA] + ldr r0, _080DA0D4 @ =0x00002719 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xC] + ldr r0, _080DA0D8 @ =sub_80DA0DC + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA0CC: .4byte gTasks +_080DA0D0: .4byte gBattleAnimArgs +_080DA0D4: .4byte 0x00002719 +_080DA0D8: .4byte sub_80DA0DC + thumb_func_end sub_80DA09C + + thumb_func_start sub_80DA0DC +sub_80DA0DC: @ 80DA0DC + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r2, _080DA15C @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r3, r0, r2 + ldrh r0, [r3, 0x1C] + adds r1, r0, 0x1 + strh r1, [r3, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r4, 0xA + ldrsh r1, [r3, r4] + adds r7, r2, 0 + cmp r0, r1 + bne _080DA13A + movs r0, 0 + strh r0, [r3, 0x1C] + ldrb r0, [r3, 0xC] + ldr r2, _080DA160 @ =gPlttBufferFaded + lsls r0, 4 + movs r3, 0x84 + lsls r3, 1 + adds r1, r0, r3 + lsls r1, 1 + adds r1, r2 + ldrh r6, [r1] + movs r4, 0x7 + mov r12, r0 + ldr r0, _080DA164 @ =0x00000107 + add r0, r12 + lsls r0, 1 + adds r3, r0, r2 +_080DA122: + ldrh r0, [r3] + strh r0, [r1] + subs r3, 0x2 + subs r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bgt _080DA122 + ldr r0, _080DA168 @ =0x00000101 + add r0, r12 + lsls r0, 1 + adds r0, r2 + strh r6, [r0] +_080DA13A: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r7 + ldrh r1, [r0, 0x8] + subs r1, 0x1 + strh r1, [r0, 0x8] + lsls r1, 16 + cmp r1, 0 + bne _080DA154 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080DA154: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DA15C: .4byte gTasks +_080DA160: .4byte gPlttBufferFaded +_080DA164: .4byte 0x00000107 +_080DA168: .4byte 0x00000101 + thumb_func_end sub_80DA0DC + + thumb_func_start sub_80DA16C +sub_80DA16C: @ 80DA16C + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080DA1D8 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DA18C + ldr r1, _080DA1DC @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080DA18C: + ldr r4, _080DA1DC @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldrh r0, [r6, 0x20] + strh r0, [r6, 0x30] + ldr r5, _080DA1E0 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrh r0, [r6, 0x22] + strh r0, [r6, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r6, 0x36] + adds r0, r6, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r0, _080DA1E4 @ =sub_80785E4 + str r0, [r6, 0x1C] + ldr r1, _080DA1E8 @ =sub_80DA1EC + adds r0, r6, 0 + bl StoreSpriteCallbackInData + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DA1D8: .4byte gBattleAnimBankAttacker +_080DA1DC: .4byte gBattleAnimArgs +_080DA1E0: .4byte gBattleAnimBankTarget +_080DA1E4: .4byte sub_80785E4 +_080DA1E8: .4byte sub_80DA1EC + thumb_func_end sub_80DA16C + + thumb_func_start sub_80DA1EC +sub_80DA1EC: @ 80DA1EC + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + beq _080DA200 + adds r0, r4, 0 + bl move_anim_8072740 +_080DA200: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DA1EC + + thumb_func_start sub_80DA208 +sub_80DA208: @ 80DA208 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080DA2A4 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DA234 + ldr r1, _080DA2A8 @ =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r1, 0x6] +_080DA234: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DA24C + ldr r0, _080DA2A8 @ =gBattleAnimArgs + ldrh r1, [r0, 0x2] + negs r1, r1 + strh r1, [r0, 0x2] + ldrh r1, [r0, 0x6] + negs r1, r1 + strh r1, [r0, 0x6] +_080DA24C: + 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 + ldr r2, _080DA2A8 @ =gBattleAnimArgs + ldrh r1, [r2] + ldrh r3, [r5, 0x20] + adds r1, r3 + strh r1, [r5, 0x20] + lsrs r0, 24 + ldrh r1, [r2, 0x2] + adds r0, r1 + strh r0, [r5, 0x22] + ldrh r0, [r2, 0x8] + strh r0, [r5, 0x2E] + movs r3, 0xC + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _080DA2B0 + ldr r4, _080DA2AC @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + b _080DA2C2 + .align 2, 0 +_080DA2A4: .4byte gBattleAnimBankAttacker +_080DA2A8: .4byte gBattleAnimArgs +_080DA2AC: .4byte gBattleAnimBankTarget +_080DA2B0: + ldr r0, _080DA2F0 @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_807A3FC +_080DA2C2: + ldr r4, _080DA2F4 @ =gBattleAnimArgs + ldrh r0, [r4, 0x4] + ldrh r1, [r5, 0x32] + adds r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r4, 0x6] + ldrh r3, [r5, 0x36] + adds r0, r3 + strh r0, [r5, 0x36] + ldr r0, _080DA2F8 @ =sub_8078B34 + str r0, [r5, 0x1C] + ldr r1, _080DA2FC @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldrb r1, [r4, 0xA] + adds r0, r5, 0 + bl SeekSpriteAnim + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DA2F0: .4byte gBattleAnimBankTarget +_080DA2F4: .4byte gBattleAnimArgs +_080DA2F8: .4byte sub_8078B34 +_080DA2FC: .4byte move_anim_8072740 + thumb_func_end sub_80DA208 + + thumb_func_start sub_80DA300 +sub_80DA300: @ 80DA300 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r1, _080DA33C @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080DA340 @ =sub_80DA348 + str r0, [r4, 0x1C] + movs r0, 0 + bl GetAnimBankSpriteId + ldr r2, _080DA344 @ =gSprites + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA33C: .4byte gBattleAnimArgs +_080DA340: .4byte sub_80DA348 +_080DA344: .4byte gSprites + thumb_func_end sub_80DA300 + + thumb_func_start sub_80DA348 +sub_80DA348: @ 80DA348 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x2E] + movs r3, 0x2E + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _080DA35C + subs r0, r1, 0x1 + strh r0, [r2, 0x2E] + b _080DA36E +_080DA35C: + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r2, 0x26] + subs r1, r0 + strh r1, [r2, 0x26] +_080DA36E: + movs r3, 0x22 + ldrsh r0, [r2, r3] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _080DA386 + adds r0, r2, 0 + bl move_anim_8072740 +_080DA386: + pop {r0} + bx r0 + thumb_func_end sub_80DA348 + + thumb_func_start sub_80DA38C +sub_80DA38C: @ 80DA38C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080DA3B4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DA3BC + movs r0, 0x88 + lsls r0, 1 + strh r0, [r5, 0x20] + ldr r0, _080DA3B8 @ =0x0000ffe0 + strh r0, [r5, 0x22] + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + b _080DA3C2 + .align 2, 0 +_080DA3B4: .4byte gBattleAnimBankAttacker +_080DA3B8: .4byte 0x0000ffe0 +_080DA3BC: + ldr r0, _080DA400 @ =0x0000ffe0 + strh r0, [r5, 0x20] + strh r0, [r5, 0x22] +_080DA3C2: + ldr r0, _080DA404 @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080DA408 @ =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, _080DA40C @ =sub_80DA410 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DA400: .4byte 0x0000ffe0 +_080DA404: .4byte gBattleAnimArgs +_080DA408: .4byte gBattleAnimBankTarget +_080DA40C: .4byte sub_80DA410 + thumb_func_end sub_80DA38C + + thumb_func_start sub_80DA410 +sub_80DA410: @ 80DA410 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_8078B5C + ldrh r1, [r4, 0x34] + lsrs r0, r1, 8 + cmp r0, 0xC8 + bls _080DA438 + ldrh r0, [r4, 0x24] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + movs r0, 0 + strh r0, [r4, 0x24] + movs r0, 0xFF + ands r0, r1 + strh r0, [r4, 0x34] +_080DA438: + movs r1, 0x20 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + adds r0, r1 + adds r0, 0x20 + movs r1, 0x98 + lsls r1, 1 + cmp r0, r1 + bhi _080DA45A + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + cmp r0, 0xA0 + ble _080DA480 +_080DA45A: + movs r0, 0 + bl GetAnimBankSpriteId + ldr r2, _080DA488 @ =gSprites + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0 + bl move_anim_8072740 +_080DA480: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA488: .4byte gSprites + thumb_func_end sub_80DA410 + + thumb_func_start sub_80DA48C +sub_80DA48C: @ 80DA48C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + subs r1, r0, 0x1 + strh r1, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bgt _080DA4CC + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DA4BE + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] +_080DA4BE: + adds r0, r4, 0 + bl DestroySprite + ldr r1, _080DA4D4 @ =gAnimVisualTaskCount + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] +_080DA4CC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA4D4: .4byte gAnimVisualTaskCount + thumb_func_end sub_80DA48C + + thumb_func_start sub_80DA4D8 +sub_80DA4D8: @ 80DA4D8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + adds r5, r7, 0 + adds r5, 0x2E + ldr r0, _080DA4F8 @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080DA500 + ldr r0, _080DA4FC @ =gBattleAnimBankAttacker + b _080DA502 + .align 2, 0 +_080DA4F8: .4byte gBattleAnimArgs +_080DA4FC: .4byte gBattleAnimBankAttacker +_080DA500: + ldr r0, _080DA5B0 @ =gBattleAnimBankTarget +_080DA502: + ldrb r6, [r0] + adds r0, r6, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DA518 + ldr r1, _080DA5B4 @ =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080DA518: + adds r0, r6, 0 + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + ldr r4, _080DA5B4 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r7, 0x20] + adds r0, r6, 0 + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + ldrh r1, [r4, 0x2] + lsrs r0, 24 + adds r1, r0, r1 + strh r1, [r7, 0x22] + lsls r1, 8 + strh r1, [r5, 0x8] + ldrh r1, [r4, 0xC] + adds r0, r1 + lsls r0, 1 + ldrh r2, [r5, 0xE] + movs r1, 0x1 + ands r1, r2 + orrs r1, r0 + strh r1, [r5, 0xE] + ldrb r0, [r5] + movs r2, 0x4 + mov r8, r2 + mov r1, r8 + orrs r0, r1 + strb r0, [r5] + ldrh r0, [r4, 0x4] + ldrb r1, [r4, 0x4] + strh r1, [r5, 0x2] + lsls r0, 16 + lsrs r0, 24 + strh r0, [r5, 0xA] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x4] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x6] + ldrh r0, [r4, 0xA] + strh r0, [r5, 0xC] + subs r1, 0x40 + lsls r1, 16 + lsrs r1, 16 + cmp r1, 0x7F + bhi _080DA618 + ldr r0, _080DA5B8 @ =gMain + ldr r2, _080DA5BC @ =0x0000043d + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DA5C0 + adds r0, r6, 0 + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r7, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x5] + b _080DA5D8 + .align 2, 0 +_080DA5B0: .4byte gBattleAnimBankTarget +_080DA5B4: .4byte gBattleAnimArgs +_080DA5B8: .4byte gMain +_080DA5BC: .4byte 0x0000043d +_080DA5C0: + adds r0, r6, 0 + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0x5] +_080DA5D8: + ldrb r1, [r5, 0xE] + movs r4, 0x2 + negs r4, r4 + adds r0, r4, 0 + ands r0, r1 + strb r0, [r5, 0xE] + movs r1, 0x4 + ldrsh r0, [r5, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + bne _080DA678 + adds r3, r7, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r0, r2, 31 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + adds r0, r4, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r7, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + b _080DA66E +_080DA618: + adds r0, r6, 0 + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0x5] + ldrb r0, [r5, 0xE] + movs r4, 0x1 + orrs r0, r4 + strb r0, [r5, 0xE] + movs r2, 0x4 + ldrsh r0, [r5, r2] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080DA678 + adds r3, r7, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + ands r1, r4 + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r7, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + mov r1, r8 +_080DA66E: + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] +_080DA678: + ldrh r1, [r5, 0x2] + lsrs r1, 6 + lsls r1, 4 + ldrb r2, [r5] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + ldr r3, _080DA6E4 @ =gSineTable + ldrh r0, [r5, 0x2] + lsls r0, 1 + adds r0, r3 + movs r2, 0 + ldrsh r1, [r0, r2] + ldrb r0, [r5, 0xC] + muls r0, r1 + asrs r0, 8 + strh r0, [r7, 0x24] + ldrb r2, [r7, 0x3] + lsls r2, 26 + lsrs r2, 27 + movs r1, 0x24 + ldrsh r0, [r7, r1] + negs r0, r0 + asrs r0, 1 + ldrb r5, [r5, 0xA] + adds r0, r5 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r3 + ldrh r4, [r1] + ldr r1, _080DA6E8 @ =gOamMatrices + lsls r2, 3 + adds r2, r1 + adds r0, 0x40 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r2, 0x6] + strh r0, [r2] + strh r4, [r2, 0x2] + lsls r0, r4, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r2, 0x4] + ldr r0, _080DA6EC @ =sub_80DA6F0 + str r0, [r7, 0x1C] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DA6E4: .4byte gSineTable +_080DA6E8: .4byte gOamMatrices +_080DA6EC: .4byte sub_80DA6F0 + thumb_func_end sub_80DA4D8 + + thumb_func_start sub_80DA6F0 +sub_80DA6F0: @ 80DA6F0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + movs r6, 0 + movs r0, 0x2E + adds r0, r5 + mov r12, r0 + ldrb r2, [r0] + movs r7, 0x1 + movs r1, 0x1 + mov r9, r1 + mov r0, r9 + ands r0, r2 + cmp r0, 0 + beq _080DA730 + mov r3, r12 + ldrb r0, [r3, 0x1] + adds r1, r0, 0 + adds r1, 0xFF + strb r1, [r3, 0x1] + lsls r0, 24 + cmp r0, 0 + beq _080DA724 + b _080DAD1A +_080DA724: + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r3] + strb r6, [r3, 0x1] + b _080DAD1A +_080DA730: + mov r4, r12 + ldrh r0, [r4, 0x2] + lsrs r4, r0, 6 + mov r8, r0 + cmp r4, 0x1 + bne _080DA73E + b _080DA896 +_080DA73E: + cmp r4, 0x1 + bgt _080DA748 + cmp r4, 0 + beq _080DA756 + b _080DAC52 +_080DA748: + cmp r4, 0x2 + bne _080DA74E + b _080DA9C8 +_080DA74E: + cmp r4, 0x3 + bne _080DA754 + b _080DAB0E +_080DA754: + b _080DAC52 +_080DA756: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0x1 + bne _080DA76C + movs r0, 0x8 + orrs r0, r2 + orrs r0, r7 + mov r1, r12 + strb r0, [r1] + strb r6, [r1, 0x1] + b _080DA88A +_080DA76C: + lsrs r0, r1, 28 + cmp r0, 0x3 + bne _080DA790 + lsls r0, r2, 30 + lsrs r0, 31 + movs r1, 0x1 + eors r0, r1 + ands r0, r7 + lsls r0, 1 + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + orrs r1, r7 + mov r2, r12 + strb r1, [r2] + strb r6, [r2, 0x1] + b _080DA88A +_080DA790: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _080DA88A + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r4, 0x1 + eors r1, r4 + ands r1, r7 + movs r6, 0x2 + negs r6, r6 + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + mov r3, r12 + ldrb r1, [r3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080DA87A + ldr r0, _080DA80C @ =gMain + ldr r1, _080DA810 @ =0x0000043d + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DA82E + ldrb r1, [r3, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DA814 + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080DA868 + .align 2, 0 +_080DA80C: .4byte gMain +_080DA810: .4byte 0x0000043d +_080DA814: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080DA866 +_080DA82E: + mov r0, r12 + ldrb r1, [r0, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DA85C + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + strb r0, [r1] + mov r1, r12 + ldrb r2, [r1, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + mov r2, r12 + strb r1, [r2, 0xE] + b _080DA87A +_080DA85C: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC + strb r0, [r1] +_080DA866: + mov r3, r12 +_080DA868: + ldrb r2, [r3, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xE] +_080DA87A: + mov r4, r12 + ldrb r1, [r4] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldrh r0, [r4, 0x2] + mov r8, r0 +_080DA88A: + mov r2, r12 + ldrb r1, [r2] + movs r0, 0xF + ands r0, r1 + strb r0, [r2] + b _080DAC52 +_080DA896: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0 + bne _080DA8AC + movs r0, 0x8 + orrs r0, r2 + orrs r0, r7 + mov r3, r12 + strb r0, [r3] + strb r6, [r3, 0x1] + b _080DA9BC +_080DA8AC: + lsrs r0, r1, 28 + cmp r0, 0x2 + bne _080DA8BE + adds r0, r2, 0 + orrs r0, r7 + mov r4, r12 + strb r0, [r4] + strb r6, [r4, 0x1] + b _080DA9BC +_080DA8BE: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _080DA9BC + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r4, 0x1 + eors r1, r4 + ands r1, r7 + movs r6, 0x2 + negs r6, r6 + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + mov r0, r12 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080DA9AC + ldr r0, _080DA940 @ =gMain + ldr r1, _080DA944 @ =0x0000043d + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DA962 + mov r2, r12 + ldrb r1, [r2, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DA948 + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + mov r3, r12 + b _080DA978 + .align 2, 0 +_080DA940: .4byte gMain +_080DA944: .4byte 0x0000043d +_080DA948: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080DA996 +_080DA962: + mov r3, r12 + ldrb r1, [r3, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DA98C + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + strb r0, [r1] +_080DA978: + ldrb r2, [r3, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xE] + b _080DA9AC +_080DA98C: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC + strb r0, [r1] +_080DA996: + mov r0, r12 + ldrb r2, [r0, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + mov r2, r12 + strb r1, [r2, 0xE] +_080DA9AC: + mov r3, r12 + ldrb r1, [r3] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r3] + ldrh r4, [r3, 0x2] + mov r8, r4 +_080DA9BC: + mov r1, r12 + ldrb r0, [r1] + movs r1, 0xF + ands r1, r0 + movs r0, 0x10 + b _080DAC4C +_080DA9C8: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0x3 + bne _080DA9DE + movs r0, 0x8 + orrs r0, r2 + orrs r0, r7 + mov r3, r12 + strb r0, [r3] + strb r6, [r3, 0x1] + b _080DAAFE +_080DA9DE: + lsrs r0, r1, 28 + cmp r0, 0x1 + bne _080DA9F0 + adds r0, r2, 0 + orrs r0, r7 + mov r4, r12 + strb r0, [r4] + strb r6, [r4, 0x1] + b _080DAAFE +_080DA9F0: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + bne _080DA9FA + b _080DAAFE +_080DA9FA: + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r6, 0x1 + eors r1, r6 + ands r1, r7 + movs r0, 0x2 + negs r0, r0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + mov r2, r12 + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080DAAEC + ldr r0, _080DAA6C @ =gMain + ldr r3, _080DAA70 @ =0x0000043d + adds r0, r3 + ldrb r0, [r0] + ands r4, r0 + cmp r4, 0 + beq _080DAAA4 + ldrb r1, [r2, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DAA74 + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080DAAD8 + .align 2, 0 +_080DAA6C: .4byte gMain +_080DAA70: .4byte 0x0000043d +_080DAA74: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + mov r0, r12 + ldrb r2, [r0, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + mov r2, r12 + strb r1, [r2, 0xE] + b _080DAAEC +_080DAAA4: + mov r3, r12 + ldrb r1, [r3, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DAACE + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + strb r0, [r1] + ldrb r2, [r3, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xE] + b _080DAAEC +_080DAACE: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC + strb r0, [r1] +_080DAAD8: + mov r4, r12 + ldrb r2, [r4, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0xE] +_080DAAEC: + mov r0, r12 + ldrb r1, [r0] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r2, [r1, 0x2] + mov r8, r2 +_080DAAFE: + mov r3, r12 + ldrb r0, [r3] + movs r1, 0xF + ands r1, r0 + movs r0, 0x20 + orrs r1, r0 + strb r1, [r3] + b _080DAC52 +_080DAB0E: + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0x2 + bne _080DAB20 + movs r0, 0x8 + orrs r0, r2 + mov r4, r12 + strb r0, [r4] + b _080DAC42 +_080DAB20: + lsrs r0, r1, 28 + cmp r0, 0 + bne _080DAB44 + lsls r0, r2, 30 + lsrs r0, 31 + movs r1, 0x1 + eors r0, r1 + ands r0, r7 + lsls r0, 1 + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + orrs r1, r7 + mov r0, r12 + strb r1, [r0] + strb r6, [r0, 0x1] + b _080DAC42 +_080DAB44: + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _080DAC42 + adds r3, r5, 0 + adds r3, 0x3F + ldrb r2, [r3] + lsls r1, r2, 31 + lsrs r1, 31 + movs r4, 0x1 + eors r1, r4 + ands r1, r7 + movs r6, 0x2 + negs r6, r6 + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, 31 + lsrs r0, 31 + adds r1, r5, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + mov r2, r12 + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080DAC32 + ldr r0, _080DABC4 @ =gMain + ldr r3, _080DABC8 @ =0x0000043d + adds r0, r3 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DABE6 + ldrb r1, [r2, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DABCC + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + mov r0, r12 + ldrb r2, [r0, 0xE] + b _080DAC00 + .align 2, 0 +_080DABC4: .4byte gMain +_080DABC8: .4byte 0x0000043d +_080DABCC: + ldrb r2, [r5, 0x5] + lsls r1, r2, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] + b _080DAC1E +_080DABE6: + mov r0, r12 + ldrb r1, [r0, 0xE] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080DAC14 + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + subs r0, 0xC + strb r0, [r1] + mov r1, r12 + ldrb r2, [r1, 0xE] +_080DAC00: + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + mov r2, r12 + strb r1, [r2, 0xE] + b _080DAC32 +_080DAC14: + adds r1, r5, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0xC + strb r0, [r1] +_080DAC1E: + mov r3, r12 + ldrb r2, [r3, 0xE] + lsls r0, r2, 31 + lsrs r0, 31 + eors r0, r4 + ands r0, r7 + adds r1, r6, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0xE] +_080DAC32: + mov r4, r12 + ldrb r1, [r4] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldrh r0, [r4, 0x2] + mov r8, r0 +_080DAC42: + mov r1, r12 + ldrb r0, [r1] + movs r1, 0xF + ands r1, r0 + movs r0, 0x30 +_080DAC4C: + orrs r1, r0 + mov r2, r12 + strb r1, [r2] +_080DAC52: + mov r3, r12 + ldrb r1, [r3] + lsls r1, 30 + lsrs r1, 31 + mov r0, r12 + adds r0, 0xC + adds r0, r1 + ldrb r1, [r0] + ldr r3, _080DACE0 @ =gSineTable + mov r4, r8 + lsls r0, r4, 1 + adds r0, r3 + movs r2, 0 + ldrsh r0, [r0, r2] + muls r0, r1 + asrs r0, 8 + strh r0, [r5, 0x24] + ldrb r2, [r5, 0x3] + lsls r2, 26 + lsrs r2, 27 + movs r4, 0x24 + ldrsh r0, [r5, r4] + negs r0, r0 + asrs r0, 1 + mov r1, r12 + ldrb r1, [r1, 0xA] + adds r0, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r3 + ldrh r6, [r1] + ldr r1, _080DACE4 @ =gOamMatrices + lsls r2, 3 + adds r2, r1 + adds r0, 0x40 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r2, 0x6] + strh r0, [r2] + strh r6, [r2, 0x2] + lsls r0, r6, 16 + asrs r0, 16 + negs r0, r0 + strh r0, [r2, 0x4] + mov r2, r12 + ldrh r0, [r2, 0x6] + ldrh r3, [r2, 0x8] + adds r0, r3 + strh r0, [r2, 0x8] + lsls r0, 16 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r4, 0x4 + ldrsh r0, [r2, r4] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080DACE8 + ldrh r0, [r2, 0x4] + subs r1, 0x1 + ands r1, r0 + ldrh r0, [r2, 0x2] + subs r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r2, 0x2] + b _080DACFE + .align 2, 0 +_080DACE0: .4byte gSineTable +_080DACE4: .4byte gOamMatrices +_080DACE8: + mov r1, r12 + ldrh r0, [r1, 0x4] + ldr r1, _080DAD28 @ =0x00007fff + ands r1, r0 + mov r2, r12 + ldrh r2, [r2, 0x2] + adds r1, r2 + movs r0, 0xFF + ands r1, r0 + mov r3, r12 + strh r1, [r3, 0x2] +_080DACFE: + movs r4, 0x22 + ldrsh r1, [r5, r4] + movs r2, 0x26 + ldrsh r0, [r5, r2] + adds r1, r0 + mov r3, r12 + ldrh r0, [r3, 0xE] + lsrs r0, 1 + cmp r1, r0 + blt _080DAD1A + movs r0, 0 + strh r0, [r5, 0x2E] + ldr r0, _080DAD2C @ =sub_80DA48C + str r0, [r5, 0x1C] +_080DAD1A: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DAD28: .4byte 0x00007fff +_080DAD2C: .4byte sub_80DA48C + thumb_func_end sub_80DA6F0 + + thumb_func_start sub_80DAD30 +sub_80DAD30: @ 80DAD30 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r0, _080DAD78 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + ldr r5, _080DAD7C @ =gBattleAnimBankAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r0, _080DAD80 @ =sub_807941C + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DAD78: .4byte gBattleAnimBankTarget +_080DAD7C: .4byte gBattleAnimBankAttacker +_080DAD80: .4byte sub_807941C + thumb_func_end sub_80DAD30 + + thumb_func_start sub_80DAD84 +sub_80DAD84: @ 80DAD84 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r5, _080DADCC @ =gBattleAnimArgs + ldrh r0, [r5] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x32] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x34] + ldr r0, _080DADD0 @ =gMain + ldr r1, _080DADD4 @ =0x0000043d + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080DAE44 + ldr r0, _080DADD8 @ =gBanksBySide + ldr r1, _080DADDC @ =gBattleAnimBankTarget + ldrb r2, [r1] + adds r0, r2, r0 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DADE0 + adds r0, r2, 0 + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x6] + adds r0, r5 + b _080DADEE + .align 2, 0 +_080DADCC: .4byte gBattleAnimArgs +_080DADD0: .4byte gMain +_080DADD4: .4byte 0x0000043d +_080DADD8: .4byte gBanksBySide +_080DADDC: .4byte gBattleAnimBankTarget +_080DADE0: + adds r0, r2, 0 + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x28 +_080DADEE: + strh r0, [r4, 0x3C] + ldr r0, _080DAE1C @ =gBattleAnimArgs + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080DAE24 + ldr r0, _080DAE20 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] + b _080DAE58 + .align 2, 0 +_080DAE1C: .4byte gBattleAnimArgs +_080DAE20: .4byte gBattleAnimBankTarget +_080DAE24: + ldr r0, _080DAE40 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + b _080DAE58 + .align 2, 0 +_080DAE40: .4byte gBattleAnimBankTarget +_080DAE44: + ldr r0, _080DAEFC @ =gBattleAnimBankTarget + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x6] + adds r0, r5 + strh r0, [r4, 0x3C] +_080DAE58: + ldr r5, _080DAF00 @ =gSineTable + ldrh r3, [r4, 0x30] + movs r1, 0xFF + ands r1, r3 + lsls r0, r1, 1 + adds r0, r5 + ldrh r0, [r0] + movs r2, 0 + strh r0, [r4, 0x36] + adds r1, 0x40 + lsls r1, 1 + adds r1, r5 + ldrh r0, [r1] + negs r0, r0 + strh r0, [r4, 0x38] + strh r2, [r4, 0x3A] + strh r2, [r4, 0x26] + strh r2, [r4, 0x24] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r6, r0, 27 + lsls r3, 16 + lsrs r3, 24 + strh r3, [r4, 0x30] + bl Random + lsls r0, 16 + asrs r7, r0, 16 + movs r0, 0x80 + lsls r0, 8 + ands r0, r7 + cmp r0, 0 + beq _080DAEA2 + ldrh r1, [r4, 0x30] + movs r0, 0xFF + subs r0, r1 + strh r0, [r4, 0x30] +_080DAEA2: + movs r0, 0x30 + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r5 + ldrh r0, [r0] + ldr r3, _080DAF04 @ =gOamMatrices + lsls r2, r6, 3 + adds r2, r3 + adds r1, 0x40 + lsls r1, 1 + adds r1, r5 + 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] + adds r3, r4, 0 + adds r3, 0x3F + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r3] + movs r0, 0x1 + ands r0, r7 + cmp r0, 0 + beq _080DAEF2 + adds r2, r4, 0 + adds r2, 0x2A + movs r1, 0x1 + movs r0, 0x1 + strb r0, [r2] + ldrb r0, [r3] + orrs r0, r1 + strb r0, [r3] +_080DAEF2: + ldr r0, _080DAF08 @ =sub_80DAF0C + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DAEFC: .4byte gBattleAnimBankTarget +_080DAF00: .4byte gSineTable +_080DAF04: .4byte gOamMatrices +_080DAF08: .4byte sub_80DAF0C + thumb_func_end sub_80DAD84 + + thumb_func_start sub_80DAF0C +sub_80DAF0C: @ 80DAF0C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r4, r0, 0 + adds r5, r4, 0 + adds r5, 0x2E + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + movs r1, 0 + mov r8, r1 + movs r7, 0 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080DAFF0 + movs r2, 0x36 + ldrsh r1, [r4, r2] + movs r2, 0x3A + ldrsh r0, [r4, r2] + muls r0, r1 + asrs r6, r0, 8 + strh r6, [r4, 0x24] + movs r0, 0x38 + ldrsh r1, [r4, r0] + movs r2, 0x3A + ldrsh r0, [r4, r2] + muls r0, r1 + asrs r3, r0, 8 + strh r3, [r4, 0x26] + ldrh r2, [r4, 0x34] + movs r1, 0xFF + adds r0, r1, 0 + ands r0, r2 + ldrh r2, [r4, 0x3A] + adds r0, r2 + strh r0, [r4, 0x3A] + ldrh r2, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + ands r1, r2 + cmp r0, r1 + blt _080DAFF0 + ldrh r0, [r4, 0x20] + adds r0, r6 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x22] + adds r0, r3 + strh r0, [r4, 0x22] + strh r7, [r4, 0x24] + strh r7, [r4, 0x26] + mov r0, sp + adds r1, r5, 0 + movs r2, 0x10 + bl memcpy + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x10 + bl memset + ldrh r0, [r4, 0x22] + lsls r0, 8 + strh r0, [r5, 0x8] + mov r0, sp + ldrh r0, [r0, 0x6] + lsrs r1, r0, 8 + strh r1, [r5, 0x6] + strh r7, [r5, 0x2] + mov r0, sp + ldrh r0, [r0, 0x2] + strh r0, [r5, 0xA] + adds r0, r4, 0 + adds r0, 0x2A + ldrb r0, [r0] + cmp r0, 0 + beq _080DAFC0 + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + beq _080DAFB8 + ldr r0, _080DAFB4 @ =0x00008001 + b _080DAFCE + .align 2, 0 +_080DAFB4: .4byte 0x00008001 +_080DAFB8: + ldr r0, _080DAFBC @ =0x00008002 + b _080DAFCE + .align 2, 0 +_080DAFBC: .4byte 0x00008002 +_080DAFC0: + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + beq _080DAFCC + movs r0, 0x1 + b _080DAFCE +_080DAFCC: + movs r0, 0x2 +_080DAFCE: + strh r0, [r5, 0x4] + mov r0, sp + ldrh r0, [r0, 0x4] + lsrs r0, 8 + strb r0, [r5, 0xC] + subs r0, 0x2 + strb r0, [r5, 0xD] + mov r0, sp + ldrh r1, [r0, 0xE] + lsls r1, 1 + ldrh r2, [r5, 0xE] + movs r0, 0x1 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0xE] + ldr r0, _080DAFFC @ =sub_80DA6F0 + str r0, [r4, 0x1C] +_080DAFF0: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DAFFC: .4byte sub_80DA6F0 + thumb_func_end sub_80DAF0C + + thumb_func_start sub_80DB000 +sub_80DB000: @ 80DB000 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080DB018 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DB01C + adds r0, r5, 0 + movs r1, 0 + bl sub_80787B0 + b _080DB024 + .align 2, 0 +_080DB018: .4byte gBattleAnimArgs +_080DB01C: + adds r0, r5, 0 + movs r1, 0 + bl sub_8078764 +_080DB024: + ldr r4, _080DB08C @ =gBattleAnimArgs + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080DB03C + ldr r0, _080DB090 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DB052 +_080DB03C: + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080DB058 + ldr r0, _080DB094 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DB058 +_080DB052: + ldrh r0, [r5, 0x20] + adds r0, 0x8 + strh r0, [r5, 0x20] +_080DB058: + ldr r4, _080DB08C @ =gBattleAnimArgs + ldrb r1, [r4, 0x8] + adds r0, r5, 0 + bl SeekSpriteAnim + ldrh r0, [r5, 0x20] + subs r0, 0x20 + strh r0, [r5, 0x20] + ldr r0, _080DB098 @ =0x00000ccc + strh r0, [r5, 0x30] + ldrh r1, [r4, 0x8] + movs r0, 0xC + adds r2, r0, 0 + muls r2, r1 + adds r0, r2, 0 + ldrh r2, [r5, 0x24] + adds r0, r2 + strh r0, [r5, 0x24] + strh r1, [r5, 0x2E] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x3C] + ldr r0, _080DB09C @ =sub_80DB0A0 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DB08C: .4byte gBattleAnimArgs +_080DB090: .4byte gBattleAnimBankAttacker +_080DB094: .4byte gBattleAnimBankTarget +_080DB098: .4byte 0x00000ccc +_080DB09C: .4byte sub_80DB0A0 + thumb_func_end sub_80DB000 + + thumb_func_start sub_80DB0A0 +sub_80DB0A0: @ 80DB0A0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x24] + adds r0, r1 + movs r1, 0 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080DB0CA + strh r1, [r4, 0x2E] + strh r1, [r4, 0x24] + adds r0, r4, 0 + bl StartSpriteAnim +_080DB0CA: + ldrh r0, [r4, 0x3C] + subs r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080DB0E2 + adds r0, r4, 0 + bl move_anim_8072740 +_080DB0E2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DB0A0 + + thumb_func_start sub_80DB0E8 +sub_80DB0E8: @ 80DB0E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080DB180 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r7, r0, r1 + ldrh r0, [r7, 0x8] + movs r1, 0x1F + ands r0, r1 + cmp r0, 0 + bne _080DB162 + ldr r1, _080DB184 @ =gAnimVisualTaskCount + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r1, 0x8 + ldrsh r0, [r7, r1] + movs r5, 0xD + negs r5, r5 + adds r1, r5, 0 + bl Sin + ldr r4, _080DB188 @ =gBattleAnimArgs + strh r0, [r4] + movs r1, 0x8 + ldrsh r0, [r7, r1] + adds r1, r5, 0 + bl Cos + strh r0, [r4, 0x2] + movs r0, 0x1 + strh r0, [r4, 0x4] + movs r0, 0x3 + strh r0, [r4, 0x6] + ldr r0, _080DB18C @ =gBattleAnimSpriteTemplate_83DB538 + mov r8, r0 + ldr r5, _080DB190 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + mov r0, r8 + adds r1, r4, 0 + movs r3, 0x3 + bl CreateSpriteAndAnimate +_080DB162: + ldrh r0, [r7, 0x8] + adds r0, 0x8 + strh r0, [r7, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080DB176 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080DB176: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DB180: .4byte gTasks +_080DB184: .4byte gAnimVisualTaskCount +_080DB188: .4byte gBattleAnimArgs +_080DB18C: .4byte gBattleAnimSpriteTemplate_83DB538 +_080DB190: .4byte gBattleAnimBankTarget + thumb_func_end sub_80DB0E8 + + thumb_func_start sub_80DB194 +sub_80DB194: @ 80DB194 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080DB1A6 + cmp r0, 0x1 + beq _080DB1D8 + b _080DB1EC +_080DB1A6: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80787B0 + movs r0, 0 + bl GetAnimBankSpriteId + ldr r2, _080DB1D4 @ =gSprites + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080DB1EC + .align 2, 0 +_080DB1D4: .4byte gSprites +_080DB1D8: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080DB1EC + adds r0, r4, 0 + bl move_anim_8072740 +_080DB1EC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DB194 + + thumb_func_start sub_80DB1F4 +sub_80DB1F4: @ 80DB1F4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080DB22C + cmp r0, 0x1 + bgt _080DB20A + cmp r0, 0 + beq _080DB210 + b _080DB27E +_080DB20A: + cmp r0, 0x2 + beq _080DB240 + b _080DB27E +_080DB210: + ldr r0, _080DB228 @ =gBattleAnimBankTarget + ldrb r0, [r0] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + negs r0, r0 + subs r0, 0x20 + strh r0, [r4, 0x26] + b _080DB238 + .align 2, 0 +_080DB228: .4byte gBattleAnimBankTarget +_080DB22C: + ldrh r0, [r4, 0x26] + adds r0, 0xA + strh r0, [r4, 0x26] + lsls r0, 16 + cmp r0, 0 + blt _080DB27E +_080DB238: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080DB27E +_080DB240: + ldrh r0, [r4, 0x26] + subs r0, 0xA + strh r0, [r4, 0x26] + movs r2, 0x22 + ldrsh r0, [r4, r2] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _080DB27E + movs r0, 0 + bl GetAnimBankSpriteId + ldr r2, _080DB284 @ =gSprites + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0 + bl move_anim_8072740 +_080DB27E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DB284: .4byte gSprites + thumb_func_end sub_80DB1F4 + + thumb_func_start sub_80DB288 +sub_80DB288: @ 80DB288 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r1, _080DB2C4 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080DB2C8 @ =sub_80DB2D0 + str r0, [r4, 0x1C] + movs r0, 0 + bl GetAnimBankSpriteId + ldr r2, _080DB2CC @ =gSprites + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DB2C4: .4byte gBattleAnimArgs +_080DB2C8: .4byte sub_80DB2D0 +_080DB2CC: .4byte gSprites + thumb_func_end sub_80DB288 + + thumb_func_start sub_80DB2D0 +sub_80DB2D0: @ 80DB2D0 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x2E] + movs r3, 0x2E + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _080DB2E4 + subs r0, r1, 0x1 + strh r0, [r2, 0x2E] + b _080DB328 +_080DB2E4: + movs r1, 0x22 + ldrsh r0, [r2, r1] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + ble _080DB30A + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r2, 0x26] + subs r1, r0 + strh r1, [r2, 0x26] + b _080DB328 +_080DB30A: + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r2, 0x34] + adds r1, r0, 0x1 + strh r1, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080DB328 + ldr r0, _080DB32C @ =sub_80DB330 + str r0, [r2, 0x1C] +_080DB328: + pop {r0} + bx r0 + .align 2, 0 +_080DB32C: .4byte sub_80DB330 + thumb_func_end sub_80DB2D0 + + thumb_func_start sub_80DB330 +sub_80DB330: @ 80DB330 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r2, 0x26] + adds r0, r1 + strh r0, [r2, 0x26] + movs r3, 0x22 + ldrsh r0, [r2, r3] + movs r3, 0x26 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + ble _080DB360 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r3] +_080DB360: + movs r1, 0x26 + ldrsh r0, [r2, r1] + cmp r0, 0 + ble _080DB36E + adds r0, r2, 0 + bl move_anim_8072740 +_080DB36E: + pop {r0} + bx r0 + thumb_func_end sub_80DB330 + + thumb_func_start sub_80DB374 +sub_80DB374: @ 80DB374 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080DB388 + cmp r0, 0x1 + beq _080DB3E0 + b _080DB44C +_080DB388: + ldr r0, _080DB398 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + bne _080DB3A0 + ldr r4, _080DB39C @ =gBattleAnimBankAttacker + b _080DB3A2 + .align 2, 0 +_080DB398: .4byte gBattleAnimArgs +_080DB39C: .4byte gBattleAnimBankAttacker +_080DB3A0: + ldr r4, _080DB3DC @ =gBattleAnimBankTarget +_080DB3A2: + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r0, 0 + movs r3, 0x80 + lsls r3, 2 + strh r3, [r5, 0x30] + movs r2, 0x80 + lsls r2, 1 + str r0, [sp] + adds r0, r5, 0 + movs r1, 0 + bl sub_8078FDC + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080DB44C + .align 2, 0 +_080DB3DC: .4byte gBattleAnimBankTarget +_080DB3E0: + movs r1, 0x32 + ldrsh r0, [r5, r1] + cmp r0, 0xB + bgt _080DB3EE + ldrh r0, [r5, 0x30] + subs r0, 0x28 + b _080DB3F2 +_080DB3EE: + ldrh r0, [r5, 0x30] + adds r0, 0x28 +_080DB3F2: + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + adds r0, 0x1 + movs r1, 0 + strh r0, [r5, 0x32] + movs r2, 0x80 + lsls r2, 1 + movs r0, 0x30 + ldrsh r3, [r5, r0] + str r1, [sp] + adds r0, r5, 0 + bl sub_8078FDC + ldrb r1, [r5, 0x3] + lsls r1, 26 + lsrs r1, 27 + movs r0, 0xF4 + lsls r0, 6 + ldr r2, _080DB454 @ =gOamMatrices + lsls r1, 3 + adds r1, r2 + movs r2, 0x6 + ldrsh r1, [r1, r2] + bl __divsi3 + adds r1, r0, 0x1 + cmp r1, 0x80 + ble _080DB42C + movs r1, 0x80 +_080DB42C: + movs r0, 0x40 + subs r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r1, r0, 1 + strh r1, [r5, 0x26] + movs r1, 0x32 + ldrsh r0, [r5, r1] + cmp r0, 0x18 + bne _080DB44C + adds r0, r5, 0 + bl sub_8079098 + adds r0, r5, 0 + bl move_anim_8072740 +_080DB44C: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DB454: .4byte gOamMatrices + thumb_func_end sub_80DB374 + + thumb_func_start sub_80DB458 +sub_80DB458: @ 80DB458 + push {r4,r5,lr} + adds r5, r0, 0 + bl Random + ldr r4, _080DB47C @ =0x000001ff + ands r4, r0 + bl Random + movs r1, 0x7F + ands r1, r0 + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080DB480 + movs r2, 0xB8 + lsls r2, 2 + adds r0, r4, r2 + b _080DB488 + .align 2, 0 +_080DB47C: .4byte 0x000001ff +_080DB480: + movs r2, 0xB8 + lsls r2, 2 + adds r0, r2, 0 + subs r0, r4 +_080DB488: + strh r0, [r5, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DB49C + movs r2, 0xE0 + lsls r2, 2 + adds r0, r2, 0 + adds r0, r1, r0 + b _080DB4A4 +_080DB49C: + movs r2, 0xE0 + lsls r2, 2 + adds r0, r2, 0 + subs r0, r1 +_080DB4A4: + strh r0, [r5, 0x30] + ldr r2, _080DB4CC @ =gBattleAnimArgs + ldrh r0, [r2] + strh r0, [r5, 0x32] + lsls r0, 16 + cmp r0, 0 + beq _080DB4C0 + ldrb r0, [r5, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + strb r1, [r5, 0x3] +_080DB4C0: + movs r1, 0x2 + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _080DB4D4 + ldr r4, _080DB4D0 @ =gBattleAnimBankAttacker + b _080DB4D6 + .align 2, 0 +_080DB4CC: .4byte gBattleAnimArgs +_080DB4D0: .4byte gBattleAnimBankAttacker +_080DB4D4: + ldr r4, _080DB500 @ =gBattleAnimBankTarget +_080DB4D6: + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r5, 0x22] + ldr r0, _080DB504 @ =sub_80DB508 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DB500: .4byte gBattleAnimBankTarget +_080DB504: .4byte sub_80DB508 + thumb_func_end sub_80DB458 + + thumb_func_start sub_80DB508 +sub_80DB508: @ 80DB508 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DB520 + ldrh r3, [r4, 0x2E] + lsls r0, r3, 16 + asrs r0, 24 + ldrh r1, [r4, 0x24] + adds r0, r1 + b _080DB52A +_080DB520: + ldrh r3, [r4, 0x2E] + lsls r1, r3, 16 + asrs r1, 24 + ldrh r0, [r4, 0x24] + subs r0, r1 +_080DB52A: + strh r0, [r4, 0x24] + ldrh r2, [r4, 0x30] + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r4, 0x26] + subs r0, r1 + strh r0, [r4, 0x26] + strh r3, [r4, 0x2E] + adds r0, r2, 0 + subs r0, 0x20 + strh r0, [r4, 0x30] + lsls r0, r3, 16 + cmp r0, 0 + bge _080DB54A + movs r0, 0 + strh r0, [r4, 0x2E] +_080DB54A: + ldrh r0, [r4, 0x34] + adds r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080DB55E + adds r0, r4, 0 + bl move_anim_8072740 +_080DB55E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DB508 + + thumb_func_start sub_80DB564 +sub_80DB564: @ 80DB564 + movs r1, 0 + strh r1, [r0, 0x3A] + movs r1, 0x40 + strh r1, [r0, 0x3C] + ldr r1, _080DB574 @ =sub_80DB578 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080DB574: .4byte sub_80DB578 + thumb_func_end sub_80DB564 + + thumb_func_start sub_80DB578 +sub_80DB578: @ 80DB578 + push {lr} + adds r3, r0, 0 + movs r0, 0x2E + ldrsh r1, [r3, r0] + cmp r1, 0 + beq _080DB58A + cmp r1, 0x1 + beq _080DB5D8 + b _080DB5DE +_080DB58A: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080DB5DE + strh r1, [r3, 0x30] + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + ldrb r2, [r1] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080DB5DE + ldrb r1, [r1] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080DB5DE + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + b _080DB5DE +_080DB5D8: + adds r0, r3, 0 + bl move_anim_8072740 +_080DB5DE: + pop {r0} + bx r0 + thumb_func_end sub_80DB578 + + thumb_func_start sub_80DB5E4 +sub_80DB5E4: @ 80DB5E4 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + mov r8, r0 + ldrh r4, [r0, 0x20] + ldrh r5, [r0, 0x22] + ldr r6, _080DB698 @ =gBattleAnimBankAttacker + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + strh r0, [r1, 0x20] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8077ABC + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + mov r2, r8 + strh r6, [r2, 0x22] + ldrh r0, [r2, 0x20] + mov r9, r0 + mov r1, r9 + lsls r0, r1, 4 + strh r0, [r2, 0x36] + lsls r0, r6, 4 + strh r0, [r2, 0x38] + lsls r4, 16 + asrs r4, 16 + movs r1, 0x20 + ldrsh r0, [r2, r1] + subs r0, r4, r0 + lsls r0, 4 + movs r1, 0xC + bl __divsi3 + mov r2, r8 + strh r0, [r2, 0x3A] + lsls r5, 16 + asrs r5, 16 + movs r1, 0x22 + ldrsh r0, [r2, r1] + subs r0, r5, r0 + lsls r0, 4 + movs r1, 0xC + bl __divsi3 + mov r2, r8 + strh r0, [r2, 0x3C] + mov r0, r9 + subs r4, r0 + lsls r4, 16 + asrs r4, 16 + subs r5, r6 + lsls r5, 16 + asrs r5, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80790F0 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 24 + adds r0, r1 + lsrs r0, 16 + movs r3, 0x80 + lsls r3, 1 + str r0, [sp] + mov r0, r8 + movs r1, 0x1 + adds r2, r3, 0 + bl sub_8078FDC + ldr r0, _080DB69C @ =sub_80DB6A0 + mov r2, r8 + str r0, [r2, 0x1C] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DB698: .4byte gBattleAnimBankAttacker +_080DB69C: .4byte sub_80DB6A0 + thumb_func_end sub_80DB5E4 + + thumb_func_start sub_80DB6A0 +sub_80DB6A0: @ 80DB6A0 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x3A] + ldrh r1, [r2, 0x36] + adds r0, r1 + strh r0, [r2, 0x36] + ldrh r1, [r2, 0x3C] + ldrh r3, [r2, 0x38] + adds r1, r3 + strh r1, [r2, 0x38] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r3, r1, 20 + strh r3, [r2, 0x22] + adds r0, 0x2D + lsls r0, 16 + movs r1, 0xA5 + lsls r1, 17 + cmp r0, r1 + bhi _080DB6DA + adds r1, r3, 0 + cmp r1, 0x9D + bgt _080DB6DA + movs r0, 0x2D + negs r0, r0 + cmp r1, r0 + bge _080DB6E0 +_080DB6DA: + adds r0, r2, 0 + bl move_anim_8074EE0 +_080DB6E0: + pop {r0} + bx r0 + thumb_func_end sub_80DB6A0 + + thumb_func_start unref_sub_80DB6E4 +unref_sub_80DB6E4: @ 80DB6E4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080DB714 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DB71C + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DB718 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + b _080DB73A + .align 2, 0 +_080DB714: .4byte gBattleAnimArgs +_080DB718: .4byte gSprites +_080DB71C: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DB748 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 +_080DB73A: + strb r0, [r1] + adds r0, r4, 0 + bl DestroyAnimVisualTask + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DB748: .4byte gSprites + thumb_func_end unref_sub_80DB6E4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fury_cutter_count.s b/asm/fury_cutter_count.s new file mode 100755 index 000000000..10444b254 --- /dev/null +++ b/asm/fury_cutter_count.s @@ -0,0 +1,48 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ fury_cutter_count + + thumb_func_start sub_80D30AC +sub_80D30AC: @ 80D30AC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080D30C8 @ =gBattleAnimArgs + ldr r1, _080D30CC @ =gDisableStructMoveAnim + ldr r1, [r1] + ldrb r2, [r1, 0x10] + movs r1, 0x1 + ands r1, r2 + strh r1, [r3, 0xE] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080D30C8: .4byte gBattleAnimArgs +_080D30CC: .4byte gDisableStructMoveAnim + thumb_func_end sub_80D30AC + + thumb_func_start update_fury_cutter_counter_copy +update_fury_cutter_counter_copy: @ 80D30D0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080D30E8 @ =gBattleAnimArgs + ldr r1, _080D30EC @ =gDisableStructMoveAnim + ldr r1, [r1] + ldrb r1, [r1, 0x10] + strh r1, [r2, 0xE] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080D30E8: .4byte gBattleAnimArgs +_080D30EC: .4byte gDisableStructMoveAnim + thumb_func_end update_fury_cutter_counter_copy + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/ghost.s b/asm/ghost.s new file mode 100755 index 000000000..09458dec1 --- /dev/null +++ b/asm/ghost.s @@ -0,0 +1,3383 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ ghost + + thumb_func_start sub_80DDB6C +sub_80DDB6C: @ 80DDB6C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080DDBC8 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r5, _080DDBCC @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_8078BD4 + ldr r0, _080DDBD0 @ =sub_80DDBD8 + str r0, [r4, 0x1C] + movs r0, 0x10 + strh r0, [r4, 0x3A] + ldr r1, _080DDBD4 @ =REG_BLDCNT + movs r2, 0xFD + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldrh r0, [r4, 0x3A] + strh r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DDBC8: .4byte gBattleAnimArgs +_080DDBCC: .4byte gBattleAnimBankTarget +_080DDBD0: .4byte sub_80DDBD8 +_080DDBD4: .4byte REG_BLDCNT + thumb_func_end sub_80DDB6C + + thumb_func_start sub_80DDBD8 +sub_80DDBD8: @ 80DDBD8 + push {r4,lr} + adds r4, r0, 0 + bl sub_80DDCC8 + adds r0, r4, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + beq _080DDBF8 + ldr r0, _080DDBF4 @ =sub_80DDC4C + str r0, [r4, 0x1C] + b _080DDC42 + .align 2, 0 +_080DDBF4: .4byte sub_80DDC4C +_080DDBF8: + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xF + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r2, [r4, 0x38] + adds r0, r2, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x38] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0 + beq _080DDC30 + cmp r2, 0xC4 + ble _080DDC42 +_080DDC30: + lsls r0, 16 + cmp r0, 0 + ble _080DDC42 + ldr r0, _080DDC48 @ =gUnknown_0202F7D2 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0xC4 + bl PlaySE12WithPanning +_080DDC42: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DDC48: .4byte gUnknown_0202F7D2 + thumb_func_end sub_80DDBD8 + + thumb_func_start sub_80DDC4C +sub_80DDC4C: @ 80DDC4C + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_8078B5C + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xF + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r2, [r4, 0x38] + adds r0, r2, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x38] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0 + beq _080DDC92 + cmp r2, 0xC4 + ble _080DDC9E +_080DDC92: + lsls r0, 16 + cmp r0, 0 + ble _080DDC9E + movs r0, 0xC4 + bl PlaySE +_080DDC9E: + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DDCBC + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080DDCB8 @ =sub_807861C + str r0, [r4, 0x1C] + b _080DDCC2 + .align 2, 0 +_080DDCB8: .4byte sub_807861C +_080DDCBC: + adds r0, r4, 0 + bl sub_80DDCC8 +_080DDCC2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DDC4C + + thumb_func_start sub_80DDCC8 +sub_80DDCC8: @ 80DDCC8 + push {r4,lr} + adds r3, r0, 0 + ldrh r2, [r3, 0x3A] + movs r1, 0x3A + ldrsh r0, [r3, r1] + cmp r0, 0xFF + ble _080DDCEC + adds r0, r2, 0x1 + strh r0, [r3, 0x3A] + lsls r0, 16 + ldr r1, _080DDCE8 @ =0x010d0000 + cmp r0, r1 + bne _080DDD4C + movs r0, 0 + b _080DDD4A + .align 2, 0 +_080DDCE8: .4byte 0x010d0000 +_080DDCEC: + ldrh r1, [r3, 0x3C] + adds r4, r1, 0x1 + strh r4, [r3, 0x3C] + movs r0, 0xFF + ands r0, r1 + cmp r0, 0 + bne _080DDD4C + ldr r1, _080DDD10 @ =0xffffff00 + ands r1, r4 + strh r1, [r3, 0x3C] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080DDD14 + adds r0, r2, 0x1 + b _080DDD16 + .align 2, 0 +_080DDD10: .4byte 0xffffff00 +_080DDD14: + subs r0, r2, 0x1 +_080DDD16: + strh r0, [r3, 0x3A] + ldr r2, _080DDD54 @ =REG_BLDALPHA + ldrh r1, [r3, 0x3A] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r0, r1 + strh r0, [r2] + movs r2, 0x3A + ldrsh r0, [r3, r2] + cmp r0, 0 + beq _080DDD32 + cmp r0, 0x10 + bne _080DDD3E +_080DDD32: + ldrh r0, [r3, 0x3C] + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + eors r0, r1 + strh r0, [r3, 0x3C] +_080DDD3E: + movs r1, 0x3A + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080DDD4C + movs r0, 0x80 + lsls r0, 1 +_080DDD4A: + strh r0, [r3, 0x3A] +_080DDD4C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DDD54: .4byte REG_BLDALPHA + thumb_func_end sub_80DDCC8 + + thumb_func_start sub_80DDD58 +sub_80DDD58: @ 80DDD58 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r1, _080DDD74 @ =sub_80DDD78 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DDD74: .4byte sub_80DDD78 + thumb_func_end sub_80DDD58 + + thumb_func_start sub_80DDD78 +sub_80DDD78: @ 80DDD78 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + subs r0, 0x41 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x82 + bhi _080DDDAC + ldrb r0, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x8 + b _080DDDB6 +_080DDDAC: + ldrb r0, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 +_080DDDB6: + orrs r1, r0 + strb r1, [r4, 0x5] + ldrh r0, [r4, 0x2E] + adds r0, 0x13 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x32] + adds r0, 0x50 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3D + bne _080DDDE8 + adds r0, r4, 0 + bl move_anim_8072740 +_080DDDE8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DDD78 + + thumb_func_start sub_80DDDF0 +sub_80DDDF0: @ 80DDDF0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r1, _080DDE68 @ =REG_BLDCNT + movs r2, 0xFD + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r2, 0x80 + lsls r2, 5 + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0 + bl GetAnimBankSpriteId + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8078E70 + adds r0, r4, 0 + movs r1, 0x80 + movs r2, 0x80 + movs r3, 0 + bl obj_id_set_rotscale + ldr r1, _080DDE6C @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + ldr r1, _080DDE70 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r2, 0 + movs r1, 0x80 + strh r1, [r0, 0x8] + ldr r1, _080DDE74 @ =gBattleAnimArgs + ldrh r1, [r1] + strh r1, [r0, 0xA] + strh r2, [r0, 0xC] + movs r1, 0x10 + strh r1, [r0, 0xE] + ldr r1, _080DDE78 @ =sub_80DDE7C + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DDE68: .4byte REG_BLDCNT +_080DDE6C: .4byte gSprites +_080DDE70: .4byte gTasks +_080DDE74: .4byte gBattleAnimArgs +_080DDE78: .4byte sub_80DDE7C + thumb_func_end sub_80DDDF0 + + thumb_func_start sub_80DDE7C +sub_80DDE7C: @ 80DDE7C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DDEC4 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r3, r1, r2 + ldrh r0, [r3, 0x1C] + adds r0, 0x1 + strh r0, [r3, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080DDEBE + movs r0, 0 + strh r0, [r3, 0x1C] + ldrh r1, [r3, 0xC] + adds r1, 0x1 + strh r1, [r3, 0xC] + ldrh r0, [r3, 0xE] + subs r0, 0x1 + strh r0, [r3, 0xE] + ldr r2, _080DDEC8 @ =REG_BLDALPHA + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r1, 0xC + ldrsh r0, [r3, r1] + cmp r0, 0x9 + bne _080DDEBE + ldr r0, _080DDECC @ =sub_80DDED0 + str r0, [r3] +_080DDEBE: + pop {r0} + bx r0 + .align 2, 0 +_080DDEC4: .4byte gTasks +_080DDEC8: .4byte REG_BLDALPHA +_080DDECC: .4byte sub_80DDED0 + thumb_func_end sub_80DDE7C + + thumb_func_start sub_80DDED0 +sub_80DDED0: @ 80DDED0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080DDEF4 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0xA] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080DDEF8 + subs r0, r1, 0x1 + strh r0, [r4, 0xA] + b _080DDF36 + .align 2, 0 +_080DDEF4: .4byte gTasks +_080DDEF8: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r1, r0, 24 + ldrh r0, [r4, 0x8] + adds r0, 0x8 + movs r6, 0 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xFF + bgt _080DDF22 + movs r0, 0x8 + ldrsh r2, [r4, r0] + adds r0, r1, 0 + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + b _080DDF36 +_080DDF22: + adds r0, r1, 0 + bl sub_8078F40 + adds r0, r5, 0 + bl DestroyAnimVisualTask + ldr r0, _080DDF3C @ =REG_BLDCNT + strh r6, [r0] + adds r0, 0x2 + strh r6, [r0] +_080DDF36: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DDF3C: .4byte REG_BLDCNT + thumb_func_end sub_80DDED0 + + thumb_func_start sub_80DDF40 +sub_80DDF40: @ 80DDF40 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r5, [r4, 0x20] + ldrh r6, [r4, 0x22] + ldr r0, _080DDFDC @ =gBattleAnimBankAttacker + mov r8, r0 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + mov r9, r1 + strh r0, [r4, 0x20] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + mov r1, r9 + strh r1, [r4, 0x2E] + ldr r2, _080DDFE0 @ =gBattleAnimArgs + ldrh r1, [r2] + strh r1, [r4, 0x30] + ldrh r1, [r2, 0x2] + strh r1, [r4, 0x32] + ldrh r1, [r2, 0x4] + strh r1, [r4, 0x34] + ldrh r1, [r4, 0x20] + lsls r1, 4 + strh r1, [r4, 0x36] + lsls r0, 4 + strh r0, [r4, 0x38] + lsls r5, 16 + asrs r5, 16 + movs r1, 0x20 + ldrsh r0, [r4, r1] + subs r5, r0 + lsls r5, 4 + movs r0, 0 + ldrsh r1, [r2, r0] + lsls r1, 1 + adds r0, r5, 0 + str r2, [sp] + bl __divsi3 + strh r0, [r4, 0x3A] + lsls r6, 16 + asrs r6, 16 + movs r1, 0x22 + ldrsh r0, [r4, r1] + subs r6, r0 + lsls r6, 4 + ldr r2, [sp] + movs r0, 0 + ldrsh r1, [r2, r0] + lsls r1, 1 + adds r0, r6, 0 + bl __divsi3 + strh r0, [r4, 0x3C] + ldr r0, _080DDFE4 @ =sub_80DDFE8 + str r0, [r4, 0x1C] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DDFDC: .4byte gBattleAnimBankAttacker +_080DDFE0: .4byte gBattleAnimArgs +_080DDFE4: .4byte sub_80DDFE8 + thumb_func_end sub_80DDF40 + + thumb_func_start sub_80DDFE8 +sub_80DDFE8: @ 80DDFE8 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080DE032 + cmp r0, 0x1 + bgt _080DDFFE + cmp r0, 0 + beq _080DE008 + b _080DE0F6 +_080DDFFE: + cmp r0, 0x2 + beq _080DE09C + cmp r0, 0x3 + beq _080DE0F0 + b _080DE0F6 +_080DE008: + ldrh r0, [r5, 0x3A] + ldrh r2, [r5, 0x36] + adds r0, r2 + strh r0, [r5, 0x36] + ldrh r1, [r5, 0x3C] + ldrh r2, [r5, 0x38] + adds r1, r2 + strh r1, [r5, 0x38] + lsls r0, 16 + asrs r0, 20 + strh r0, [r5, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r5, 0x22] + ldrh r0, [r5, 0x30] + subs r0, 0x1 + strh r0, [r5, 0x30] + lsls r0, 16 + cmp r0, 0 + bgt _080DE0F6 + b _080DE0E2 +_080DE032: + ldrh r0, [r5, 0x32] + subs r0, 0x1 + strh r0, [r5, 0x32] + lsls r0, 16 + cmp r0, 0 + bgt _080DE0F6 + ldr r4, _080DE098 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x30] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x20] + lsls r0, 4 + strh r0, [r5, 0x36] + ldrh r0, [r5, 0x22] + lsls r0, 4 + strh r0, [r5, 0x38] + movs r1, 0x30 + ldrsh r0, [r5, r1] + movs r2, 0x20 + ldrsh r1, [r5, r2] + subs r0, r1 + lsls r0, 4 + movs r2, 0x34 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r5, 0x3A] + movs r1, 0x32 + ldrsh r0, [r5, r1] + movs r2, 0x22 + ldrsh r1, [r5, r2] + subs r0, r1 + lsls r0, 4 + movs r2, 0x34 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r5, 0x3C] + b _080DE0E2 + .align 2, 0 +_080DE098: .4byte gBattleAnimBankTarget +_080DE09C: + ldrh r0, [r5, 0x3A] + ldrh r1, [r5, 0x36] + adds r0, r1 + strh r0, [r5, 0x36] + ldrh r1, [r5, 0x3C] + ldrh r2, [r5, 0x38] + adds r1, r2 + strh r1, [r5, 0x38] + lsls r0, 16 + asrs r0, 20 + strh r0, [r5, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r5, 0x22] + ldrh r0, [r5, 0x34] + subs r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + cmp r0, 0 + bgt _080DE0F6 + ldr r4, _080DE0EC @ =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] +_080DE0E2: + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080DE0F6 + .align 2, 0 +_080DE0EC: .4byte gBattleAnimBankTarget +_080DE0F0: + adds r0, r5, 0 + bl move_anim_8074EE0 +_080DE0F6: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DDFE8 + + thumb_func_start sub_80DE0FC +sub_80DE0FC: @ 80DE0FC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r0, _080DE110 @ =sub_80DE114 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DE110: .4byte sub_80DE114 + thumb_func_end sub_80DE0FC + + thumb_func_start sub_80DE114 +sub_80DE114: @ 80DE114 + push {r4-r6,lr} + adds r3, r0, 0 + movs r5, 0 + movs r6, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080DE1AA + adds r1, r3, 0 + adds r1, 0x3E + ldrb r2, [r1] + movs r0, 0x4 + ands r0, r2 + adds r4, r1, 0 + cmp r0, 0 + bne _080DE13E + movs r0, 0x4 + orrs r0, r2 + strb r0, [r4] +_080DE13E: + movs r1, 0x2E + ldrsh r0, [r3, r1] + cmp r0, 0 + beq _080DE14E + cmp r0, 0x1 + beq _080DE158 + movs r6, 0x1 + b _080DE162 +_080DE14E: + movs r1, 0x30 + ldrsh r0, [r3, r1] + cmp r0, 0x2 + bne _080DE162 + b _080DE166 +_080DE158: + movs r1, 0x30 + ldrsh r0, [r3, r1] + cmp r0, 0x4 + bne _080DE162 + movs r5, 0x1 +_080DE162: + cmp r5, 0 + beq _080DE198 +_080DE166: + ldrb r2, [r4] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + movs r1, 0 + strh r0, [r3, 0x32] + strh r1, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080DE1AA + strh r1, [r3, 0x32] + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + b _080DE1AA +_080DE198: + cmp r6, 0 + beq _080DE1A4 + adds r0, r3, 0 + bl move_anim_8072740 + b _080DE1AA +_080DE1A4: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] +_080DE1AA: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80DE114 + + thumb_func_start sub_80DE1B0 +sub_80DE1B0: @ 80DE1B0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080DE1DC @ =gTasks + adds r5, r0, r1 + movs r0, 0x1 + bl duplicate_obj_of_side_rel2move_in_transparent_mode + movs r6, 0 + movs r1, 0 + strh r0, [r5, 0x8] + lsls r0, 16 + cmp r0, 0 + bge _080DE1E0 + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080DE2C0 + .align 2, 0 +_080DE1DC: .4byte gTasks +_080DE1E0: + strh r1, [r5, 0xA] + movs r0, 0xF + strh r0, [r5, 0xC] + movs r0, 0x2 + strh r0, [r5, 0xE] + strh r1, [r5, 0x10] + ldr r1, _080DE244 @ =REG_BLDCNT + movs r2, 0xFD + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + ldr r2, _080DE248 @ =REG_BLDALPHA + ldrh r0, [r5, 0xE] + lsls r0, 8 + ldrh r1, [r5, 0xC] + orrs r0, r1 + strh r0, [r2] + ldr r4, _080DE24C @ =gSprites + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x50 + strh r1, [r0, 0x2E] + ldr r0, _080DE250 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DE258 + movs r2, 0x8 + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080DE254 @ =0x0000ff70 + strh r1, [r0, 0x30] + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x70 + b _080DE276 + .align 2, 0 +_080DE244: .4byte REG_BLDCNT +_080DE248: .4byte REG_BLDALPHA +_080DE24C: .4byte gSprites +_080DE250: .4byte gBattleAnimBankTarget +_080DE254: .4byte 0x0000ff70 +_080DE258: + movs r2, 0x8 + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0x90 + strh r1, [r0, 0x30] + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080DE2C8 @ =0x0000ff90 +_080DE276: + strh r1, [r0, 0x32] + ldr r4, _080DE2CC @ =gSprites + movs r2, 0x8 + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r2, 0 + strh r2, [r0, 0x34] + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x36] + movs r2, 0x8 + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r1, _080DE2D0 @ =SpriteCallbackDummy + bl StoreSpriteCallbackInData + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080DE2D4 @ =sub_8078394 + str r1, [r0] + ldr r0, _080DE2D8 @ =sub_80DE2DC + str r0, [r5] +_080DE2C0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DE2C8: .4byte 0x0000ff90 +_080DE2CC: .4byte gSprites +_080DE2D0: .4byte SpriteCallbackDummy +_080DE2D4: .4byte sub_8078394 +_080DE2D8: .4byte sub_80DE2DC + thumb_func_end sub_80DE1B0 + + thumb_func_start sub_80DE2DC +sub_80DE2DC: @ 80DE2DC + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080DE300 @ =gTasks + adds r4, r0, r1 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080DE37C + cmp r0, 0x1 + bgt _080DE304 + cmp r0, 0 + beq _080DE30A + b _080DE3A6 + .align 2, 0 +_080DE300: .4byte gTasks +_080DE304: + cmp r0, 0x2 + beq _080DE3A0 + b _080DE3A6 +_080DE30A: + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + movs r0, 0x3 + ands r0, r1 + strh r0, [r4, 0x12] + cmp r0, 0x1 + bne _080DE328 + ldrh r1, [r4, 0xC] + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080DE328 + subs r0, r1, 0x1 + strh r0, [r4, 0xC] +_080DE328: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + bne _080DE33E + ldrh r1, [r4, 0xE] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080DE33E + adds r0, r1, 0x1 + strh r0, [r4, 0xE] +_080DE33E: + ldr r2, _080DE374 @ =REG_BLDALPHA + ldrh r0, [r4, 0xE] + lsls r0, 8 + ldrh r1, [r4, 0xC] + orrs r0, r1 + strh r0, [r2] + ldr r1, [r4, 0xC] + movs r0, 0x80 + lsls r0, 13 + cmp r1, r0 + bne _080DE3A6 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0x50 + ble _080DE3A6 + movs r2, 0x8 + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DE378 @ =gSprites + adds r0, r1 + bl obj_delete_but_dont_free_vram + movs r0, 0x1 + strh r0, [r4, 0x10] + b _080DE3A6 + .align 2, 0 +_080DE374: .4byte REG_BLDALPHA +_080DE378: .4byte gSprites +_080DE37C: + ldrh r0, [r4, 0x14] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x14] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080DE3A6 + ldr r0, _080DE39C @ =REG_BLDCNT + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + b _080DE3A6 + .align 2, 0 +_080DE39C: .4byte REG_BLDCNT +_080DE3A0: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080DE3A6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DE2DC + + thumb_func_start sub_80DE3AC +sub_80DE3AC: @ 80DE3AC + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r2, _080DE3CC @ =gTasks + adds r1, r2 + movs r2, 0 + strh r2, [r1, 0x26] + ldr r2, _080DE3D0 @ =sub_80DE3D4 + str r2, [r1] + bl _call_via_r2 + pop {r0} + bx r0 + .align 2, 0 +_080DE3CC: .4byte gTasks +_080DE3D0: .4byte sub_80DE3D4 + thumb_func_end sub_80DE3AC + + thumb_func_start sub_80DE3D4 +sub_80DE3D4: @ 80DE3D4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080DE40C @ =gTasks + adds r5, r0, r1 + ldr r0, _080DE410 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r6, r0, 24 + movs r1, 0x26 + ldrsh r0, [r5, r1] + cmp r0, 0x4 + bls _080DE400 + b _080DE604 +_080DE400: + lsls r0, 2 + ldr r1, _080DE414 @ =_080DE418 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DE40C: .4byte gTasks +_080DE410: .4byte gBattleAnimBankTarget +_080DE414: .4byte _080DE418 + .align 2, 0 +_080DE418: + .4byte _080DE42C + .4byte _080DE500 + .4byte _080DE544 + .4byte _080DE5AC + .4byte _080DE5E0 +_080DE42C: + ldr r7, _080DE460 @ =0x00002771 + adds r0, r7, 0 + bl AllocSpritePalette + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + mov r8, r2 + strh r0, [r5, 0x24] + cmp r0, 0xFF + beq _080DE456 + movs r0, 0x1 + bl duplicate_obj_of_side_rel2move_in_transparent_mode + strh r0, [r5, 0x8] + lsls r0, 16 + cmp r0, 0 + bge _080DE464 + adds r0, r7, 0 + bl FreeSpritePaletteByTag +_080DE456: + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080DE60A + .align 2, 0 +_080DE460: .4byte 0x00002771 +_080DE464: + ldr r4, _080DE4E4 @ =gSprites + movs r3, 0x8 + ldrsh r0, [r5, r3] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r2, [r5, 0x24] + lsls r2, 4 + ldrb r3, [r1, 0x5] + movs r0, 0xF + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] + movs r1, 0x8 + ldrsh r0, [r5, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1] + movs r2, 0x8 + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x5] + movs r2, 0xC + orrs r1, r2 + strb r1, [r0, 0x5] + mov r3, r8 + strh r3, [r5, 0xA] + strh r3, [r5, 0xC] + movs r0, 0x10 + strh r0, [r5, 0xE] + movs r0, 0x1 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + movs r0, 0x22 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + lsls r0, 4 + strh r0, [r5, 0x10] + cmp r6, 0x1 + bne _080DE4EC + movs r2, 0x80 + lsls r2, 19 + ldrh r1, [r2] + ldr r0, _080DE4E8 @ =0x0000fdff + b _080DE4F4 + .align 2, 0 +_080DE4E4: .4byte gSprites +_080DE4E8: .4byte 0x0000fdff +_080DE4EC: + movs r2, 0x80 + lsls r2, 19 + ldrh r1, [r2] + ldr r0, _080DE4FC @ =0x0000fbff +_080DE4F4: + ands r0, r1 + strh r0, [r2] + b _080DE604 + .align 2, 0 +_080DE4FC: .4byte 0x0000fbff +_080DE500: + movs r1, 0x24 + ldrsh r0, [r5, r1] + adds r0, 0x10 + lsls r0, 4 + strh r0, [r5, 0x24] + movs r2, 0x10 + ldrsh r0, [r5, r2] + lsls r0, 1 + ldr r1, _080DE534 @ =gPlttBufferUnfaded + adds r0, r1 + movs r3, 0x24 + ldrsh r1, [r5, r3] + lsls r1, 1 + ldr r2, _080DE538 @ =gPlttBufferFaded + adds r1, r2 + ldr r2, _080DE53C @ =REG_BG0CNT + bl CpuSet + ldrh r0, [r5, 0x10] + ldr r3, _080DE540 @ =0x00003c0d + movs r1, 0x10 + movs r2, 0xA + bl BlendPalette + b _080DE604 + .align 2, 0 +_080DE534: .4byte gPlttBufferUnfaded +_080DE538: .4byte gPlttBufferFaded +_080DE53C: .4byte REG_BG0CNT +_080DE540: .4byte 0x00003c0d +_080DE544: + ldr r2, _080DE580 @ =gSprites + movs r0, 0x22 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r1, r0 + subs r1, 0x20 + lsls r1, 16 + lsrs r2, r1, 16 + cmp r1, 0 + bge _080DE564 + movs r2, 0 +_080DE564: + cmp r6, 0x1 + bne _080DE584 + lsls r0, r2, 24 + lsrs r0, 24 + adds r1, r2, 0 + adds r1, 0x40 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + str r2, [sp] + movs r2, 0x4 + str r2, [sp, 0x4] + str r6, [sp, 0x8] + b _080DE59C + .align 2, 0 +_080DE580: .4byte gSprites +_080DE584: + lsls r0, r2, 24 + lsrs r0, 24 + adds r1, r2, 0 + adds r1, 0x40 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + str r2, [sp] + movs r2, 0x8 + str r2, [sp, 0x4] + movs r2, 0x1 + str r2, [sp, 0x8] +_080DE59C: + movs r2, 0x2 + movs r3, 0x6 + bl sub_8089944 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x1C] + b _080DE604 +_080DE5AC: + cmp r6, 0x1 + bne _080DE5C0 + ldr r1, _080DE5B8 @ =REG_BLDCNT + ldr r2, _080DE5BC @ =0x00003f42 + adds r0, r2, 0 + b _080DE5C6 + .align 2, 0 +_080DE5B8: .4byte REG_BLDCNT +_080DE5BC: .4byte 0x00003f42 +_080DE5C0: + ldr r1, _080DE5D4 @ =REG_BLDCNT + ldr r3, _080DE5D8 @ =0x00003f44 + adds r0, r3, 0 +_080DE5C6: + strh r0, [r1] + ldr r1, _080DE5DC @ =REG_BLDALPHA + movs r2, 0x80 + lsls r2, 5 + adds r0, r2, 0 + strh r0, [r1] + b _080DE604 + .align 2, 0 +_080DE5D4: .4byte REG_BLDCNT +_080DE5D8: .4byte 0x00003f44 +_080DE5DC: .4byte REG_BLDALPHA +_080DE5E0: + cmp r6, 0x1 + bne _080DE5F0 + movs r0, 0x80 + lsls r0, 19 + ldrh r1, [r0] + movs r3, 0x80 + lsls r3, 2 + b _080DE5FA +_080DE5F0: + movs r0, 0x80 + lsls r0, 19 + ldrh r1, [r0] + movs r3, 0x80 + lsls r3, 3 +_080DE5FA: + adds r2, r3, 0 + orrs r1, r2 + strh r1, [r0] + ldr r0, _080DE618 @ =sub_80DE61C + str r0, [r5] +_080DE604: + ldrh r0, [r5, 0x26] + adds r0, 0x1 + strh r0, [r5, 0x26] +_080DE60A: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DE618: .4byte sub_80DE61C + thumb_func_end sub_80DE3D4 + + thumb_func_start sub_80DE61C +sub_80DE61C: @ 80DE61C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080DE6A0 @ =gTasks + adds r4, r0, r1 + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + movs r0, 0x1 + ands r0, r1 + strh r0, [r4, 0x12] + cmp r0, 0 + bne _080DE654 + ldr r1, _080DE6A4 @ =gSineTable + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r1, 0x12 + bl __divsi3 + strh r0, [r4, 0xC] +_080DE654: + movs r2, 0x12 + ldrsh r0, [r4, r2] + cmp r0, 0x1 + bne _080DE676 + ldr r1, _080DE6A4 @ =gSineTable + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r1, 0x12 + bl __divsi3 + movs r1, 0x10 + subs r1, r0 + strh r1, [r4, 0xE] +_080DE676: + ldr r2, _080DE6A8 @ =REG_BLDALPHA + ldrh r0, [r4, 0xE] + lsls r0, 8 + ldrh r1, [r4, 0xC] + orrs r0, r1 + strh r0, [r2] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0x80 + bne _080DE698 + movs r0, 0 + strh r0, [r4, 0x26] + ldr r1, _080DE6AC @ =sub_80DE6B0 + str r1, [r4] + adds r0, r5, 0 + bl _call_via_r1 +_080DE698: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DE6A0: .4byte gTasks +_080DE6A4: .4byte gSineTable +_080DE6A8: .4byte REG_BLDALPHA +_080DE6AC: .4byte sub_80DE6B0 + thumb_func_end sub_80DE61C + + thumb_func_start sub_80DE6B0 +sub_80DE6B0: @ 80DE6B0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080DE6E0 @ =gTasks + adds r4, r0, r1 + ldr r0, _080DE6E4 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r6, r0, 24 + movs r1, 0x26 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080DE72C + cmp r0, 0x1 + bgt _080DE6E8 + cmp r0, 0 + beq _080DE6EE + b _080DE7AA + .align 2, 0 +_080DE6E0: .4byte gTasks +_080DE6E4: .4byte gBattleAnimBankTarget +_080DE6E8: + cmp r0, 0x2 + beq _080DE740 + b _080DE7AA +_080DE6EE: + ldr r1, _080DE710 @ =gUnknown_03004DC0 + movs r0, 0x3 + strb r0, [r1, 0x15] + movs r0, 0x1 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x24] + cmp r6, 0x1 + bne _080DE718 + movs r2, 0x80 + lsls r2, 19 + ldrh r1, [r2] + ldr r0, _080DE714 @ =0x0000fdff + b _080DE720 + .align 2, 0 +_080DE710: .4byte gUnknown_03004DC0 +_080DE714: .4byte 0x0000fdff +_080DE718: + movs r2, 0x80 + lsls r2, 19 + ldrh r1, [r2] + ldr r0, _080DE728 @ =0x0000fbff +_080DE720: + ands r0, r1 + strh r0, [r2] + b _080DE7AA + .align 2, 0 +_080DE728: .4byte 0x0000fbff +_080DE72C: + ldrh r0, [r4, 0x10] + ldr r3, _080DE73C @ =0x00003c0d + movs r1, 0x10 + movs r2, 0 + bl BlendPalette + b _080DE7AA + .align 2, 0 +_080DE73C: .4byte 0x00003c0d +_080DE740: + ldr r3, _080DE788 @ =gSprites + movs r0, 0x24 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + bl obj_delete_but_dont_free_vram + ldr r0, _080DE78C @ =0x00002771 + bl FreeSpritePaletteByTag + ldr r0, _080DE790 @ =REG_BLDCNT + movs r1, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + cmp r6, 0x1 + bne _080DE794 + subs r0, 0x52 + ldrh r1, [r0] + movs r3, 0x80 + lsls r3, 2 + b _080DE79E + .align 2, 0 +_080DE788: .4byte gSprites +_080DE78C: .4byte 0x00002771 +_080DE790: .4byte REG_BLDCNT +_080DE794: + movs r0, 0x80 + lsls r0, 19 + ldrh r1, [r0] + movs r3, 0x80 + lsls r3, 3 +_080DE79E: + adds r2, r3, 0 + orrs r1, r2 + strh r1, [r0] + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080DE7AA: + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80DE6B0 + + thumb_func_start sub_80DE7B8 +sub_80DE7B8: @ 80DE7B8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r0, 0 + ldr r0, _080DE7F4 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DE800 + ldr r4, _080DE7F8 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 8 + movs r2, 0xE0 + lsls r2, 13 + adds r0, r2 + lsrs r5, r0, 16 + ldr r4, _080DE7FC @ =gBattleAnimBankTarget + b _080DE824 + .align 2, 0 +_080DE7F4: .4byte gBattleAnimArgs +_080DE7F8: .4byte gBattleAnimBankAttacker +_080DE7FC: .4byte gBattleAnimBankTarget +_080DE800: + ldr r4, _080DE8C8 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 8 + movs r2, 0xE0 + lsls r2, 13 + adds r0, r2 + lsrs r5, r0, 16 + ldr r4, _080DE8CC @ =gBattleAnimBankAttacker +_080DE824: + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 8 + movs r1, 0xE0 + lsls r1, 13 + adds r0, r1 + lsrs r0, 16 + mov r9, r0 + mov r8, r5 + mov r2, r9 + subs r4, r2, r5 + lsls r4, 16 + lsrs r4, 16 + lsls r0, r6, 4 + strh r0, [r7, 0x2E] + lsls r0, r5, 4 + strh r0, [r7, 0x30] + mov r1, r10 + subs r0, r1, r6 + lsls r0, 4 + ldr r5, _080DE8D0 @ =gBattleAnimArgs + movs r2, 0x2 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r7, 0x32] + lsls r4, 16 + asrs r4, 12 + movs r0, 0x2 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl __divsi3 + strh r0, [r7, 0x34] + ldrh r0, [r5, 0x2] + strh r0, [r7, 0x36] + mov r1, r10 + strh r1, [r7, 0x38] + mov r2, r9 + strh r2, [r7, 0x3A] + movs r1, 0x36 + ldrsh r0, [r7, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r7, 0x3C] + ldrb r1, [r7, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r7, 0x5] + strh r6, [r7, 0x20] + mov r2, r8 + strh r2, [r7, 0x22] + ldr r0, _080DE8D4 @ =sub_80DE8D8 + str r0, [r7, 0x1C] + adds r2, r7, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DE8C8: .4byte gBattleAnimBankTarget +_080DE8CC: .4byte gBattleAnimBankAttacker +_080DE8D0: .4byte gBattleAnimArgs +_080DE8D4: .4byte sub_80DE8D8 + thumb_func_end sub_80DE7B8 + + thumb_func_start sub_80DE8D8 +sub_80DE8D8: @ 80DE8D8 + push {r4,lr} + adds r2, r0, 0 + ldrh r3, [r2, 0x36] + movs r1, 0x36 + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _080DE910 + ldrh r0, [r2, 0x32] + ldrh r4, [r2, 0x2E] + adds r0, r4 + strh r0, [r2, 0x2E] + ldrh r1, [r2, 0x34] + ldrh r4, [r2, 0x30] + adds r1, r4 + strh r1, [r2, 0x30] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r2, 0x22] + subs r0, r3, 0x1 + strh r0, [r2, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _080DE910 + strh r0, [r2, 0x2E] +_080DE910: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DE8D8 + + thumb_func_start sub_80DE918 +sub_80DE918: @ 80DE918 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080DEA68 @ =gTasks + adds r1, r0 + str r1, [sp] + ldr r1, _080DEA6C @ =REG_BLDCNT + movs r2, 0xFD + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r3, 0x80 + lsls r3, 5 + adds r0, r3, 0 + strh r0, [r1] + movs r0, 0 + ldr r1, [sp] + strh r0, [r1, 0x12] + strh r0, [r1, 0x14] + strh r0, [r1, 0x16] + strh r0, [r1, 0x18] + movs r0, 0x10 + strh r0, [r1, 0x1A] + ldr r2, _080DEA70 @ =gBattleAnimArgs + ldrh r0, [r2] + strh r0, [r1, 0x1C] + ldr r4, _080DEA74 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_807A100 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x8] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DE988 + b _080DEA88 +_080DE988: + movs r4, 0 +_080DE98A: + lsls r1, r4, 16 + asrs r3, r1, 16 + ldr r0, _080DEA74 @ =gBattleAnimBankAttacker + ldrb r2, [r0] + str r1, [sp, 0x10] + cmp r3, r2 + beq _080DEA56 + movs r0, 0x2 + eors r2, r0 + cmp r3, r2 + beq _080DEA56 + lsls r0, r4, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080DEA56 + ldr r6, [sp, 0x4] + ldr r3, [sp, 0x8] + lsls r0, r3, 16 + asrs r7, r0, 16 + ldr r0, _080DEA78 @ =gSpriteTemplate_83DAF08 + adds r1, r6, 0 + adds r2, r7, 0 + movs r3, 0x37 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x40 + beq _080DEA56 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_807A100 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + mov r0, r8 + lsls r5, r0, 4 + add r5, r8 + lsls r5, 2 + ldr r1, _080DEA7C @ =gSprites + adds r4, r5, r1 + lsls r0, r6, 4 + strh r0, [r4, 0x2E] + lsls r0, r7, 4 + strh r0, [r4, 0x30] + mov r2, r10 + subs r0, r2, r6 + lsls r0, 4 + ldr r3, _080DEA70 @ =gBattleAnimArgs + movs r2, 0x2 + ldrsh r1, [r3, r2] + bl __divsi3 + strh r0, [r4, 0x32] + mov r3, r9 + lsls r0, r3, 16 + asrs r0, 16 + subs r0, r7 + lsls r0, 4 + ldr r2, _080DEA70 @ =gBattleAnimArgs + movs r3, 0x2 + ldrsh r1, [r2, r3] + bl __divsi3 + strh r0, [r4, 0x34] + ldr r1, _080DEA70 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x36] + mov r2, r10 + strh r2, [r4, 0x38] + mov r3, r9 + strh r3, [r4, 0x3A] + ldr r0, _080DEA80 @ =gSprites + 0x1C + adds r5, r0 + ldr r0, _080DEA84 @ =sub_80DE8D8 + str r0, [r5] + ldr r2, [sp] + movs r3, 0x20 + ldrsh r1, [r2, r3] + adds r1, 0xD + lsls r1, 1 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1 + mov r1, r8 + strh r1, [r0] + ldrh r0, [r2, 0x20] + adds r0, 0x1 + strh r0, [r2, 0x20] +_080DEA56: + ldr r2, [sp, 0x10] + movs r3, 0x80 + lsls r3, 9 + adds r0, r2, r3 + lsrs r4, r0, 16 + asrs r0, 16 + cmp r0, 0x3 + ble _080DE98A + b _080DEB0C + .align 2, 0 +_080DEA68: .4byte gTasks +_080DEA6C: .4byte REG_BLDCNT +_080DEA70: .4byte gBattleAnimArgs +_080DEA74: .4byte gBattleAnimBankAttacker +_080DEA78: .4byte gSpriteTemplate_83DAF08 +_080DEA7C: .4byte gSprites +_080DEA80: .4byte gSprites + 0x1C +_080DEA84: .4byte sub_80DE8D8 +_080DEA88: + ldr r0, _080DEB24 @ =gSpriteTemplate_83DAF08 + ldr r7, [sp, 0x4] + ldr r2, [sp, 0x8] + lsls r1, r2, 16 + asrs r1, 16 + str r1, [sp, 0xC] + adds r1, r7, 0 + ldr r2, [sp, 0xC] + movs r3, 0x37 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x40 + beq _080DEB0C + movs r3, 0x30 + mov r10, r3 + movs r0, 0x28 + mov r9, r0 + ldr r6, _080DEB28 @ =gSprites + mov r1, r8 + lsls r5, r1, 4 + add r5, r8 + lsls r5, 2 + adds r4, r5, r6 + lsls r0, r7, 4 + strh r0, [r4, 0x2E] + ldr r2, [sp, 0xC] + lsls r0, r2, 4 + strh r0, [r4, 0x30] + subs r0, r3, r7 + lsls r0, 4 + ldr r3, _080DEB2C @ =gBattleAnimArgs + movs r2, 0x2 + ldrsh r1, [r3, r2] + bl __divsi3 + strh r0, [r4, 0x32] + mov r3, r9 + ldr r1, [sp, 0xC] + subs r0, r3, r1 + lsls r0, 4 + ldr r2, _080DEB2C @ =gBattleAnimArgs + movs r3, 0x2 + ldrsh r1, [r2, r3] + bl __divsi3 + strh r0, [r4, 0x34] + ldr r1, _080DEB2C @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x36] + mov r2, r10 + strh r2, [r4, 0x38] + mov r3, r9 + strh r3, [r4, 0x3A] + adds r6, 0x1C + adds r5, r6 + ldr r0, _080DEB30 @ =sub_80DE8D8 + str r0, [r5] + mov r1, r8 + ldr r0, [sp] + strh r1, [r0, 0x22] + movs r0, 0x1 + ldr r2, [sp] + strh r0, [r2, 0x20] +_080DEB0C: + ldr r0, _080DEB34 @ =sub_80DEB38 + ldr r3, [sp] + str r0, [r3] + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DEB24: .4byte gSpriteTemplate_83DAF08 +_080DEB28: .4byte gSprites +_080DEB2C: .4byte gBattleAnimArgs +_080DEB30: .4byte sub_80DE8D8 +_080DEB34: .4byte sub_80DEB38 + thumb_func_end sub_80DE918 + + thumb_func_start sub_80DEB38 +sub_80DEB38: @ 80DEB38 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080DEB5C @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080DEBEE + cmp r1, 0x1 + bgt _080DEB60 + cmp r1, 0 + beq _080DEB6E + b _080DECA4 + .align 2, 0 +_080DEB5C: .4byte gTasks +_080DEB60: + cmp r1, 0x2 + bne _080DEB66 + b _080DEC80 +_080DEB66: + cmp r1, 0x3 + bne _080DEB6C + b _080DEC94 +_080DEB6C: + b _080DECA4 +_080DEB6E: + movs r2, 0x14 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080DEBCE + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080DEBCE + strh r1, [r4, 0x12] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DEBA4 + ldrh r1, [r4, 0x18] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080DEBB2 + adds r0, r1, 0x1 + strh r0, [r4, 0x18] + b _080DEBB2 +_080DEBA4: + ldrh r1, [r4, 0x1A] + movs r2, 0x1A + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080DEBB2 + subs r0, r1, 0x1 + strh r0, [r4, 0x1A] +_080DEBB2: + ldr r2, _080DEBE0 @ =REG_BLDALPHA + ldrh r0, [r4, 0x1A] + lsls r0, 8 + ldrh r1, [r4, 0x18] + orrs r0, r1 + strh r0, [r2] + movs r1, 0x16 + ldrsh r0, [r4, r1] + cmp r0, 0x17 + ble _080DEBCE + movs r0, 0 + strh r0, [r4, 0x16] + movs r0, 0x1 + strh r0, [r4, 0x14] +_080DEBCE: + ldrh r1, [r4, 0x1C] + movs r2, 0x1C + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080DEBE4 + subs r0, r1, 0x1 + strh r0, [r4, 0x1C] + b _080DECA4 + .align 2, 0 +_080DEBE0: .4byte REG_BLDALPHA +_080DEBE4: + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080DECA4 + b _080DEC8C +_080DEBEE: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080DECA4 + movs r0, 0 + strh r0, [r4, 0x12] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] + ands r0, r1 + lsls r0, 16 + cmp r0, 0 + beq _080DEC1E + ldrh r1, [r4, 0x18] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080DEC2C + subs r0, r1, 0x1 + strh r0, [r4, 0x18] + b _080DEC2C +_080DEC1E: + ldrh r1, [r4, 0x1A] + movs r2, 0x1A + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080DEC2C + adds r0, r1, 0x1 + strh r0, [r4, 0x1A] +_080DEC2C: + ldr r2, _080DEC48 @ =REG_BLDALPHA + ldrh r0, [r4, 0x1A] + lsls r0, 8 + ldrh r1, [r4, 0x18] + orrs r0, r1 + strh r0, [r2] + ldr r1, [r4, 0x18] + movs r0, 0x80 + lsls r0, 13 + cmp r1, r0 + bne _080DECA4 + movs r5, 0 + b _080DEC70 + .align 2, 0 +_080DEC48: .4byte REG_BLDALPHA +_080DEC4C: + adds r1, r5, 0 + adds r1, 0xD + lsls r1, 1 + adds r0, r4, 0 + adds r0, 0x8 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DEC7C @ =gSprites + adds r0, r1 + bl DestroySprite + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_080DEC70: + movs r1, 0x20 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _080DEC4C + b _080DEC8C + .align 2, 0 +_080DEC7C: .4byte gSprites +_080DEC80: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + cmp r0, 0 + ble _080DECA4 +_080DEC8C: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080DECA4 +_080DEC94: + ldr r0, _080DECAC @ =REG_BLDCNT + movs r1, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080DECA4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DECAC: .4byte REG_BLDCNT + thumb_func_end sub_80DEB38 + + thumb_func_start sub_80DECB0 +sub_80DECB0: @ 80DECB0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _080DECF8 @ =gUnknown_030042C4 + movs r1, 0 + strh r1, [r0] + ldr r0, _080DECFC @ =gUnknown_03004240 + strh r1, [r0] + ldr r1, _080DED00 @ =REG_WININ + ldr r2, _080DED04 @ =0x00003f3f + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + subs r2, 0x20 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x6 + movs r0, 0xC8 + strh r0, [r1] + adds r1, 0x4 + movs r0, 0x10 + strh r0, [r1] + ldr r0, _080DED08 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DECF4 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DED0C +_080DECF4: + movs r6, 0x28 + b _080DED0E + .align 2, 0 +_080DECF8: .4byte gUnknown_030042C4 +_080DECFC: .4byte gUnknown_03004240 +_080DED00: .4byte REG_WININ +_080DED04: .4byte 0x00003f3f +_080DED08: .4byte gBattleAnimBankAttacker +_080DED0C: + movs r6, 0xC8 +_080DED0E: + ldr r1, _080DED4C @ =gUnknown_030042C4 + lsls r3, r6, 16 + asrs r2, r3, 16 + lsls r0, r2, 8 + orrs r0, r2 + strh r0, [r1] + ldr r1, _080DED50 @ =gUnknown_03004240 + movs r5, 0x28 + ldr r0, _080DED54 @ =0x00002828 + strh r0, [r1] + lsrs r3, 16 + movs r1, 0xF0 + subs r1, r2 + movs r4, 0x48 + ldr r2, _080DED58 @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r2 + strh r3, [r0, 0xA] + strh r1, [r0, 0xC] + strh r5, [r0, 0xE] + strh r4, [r0, 0x10] + strh r6, [r0, 0x12] + strh r5, [r0, 0x14] + ldr r1, _080DED5C @ =sub_80DED60 + str r1, [r0] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DED4C: .4byte gUnknown_030042C4 +_080DED50: .4byte gUnknown_03004240 +_080DED54: .4byte 0x00002828 +_080DED58: .4byte gTasks +_080DED5C: .4byte sub_80DED60 + thumb_func_end sub_80DECB0 + + thumb_func_start sub_80DED60 +sub_80DED60: @ 80DED60 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DEE80 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 + ldrh r1, [r4, 0x8] + adds r0, r1, 0x1 + strh r0, [r4, 0x8] + ldrh r5, [r4, 0xA] + ldrh r7, [r4, 0xC] + ldrh r0, [r4, 0xE] + mov r10, r0 + ldrh r2, [r4, 0x10] + str r2, [sp, 0xC] + ldrh r0, [r4, 0x12] + ldrh r2, [r4, 0x14] + mov r8, r2 + lsls r1, 16 + asrs r6, r1, 16 + cmp r6, 0xF + ble _080DED9C + b _080DEE8C +_080DED9C: + lsls r0, 16 + asrs r0, 16 + bl __floatsidf + str r0, [sp, 0x10] + str r1, [sp, 0x14] + lsls r0, r5, 16 + asrs r0, 16 + bl __floatsidf + ldr r2, _080DEE84 @ =0x3fb00000 + ldr r3, _080DEE88 @ =0x00000000 + bl __muldf3 + adds r5, r1, 0 + adds r4, r0, 0 + adds r0, r6, 0 + bl __floatsidf + str r0, [sp, 0x18] + str r1, [sp, 0x1C] + adds r1, r5, 0 + adds r0, r4, 0 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl __muldf3 + adds r3, r1, 0 + adds r2, r0, 0 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + bl __subdf3 + bl __fixunsdfsi + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + lsls r0, r7, 16 + asrs r0, 16 + bl __floatsidf + ldr r2, _080DEE84 @ =0x3fb00000 + ldr r3, _080DEE88 @ =0x00000000 + bl __muldf3 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl __muldf3 + adds r3, r1, 0 + adds r2, r0, 0 + ldr r0, [sp, 0x10] + ldr r1, [sp, 0x14] + bl __adddf3 + bl __fixunsdfsi + lsls r0, 16 + lsrs r7, r0, 16 + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + bl __floatsidf + adds r5, r1, 0 + adds r4, r0, 0 + mov r2, r10 + lsls r0, r2, 16 + asrs r0, 16 + bl __floatsidf + ldr r2, _080DEE84 @ =0x3fb00000 + ldr r3, _080DEE88 @ =0x00000000 + bl __muldf3 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl __muldf3 + adds r3, r1, 0 + adds r2, r0, 0 + adds r1, r5, 0 + adds r0, r4, 0 + bl __subdf3 + bl __fixunsdfsi + lsls r0, 16 + lsrs r6, r0, 16 + ldr r1, [sp, 0xC] + lsls r0, r1, 16 + asrs r0, 16 + bl __floatsidf + ldr r2, _080DEE84 @ =0x3fb00000 + ldr r3, _080DEE88 @ =0x00000000 + bl __muldf3 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl __muldf3 + adds r3, r1, 0 + adds r2, r0, 0 + adds r1, r5, 0 + adds r0, r4, 0 + bl __adddf3 + bl __fixunsdfsi + lsls r0, 16 + lsrs r5, r0, 16 + b _080DEEBA + .align 2, 0 +_080DEE80: .4byte gTasks +_080DEE84: .4byte 0x3fb00000 +_080DEE88: .4byte 0x00000000 +_080DEE8C: + movs r2, 0 + mov r9, r2 + movs r7, 0xF0 + movs r6, 0 + movs r5, 0x70 + str r6, [sp] + str r6, [sp, 0x4] + str r6, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r3, 0 + bl sub_80791A8 + lsls r0, 16 + lsrs r0, 16 + str r6, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0x10 + bl BeginNormalPaletteFade + ldr r0, _080DEEDC @ =sub_80DEEE8 + str r0, [r4] +_080DEEBA: + ldr r1, _080DEEE0 @ =gUnknown_030042C4 + mov r2, r9 + lsls r0, r2, 8 + orrs r7, r0 + strh r7, [r1] + ldr r1, _080DEEE4 @ =gUnknown_03004240 + lsls r0, r6, 8 + orrs r5, r0 + strh r5, [r1] + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DEEDC: .4byte sub_80DEEE8 +_080DEEE0: .4byte gUnknown_030042C4 +_080DEEE4: .4byte gUnknown_03004240 + thumb_func_end sub_80DED60 + + thumb_func_start sub_80DEEE8 +sub_80DEEE8: @ 80DEEE8 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, _080DEF28 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _080DEF20 + ldr r0, _080DEF2C @ =gUnknown_030042C4 + strh r2, [r0] + ldr r0, _080DEF30 @ =gUnknown_03004240 + strh r2, [r0] + ldr r0, _080DEF34 @ =REG_WININ + ldr r4, _080DEF38 @ =0x00003f3f + adds r1, r4, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x6 + strh r2, [r0] + adds r0, 0x4 + strh r2, [r0] + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080DEF20: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DEF28: .4byte gPaletteFade +_080DEF2C: .4byte gUnknown_030042C4 +_080DEF30: .4byte gUnknown_03004240 +_080DEF34: .4byte REG_WININ +_080DEF38: .4byte 0x00003f3f + thumb_func_end sub_80DEEE8 + + thumb_func_start sub_80DEF3C +sub_80DEF3C: @ 80DEF3C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080DEF68 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DEF70 + movs r2, 0x18 + ldr r3, _080DEF6C @ =0x0000fffe + ldrb r0, [r4, 0x3] + movs r1, 0x3F + negs r1, r1 + ands r1, r0 + movs r0, 0x10 + orrs r1, r0 + strb r1, [r4, 0x3] + b _080DEF74 + .align 2, 0 +_080DEF68: .4byte gBattleAnimBankAttacker +_080DEF6C: .4byte 0x0000fffe +_080DEF70: + ldr r2, _080DEF90 @ =0x0000ffe8 + movs r3, 0x2 +_080DEF74: + lsls r0, r2, 16 + asrs r0, 16 + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + strh r3, [r4, 0x30] + movs r0, 0x3C + strh r0, [r4, 0x2E] + ldr r0, _080DEF94 @ =sub_80DEF98 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DEF90: .4byte 0x0000ffe8 +_080DEF94: .4byte sub_80DEF98 + thumb_func_end sub_80DEF3C + + thumb_func_start sub_80DEF98 +sub_80DEF98: @ 80DEF98 + push {r4,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x2E] + movs r2, 0x2E + ldrsh r0, [r3, r2] + cmp r0, 0 + ble _080DEFAA + subs r0, r1, 0x1 + b _080DF00E +_080DEFAA: + ldrh r0, [r3, 0x30] + ldrh r4, [r3, 0x24] + adds r1, r0, r4 + strh r1, [r3, 0x24] + adds r0, r1, 0x7 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xE + bls _080DF010 + ldrh r0, [r3, 0x20] + adds r0, r1 + strh r0, [r3, 0x20] + movs r0, 0 + strh r0, [r3, 0x24] + ldrh r2, [r3, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x8 + ldr r4, _080DEFFC @ =0x000003ff + adds r0, r4, 0 + ands r1, r0 + ldr r0, _080DF000 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080DF00C + movs r0, 0x1E + strh r0, [r3, 0x2E] + ldr r0, _080DF004 @ =sub_80782D8 + str r0, [r3, 0x1C] + ldr r1, _080DF008 @ =sub_80DF018 + adds r0, r3, 0 + bl StoreSpriteCallbackInData + b _080DF010 + .align 2, 0 +_080DEFFC: .4byte 0x000003ff +_080DF000: .4byte 0xfffffc00 +_080DF004: .4byte sub_80782D8 +_080DF008: .4byte sub_80DF018 +_080DF00C: + movs r0, 0x28 +_080DF00E: + strh r0, [r3, 0x2E] +_080DF010: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DEF98 + + thumb_func_start sub_80DF018 +sub_80DF018: @ 80DF018 + push {r4,lr} + adds r3, r0, 0 + movs r0, 0x2E + ldrsh r2, [r3, r0] + cmp r2, 0 + bne _080DF044 + ldr r1, _080DF040 @ =REG_BLDCNT + movs r4, 0xFD + lsls r4, 6 + adds r0, r4, 0 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x10 + strh r0, [r1] + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + strh r2, [r3, 0x30] + strh r2, [r3, 0x32] + b _080DF082 + .align 2, 0 +_080DF040: .4byte REG_BLDCNT +_080DF044: + ldrh r1, [r3, 0x30] + movs r2, 0x30 + ldrsh r0, [r3, r2] + cmp r0, 0x1 + bgt _080DF054 + adds r0, r1, 0x1 + strh r0, [r3, 0x30] + b _080DF082 +_080DF054: + movs r0, 0 + strh r0, [r3, 0x30] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + ldr r2, _080DF088 @ =REG_BLDALPHA + movs r1, 0x10 + subs r1, r0 + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r4, 0x32 + ldrsh r0, [r3, r4] + cmp r0, 0x10 + bne _080DF082 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080DF08C @ =sub_80DF090 + str r0, [r3, 0x1C] +_080DF082: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF088: .4byte REG_BLDALPHA +_080DF08C: .4byte sub_80DF090 + thumb_func_end sub_80DF018 + + thumb_func_start sub_80DF090 +sub_80DF090: @ 80DF090 + push {lr} + ldr r1, _080DF0AC @ =REG_BLDCNT + movs r2, 0 + strh r2, [r1] + adds r1, 0x2 + strh r2, [r1] + ldr r1, _080DF0B0 @ =gUnknown_030042C4 + strh r2, [r1] + ldr r1, _080DF0B4 @ =gUnknown_03004240 + strh r2, [r1] + bl move_anim_8072740 + pop {r0} + bx r0 + .align 2, 0 +_080DF0AC: .4byte REG_BLDCNT +_080DF0B0: .4byte gUnknown_030042C4 +_080DF0B4: .4byte gUnknown_03004240 + thumb_func_end sub_80DF090 + + thumb_func_start sub_80DF0B8 +sub_80DF0B8: @ 80DF0B8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0xC + bl Sin + strh r0, [r4, 0x24] + ldr r0, _080DF120 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DF0DC + ldrh r0, [r4, 0x24] + negs r0, r0 + strh r0, [r4, 0x24] +_080DF0DC: + ldrh r0, [r4, 0x2E] + adds r0, 0x6 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + ldrh r1, [r4, 0x30] + adds r0, r1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080DF12C + ldr r0, _080DF124 @ =0x0000050b + strh r0, [r4, 0x3A] + ldr r1, _080DF128 @ =REG_BLDCNT + movs r2, 0xFD + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldrh r0, [r4, 0x3A] + strh r0, [r1] + b _080DF17E + .align 2, 0 +_080DF120: .4byte gBattleAnimBankAttacker +_080DF124: .4byte 0x0000050b +_080DF128: .4byte REG_BLDCNT +_080DF12C: + cmp r0, 0x1E + ble _080DF17E + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x3A] + lsls r0, r1, 16 + asrs r0, 24 + lsls r0, 16 + movs r2, 0xFF + ands r2, r1 + movs r1, 0x80 + lsls r1, 9 + adds r0, r1 + lsrs r3, r0, 16 + cmp r3, 0x10 + bls _080DF150 + movs r3, 0x10 +_080DF150: + subs r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r0, 0 + bge _080DF15C + movs r2, 0 +_080DF15C: + ldr r1, _080DF184 @ =REG_BLDALPHA + lsls r0, r3, 8 + orrs r0, r2 + strh r0, [r1] + strh r0, [r4, 0x3A] + cmp r3, 0x10 + bne _080DF17E + cmp r2, 0 + bne _080DF17E + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080DF188 @ =sub_80DF18C + str r0, [r4, 0x1C] +_080DF17E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF184: .4byte REG_BLDALPHA +_080DF188: .4byte sub_80DF18C + thumb_func_end sub_80DF0B8 + + thumb_func_start sub_80DF18C +sub_80DF18C: @ 80DF18C + push {lr} + ldr r1, _080DF1A0 @ =REG_BLDCNT + movs r2, 0 + strh r2, [r1] + adds r1, 0x2 + strh r2, [r1] + bl move_anim_8072740 + pop {r0} + bx r0 + .align 2, 0 +_080DF1A0: .4byte REG_BLDCNT + thumb_func_end sub_80DF18C + + thumb_func_start sub_80DF1A4 +sub_80DF1A4: @ 80DF1A4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080DF23C @ =gTasks + adds r4, r0 + movs r6, 0 + strh r6, [r4, 0x8] + movs r0, 0x10 + mov r8, r0 + mov r2, r8 + strh r2, [r4, 0xA] + ldr r5, _080DF240 @ =gBattleAnimBankAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1A] + ldrb r0, [r5] + bl sub_8077FC0 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_807A100 + lsls r0, 16 + asrs r1, r0, 16 + lsrs r0, 31 + adds r1, r0 + asrs r1, 1 + adds r1, 0x8 + strh r1, [r4, 0x1E] + strh r6, [r4, 0x16] + ldrb r0, [r5] + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x12] + ldrb r0, [r5] + bl sub_8079E90 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x2 + strh r0, [r4, 0x14] + strh r6, [r4, 0xE] + mov r0, r8 + strh r0, [r4, 0x10] + ldr r1, _080DF244 @ =REG_BLDCNT + movs r2, 0xFD + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r2, 0x80 + lsls r2, 5 + adds r0, r2, 0 + strh r0, [r1] + strh r6, [r4, 0x18] + ldr r0, _080DF248 @ =sub_80DF24C + str r0, [r4] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DF23C: .4byte gTasks +_080DF240: .4byte gBattleAnimBankAttacker +_080DF244: .4byte REG_BLDCNT +_080DF248: .4byte sub_80DF24C + thumb_func_end sub_80DF1A4 + + thumb_func_start sub_80DF24C +sub_80DF24C: @ 80DF24C + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _080DF270 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x5 + bls _080DF266 + b _080DF3CC +_080DF266: + lsls r0, 2 + ldr r1, _080DF274 @ =_080DF278 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DF270: .4byte gTasks +_080DF274: .4byte _080DF278 + .align 2, 0 +_080DF278: + .4byte _080DF290 + .4byte _080DF300 + .4byte _080DF342 + .4byte _080DF356 + .4byte _080DF3AC + .4byte _080DF3BC +_080DF290: + movs r6, 0 +_080DF292: + movs r2, 0x1A + ldrsh r1, [r4, r2] + movs r0, 0x1C + ldrsh r2, [r4, r0] + ldrb r3, [r4, 0x14] + ldr r0, _080DF2F4 @ =gSpriteTemplate_83DAF80 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080DF2E6 + ldr r1, _080DF2F8 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r5, r0, r1 + strh r7, [r5, 0x2E] + ldr r0, _080DF2FC @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + movs r1, 0 + lsls r0, 24 + cmp r0, 0 + bne _080DF2C8 + movs r1, 0x1 +_080DF2C8: + strh r1, [r5, 0x30] + movs r0, 0x2A + muls r0, r6 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r4, 0x1E] + strh r0, [r5, 0x34] + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 1 + strh r0, [r5, 0x38] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] +_080DF2E6: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x5 + bls _080DF292 + b _080DF3B4 + .align 2, 0 +_080DF2F4: .4byte gSpriteTemplate_83DAF80 +_080DF2F8: .4byte gSprites +_080DF2FC: .4byte gBattleAnimBankAttacker +_080DF300: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DF31E + ldrh r1, [r4, 0xE] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0xD + bgt _080DF32C + adds r0, r1, 0x1 + strh r0, [r4, 0xE] + b _080DF32C +_080DF31E: + ldrh r1, [r4, 0x10] + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0x4 + ble _080DF32C + subs r0, r1, 0x1 + strh r0, [r4, 0x10] +_080DF32C: + movs r1, 0xE + ldrsh r0, [r4, r1] + ldrh r3, [r4, 0xE] + ldrh r2, [r4, 0x10] + cmp r0, 0xE + bne _080DF39C + cmp r2, 0x4 + bne _080DF39C + movs r0, 0 + strh r0, [r4, 0xA] + b _080DF396 +_080DF342: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1E + ble _080DF3CC + movs r0, 0 + strh r0, [r4, 0xA] + b _080DF3B4 +_080DF356: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080DF374 + ldrh r1, [r4, 0xE] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080DF382 + subs r0, r1, 0x1 + strh r0, [r4, 0xE] + b _080DF382 +_080DF374: + ldrh r1, [r4, 0x10] + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0xF + bgt _080DF382 + adds r0, r1, 0x1 + strh r0, [r4, 0x10] +_080DF382: + movs r1, 0xE + ldrsh r0, [r4, r1] + ldrh r3, [r4, 0xE] + ldrh r2, [r4, 0x10] + cmp r0, 0 + bne _080DF39C + cmp r2, 0x10 + bne _080DF39C + movs r0, 0x1 + strh r0, [r4, 0x18] +_080DF396: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080DF39C: + ldr r1, _080DF3A8 @ =REG_BLDALPHA + lsls r0, r2, 8 + orrs r0, r3 + strh r0, [r1] + b _080DF3CC + .align 2, 0 +_080DF3A8: .4byte REG_BLDALPHA +_080DF3AC: + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080DF3CC +_080DF3B4: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080DF3CC +_080DF3BC: + ldr r0, _080DF3D4 @ =REG_BLDCNT + movs r1, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, r7, 0 + bl DestroyAnimVisualTask +_080DF3CC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DF3D4: .4byte REG_BLDCNT + thumb_func_end sub_80DF24C + + thumb_func_start sub_80DF3D8 +sub_80DF3D8: @ 80DF3D8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DF3EA + ldrh r0, [r4, 0x32] + adds r0, 0x2 + b _080DF3EE +_080DF3EA: + ldrh r0, [r4, 0x32] + subs r0, 0x2 +_080DF3EE: + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x32] + movs r0, 0xFF + ands r0, r1 + strh r0, [r4, 0x32] + movs r2, 0x32 + ldrsh r0, [r4, r2] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x32] + subs r0, 0x41 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7E + bhi _080DF430 + ldr r2, _080DF42C @ =gTasks + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x12] + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + b _080DF444 + .align 2, 0 +_080DF42C: .4byte gTasks +_080DF430: + ldr r2, _080DF498 @ =gTasks + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0x3 + ldrb r1, [r0, 0x12] + ands r1, r2 +_080DF444: + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + movs r1, 0x38 + ldrsh r0, [r4, r1] + lsls r0, 3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3A] + movs r2, 0x3A + ldrsh r0, [r4, r2] + movs r1, 0x7 + bl Sin + strh r0, [r4, 0x26] + ldr r2, _080DF498 @ =gTasks + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r1, r0, r2 + movs r2, 0x18 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080DF492 + ldrh r0, [r1, 0x16] + subs r0, 0x1 + strh r0, [r1, 0x16] + adds r0, r4, 0 + bl DestroySprite +_080DF492: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF498: .4byte gTasks + thumb_func_end sub_80DF3D8 + + thumb_func_start sub_80DF49C +sub_80DF49C: @ 80DF49C + adds r3, r0, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r3] + ldr r2, _080DF4E0 @ =gObjectBankIDs + ldr r1, _080DF4E4 @ =gBattleAnimBankAttacker + ldrb r1, [r1] + adds r1, r2 + ldrb r1, [r1] + strh r1, [r0, 0x38] + movs r1, 0x80 + strh r1, [r0, 0x2E] + movs r1, 0xA + strh r1, [r0, 0x30] + ldr r2, _080DF4E8 @ =gBattleAnimArgs + ldrh r1, [r2] + strh r1, [r0, 0x32] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x34] + ldr r1, _080DF4EC @ =sub_80DF4F4 + str r1, [r0, 0x1C] + ldr r2, _080DF4F0 @ =gSprites + movs r3, 0x38 + ldrsh r1, [r0, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + adds r1, 0x8 + strh r1, [r0, 0x22] + bx lr + .align 2, 0 +_080DF4E0: .4byte gObjectBankIDs +_080DF4E4: .4byte gBattleAnimBankAttacker +_080DF4E8: .4byte gBattleAnimArgs +_080DF4EC: .4byte sub_80DF4F4 +_080DF4F0: .4byte gSprites + thumb_func_end sub_80DF49C + + thumb_func_start sub_80DF4F4 +sub_80DF4F4: @ 80DF4F4 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x34] + movs r1, 0x34 + ldrsh r3, [r5, r1] + cmp r3, 0 + beq _080DF55C + subs r0, 0x1 + strh r0, [r5, 0x34] + movs r2, 0x2E + ldrsh r0, [r5, r2] + movs r2, 0x30 + ldrsh r1, [r5, r2] + bl Sin + ldr r4, _080DF554 @ =gSprites + movs r1, 0x38 + ldrsh r2, [r5, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strh r0, [r1, 0x24] + movs r2, 0x2E + ldrsh r0, [r5, r2] + movs r2, 0x30 + ldrsh r1, [r5, r2] + bl Cos + movs r1, 0x38 + ldrsh r2, [r5, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strh r0, [r1, 0x26] + ldrh r0, [r5, 0x32] + ldrh r2, [r5, 0x2E] + adds r1, r0, r2 + strh r1, [r5, 0x2E] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _080DF590 + ldr r2, _080DF558 @ =0xffffff00 + adds r0, r1, r2 + strh r0, [r5, 0x2E] + b _080DF590 + .align 2, 0 +_080DF554: .4byte gSprites +_080DF558: .4byte 0xffffff00 +_080DF55C: + ldr r2, _080DF598 @ =gSprites + movs r0, 0x38 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x24] + movs r0, 0x38 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x26] + movs r0, 0x38 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x22] + subs r1, 0x8 + strh r1, [r0, 0x22] + ldr r0, _080DF59C @ =move_anim_8074EE0 + str r0, [r5, 0x1C] +_080DF590: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF598: .4byte gSprites +_080DF59C: .4byte move_anim_8074EE0 + thumb_func_end sub_80DF4F4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/ground.s b/asm/ground.s new file mode 100755 index 000000000..7a401e9e8 --- /dev/null +++ b/asm/ground.s @@ -0,0 +1,1789 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ ground + + thumb_func_start sub_80E0F1C +sub_80E0F1C: @ 80E0F1C + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080E0F74 @ =gBattleAnimBankAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + movs r0, 0x14 + strh r0, [r4, 0x2E] + ldr r5, _080E0F78 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080E0F7C @ =0x0000ffd8 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_80786EC + ldr r0, _080E0F80 @ =sub_80E0F84 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E0F74: .4byte gBattleAnimBankAttacker +_080E0F78: .4byte gBattleAnimBankTarget +_080E0F7C: .4byte 0x0000ffd8 +_080E0F80: .4byte sub_80E0F84 + thumb_func_end sub_80E0F1C + + thumb_func_start sub_80E0F84 +sub_80E0F84: @ 80E0F84 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080E0FD8 + ldrh r0, [r5, 0x24] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r1, [r5, 0x26] + strh r1, [r5, 0x24] + movs r0, 0x14 + strh r0, [r5, 0x2E] + ldr r4, _080E0FE0 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + movs r0, 0x28 + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_80786EC + ldr r0, _080E0FE4 @ =sub_80E0FE8 + str r0, [r5, 0x1C] +_080E0FD8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E0FE0: .4byte gBattleAnimBankAttacker +_080E0FE4: .4byte sub_80E0FE8 + thumb_func_end sub_80E0F84 + + thumb_func_start sub_80E0FE8 +sub_80E0FE8: @ 80E0FE8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080E0FFC + adds r0, r4, 0 + bl move_anim_8072740 +_080E0FFC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E0FE8 + + thumb_func_start sub_80E1004 +sub_80E1004: @ 80E1004 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r0, _080E1064 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080E1024 + ldr r1, _080E1068 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080E1024: + ldr r4, _080E1068 @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _080E106C @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r6, 0x36] + ldr r0, _080E1070 @ =sub_8078B34 + str r0, [r6, 0x1C] + ldr r1, _080E1074 @ =move_anim_8072740 + adds r0, r6, 0 + bl StoreSpriteCallbackInData + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1064: .4byte gBattleAnimBankAttacker +_080E1068: .4byte gBattleAnimArgs +_080E106C: .4byte gBattleAnimBankTarget +_080E1070: .4byte sub_8078B34 +_080E1074: .4byte move_anim_8072740 + thumb_func_end sub_80E1004 + + thumb_func_start sub_80E1078 +sub_80E1078: @ 80E1078 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r4, _080E10F8 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077EE4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077EE4 + lsls r0, 24 + lsrs r7, r0, 24 + bl Random + movs r4, 0x1F + adds r5, r4, 0 + ands r5, r0 + bl Random + ands r4, r0 + adds r1, r5, 0 + cmp r1, 0x10 + ble _080E10C0 + movs r0, 0x10 + subs r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 +_080E10C0: + lsls r0, r4, 16 + asrs r1, r0, 16 + cmp r1, 0x10 + ble _080E10D0 + movs r0, 0x10 + subs r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_080E10D0: + ldr r0, _080E10FC @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r6, 0x2E] + mov r1, r8 + adds r0, r1, r5 + strh r0, [r6, 0x32] + adds r0, r7, r4 + strh r0, [r6, 0x36] + ldr r0, _080E1100 @ =sub_8078B34 + str r0, [r6, 0x1C] + ldr r1, _080E1104 @ =move_anim_8074EE0 + adds r0, r6, 0 + bl StoreSpriteCallbackInData + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E10F8: .4byte gBattleAnimBankTarget +_080E10FC: .4byte gBattleAnimArgs +_080E1100: .4byte sub_8078B34 +_080E1104: .4byte move_anim_8074EE0 + thumb_func_end sub_80E1078 + + thumb_func_start sub_80E1108 +sub_80E1108: @ 80E1108 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x1 + ldr r3, _080E1168 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080E116C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r6, _080E1170 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080E117C + ldr r4, _080E1174 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r6, 0x2] + adds r0, r2 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r3, [r6, 0x4] + adds r0, r3 + strh r0, [r5, 0x22] + movs r1, 0x2 + ldrsh r0, [r6, r1] + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + ble _080E1162 + movs r1, 0x1 +_080E1162: + strh r1, [r5, 0x2E] + ldr r0, _080E1178 @ =sub_80E1198 + b _080E118A + .align 2, 0 +_080E1168: .4byte 0x000003ff +_080E116C: .4byte 0xfffffc00 +_080E1170: .4byte gBattleAnimArgs +_080E1174: .4byte gBattleAnimBankAttacker +_080E1178: .4byte sub_80E1198 +_080E117C: + ldrh r0, [r6, 0x2] + strh r0, [r5, 0x20] + ldrh r0, [r6, 0x4] + strh r0, [r5, 0x22] + negs r0, r0 + strh r0, [r5, 0x26] + ldr r0, _080E1194 @ =sub_80E11D4 +_080E118A: + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1194: .4byte sub_80E11D4 + thumb_func_end sub_80E1108 + + thumb_func_start sub_80E1198 +sub_80E1198: @ 80E1198 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E11B6 + movs r0, 0 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x20] + adds r0, r1 + strh r0, [r2, 0x20] +_080E11B6: + ldrh r0, [r2, 0x22] + subs r0, 0x4 + strh r0, [r2, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x4 + negs r1, r1 + cmp r0, r1 + bge _080E11CE + adds r0, r2, 0 + bl move_anim_8072740 +_080E11CE: + pop {r0} + bx r0 + thumb_func_end sub_80E1198 + + thumb_func_start sub_80E11D4 +sub_80E11D4: @ 80E11D4 + push {lr} + adds r3, r0, 0 + movs r0, 0x2E + ldrsh r1, [r3, r0] + cmp r1, 0 + beq _080E11E6 + cmp r1, 0x1 + beq _080E11FC + b _080E123E +_080E11E6: + ldrh r0, [r3, 0x26] + adds r0, 0x4 + strh r0, [r3, 0x26] + lsls r0, 16 + cmp r0, 0 + blt _080E123E + strh r1, [r3, 0x26] + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + b _080E123E +_080E11FC: + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + cmp r0, 0 + ble _080E123E + movs r0, 0 + strh r0, [r3, 0x30] + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + ldrb r2, [r1] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080E123E + adds r0, r3, 0 + bl move_anim_8072740 +_080E123E: + pop {r0} + bx r0 + thumb_func_end sub_80E11D4 + + thumb_func_start sub_80E1244 +sub_80E1244: @ 80E1244 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E1264 @ =gTasks + adds r1, r0, r1 + ldr r0, _080E1268 @ =gBattleAnimArgs + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, 0 + bne _080E1270 + ldr r0, _080E126C @ =sub_80E1284 + b _080E1272 + .align 2, 0 +_080E1264: .4byte gTasks +_080E1268: .4byte gBattleAnimArgs +_080E126C: .4byte sub_80E1284 +_080E1270: + ldr r0, _080E1280 @ =sub_80E143C +_080E1272: + str r0, [r1] + ldr r1, [r1] + adds r0, r2, 0 + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080E1280: .4byte sub_80E143C + thumb_func_end sub_80E1244 + + thumb_func_start sub_80E1284 +sub_80E1284: @ 80E1284 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E12A8 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080E129E + b _080E1432 +_080E129E: + lsls r0, 2 + ldr r1, _080E12AC @ =_080E12B0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E12A8: .4byte gTasks +_080E12AC: .4byte _080E12B0 + .align 2, 0 +_080E12B0: + .4byte _080E12C4 + .4byte _080E134C + .4byte _080E135C + .4byte _080E1400 + .4byte _080E1414 +_080E12C4: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r0, _080E12EC @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1E] + cmp r0, 0x1 + bne _080E12F8 + ldr r0, _080E12F0 @ =gUnknown_030042C0 + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080E12F4 @ =gUnknown_030041B4 + b _080E1300 + .align 2, 0 +_080E12EC: .4byte gBattleAnimBankAttacker +_080E12F0: .4byte gUnknown_030042C0 +_080E12F4: .4byte gUnknown_030041B4 +_080E12F8: + ldr r0, _080E133C @ =gUnknown_03004288 + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080E1340 @ =gUnknown_03004280 +_080E1300: + ldrh r0, [r0] + strh r0, [r4, 0x22] + ldr r0, _080E1344 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl sub_8077FC0 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r4, 0x24] + adds r0, 0x20 + strh r0, [r4, 0x26] + cmp r1, 0 + bge _080E1322 + movs r0, 0 + strh r0, [r4, 0x24] +_080E1322: + ldr r2, _080E1348 @ =gSprites + movs r3, 0x1C + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + b _080E1406 + .align 2, 0 +_080E133C: .4byte gUnknown_03004288 +_080E1340: .4byte gUnknown_03004280 +_080E1344: .4byte gBattleAnimBankAttacker +_080E1348: .4byte gSprites +_080E134C: + ldrb r0, [r4, 0x1E] + movs r2, 0x24 + ldrsh r1, [r4, r2] + movs r3, 0x26 + ldrsh r2, [r4, r3] + bl sub_80E1668 + b _080E1406 +_080E135C: + ldrh r0, [r4, 0xC] + adds r0, 0x6 + movs r1, 0x7F + ands r0, r1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080E137E + movs r0, 0 + strh r0, [r4, 0x10] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] +_080E137E: + ldr r1, _080E13A0 @ =gSineTable + movs r2, 0xC + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 20 + ldrh r3, [r4, 0xE] + adds r2, r0, r3 + strh r2, [r4, 0x12] + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080E13A8 + ldr r1, _080E13A4 @ =gUnknown_030041B4 + b _080E13AA + .align 2, 0 +_080E13A0: .4byte gSineTable +_080E13A4: .4byte gUnknown_030041B4 +_080E13A8: + ldr r1, _080E13CC @ =gUnknown_03004280 +_080E13AA: + ldrh r0, [r4, 0x22] + subs r0, r2 + strh r0, [r1] + movs r2, 0x12 + ldrsh r0, [r4, r2] + cmp r0, 0x3F + ble _080E1432 + ldrh r0, [r4, 0x24] + movs r1, 0x78 + subs r2, r1, r0 + strh r2, [r4, 0x12] + movs r3, 0x1E + ldrsh r0, [r4, r3] + cmp r0, 0x1 + bne _080E13D4 + ldr r1, _080E13D0 @ =gUnknown_030041B4 + b _080E13D6 + .align 2, 0 +_080E13CC: .4byte gUnknown_03004280 +_080E13D0: .4byte gUnknown_030041B4 +_080E13D4: + ldr r1, _080E13F8 @ =gUnknown_03004280 +_080E13D6: + ldrh r0, [r4, 0x22] + subs r0, r2 + strh r0, [r1] + ldr r2, _080E13FC @ =gSprites + movs r1, 0x1C + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r2, [r1, 0x20] + movs r3, 0x88 + lsls r3, 1 + adds r0, r3, 0 + subs r0, r2 + strh r0, [r1, 0x24] + b _080E1406 + .align 2, 0 +_080E13F8: .4byte gUnknown_03004280 +_080E13FC: .4byte gSprites +_080E1400: + ldr r1, _080E1410 @ =gUnknown_03004DC0 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080E1406: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E1432 + .align 2, 0 +_080E1410: .4byte gUnknown_03004DC0 +_080E1414: + adds r0, r2, 0 + bl DestroyAnimVisualTask + ldr r2, _080E1438 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080E1432: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E1438: .4byte gSprites + thumb_func_end sub_80E1284 + + thumb_func_start sub_80E143C +sub_80E143C: @ 80E143C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E147C @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r3, r1, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r3] + movs r4, 0 + strh r4, [r1, 0x24] + strh r4, [r1, 0x26] + ldr r0, _080E1480 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E1488 + ldr r0, _080E1484 @ =gUnknown_030041B4 + b _080E148A + .align 2, 0 +_080E147C: .4byte gSprites +_080E1480: .4byte gBattleAnimBankAttacker +_080E1484: .4byte gUnknown_030041B4 +_080E1488: + ldr r0, _080E1498 @ =gUnknown_03004280 +_080E148A: + strh r4, [r0] + adds r0, r5, 0 + bl DestroyAnimVisualTask + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E1498: .4byte gUnknown_03004280 + thumb_func_end sub_80E143C + + thumb_func_start sub_80E149C +sub_80E149C: @ 80E149C + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E14BC @ =gTasks + adds r1, r0, r1 + ldr r0, _080E14C0 @ =gBattleAnimArgs + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, 0 + bne _080E14C8 + ldr r0, _080E14C4 @ =sub_80E14DC + b _080E14CA + .align 2, 0 +_080E14BC: .4byte gTasks +_080E14C0: .4byte gBattleAnimArgs +_080E14C4: .4byte sub_80E14DC +_080E14C8: + ldr r0, _080E14D8 @ =sub_80E1560 +_080E14CA: + str r0, [r1] + ldr r1, [r1] + adds r0, r2, 0 + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080E14D8: .4byte sub_80E1560 + thumb_func_end sub_80E149C + + thumb_func_start sub_80E14DC +sub_80E14DC: @ 80E14DC + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E14FC @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r5, [r4, r0] + cmp r5, 0 + beq _080E1500 + cmp r5, 0x1 + beq _080E1554 + b _080E155A + .align 2, 0 +_080E14FC: .4byte gTasks +_080E1500: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r3, _080E1550 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r5, [r0, 0x24] + movs r1, 0x1C + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r2, [r1, 0x22] + movs r0, 0xA0 + subs r0, r2 + strh r0, [r1, 0x26] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E155A + .align 2, 0 +_080E1550: .4byte gSprites +_080E1554: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E155A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80E14DC + + thumb_func_start sub_80E1560 +sub_80E1560: @ 80E1560 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E1584 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bhi _080E1662 + lsls r0, 2 + ldr r1, _080E1588 @ =_080E158C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E1584: .4byte gTasks +_080E1588: .4byte _080E158C + .align 2, 0 +_080E158C: + .4byte _080E15A0 + .4byte _080E15F4 + .4byte _080E1602 + .4byte _080E161C + .4byte _080E165C +_080E15A0: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1C] + ldr r0, _080E15C4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1E] + cmp r0, 0x1 + bne _080E15CC + ldr r0, _080E15C8 @ =gUnknown_030042C0 + b _080E15CE + .align 2, 0 +_080E15C4: .4byte gBattleAnimBankAttacker +_080E15C8: .4byte gUnknown_030042C0 +_080E15CC: + ldr r0, _080E15EC @ =gUnknown_03004288 +_080E15CE: + ldrh r0, [r0] + strh r0, [r4, 0x20] + ldr r0, _080E15F0 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl sub_8077FC0 + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + subs r1, 0x20 + strh r1, [r4, 0x24] + adds r0, 0x20 + strh r0, [r4, 0x26] + b _080E164A + .align 2, 0 +_080E15EC: .4byte gUnknown_03004288 +_080E15F0: .4byte gBattleAnimBankAttacker +_080E15F4: + ldrb r0, [r4, 0x1E] + movs r1, 0x26 + ldrsh r2, [r4, r1] + movs r1, 0 + bl sub_80E1668 + b _080E164A +_080E1602: + ldr r2, _080E1618 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x60 + strh r1, [r0, 0x26] + b _080E164A + .align 2, 0 +_080E1618: .4byte gSprites +_080E161C: + ldr r2, _080E1654 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x8 + strh r1, [r0, 0x26] + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x26 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E1662 + ldr r1, _080E1658 @ =gUnknown_03004DC0 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080E164A: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E1662 + .align 2, 0 +_080E1654: .4byte gSprites +_080E1658: .4byte gUnknown_03004DC0 +_080E165C: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E1662: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E1560 + + thumb_func_start sub_80E1668 +sub_80E1668: @ 80E1668 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r4, r2, 16 + cmp r0, 0x1 + bne _080E168C + ldr r0, _080E1684 @ =gUnknown_030042C0 + ldrh r3, [r0] + ldr r0, _080E1688 @ =REG_BG1HOFS + b _080E1692 + .align 2, 0 +_080E1684: .4byte gUnknown_030042C0 +_080E1688: .4byte REG_BG1HOFS +_080E168C: + ldr r0, _080E1718 @ =gUnknown_03004288 + ldrh r3, [r0] + ldr r0, _080E171C @ =REG_BG2HOFS +_080E1692: + str r0, [sp] + lsls r0, r1, 16 + cmp r0, 0 + bge _080E169C + movs r1, 0 +_080E169C: + lsls r2, r1, 16 + lsls r0, r4, 16 + asrs r4, r0, 16 + cmp r2, r0 + bge _080E16C8 + ldr r5, _080E1720 @ =gUnknown_03004DE0 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 +_080E16AE: + asrs r2, 16 + lsls r1, r2, 1 + adds r0, r1, r5 + strh r3, [r0] + adds r1, r6 + strh r3, [r1] + adds r2, 0x1 + lsls r2, 16 + lsrs r1, r2, 16 + lsls r2, r1, 16 + asrs r0, r2, 16 + cmp r0, r4 + blt _080E16AE +_080E16C8: + lsls r1, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _080E16F6 + ldr r4, _080E1720 @ =gUnknown_03004DE0 + lsls r0, r3, 16 + asrs r0, 16 + adds r3, r0, 0 + adds r3, 0xF0 + movs r0, 0xF0 + lsls r0, 3 + adds r5, r4, r0 +_080E16E0: + asrs r2, r1, 16 + lsls r1, r2, 1 + adds r0, r1, r4 + strh r3, [r0] + adds r1, r5 + strh r3, [r1] + adds r2, 0x1 + lsls r1, r2, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _080E16E0 +_080E16F6: + ldr r0, _080E1724 @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_80895F8 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1718: .4byte gUnknown_03004288 +_080E171C: .4byte REG_BG2HOFS +_080E1720: .4byte gUnknown_03004DE0 +_080E1724: .4byte 0xa2600001 + thumb_func_end sub_80E1668 + + thumb_func_start sub_80E1728 +sub_80E1728: @ 80E1728 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _080E173C @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + adds r7, r0, 0 + cmp r1, 0 + bne _080E1744 + ldr r0, _080E1740 @ =gBattleAnimBankAttacker + b _080E1746 + .align 2, 0 +_080E173C: .4byte gBattleAnimArgs +_080E1740: .4byte gBattleAnimBankAttacker +_080E1744: + ldr r0, _080E17A8 @ =gBattleAnimBankTarget +_080E1746: + ldrb r4, [r0] + movs r6, 0x18 + adds r1, r7, 0 + movs r2, 0x2 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + bne _080E1762 + negs r0, r6 + lsls r0, 16 + lsrs r6, r0, 16 + movs r2, 0x4 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x4] +_080E1762: + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, r6 + strh r0, [r5, 0x20] + adds r0, r4, 0 + bl sub_8077FC0 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1E + strh r0, [r5, 0x22] + ldrh r1, [r7, 0xA] + strh r1, [r5, 0x2E] + ldrh r1, [r7, 0x4] + ldrh r2, [r5, 0x20] + adds r1, r2 + strh r1, [r5, 0x32] + ldrh r1, [r7, 0x6] + adds r0, r1 + strh r0, [r5, 0x36] + ldrh r0, [r7, 0x8] + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_80786EC + ldr r0, _080E17AC @ =sub_80E17B0 + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E17A8: .4byte gBattleAnimBankTarget +_080E17AC: .4byte sub_80E17B0 + thumb_func_end sub_80E1728 + + thumb_func_start sub_80E17B0 +sub_80E17B0: @ 80E17B0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080E17C4 + adds r0, r4, 0 + bl move_anim_8072740 +_080E17C4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E17B0 + + thumb_func_start sub_80E17CC +sub_80E17CC: @ 80E17CC + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _080E17E0 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E17E8 + ldr r0, _080E17E4 @ =gBattleAnimBankAttacker + b _080E17EA + .align 2, 0 +_080E17E0: .4byte gBattleAnimArgs +_080E17E4: .4byte gBattleAnimBankAttacker +_080E17E8: + ldr r0, _080E1848 @ =gBattleAnimBankTarget +_080E17EA: + ldrb r5, [r0] + adds r0, r5, 0 + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E184C @ =0x0000fff0 + adds r0, r2 + ldr r4, _080E1850 @ =gBattleAnimArgs + movs r3, 0x2 + ldrsh r1, [r4, r3] + lsls r1, 5 + adds r0, r1 + strh r0, [r6, 0x20] + adds r0, r5, 0 + bl sub_8077FC0 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x20 + strh r0, [r6, 0x22] + ldrh r2, [r6, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0x2 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r1, r0 + ldr r3, _080E1854 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080E1858 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r6, 0x4] + ldr r1, _080E185C @ =move_anim_8072740 + adds r0, r6, 0 + bl StoreSpriteCallbackInData + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x2E] + ldr r0, _080E1860 @ =sub_80782D8 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1848: .4byte gBattleAnimBankTarget +_080E184C: .4byte 0x0000fff0 +_080E1850: .4byte gBattleAnimArgs +_080E1854: .4byte 0x000003ff +_080E1858: .4byte 0xfffffc00 +_080E185C: .4byte move_anim_8072740 +_080E1860: .4byte sub_80782D8 + thumb_func_end sub_80E17CC + + thumb_func_start sub_80E1864 +sub_80E1864: @ 80E1864 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080E1888 @ =gTasks + adds r4, r0, r1 + ldr r0, _080E188C @ =gBattleAnimArgs + ldrh r2, [r0, 0x2] + movs r3, 0x2 + ldrsh r1, [r0, r3] + adds r6, r0, 0 + cmp r1, 0 + beq _080E1890 + adds r0, r2, 0x3 + b _080E189C + .align 2, 0 +_080E1888: .4byte gTasks +_080E188C: .4byte gBattleAnimArgs +_080E1890: + ldr r0, _080E18BC @ =gMovePowerMoveAnim + ldrh r0, [r0] + movs r1, 0xA + bl __udivsi3 + adds r0, 0x3 +_080E189C: + strh r0, [r4, 0x26] + strh r0, [r4, 0x24] + adds r1, r6, 0 + ldrh r0, [r1, 0x4] + strh r0, [r4, 0xE] + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0x4 + beq _080E18C8 + cmp r0, 0x5 + bne _080E1908 + ldr r0, _080E18C0 @ =gUnknown_030041B0 + ldrh r0, [r0] + strh r0, [r4, 0x22] + ldr r0, _080E18C4 @ =sub_80E1934 + b _080E1926 + .align 2, 0 +_080E18BC: .4byte gMovePowerMoveAnim +_080E18C0: .4byte gUnknown_030041B0 +_080E18C4: .4byte sub_80E1934 +_080E18C8: + movs r0, 0 + strh r0, [r4, 0x22] + movs r5, 0 +_080E18CE: + lsls r0, r5, 24 + lsrs r0, 24 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080E18F8 + movs r3, 0x22 + ldrsh r0, [r4, r3] + adds r0, 0x9 + lsls r0, 1 + adds r1, r4, 0 + adds r1, 0x8 + adds r1, r0 + ldr r0, _080E1904 @ =gObjectBankIDs + adds r0, r5, r0 + ldrb r0, [r0] + strh r0, [r1] + ldrh r0, [r4, 0x22] + adds r0, 0x1 + strh r0, [r4, 0x22] +_080E18F8: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _080E18CE + b _080E1924 + .align 2, 0 +_080E1904: .4byte gObjectBankIDs +_080E1908: + ldrb r0, [r6] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x1A] + cmp r0, 0xFF + bne _080E1920 + adds r0, r5, 0 + bl DestroyAnimVisualTask + b _080E1928 +_080E1920: + movs r0, 0x1 + strh r0, [r4, 0x22] +_080E1924: + ldr r0, _080E1930 @ =sub_80E1A2C +_080E1926: + str r0, [r4] +_080E1928: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1930: .4byte sub_80E1A2C + thumb_func_end sub_80E1864 + + thumb_func_start sub_80E1934 +sub_80E1934: @ 80E1934 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E1958 @ =gTasks + adds r3, r0, r1 + movs r0, 0x8 + ldrsh r1, [r3, r0] + cmp r1, 0x1 + beq _080E19B8 + cmp r1, 0x1 + bgt _080E195C + cmp r1, 0 + beq _080E1962 + b _080E1A24 + .align 2, 0 +_080E1958: .4byte gTasks +_080E195C: + cmp r1, 0x2 + beq _080E1A18 + b _080E1A24 +_080E1962: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E1A24 + strh r1, [r3, 0xA] + ldrh r1, [r3, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080E198C + ldr r1, _080E1988 @ =gUnknown_030041B0 + ldrh r0, [r3, 0x26] + ldrh r2, [r3, 0x22] + adds r0, r2 + strh r0, [r1] + b _080E1996 + .align 2, 0 +_080E1988: .4byte gUnknown_030041B0 +_080E198C: + ldr r0, _080E19B4 @ =gUnknown_030041B0 + ldrh r1, [r3, 0x22] + ldrh r2, [r3, 0x26] + subs r1, r2 + strh r1, [r0] +_080E1996: + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xE + ldrsh r1, [r3, r2] + cmp r0, r1 + bne _080E1A24 + movs r0, 0 + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x24] + subs r0, 0x1 + strh r0, [r3, 0x24] + b _080E1A0C + .align 2, 0 +_080E19B4: .4byte gUnknown_030041B0 +_080E19B8: + ldrh r0, [r3, 0xA] + adds r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E1A24 + movs r0, 0 + strh r0, [r3, 0xA] + ldrh r0, [r3, 0xC] + ands r1, r0 + cmp r1, 0 + bne _080E19E4 + ldr r1, _080E19E0 @ =gUnknown_030041B0 + ldrh r0, [r3, 0x24] + ldrh r2, [r3, 0x22] + adds r0, r2 + strh r0, [r1] + b _080E19EE + .align 2, 0 +_080E19E0: .4byte gUnknown_030041B0 +_080E19E4: + ldr r0, _080E1A14 @ =gUnknown_030041B0 + ldrh r1, [r3, 0x22] + ldrh r2, [r3, 0x24] + subs r1, r2 + strh r1, [r0] +_080E19EE: + ldrh r0, [r3, 0xC] + adds r0, 0x1 + strh r0, [r3, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080E1A24 + movs r0, 0 + strh r0, [r3, 0xC] + ldrh r0, [r3, 0x24] + subs r0, 0x1 + strh r0, [r3, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _080E1A24 +_080E1A0C: + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + b _080E1A24 + .align 2, 0 +_080E1A14: .4byte gUnknown_030041B0 +_080E1A18: + ldr r1, _080E1A28 @ =gUnknown_030041B0 + ldrh r0, [r3, 0x22] + strh r0, [r1] + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E1A24: + pop {r0} + bx r0 + .align 2, 0 +_080E1A28: .4byte gUnknown_030041B0 + thumb_func_end sub_80E1934 + + thumb_func_start sub_80E1A2C +sub_80E1A2C: @ 80E1A2C + push {r4-r7,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080E1A50 @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080E1A8C + cmp r5, 0x1 + bgt _080E1A54 + cmp r5, 0 + beq _080E1A5A + b _080E1B06 + .align 2, 0 +_080E1A50: .4byte gTasks +_080E1A54: + cmp r5, 0x2 + beq _080E1AC8 + b _080E1B06 +_080E1A5A: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E1B06 + strh r5, [r4, 0xA] + adds r0, r4, 0 + bl sub_80E1B10 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080E1B06 + strh r5, [r4, 0xC] + ldrh r0, [r4, 0x24] + subs r0, 0x1 + strh r0, [r4, 0x24] + b _080E1AC0 +_080E1A8C: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + movs r5, 0 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E1B06 + strh r5, [r4, 0xA] + adds r0, r4, 0 + bl sub_80E1B10 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080E1B06 + strh r5, [r4, 0xC] + ldrh r0, [r4, 0x24] + subs r0, 0x1 + strh r0, [r4, 0x24] + lsls r0, 16 + cmp r0, 0 + bne _080E1B06 +_080E1AC0: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E1B06 +_080E1AC8: + movs r2, 0 + movs r7, 0x22 + ldrsh r0, [r4, r7] + cmp r2, r0 + bge _080E1B00 + ldr r0, _080E1B0C @ =gSprites + mov r12, r0 + adds r5, r4, 0 + adds r5, 0x8 + movs r6, 0 +_080E1ADC: + adds r0, r2, 0 + adds r0, 0x9 + lsls r0, 1 + adds r0, r5, r0 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r12 + strh r6, [r0, 0x24] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0x22 + ldrsh r0, [r4, r1] + cmp r2, r0 + blt _080E1ADC +_080E1B00: + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080E1B06: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1B0C: .4byte gSprites + thumb_func_end sub_80E1A2C + + thumb_func_start sub_80E1B10 +sub_80E1B10: @ 80E1B10 + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0xC] + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _080E1B38 + movs r0, 0x24 + ldrsh r1, [r3, r0] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r2, [r3, 0x24] + adds r0, r4, 0 + ands r0, r2 + adds r1, r0 + lsls r1, 16 + lsrs r4, r1, 16 + b _080E1B48 +_080E1B38: + movs r1, 0x24 + ldrsh r0, [r3, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + negs r0, r0 + lsls r0, 16 + lsrs r4, r0, 16 +_080E1B48: + movs r2, 0 + movs r7, 0x22 + ldrsh r0, [r3, r7] + cmp r2, r0 + bge _080E1B7C + ldr r6, _080E1B84 @ =gSprites + adds r5, r3, 0 + adds r5, 0x8 +_080E1B58: + adds r0, r2, 0 + adds r0, 0x9 + lsls r0, 1 + adds r0, r5, r0 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r4, [r0, 0x24] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0x22 + ldrsh r0, [r3, r1] + cmp r2, r0 + blt _080E1B58 +_080E1B7C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1B84: .4byte gSprites + thumb_func_end sub_80E1B10 + + thumb_func_start sub_80E1B88 +sub_80E1B88: @ 80E1B88 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r3, _080E1BA8 @ =gBattleAnimArgs + movs r2, 0 + ldr r0, _080E1BAC @ =gMovePowerMoveAnim + ldrh r0, [r0] + cmp r0, 0x63 + bls _080E1B9C + movs r2, 0x1 +_080E1B9C: + strh r2, [r3, 0x1E] + adds r0, r1, 0 + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080E1BA8: .4byte gBattleAnimArgs +_080E1BAC: .4byte gMovePowerMoveAnim + thumb_func_end sub_80E1B88 + + thumb_func_start sub_80E1BB0 +sub_80E1BB0: @ 80E1BB0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r2, _080E1BC8 @ =gBattleAnimArgs + ldrh r1, [r2] + movs r0, 0x1 + ands r0, r1 + adds r6, r2, 0 + cmp r0, 0 + beq _080E1BD0 + ldr r0, _080E1BCC @ =gBattleAnimBankTarget + b _080E1BD2 + .align 2, 0 +_080E1BC8: .4byte gBattleAnimArgs +_080E1BCC: .4byte gBattleAnimBankTarget +_080E1BD0: + ldr r0, _080E1C40 @ =gBattleAnimBankAttacker +_080E1BD2: + ldrb r0, [r0] + adds r5, r0, 0 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x1 + ble _080E1BE2 + movs r0, 0x2 + eors r5, r0 +_080E1BE2: + ldr r0, _080E1C44 @ =sub_80E1C58 + ldrb r1, [r6, 0x2] + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080E1C48 @ =gTasks + adds r4, r0 + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x20 + subs r1, r0 + ldr r2, _080E1C4C @ =0x000001ff + adds r0, r2, 0 + ands r1, r0 + strh r1, [r4, 0xA] + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x40 + subs r1, r0 + movs r0, 0xFF + ands r1, r0 + strh r1, [r4, 0xC] + ldr r2, _080E1C50 @ =gUnknown_030041B0 + ldrh r0, [r4, 0xA] + strh r0, [r2] + ldr r0, _080E1C54 @ =gUnknown_030041B8 + strh r1, [r0] + ldrh r0, [r6, 0x4] + strh r0, [r4, 0xE] + adds r0, r7, 0 + bl DestroyAnimVisualTask + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1C40: .4byte gBattleAnimBankAttacker +_080E1C44: .4byte sub_80E1C58 +_080E1C48: .4byte gTasks +_080E1C4C: .4byte 0x000001ff +_080E1C50: .4byte gUnknown_030041B0 +_080E1C54: .4byte gUnknown_030041B8 + thumb_func_end sub_80E1BB0 + + thumb_func_start sub_80E1C58 +sub_80E1C58: @ 80E1C58 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + ldr r1, _080E1C88 @ =gTasks + adds r2, r0, r1 + ldr r0, _080E1C8C @ =gBattleAnimArgs + movs r4, 0xE + ldrsh r1, [r0, r4] + movs r4, 0xE + ldrsh r0, [r2, r4] + cmp r1, r0 + bne _080E1C98 + ldr r0, _080E1C90 @ =gUnknown_030041B0 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E1C94 @ =gUnknown_030041B8 + strh r1, [r0] + adds r0, r3, 0 + bl DestroyTask + b _080E1CA4 + .align 2, 0 +_080E1C88: .4byte gTasks +_080E1C8C: .4byte gBattleAnimArgs +_080E1C90: .4byte gUnknown_030041B0 +_080E1C94: .4byte gUnknown_030041B8 +_080E1C98: + ldr r1, _080E1CAC @ =gUnknown_030041B0 + ldrh r0, [r2, 0xA] + strh r0, [r1] + ldr r1, _080E1CB0 @ =gUnknown_030041B8 + ldrh r0, [r2, 0xC] + strh r0, [r1] +_080E1CA4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E1CAC: .4byte gUnknown_030041B0 +_080E1CB0: .4byte gUnknown_030041B8 + thumb_func_end sub_80E1C58 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/guard.s b/asm/guard.s new file mode 100755 index 000000000..13ead6879 --- /dev/null +++ b/asm/guard.s @@ -0,0 +1,80 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D3014 +sub_80D3014: @ 80D3014 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080D3058 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D3060 + ldr r4, _080D305C @ =gBattleAnimBankAttacker + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080D3060 + ldrb r0, [r4] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_807A3FC + ldrh r0, [r5, 0x22] + adds r0, 0x28 + strh r0, [r5, 0x22] + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + b _080D3080 + .align 2, 0 +_080D3058: .4byte gBattleTypeFlags +_080D305C: .4byte gBattleAnimBankAttacker +_080D3060: + ldr r4, _080D30A0 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x28 + strh r0, [r5, 0x22] +_080D3080: + movs r0, 0xD + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + subs r0, 0x48 + strh r0, [r5, 0x36] + ldr r0, _080D30A4 @ =sub_8078B34 + str r0, [r5, 0x1C] + ldr r1, _080D30A8 @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D30A0: .4byte gBattleAnimBankAttacker +_080D30A4: .4byte sub_8078B34 +_080D30A8: .4byte move_anim_8072740 + thumb_func_end sub_80D3014 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/heated_rock.s b/asm/heated_rock.s new file mode 100755 index 000000000..eb957a6f1 --- /dev/null +++ b/asm/heated_rock.s @@ -0,0 +1,302 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ heated_rock + + thumb_func_start sub_80D58FC +sub_80D58FC: @ 80D58FC + push {r4,lr} + adds r4, r0, 0 + bl sub_80D59B0 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080D5936 + ldr r3, _080D593C @ =gTasks + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl DestroySprite +_080D5936: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D593C: .4byte gTasks + thumb_func_end sub_80D58FC + + thumb_func_start sub_80D5940 +sub_80D5940: @ 80D5940 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080D5978 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r2, [r1, 0x26] + ldrh r0, [r1, 0x22] + adds r2, r0 + adds r1, 0x29 + movs r0, 0 + ldrsb r0, [r1, r0] + adds r0, r2 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _080D597C @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D5980 + lsls r0, r4, 16 + movs r1, 0x94 + lsls r1, 15 + b _080D5986 + .align 2, 0 +_080D5978: .4byte gSprites +_080D597C: .4byte gBattleAnimBankAttacker +_080D5980: + lsls r0, r4, 16 + movs r1, 0xB0 + lsls r1, 14 +_080D5986: + adds r0, r1 + lsrs r4, r0, 16 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80D5940 + + thumb_func_start sub_80D5994 +sub_80D5994: @ 80D5994 + movs r3, 0 + strh r3, [r0, 0x2E] + strh r3, [r0, 0x30] + ldrh r3, [r0, 0x20] + lsls r3, 3 + strh r3, [r0, 0x32] + ldrh r3, [r0, 0x22] + lsls r3, 3 + strh r3, [r0, 0x34] + lsls r1, 3 + strh r1, [r0, 0x36] + lsls r2, 3 + strh r2, [r0, 0x38] + bx lr + thumb_func_end sub_80D5994 + + thumb_func_start sub_80D59B0 +sub_80D59B0: @ 80D59B0 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080D59DA + movs r0, 0 + strh r0, [r2, 0x2E] + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x30] + adds r1, r0, 0 + muls r1, r0 + adds r0, r1, 0 + ldrh r3, [r2, 0x34] + adds r0, r3 + strh r0, [r2, 0x34] +_080D59DA: + ldrh r0, [r2, 0x36] + ldrh r1, [r2, 0x32] + adds r0, r1 + strh r0, [r2, 0x32] + lsls r0, 16 + asrs r0, 19 + strh r0, [r2, 0x20] + ldrh r1, [r2, 0x38] + ldrh r3, [r2, 0x34] + adds r1, r3 + strh r1, [r2, 0x34] + lsls r1, 16 + asrs r3, r1, 19 + strh r3, [r2, 0x22] + adds r0, 0x8 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 17 + cmp r0, r1 + bhi _080D5A10 + adds r1, r3, 0 + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _080D5A10 + cmp r1, 0x78 + ble _080D5A1C +_080D5A10: + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_080D5A1C: + pop {r0} + bx r0 + thumb_func_end sub_80D59B0 + + thumb_func_start sub_80D5A20 +sub_80D5A20: @ 80D5A20 + push {r4,r5,lr} + ldr r3, _080D5A64 @ =gBattleAnimArgs + ldrh r1, [r3] + movs r2, 0 + strh r1, [r0, 0x20] + ldrh r1, [r3, 0x2] + strh r1, [r0, 0x22] + strh r2, [r0, 0x2E] + strh r2, [r0, 0x30] + strh r2, [r0, 0x32] + ldrh r1, [r3, 0x4] + strh r1, [r0, 0x3A] + ldrh r1, [r3, 0x6] + strh r1, [r0, 0x3C] + ldrh r4, [r0, 0x4] + lsls r2, r4, 22 + lsrs r2, 22 + movs r5, 0x8 + ldrsh r1, [r3, r5] + lsls r1, 4 + adds r2, r1 + ldr r3, _080D5A68 @ =0x000003ff + adds r1, r3, 0 + ands r2, r1 + ldr r1, _080D5A6C @ =0xfffffc00 + ands r1, r4 + orrs r1, r2 + strh r1, [r0, 0x4] + ldr r1, _080D5A70 @ =sub_80D5A74 + str r1, [r0, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D5A64: .4byte gBattleAnimArgs +_080D5A68: .4byte 0x000003ff +_080D5A6C: .4byte 0xfffffc00 +_080D5A70: .4byte sub_80D5A74 + thumb_func_end sub_80D5A20 + + thumb_func_start sub_80D5A74 +sub_80D5A74: @ 80D5A74 + push {r4,lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0x1 + beq _080D5AA6 + cmp r0, 0x1 + bgt _080D5A8A + cmp r0, 0 + beq _080D5A90 + b _080D5B04 +_080D5A8A: + cmp r0, 0x2 + beq _080D5AC4 + b _080D5B04 +_080D5A90: + ldrh r1, [r2, 0x3A] + movs r3, 0x3A + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _080D5AA0 + subs r0, r1, 0x1 + strh r0, [r2, 0x3A] + b _080D5B04 +_080D5AA0: + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] +_080D5AA6: + ldrh r0, [r2, 0x22] + adds r0, 0x8 + strh r0, [r2, 0x22] + lsls r0, 16 + asrs r0, 16 + ldrh r3, [r2, 0x3C] + movs r4, 0x3C + ldrsh r1, [r2, r4] + cmp r0, r1 + blt _080D5B04 + strh r3, [r2, 0x22] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + b _080D5B04 +_080D5AC4: + ldrh r0, [r2, 0x30] + adds r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D5AF0 + movs r0, 0 + strh r0, [r2, 0x30] + ldrh r0, [r2, 0x32] + adds r0, 0x1 + strh r0, [r2, 0x32] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D5AEC + ldr r0, _080D5AE8 @ =0x0000fffd + b _080D5AEE + .align 2, 0 +_080D5AE8: .4byte 0x0000fffd +_080D5AEC: + movs r0, 0x3 +_080D5AEE: + strh r0, [r2, 0x26] +_080D5AF0: + ldrh r0, [r2, 0x34] + adds r0, 0x1 + strh r0, [r2, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080D5B04 + adds r0, r2, 0 + bl move_anim_8072740 +_080D5B04: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D5A74 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/ice.s b/asm/ice.s new file mode 100755 index 000000000..ec0b83d4c --- /dev/null +++ b/asm/ice.s @@ -0,0 +1,3221 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ ice + + thumb_func_start sub_80D76C4 +sub_80D76C4: @ 80D76C4 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080D76F8 + ldr r3, _080D7700 @ =gTasks + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl DestroySprite +_080D76F8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D7700: .4byte gTasks + thumb_func_end sub_80D76C4 + + thumb_func_start sub_80D7704 +sub_80D7704: @ 80D7704 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x7 + ldr r3, _080D780C @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080D7810 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r4, _080D7814 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r4, _080D7818 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r3, r0, 24 + ldrb r0, [r4] + movs r1, 0x3 + str r3, [sp] + bl sub_8077ABC + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080D781C @ =gBattleAnimArgs + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r1] + ldr r3, [sp] + adds r0, r3 + strh r0, [r5, 0x30] + ldrh r0, [r1, 0x4] + mov r4, r9 + adds r0, r4, r0 + strh r0, [r5, 0x32] + ldrh r0, [r1, 0x2] + adds r0, r6 + strh r0, [r5, 0x34] + ldrh r0, [r1, 0x6] + mov r7, r8 + adds r0, r7, r0 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_8078314 + adds r4, 0x20 + movs r0, 0x98 + lsls r0, 1 + mov r12, r0 + ldr r3, [sp] + cmp r4, r12 + bhi _080D77DE + adds r0, r7, 0 + adds r0, 0x20 + ldrh r1, [r5, 0x30] + ldrh r2, [r5, 0x32] + cmp r0, 0xE0 + bhi _080D77DE + adds r4, r1, 0 + mov r10, r12 +_080D77AA: + mov r7, r9 + lsls r1, r7, 16 + asrs r1, 16 + adds r1, r4 + lsls r1, 16 + mov r7, r8 + lsls r0, r7, 16 + asrs r0, 16 + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsrs r0, r1, 16 + mov r9, r0 + movs r7, 0x80 + lsls r7, 14 + adds r1, r7 + lsrs r1, 16 + cmp r1, r10 + bhi _080D77DE + mov r1, r8 + lsls r0, r1, 16 + adds r0, r7 + lsrs r0, 16 + cmp r0, 0xE0 + bls _080D77AA +_080D77DE: + ldrh r0, [r5, 0x30] + negs r7, r0 + strh r7, [r5, 0x30] + ldrh r0, [r5, 0x32] + negs r4, r0 + strh r4, [r5, 0x32] + lsls r0, r3, 16 + movs r1, 0x80 + lsls r1, 14 + adds r0, r1 + lsrs r0, 16 + movs r2, 0x98 + lsls r2, 1 + mov r12, r2 + ldr r1, _080D781C @ =gBattleAnimArgs + mov r10, r1 + cmp r0, r12 + bhi _080D784A + lsls r1, r6, 16 + movs r2, 0x80 + lsls r2, 14 + adds r0, r1, r2 + b _080D7842 + .align 2, 0 +_080D780C: .4byte 0x000003ff +_080D7810: .4byte 0xfffffc00 +_080D7814: .4byte gBattleAnimBankTarget +_080D7818: .4byte gBattleAnimBankAttacker +_080D781C: .4byte gBattleAnimArgs +_080D7820: + lsls r1, r3, 16 + asrs r1, 16 + adds r1, r7 + lsls r1, 16 + asrs r0, r2, 16 + adds r0, r4 + lsls r0, 16 + lsrs r6, r0, 16 + lsrs r3, r1, 16 + movs r0, 0x80 + lsls r0, 14 + adds r1, r0 + lsrs r1, 16 + cmp r1, r12 + bhi _080D784A + lsls r1, r6, 16 + adds r0, r1, r0 +_080D7842: + lsrs r0, 16 + adds r2, r1, 0 + cmp r0, 0xE0 + bls _080D7820 +_080D784A: + strh r3, [r5, 0x20] + strh r6, [r5, 0x22] + mov r1, r10 + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x2E] + strh r3, [r5, 0x30] + mov r2, r9 + strh r2, [r5, 0x32] + strh r6, [r5, 0x34] + mov r3, r8 + strh r3, [r5, 0x36] + adds r0, r5, 0 + bl sub_8078314 + mov r7, r10 + ldrh r0, [r7, 0xA] + strh r0, [r5, 0x34] + ldrh r0, [r7, 0xC] + strh r0, [r5, 0x36] + ldr r0, _080D7884 @ =sub_80D7888 + str r0, [r5, 0x1C] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D7884: .4byte sub_80D7888 + thumb_func_end sub_80D7704 + + thumb_func_start sub_80D7888 +sub_80D7888: @ 80D7888 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D78E0 + ldrh r1, [r4, 0x30] + ldrh r2, [r4, 0x38] + adds r1, r2 + strh r1, [r4, 0x38] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x3A] + adds r0, r2 + strh r0, [r4, 0x3A] + strh r1, [r4, 0x24] + strh r0, [r4, 0x26] + movs r1, 0x3C + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r2, 0x3C + ldrsh r0, [r4, r2] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x36] + ldrh r2, [r4, 0x3C] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + b _080D78E6 +_080D78E0: + adds r0, r4, 0 + bl move_anim_8072740 +_080D78E6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D7888 + + thumb_func_start sub_80D78EC +sub_80D78EC: @ 80D78EC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D7920 @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r4, 0x2E] + movs r0, 0x3C + strh r0, [r4, 0x30] + movs r0, 0x9 + strh r0, [r4, 0x32] + movs r0, 0x1E + strh r0, [r4, 0x34] + movs r0, 0xFE + lsls r0, 8 + strh r0, [r4, 0x36] + ldr r1, _080D7924 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r1, _080D7928 @ =sub_8078174 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D7920: .4byte gBattleAnimArgs +_080D7924: .4byte move_anim_8072740 +_080D7928: .4byte sub_8078174 + thumb_func_end sub_80D78EC + + thumb_func_start sub_80D792C +sub_80D792C: @ 80D792C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080D7960 @ =gBattleAnimBankTarget + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldr r0, _080D7964 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D796C + ldr r0, _080D7968 @ =gBattleAnimArgs + ldrh r1, [r4, 0x32] + ldrh r0, [r0, 0x4] + subs r1, r0 + strh r1, [r4, 0x32] + b _080D7976 + .align 2, 0 +_080D7960: .4byte gBattleAnimBankTarget +_080D7964: .4byte gBattleAnimBankAttacker +_080D7968: .4byte gBattleAnimArgs +_080D796C: + ldr r0, _080D79A4 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] +_080D7976: + ldr r0, _080D79A8 @ =gBattleAnimBankTarget + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + ldr r1, _080D79A4 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r2, [r1, 0x6] + adds r0, r2 + strh r0, [r4, 0x36] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x2E] + ldr r1, _080D79AC @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D79B0 @ =sub_8078B34 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D79A4: .4byte gBattleAnimArgs +_080D79A8: .4byte gBattleAnimBankTarget +_080D79AC: .4byte move_anim_8072740 +_080D79B0: .4byte sub_8078B34 + thumb_func_end sub_80D792C + + thumb_func_start sub_80D79B4 +sub_80D79B4: @ 80D79B4 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080D79CC @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D79D0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8078764 + b _080D7A06 + .align 2, 0 +_080D79CC: .4byte gBattleAnimArgs +_080D79D0: + ldr r0, _080D7A18 @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl sub_807A3FC + ldr r0, _080D7A1C @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D79F6 + ldrh r0, [r5] + negs r0, r0 + strh r0, [r5] +_080D79F6: + 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] +_080D7A06: + ldr r1, _080D7A20 @ =sub_80D7A28 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r0, _080D7A24 @ =sub_80785E4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D7A18: .4byte gBattleAnimBankTarget +_080D7A1C: .4byte gBattleAnimBankAttacker +_080D7A20: .4byte sub_80D7A28 +_080D7A24: .4byte sub_80785E4 + thumb_func_end sub_80D79B4 + + thumb_func_start sub_80D7A28 +sub_80D7A28: @ 80D7A28 + push {lr} + adds r3, r0, 0 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x2E] + adds r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bne _080D7A5E + adds r0, r3, 0 + bl move_anim_8074EE0 +_080D7A5E: + pop {r0} + bx r0 + thumb_func_end sub_80D7A28 + + thumb_func_start sub_80D7A64 +sub_80D7A64: @ 80D7A64 + push {r4-r7,lr} + sub sp, 0x10 + adds r5, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r6, _080D7AAC @ =gBattleAnimArgs + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + movs r1, 0xA + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080D7AB4 + ldr r4, _080D7AB0 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + strh r0, [r5, 0x36] + b _080D7AC6 + .align 2, 0 +_080D7AAC: .4byte gBattleAnimArgs +_080D7AB0: .4byte gBattleAnimBankTarget +_080D7AB4: + ldr r0, _080D7AE0 @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_807A3FC +_080D7AC6: + ldr r0, _080D7AE4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D7AEC + ldr r0, _080D7AE8 @ =gBattleAnimArgs + ldrh r1, [r5, 0x32] + ldrh r0, [r0, 0x4] + subs r1, r0 + strh r1, [r5, 0x32] + b _080D7AF6 + .align 2, 0 +_080D7AE0: .4byte gBattleAnimBankTarget +_080D7AE4: .4byte gBattleAnimBankAttacker +_080D7AE8: .4byte gBattleAnimArgs +_080D7AEC: + ldr r0, _080D7B94 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + ldrh r2, [r5, 0x32] + adds r0, r2 + strh r0, [r5, 0x32] +_080D7AF6: + adds r7, r5, 0 + adds r7, 0x2E + adds r2, r7, 0 + mov r1, sp + movs r4, 0x7 +_080D7B00: + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080D7B00 + adds r0, r5, 0 + bl sub_8078D60 + ldrh r0, [r5, 0x30] + movs r1, 0x1 + eors r0, r1 + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + eors r0, r1 + strh r0, [r5, 0x32] +_080D7B22: + movs r0, 0x1 + strh r0, [r5, 0x2E] + adds r0, r5, 0 + bl sub_8078CE8 + movs r0, 0x20 + ldrsh r1, [r5, r0] + movs r2, 0x24 + ldrsh r0, [r5, r2] + adds r1, r0 + adds r1, 0x10 + movs r0, 0x88 + lsls r0, 1 + cmp r1, r0 + bhi _080D7B56 + movs r0, 0x22 + ldrsh r1, [r5, r0] + movs r2, 0x26 + ldrsh r0, [r5, r2] + adds r1, r0 + cmp r1, 0xA0 + bgt _080D7B56 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080D7B22 +_080D7B56: + ldrh r0, [r5, 0x24] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r1, [r5, 0x26] + strh r1, [r5, 0x24] + ldr r6, _080D7B98 @ =sub_8078D8C + ldr r1, _080D7B9C @ =sub_80D7BA0 + mov r3, sp + adds r2, r7, 0 + movs r4, 0x7 +_080D7B76: + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080D7B76 + str r6, [r5, 0x1C] + adds r0, r5, 0 + bl StoreSpriteCallbackInData + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D7B94: .4byte gBattleAnimArgs +_080D7B98: .4byte sub_8078D8C +_080D7B9C: .4byte sub_80D7BA0 + thumb_func_end sub_80D7A64 + + thumb_func_start sub_80D7BA0 +sub_80D7BA0: @ 80D7BA0 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + movs r5, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + strh r5, [r4, 0x26] + strh r5, [r4, 0x24] + movs r0, 0x80 + strh r0, [r4, 0x2E] + ldr r0, _080D7BFC @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + ldr r1, _080D7C00 @ =0x0000ffec + cmp r0, 0 + beq _080D7BD0 + movs r1, 0x14 +_080D7BD0: + movs r2, 0x2E + ldrsh r0, [r4, r2] + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x34] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0xF + bl Cos + strh r0, [r4, 0x36] + strh r5, [r4, 0x38] + ldr r1, _080D7C04 @ =sub_80D7C08 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D7BFC: .4byte gBattleAnimBankAttacker +_080D7C00: .4byte 0x0000ffec +_080D7C04: .4byte sub_80D7C08 + thumb_func_end sub_80D7BA0 + + thumb_func_start sub_80D7C08 +sub_80D7C08: @ 80D7C08 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D7C5C @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + ldr r1, _080D7C60 @ =0x0000ffec + cmp r0, 0 + beq _080D7C1E + movs r1, 0x14 +_080D7C1E: + movs r2, 0x38 + ldrsh r0, [r4, r2] + cmp r0, 0x1F + bgt _080D7C64 + movs r2, 0x2E + ldrsh r0, [r4, r2] + lsls r1, 16 + asrs r1, 16 + bl Sin + ldrh r1, [r4, 0x34] + subs r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0xF + bl Cos + ldrh r1, [r4, 0x36] + subs r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x10 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + b _080D7C82 + .align 2, 0 +_080D7C5C: .4byte gBattleAnimBankAttacker +_080D7C60: .4byte 0x0000ffec +_080D7C64: + ldrh r0, [r4, 0x24] + ldrh r2, [r4, 0x20] + adds r0, r2 + movs r1, 0 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + strh r1, [r4, 0x26] + strh r1, [r4, 0x24] + strh r1, [r4, 0x36] + strh r1, [r4, 0x34] + ldr r0, _080D7C88 @ =sub_80D7C8C + str r0, [r4, 0x1C] +_080D7C82: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D7C88: .4byte sub_80D7C8C + thumb_func_end sub_80D7C08 + + thumb_func_start sub_80D7C8C +sub_80D7C8C: @ 80D7C8C + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_8078CE8 + movs r1, 0x20 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + adds r0, r1 + adds r0, 0x10 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + bhi _080D7CC8 + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r1, r0, r1 + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + bgt _080D7CC8 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080D7CCE +_080D7CC8: + adds r0, r4, 0 + bl move_anim_8072740 +_080D7CCE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D7C8C + + thumb_func_start sub_80D7CD4 +sub_80D7CD4: @ 80D7CD4 + push {r4-r7,lr} + sub sp, 0x10 + adds r5, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r1, _080D7D18 @ =gBattleAnimArgs + ldrh r0, [r1, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + movs r2, 0xE + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080D7D20 + ldr r4, _080D7D1C @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + b _080D7D32 + .align 2, 0 +_080D7D18: .4byte gBattleAnimArgs +_080D7D1C: .4byte gBattleAnimBankTarget +_080D7D20: + ldr r0, _080D7D50 @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_807A3FC +_080D7D32: + ldr r0, _080D7D54 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D7D5C + ldr r0, _080D7D58 @ =gBattleAnimArgs + ldrh r1, [r5, 0x32] + ldrh r2, [r0, 0x4] + subs r1, r2 + strh r1, [r5, 0x32] + adds r1, r0, 0 + b _080D7D66 + .align 2, 0 +_080D7D50: .4byte gBattleAnimBankTarget +_080D7D54: .4byte gBattleAnimBankAttacker +_080D7D58: .4byte gBattleAnimArgs +_080D7D5C: + ldr r1, _080D7E10 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + ldrh r2, [r5, 0x32] + adds r0, r2 + strh r0, [r5, 0x32] +_080D7D66: + ldrh r0, [r1, 0x6] + ldrh r1, [r5, 0x36] + adds r0, r1 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_8078D60 + adds r7, r5, 0 + adds r7, 0x2E + adds r2, r7, 0 + mov r1, sp + movs r4, 0x7 +_080D7D7E: + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + adds r1, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080D7D7E + ldrh r0, [r5, 0x30] + movs r1, 0x1 + eors r0, r1 + strh r0, [r5, 0x30] + ldrh r0, [r5, 0x32] + eors r0, r1 + strh r0, [r5, 0x32] +_080D7D9A: + movs r0, 0x1 + strh r0, [r5, 0x2E] + adds r0, r5, 0 + bl sub_8078CE8 + movs r2, 0x20 + ldrsh r1, [r5, r2] + movs r2, 0x24 + ldrsh r0, [r5, r2] + adds r1, r0 + adds r1, 0x10 + movs r0, 0x88 + lsls r0, 1 + cmp r1, r0 + bhi _080D7DCE + movs r0, 0x22 + ldrsh r1, [r5, r0] + movs r2, 0x26 + ldrsh r0, [r5, r2] + adds r1, r0 + cmp r1, 0xA0 + bgt _080D7DCE + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080D7D9A +_080D7DCE: + ldrh r0, [r5, 0x24] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r1, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r1, [r5, 0x26] + strh r1, [r5, 0x24] + ldr r1, _080D7E10 @ =gBattleAnimArgs + ldr r6, _080D7E14 @ =sub_80D7E18 + mov r3, sp + adds r2, r7, 0 + movs r4, 0x7 +_080D7DEE: + ldrh r0, [r3] + strh r0, [r2] + adds r3, 0x2 + adds r2, 0x2 + subs r4, 0x1 + cmp r4, 0 + bge _080D7DEE + ldrh r0, [r1, 0xA] + strh r0, [r5, 0x38] + ldrh r0, [r1, 0xC] + strh r0, [r5, 0x3A] + str r6, [r5, 0x1C] + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D7E10: .4byte gBattleAnimArgs +_080D7E14: .4byte sub_80D7E18 + thumb_func_end sub_80D7CD4 + + thumb_func_start sub_80D7E18 +sub_80D7E18: @ 80D7E18 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078CE8 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D7E2C + movs r0, 0x1 + strh r0, [r4, 0x2E] +_080D7E2C: + movs r2, 0x3C + ldrsh r0, [r4, r2] + 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 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x3C] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080D7E82 + movs r2, 0x20 + ldrsh r0, [r4, r2] + movs r2, 0x24 + ldrsh r1, [r4, r2] + adds r0, r1 + adds r0, 0x10 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + bhi _080D7E7C + movs r0, 0x22 + ldrsh r1, [r4, r0] + movs r2, 0x26 + ldrsh r0, [r4, r2] + adds r1, r0 + cmp r1, 0xA0 + bgt _080D7E7C + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080D7E82 +_080D7E7C: + adds r0, r4, 0 + bl move_anim_8072740 +_080D7E82: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D7E18 + + thumb_func_start sub_80D7E88 +sub_80D7E88: @ 80D7E88 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D7EF4 + ldr r5, _080D7EA8 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D7EAC + adds r0, r4, 0 + movs r1, 0 + bl sub_8078764 + b _080D7EE2 + .align 2, 0 +_080D7EA8: .4byte gBattleAnimArgs +_080D7EAC: + ldr r0, _080D7EEC @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_807A3FC + ldr r0, _080D7EF0 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D7ED2 + ldrh r0, [r5] + negs r0, r0 + strh r0, [r5] +_080D7ED2: + 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] +_080D7EE2: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080D7F08 + .align 2, 0 +_080D7EEC: .4byte gBattleAnimBankTarget +_080D7EF0: .4byte gBattleAnimBankAttacker +_080D7EF4: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080D7F08 + adds r0, r4, 0 + bl move_anim_8072740 +_080D7F08: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D7E88 + + thumb_func_start sub_80D7F10 +sub_80D7F10: @ 80D7F10 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080D7F30 @ =gBattleAnimArgs + movs r1, 0x8 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080D7F80 + movs r1, 0xA + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080D7F34 + adds r0, r5, 0 + movs r1, 0 + bl sub_80787B0 + b _080D7F72 + .align 2, 0 +_080D7F30: .4byte gBattleAnimArgs +_080D7F34: + ldr r4, _080D7F5C @ =gBattleAnimBankAttacker + ldrb r0, [r4] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_807A3FC + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D7F60 + ldrh r0, [r5, 0x20] + ldrh r1, [r6] + subs r0, r1 + b _080D7F66 + .align 2, 0 +_080D7F5C: .4byte gBattleAnimBankAttacker +_080D7F60: + ldrh r0, [r6] + ldrh r1, [r5, 0x20] + adds r0, r1 +_080D7F66: + strh r0, [r5, 0x20] + ldr r0, _080D7F78 @ =gBattleAnimArgs + ldrh r0, [r0, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] +_080D7F72: + ldr r0, _080D7F7C @ =gBattleAnimBankAttacker + b _080D7FD0 + .align 2, 0 +_080D7F78: .4byte gBattleAnimArgs +_080D7F7C: .4byte gBattleAnimBankAttacker +_080D7F80: + movs r1, 0xA + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080D7F92 + adds r0, r5, 0 + movs r1, 0 + bl sub_8078764 + b _080D7FCE +_080D7F92: + ldr r4, _080D7FB8 @ =gBattleAnimBankTarget + ldrb r0, [r4] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_807A3FC + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D7FBC + ldrh r0, [r5, 0x20] + ldrh r1, [r6] + subs r0, r1 + b _080D7FC2 + .align 2, 0 +_080D7FB8: .4byte gBattleAnimBankTarget +_080D7FBC: + ldrh r0, [r6] + ldrh r1, [r5, 0x20] + adds r0, r1 +_080D7FC2: + strh r0, [r5, 0x20] + ldr r0, _080D7FEC @ =gBattleAnimArgs + ldrh r0, [r0, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] +_080D7FCE: + ldr r0, _080D7FF0 @ =gBattleAnimBankTarget +_080D7FD0: + ldrb r0, [r0] + strh r0, [r5, 0x3C] + ldr r0, _080D7FEC @ =gBattleAnimArgs + movs r1, 0xA + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080D7FE8 + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + bne _080D7FF4 +_080D7FE8: + movs r0, 0x20 + b _080D7FF6 + .align 2, 0 +_080D7FEC: .4byte gBattleAnimArgs +_080D7FF0: .4byte gBattleAnimBankTarget +_080D7FF4: + movs r0, 0x40 +_080D7FF6: + strh r0, [r5, 0x3A] + ldr r0, _080D803C @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D800C + ldrh r0, [r5, 0x22] + adds r0, 0x8 + strh r0, [r5, 0x22] +_080D800C: + ldr r1, _080D8040 @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrh r1, [r1, 0x4] + adds r0, r1 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl obj_translate_based_on_private_1_2_3_4 + movs r0, 0x40 + strh r0, [r5, 0x38] + ldr r1, _080D8044 @ =sub_80D8048 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D803C: .4byte gBattleAnimBankTarget +_080D8040: .4byte gBattleAnimArgs +_080D8044: .4byte sub_80D8048 + thumb_func_end sub_80D7F10 + + thumb_func_start sub_80D8048 +sub_80D8048: @ 80D8048 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + bne _080D80D2 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x3A + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r2, 0x38 + ldrsh r0, [r4, r2] + movs r1, 0x6 + negs r1, r1 + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080D80A4 + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + b _080D80C6 +_080D80A4: + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] +_080D80C6: + ldrh r0, [r4, 0x38] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080D80D8 +_080D80D2: + adds r0, r4, 0 + bl move_anim_8072740 +_080D80D8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D8048 + + thumb_func_start sub_80D80E0 +sub_80D80E0: @ 80D80E0 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080D81A8 @ =REG_BLDCNT + ldr r2, _080D81AC @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r2, 0x80 + lsls r2, 5 + adds r0, r2, 0 + strh r0, [r1] + ldr r4, _080D81B0 @ =REG_BG1CNT + ldrb r1, [r4] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + strb r0, [r4, 0x1] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080D812A + ldrb r0, [r4] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4] +_080D812A: + ldr r0, _080D81B4 @ =gUnknown_030042C0 + movs r1, 0 + strh r1, [r0] + ldr r0, _080D81B8 @ =gUnknown_030041B4 + strh r1, [r0] + ldr r0, _080D81BC @ =REG_BG1HOFS + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + mov r0, sp + bl sub_8078914 + ldr r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0xC] + ldr r0, _080D81C0 @ =0x040000d4 + add r2, sp, 0xC + str r2, [r0] + str r1, [r0, 0x4] + ldr r2, _080D81C4 @ =0x85000400 + str r2, [r0, 0x8] + ldr r2, [r0, 0x8] + ldr r2, _080D81C8 @ =gWeatherFog1Tiles + ldr r3, [sp] + str r2, [r0] + str r3, [r0, 0x4] + ldr r2, _080D81CC @ =0x80000400 + str r2, [r0, 0x8] + ldr r0, [r0, 0x8] + ldr r0, _080D81D0 @ =gBattleAnimFogTilemap + bl LZDecompressVram + ldr r0, _080D81D4 @ =gUnknown_083970E8 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadPalette + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080D8190 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80763FC +_080D8190: + ldr r0, _080D81D8 @ =gTasks + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r0, _080D81DC @ =sub_80D81E0 + str r0, [r1] + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D81A8: .4byte REG_BLDCNT +_080D81AC: .4byte 0x00003f42 +_080D81B0: .4byte REG_BG1CNT +_080D81B4: .4byte gUnknown_030042C0 +_080D81B8: .4byte gUnknown_030041B4 +_080D81BC: .4byte REG_BG1HOFS +_080D81C0: .4byte 0x040000d4 +_080D81C4: .4byte 0x85000400 +_080D81C8: .4byte gWeatherFog1Tiles +_080D81CC: .4byte 0x80000400 +_080D81D0: .4byte gBattleAnimFogTilemap +_080D81D4: .4byte gUnknown_083970E8 +_080D81D8: .4byte gTasks +_080D81DC: .4byte sub_80D81E0 + thumb_func_end sub_80D80E0 + + thumb_func_start sub_80D81E0 +sub_80D81E0: @ 80D81E0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r2, _080D8220 @ =gUnknown_030042C0 + ldr r1, _080D8224 @ =0x0000ffff + adds r0, r1, 0 + ldrh r4, [r2] + adds r0, r4 + strh r0, [r2] + ldr r1, _080D8228 @ =gUnknown_030041B4 + ldr r3, _080D822C @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r3 + movs r4, 0x20 + ldrsh r0, [r0, r4] + adds r4, r1, 0 + cmp r0, 0x4 + bls _080D8214 + b _080D83B0 +_080D8214: + lsls r0, 2 + ldr r1, _080D8230 @ =_080D8234 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D8220: .4byte gUnknown_030042C0 +_080D8224: .4byte 0x0000ffff +_080D8228: .4byte gUnknown_030041B4 +_080D822C: .4byte gTasks +_080D8230: .4byte _080D8234 + .align 2, 0 +_080D8234: + .4byte _080D8248 + .4byte _080D82A0 + .4byte _080D82C2 + .4byte _080D8304 + .4byte _080D838C +_080D8248: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r3, r0, r3 + ldrh r0, [r3, 0x1C] + adds r0, 0x1 + movs r4, 0 + strh r0, [r3, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + beq _080D8262 + b _080D83B0 +_080D8262: + strh r4, [r3, 0x1C] + ldrh r0, [r3, 0x1A] + adds r0, 0x1 + strh r0, [r3, 0x1A] + ldr r1, _080D8298 @ =gUnknown_083D9D6C + movs r2, 0x1A + ldrsh r0, [r3, r2] + adds r0, r1 + ldrb r1, [r0] + strh r1, [r3, 0x1E] + ldr r2, _080D829C @ =REG_BLDALPHA + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r1, 0x1E + ldrsh r0, [r3, r1] + cmp r0, 0x9 + beq _080D828C + b _080D83B0 +_080D828C: + ldrh r0, [r3, 0x20] + adds r0, 0x1 + strh r0, [r3, 0x20] + strh r4, [r3, 0x1E] + b _080D83B0 + .align 2, 0 +_080D8298: .4byte gUnknown_083D9D6C +_080D829C: .4byte REG_BLDALPHA +_080D82A0: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r3, r0, r3 + ldrh r0, [r3, 0x1E] + adds r0, 0x1 + strh r0, [r3, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x51 + bne _080D83B0 + movs r0, 0x9 + strh r0, [r3, 0x1E] + ldrh r0, [r3, 0x20] + adds r0, 0x1 + strh r0, [r3, 0x20] + b _080D83B0 +_080D82C2: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r3, r0, r3 + ldrh r0, [r3, 0x1C] + adds r0, 0x1 + strh r0, [r3, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080D83B0 + movs r0, 0 + strh r0, [r3, 0x1C] + ldrh r1, [r3, 0x1E] + subs r1, 0x1 + strh r1, [r3, 0x1E] + ldr r2, _080D8300 @ =REG_BLDALPHA + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r2, 0x1E + ldrsh r1, [r3, r2] + cmp r1, 0 + bne _080D83B0 + ldrh r0, [r3, 0x20] + adds r0, 0x1 + strh r0, [r3, 0x20] + strh r1, [r3, 0x1E] + b _080D83B0 + .align 2, 0 +_080D8300: .4byte REG_BLDALPHA +_080D8304: + mov r0, sp + bl sub_8078914 + ldr r2, [sp] + movs r3, 0x80 + lsls r3, 6 + lsls r4, r6, 2 + mov r10, r4 + add r5, sp, 0xC + movs r7, 0 + ldr r1, _080D83C0 @ =0x040000d4 + movs r4, 0x80 + lsls r4, 5 + mov r8, r5 + ldr r0, _080D83C4 @ =0x85000400 + mov r12, r0 + movs r0, 0x85 + lsls r0, 24 + mov r9, r0 +_080D832A: + str r7, [sp, 0xC] + mov r0, r8 + str r0, [r1] + str r2, [r1, 0x4] + mov r0, r12 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r2, r4 + subs r3, r4 + cmp r3, r4 + bhi _080D832A + str r7, [sp, 0xC] + str r5, [r1] + str r2, [r1, 0x4] + lsrs r0, r3, 2 + mov r2, r9 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + ldr r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0xC] + ldr r0, _080D83C0 @ =0x040000d4 + str r5, [r0] + str r1, [r0, 0x4] + ldr r1, _080D83C8 @ =0x85000200 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080D8378 + ldr r2, _080D83CC @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080D8378: + ldr r0, _080D83D0 @ =gTasks + mov r4, r10 + adds r1, r4, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + ldr r2, _080D83D4 @ =gUnknown_030042C0 + ldr r4, _080D83D8 @ =gUnknown_030041B4 +_080D838C: + movs r1, 0 + strh r1, [r2] + strh r1, [r4] + ldr r0, _080D83DC @ =REG_BLDCNT + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + ldr r2, _080D83CC @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080D83B0: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D83C0: .4byte 0x040000d4 +_080D83C4: .4byte 0x85000400 +_080D83C8: .4byte 0x85000200 +_080D83CC: .4byte REG_BG1CNT +_080D83D0: .4byte gTasks +_080D83D4: .4byte gUnknown_030042C0 +_080D83D8: .4byte gUnknown_030041B4 +_080D83DC: .4byte REG_BLDCNT + thumb_func_end sub_80D81E0 + + thumb_func_start sub_80D83E0 +sub_80D83E0: @ 80D83E0 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080D840C @ =gBattleAnimBankAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r0, _080D8410 @ =sub_807941C + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D840C: .4byte gBattleAnimBankAttacker +_080D8410: .4byte sub_807941C + thumb_func_end sub_80D83E0 + + thumb_func_start sub_80D8414 +sub_80D8414: @ 80D8414 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080D84E0 @ =REG_BLDCNT + ldr r2, _080D84E4 @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r2, 0x80 + lsls r2, 5 + adds r0, r2, 0 + strh r0, [r1] + ldr r4, _080D84E8 @ =REG_BG1CNT + ldrb r1, [r4] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + strb r0, [r4, 0x1] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080D845E + ldrb r0, [r4] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4] +_080D845E: + ldr r0, _080D84EC @ =gUnknown_030042C0 + movs r1, 0 + strh r1, [r0] + ldr r0, _080D84F0 @ =gUnknown_030041B4 + strh r1, [r0] + ldr r0, _080D84F4 @ =REG_BG1HOFS + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + mov r0, sp + bl sub_8078914 + ldr r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0xC] + ldr r0, _080D84F8 @ =0x040000d4 + add r2, sp, 0xC + str r2, [r0] + str r1, [r0, 0x4] + ldr r2, _080D84FC @ =0x85000400 + str r2, [r0, 0x8] + ldr r2, [r0, 0x8] + ldr r2, _080D8500 @ =gWeatherFog1Tiles + ldr r3, [sp] + str r2, [r0] + str r3, [r0, 0x4] + ldr r2, _080D8504 @ =0x80000400 + str r2, [r0, 0x8] + ldr r0, [r0, 0x8] + ldr r0, _080D8508 @ =gBattleAnimFogTilemap + bl LZDecompressVram + ldr r0, _080D850C @ =gUnknown_083970E8 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadPalette + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080D84C4 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80763FC +_080D84C4: + ldr r1, _080D8510 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080D8514 @ =0x0000ffff + strh r1, [r0, 0x26] + ldr r1, _080D8518 @ =sub_80D851C + str r1, [r0] + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D84E0: .4byte REG_BLDCNT +_080D84E4: .4byte 0x00003f42 +_080D84E8: .4byte REG_BG1CNT +_080D84EC: .4byte gUnknown_030042C0 +_080D84F0: .4byte gUnknown_030041B4 +_080D84F4: .4byte REG_BG1HOFS +_080D84F8: .4byte 0x040000d4 +_080D84FC: .4byte 0x85000400 +_080D8500: .4byte gWeatherFog1Tiles +_080D8504: .4byte 0x80000400 +_080D8508: .4byte gBattleAnimFogTilemap +_080D850C: .4byte gUnknown_083970E8 +_080D8510: .4byte gTasks +_080D8514: .4byte 0x0000ffff +_080D8518: .4byte sub_80D851C + thumb_func_end sub_80D8414 + + thumb_func_start sub_80D851C +sub_80D851C: @ 80D851C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r3, _080D8558 @ =gUnknown_030042C0 + ldr r4, _080D855C @ =gTasks + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r4 + ldrh r0, [r1, 0x26] + ldrh r2, [r3] + adds r0, r2 + strh r0, [r3] + ldr r2, _080D8560 @ =gUnknown_030041B4 + movs r5, 0x20 + ldrsh r0, [r1, r5] + cmp r0, 0x4 + bls _080D854C + b _080D86D0 +_080D854C: + lsls r0, 2 + ldr r1, _080D8564 @ =_080D8568 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D8558: .4byte gUnknown_030042C0 +_080D855C: .4byte gTasks +_080D8560: .4byte gUnknown_030041B4 +_080D8564: .4byte _080D8568 + .align 2, 0 +_080D8568: + .4byte _080D857C + .4byte _080D85C0 + .4byte _080D85E2 + .4byte _080D8624 + .4byte _080D86AC +_080D857C: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r4 + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] + ldr r1, _080D85B8 @ =gUnknown_083D9D98 + movs r2, 0x1A + ldrsh r0, [r4, r2] + adds r0, r1 + ldrb r1, [r0] + strh r1, [r4, 0x1E] + ldr r2, _080D85BC @ =REG_BLDALPHA + movs r0, 0x11 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r5, 0x1E + ldrsh r0, [r4, r5] + cmp r0, 0x5 + beq _080D85AC + b _080D86D0 +_080D85AC: + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + movs r0, 0 + strh r0, [r4, 0x1E] + b _080D86D0 + .align 2, 0 +_080D85B8: .4byte gUnknown_083D9D98 +_080D85BC: .4byte REG_BLDALPHA +_080D85C0: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r1, r0, r4 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x51 + bne _080D86D0 + movs r0, 0x5 + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + b _080D86D0 +_080D85E2: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r4 + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080D86D0 + movs r0, 0 + strh r0, [r4, 0x1C] + ldrh r1, [r4, 0x1E] + subs r1, 0x1 + strh r1, [r4, 0x1E] + ldr r2, _080D8620 @ =REG_BLDALPHA + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r0, 0x1E + ldrsh r1, [r4, r0] + cmp r1, 0 + bne _080D86D0 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + strh r1, [r4, 0x1E] + b _080D86D0 + .align 2, 0 +_080D8620: .4byte REG_BLDALPHA +_080D8624: + mov r0, sp + bl sub_8078914 + ldr r2, [sp] + movs r3, 0x80 + lsls r3, 6 + lsls r1, r6, 2 + mov r10, r1 + add r5, sp, 0xC + movs r7, 0 + ldr r1, _080D86E0 @ =0x040000d4 + movs r4, 0x80 + lsls r4, 5 + mov r8, r5 + ldr r0, _080D86E4 @ =0x85000400 + mov r12, r0 + movs r0, 0x85 + lsls r0, 24 + mov r9, r0 +_080D864A: + str r7, [sp, 0xC] + mov r0, r8 + str r0, [r1] + str r2, [r1, 0x4] + mov r0, r12 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r2, r4 + subs r3, r4 + cmp r3, r4 + bhi _080D864A + str r7, [sp, 0xC] + str r5, [r1] + str r2, [r1, 0x4] + lsrs r0, r3, 2 + mov r2, r9 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + ldr r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0xC] + ldr r0, _080D86E0 @ =0x040000d4 + str r5, [r0] + str r1, [r0, 0x4] + ldr r1, _080D86E8 @ =0x85000200 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080D8698 + ldr r2, _080D86EC @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080D8698: + ldr r0, _080D86F0 @ =gTasks + mov r5, r10 + adds r1, r5, r6 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + ldr r3, _080D86F4 @ =gUnknown_030042C0 + ldr r2, _080D86F8 @ =gUnknown_030041B4 +_080D86AC: + movs r1, 0 + strh r1, [r3] + strh r1, [r2] + ldr r0, _080D86FC @ =REG_BLDCNT + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + ldr r2, _080D86EC @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080D86D0: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D86E0: .4byte 0x040000d4 +_080D86E4: .4byte 0x85000400 +_080D86E8: .4byte 0x85000200 +_080D86EC: .4byte REG_BG1CNT +_080D86F0: .4byte gTasks +_080D86F4: .4byte gUnknown_030042C0 +_080D86F8: .4byte gUnknown_030041B4 +_080D86FC: .4byte REG_BLDCNT + thumb_func_end sub_80D851C + + thumb_func_start sub_80D8700 +sub_80D8700: @ 80D8700 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + ldr r6, _080D87E8 @ =gBattleAnimArgs + ldrh r0, [r6] + strh r0, [r5, 0x2E] + ldr r0, _080D87EC @ =gBattleAnimBankAttacker + mov r8, r0 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8077ABC + adds r4, r0, 0 + ldr r7, _080D87F0 @ =gBattleAnimBankTarget + ldrb r0, [r7] + movs r1, 0x2 + bl sub_8077ABC + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bcs _080D8734 + movs r0, 0x80 + lsls r0, 8 + strh r0, [r5, 0x3C] +_080D8734: + ldr r3, _080D87F4 @ =gBanksBySide + ldrb r0, [r7] + adds r0, r3 + ldrb r1, [r0] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080D8794 + ldrh r0, [r6, 0x2] + negs r0, r0 + strh r0, [r6, 0x2] + ldrh r0, [r6, 0x6] + negs r0, r0 + strh r0, [r6, 0x6] + movs r1, 0x3C + ldrsh r0, [r5, r1] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + beq _080D8790 + mov r1, r8 + ldrb r0, [r1] + adds r0, r3 + ldrb r1, [r0] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080D8790 + movs r0, 0x1 + bl GetAnimBankSpriteId + ldr r2, _080D87F8 @ =gSprites + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] +_080D8790: + movs r0, 0x1 + strh r0, [r5, 0x3A] +_080D8794: + ldr r4, _080D87EC @ =gBattleAnimBankAttacker + 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 r6, _080D87E8 @ =gBattleAnimArgs + movs r1, 0xE + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080D87FC + ldrh r0, [r6, 0x2] + ldrh r1, [r5, 0x20] + adds r0, r1 + strh r0, [r5, 0x30] + ldr r4, _080D87F0 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x6] + adds r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r6, 0x4] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + b _080D8824 + .align 2, 0 +_080D87E8: .4byte gBattleAnimArgs +_080D87EC: .4byte gBattleAnimBankAttacker +_080D87F0: .4byte gBattleAnimBankTarget +_080D87F4: .4byte gBanksBySide +_080D87F8: .4byte gSprites +_080D87FC: + ldrh r0, [r6, 0x2] + ldrh r1, [r5, 0x20] + adds r0, r1 + strh r0, [r5, 0x30] + ldr r4, _080D886C @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x6] + adds r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r6, 0x4] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x1 +_080D8824: + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x8] + adds r0, r6 + strh r0, [r5, 0x36] + ldrb r0, [r4] + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 16 + ldrh r1, [r5, 0x3C] + orrs r0, r1 + strh r0, [r5, 0x3C] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080D8858 + movs r0, 0x1 + strh r0, [r5, 0x3A] + adds r1, r5, 0 + adds r1, 0x43 + movs r0, 0x80 + strb r0, [r1] +_080D8858: + adds r0, r5, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r0, _080D8870 @ =sub_80D8874 + str r0, [r5, 0x1C] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D886C: .4byte gBattleAnimBankTarget +_080D8870: .4byte sub_80D8874 + thumb_func_end sub_80D8700 + + thumb_func_start sub_80D8874 +sub_80D8874: @ 80D8874 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x3C] + movs r5, 0xFF + movs r1, 0xFF + ands r1, r0 + cmp r1, 0x1 + beq _080D8968 + cmp r1, 0x1 + bgt _080D888E + cmp r1, 0 + beq _080D8896 + b _080D8AD0 +_080D888E: + cmp r1, 0x2 + bne _080D8894 + b _080D8A94 +_080D8894: + b _080D8AD0 +_080D8896: + adds r0, r4, 0 + bl sub_8078B5C + ldr r1, _080D88C0 @ =gSineTable + movs r2, 0x38 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + asrs r0, 4 + ldrh r2, [r4, 0x24] + adds r0, r2 + strh r0, [r4, 0x24] + movs r1, 0x3A + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D88C4 + ldrh r0, [r4, 0x38] + subs r0, 0x8 + b _080D88C8 + .align 2, 0 +_080D88C0: .4byte gSineTable +_080D88C4: + ldrh r0, [r4, 0x38] + adds r0, 0x8 +_080D88C8: + ands r0, r5 + strh r0, [r4, 0x38] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080D88D6 + b _080D8AD0 +_080D88D6: + movs r5, 0x50 + strh r5, [r4, 0x2E] + ldr r6, _080D8928 @ =gBattleAnimBankTarget + ldrb r0, [r6] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, 0x1D + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + ldr r0, _080D892C @ =gMain + ldr r2, _080D8930 @ =0x0000043d + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D8938 + ldr r1, _080D8934 @ =gBanksBySide + ldrb r0, [r6] + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D8938 + movs r0, 0xCC + strh r0, [r4, 0x38] + b _080D893A + .align 2, 0 +_080D8928: .4byte gBattleAnimBankTarget +_080D892C: .4byte gMain +_080D8930: .4byte 0x0000043d +_080D8934: .4byte gBanksBySide +_080D8938: + strh r5, [r4, 0x38] +_080D893A: + movs r0, 0 + strh r0, [r4, 0x26] + ldr r1, _080D8964 @ =gSineTable + movs r2, 0x38 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + asrs r0, 3 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x38] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + b _080D8AD0 + .align 2, 0 +_080D8964: .4byte gSineTable +_080D8968: + adds r0, r4, 0 + bl sub_8078B5C + ldr r1, _080D89C8 @ =gSineTable + movs r2, 0x38 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + ldrsh r0, [r0, r2] + asrs r0, 3 + ldrh r2, [r4, 0x24] + adds r0, r2 + strh r0, [r4, 0x24] + movs r2, 0x38 + ldrsh r0, [r4, r2] + adds r0, 0x40 + lsls r0, 1 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 1 + adds r0, r1 + negs r0, r0 + asrs r0, 8 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldr r0, _080D89CC @ =gMain + ldr r2, _080D89D0 @ =0x0000043d + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D89F2 + ldrh r1, [r4, 0x38] + adds r0, r1, 0 + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + adds r3, r1, 0 + cmp r0, 0x7F + bhi _080D89D4 + ldrh r1, [r4, 0x3C] + lsls r1, 16 + asrs r1, 24 + b _080D89DC + .align 2, 0 +_080D89C8: .4byte gSineTable +_080D89CC: .4byte gMain +_080D89D0: .4byte 0x0000043d +_080D89D4: + ldrh r1, [r4, 0x3C] + lsls r1, 16 + asrs r1, 24 + adds r1, 0x1 +_080D89DC: + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + adds r0, r3, 0x4 + b _080D8A12 +_080D89F2: + ldrh r0, [r4, 0x38] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080D8A06 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x80 + b _080D8A0C +_080D8A06: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x8C +_080D8A0C: + strb r0, [r1] + ldrh r0, [r4, 0x38] + subs r0, 0x4 +_080D8A12: + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bgt _080D8AD0 + movs r2, 0 + movs r0, 0xC0 + lsls r0, 2 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, 0x4 + strh r0, [r4, 0x36] + ldr r0, _080D8A68 @ =gMain + ldr r1, _080D8A6C @ =0x0000043d + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D8A78 + ldr r1, _080D8A70 @ =gBanksBySide + ldr r0, _080D8A74 @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D8A78 + movs r0, 0x80 + lsls r0, 1 + b _080D8A7A + .align 2, 0 +_080D8A68: .4byte gMain +_080D8A6C: .4byte 0x0000043d +_080D8A70: .4byte gBanksBySide +_080D8A74: .4byte gBattleAnimBankTarget +_080D8A78: + ldr r0, _080D8A90 @ =0x0000fff0 +_080D8A7A: + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x3C] + strh r1, [r4, 0x26] + strh r1, [r4, 0x24] + adds r0, r4, 0 + bl sub_8078BD4 + b _080D8AD0 + .align 2, 0 +_080D8A90: .4byte 0x0000fff0 +_080D8A94: + adds r0, r4, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + beq _080D8AD0 + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D8AC2 + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] +_080D8AC2: + adds r0, r4, 0 + bl DestroySprite + ldr r1, _080D8AD8 @ =gAnimVisualTaskCount + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] +_080D8AD0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D8AD8: .4byte gAnimVisualTaskCount + thumb_func_end sub_80D8874 + + thumb_func_start sub_80D8ADC +sub_80D8ADC: @ 80D8ADC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080D8AF0 @ =gTasks + adds r1, r0 + ldr r0, _080D8AF4 @ =sub_80D8AF8 + str r0, [r1] + bx lr + .align 2, 0 +_080D8AF0: .4byte gTasks +_080D8AF4: .4byte sub_80D8AF8 + thumb_func_end sub_80D8ADC + + thumb_func_start sub_80D8AF8 +sub_80D8AF8: @ 80D8AF8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080D8B1C @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r5, [r4, r0] + cmp r5, 0x1 + beq _080D8B3C + cmp r5, 0x1 + bgt _080D8B20 + cmp r5, 0 + beq _080D8B26 + b _080D8BA0 + .align 2, 0 +_080D8B1C: .4byte gTasks +_080D8B20: + cmp r5, 0x2 + beq _080D8B92 + b _080D8BA0 +_080D8B26: + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080D8BA0 + strh r5, [r4, 0x10] + strh r5, [r4, 0x12] + strh r5, [r4, 0xC] + b _080D8B78 +_080D8B3C: + ldrh r1, [r4, 0x12] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _080D8B8C + ldrb r0, [r4, 0xE] + ldrb r1, [r4, 0xC] + movs r3, 0x1 + bl sub_80D8BA8 + lsls r0, 24 + cmp r0, 0 + beq _080D8B5C + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] +_080D8B5C: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080D8B88 + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080D8B80 +_080D8B78: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080D8BA0 +_080D8B80: + ldrh r0, [r4, 0x8] + subs r0, 0x1 + strh r0, [r4, 0x8] + b _080D8BA0 +_080D8B88: + strh r5, [r4, 0x12] + b _080D8BA0 +_080D8B8C: + subs r0, r1, 0x1 + strh r0, [r4, 0x12] + b _080D8BA0 +_080D8B92: + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D8BA0 + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080D8BA0: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80D8AF8 + + thumb_func_start sub_80D8BA8 +sub_80D8BA8: @ 80D8BA8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp] + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + movs r1, 0 + str r1, [sp, 0x4] + ldr r1, _080D8C20 @ =gUnknown_083D9DC4 + lsrs r0, 22 + adds r4, r0, r1 + ldrb r0, [r4, 0x3] + lsls r0, 24 + asrs r0, 28 + mov r8, r0 + cmp r0, 0x2 + beq _080D8C94 + ldrh r0, [r4, 0x2] + lsls r0, 20 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080D8C94 + movs r0, 0x1 + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r5, 0 + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r6, r0, 24 + mov r1, r8 + cmp r1, 0 + beq _080D8C24 + cmp r1, 0x1 + beq _080D8C5A + b _080D8CA6 + .align 2, 0 +_080D8C20: .4byte gUnknown_083D9DC4 +_080D8C24: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_807A100 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x6 + bl __divsi3 + lsls r1, r7, 16 + asrs r1, 16 + subs r1, r0 + lsls r1, 16 + lsrs r7, r1, 16 + adds r0, r5, 0 + movs r1, 0 + bl sub_807A100 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x6 + bl __divsi3 + lsls r1, r6, 16 + asrs r1, 16 + subs r1, r0 + b _080D8C8E +_080D8C5A: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_807A100 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x6 + bl __divsi3 + lsls r1, r7, 16 + asrs r1, 16 + adds r1, r0 + lsls r1, 16 + lsrs r7, r1, 16 + adds r0, r5, 0 + movs r1, 0 + bl sub_807A100 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x6 + bl __divsi3 + lsls r1, r6, 16 + asrs r1, 16 + adds r1, r0 +_080D8C8E: + lsls r1, 16 + lsrs r6, r1, 16 + b _080D8CA6 +_080D8C94: + ldrh r0, [r4] + lsls r0, 22 + asrs r0, 6 + lsrs r7, r0, 16 + ldr r0, [r4] + lsls r0, 12 + asrs r0, 22 + lsls r0, 16 + lsrs r6, r0, 16 +_080D8CA6: + lsls r0, r6, 16 + asrs r0, 16 + adds r0, 0x8 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + lsls r1, r7, 16 + asrs r1, 16 + subs r1, r0 + ldr r0, _080D8D00 @ =gSpriteTemplate_83D9E3C + lsls r1, 16 + asrs r1, 16 + movs r2, 0x8 + negs r2, r2 + movs r3, 0x12 + bl CreateSprite + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x40 + beq _080D8D08 + lsls r4, r5, 4 + adds r4, r5 + lsls r4, 2 + ldr r0, _080D8D04 @ =gSprites + adds r4, r0 + adds r0, r4, 0 + mov r1, r9 + bl StartSpriteAffineAnim + mov r0, sp + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + strh r7, [r4, 0x34] + strh r6, [r4, 0x36] + mov r1, r9 + strh r1, [r4, 0x38] + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x3A] + mov r1, r10 + strh r1, [r4, 0x3C] + movs r0, 0x1 + b _080D8D0A + .align 2, 0 +_080D8D00: .4byte gSpriteTemplate_83D9E3C +_080D8D04: .4byte gSprites +_080D8D08: + movs r0, 0 +_080D8D0A: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80D8BA8 + + thumb_func_start sub_80D8D1C +sub_80D8D1C: @ 80D8D1C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + adds r0, 0x4 + strh r0, [r4, 0x20] + ldrh r1, [r4, 0x22] + adds r2, r1, 0 + adds r2, 0x8 + strh r2, [r4, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x34 + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _080D8D46 + lsls r0, r2, 16 + asrs r0, 16 + movs r2, 0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080D8DF6 +_080D8D46: + movs r3, 0x2E + ldrsh r0, [r4, r3] + cmp r0, 0x1 + bne _080D8DC8 + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D8DC8 + ldr r0, _080D8DBC @ =gBattleAnimSpriteTemplate_83D9C78 + movs r2, 0x34 + ldrsh r1, [r4, r2] + movs r3, 0x36 + ldrsh r2, [r4, r3] + adds r3, r4, 0 + adds r3, 0x43 + ldrb r3, [r3] + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x2E] + cmp r0, 0x40 + beq _080D8DAA + ldr r2, _080D8DC0 @ =gSprites + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080D8DC4 @ =sub_80D8E00 + str r1, [r0] + movs r3, 0x2E + ldrsh r1, [r4, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x3A] + strh r1, [r0, 0x3A] + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x3C] + strh r1, [r0, 0x3C] +_080D8DAA: + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + adds r0, r4, 0 + bl DestroySprite + b _080D8DF6 + .align 2, 0 +_080D8DBC: .4byte gBattleAnimSpriteTemplate_83D9C78 +_080D8DC0: .4byte gSprites +_080D8DC4: .4byte sub_80D8E00 +_080D8DC8: + ldr r3, _080D8DFC @ =gTasks + movs r2, 0x3C + ldrsh r1, [r4, r2] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + adds r0, r4, 0 + bl DestroySprite +_080D8DF6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D8DFC: .4byte gTasks + thumb_func_end sub_80D8D1C + + thumb_func_start sub_80D8E00 +sub_80D8E00: @ 80D8E00 + 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, 0x14 + bne _080D8E40 + ldr r3, _080D8E48 @ =gTasks + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + adds r0, r4, 0 + bl DestroySprite +_080D8E40: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D8E48: .4byte gTasks + thumb_func_end sub_80D8E00 + + thumb_func_start unc_080B06FC +unc_080B06FC: @ 80D8E4C + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, _080D8ECC @ =gDisableStructMoveAnim + ldr r0, [r0] + ldrb r1, [r0, 0x11] + lsrs r0, r1, 4 + lsls r1, 28 + lsrs r1, 28 + subs r0, r1 + subs r0, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x4 + bls _080D8E6A + movs r1, 0x4 +_080D8E6A: + adds r0, r5, 0 + bl StartSpriteAffineAnim + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r6, _080D8ED0 @ =gBattleAnimArgs + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + ldr r0, _080D8ED4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D8E92 + ldrh r0, [r6, 0x4] + negs r0, r0 + strh r0, [r6, 0x4] +_080D8E92: + ldr r4, _080D8ED8 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x6] + adds r0, r1 + strh r0, [r5, 0x36] + ldrh r0, [r6, 0xA] + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_80786EC + ldr r0, _080D8EDC @ =sub_80D8EE0 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D8ECC: .4byte gDisableStructMoveAnim +_080D8ED0: .4byte gBattleAnimArgs +_080D8ED4: .4byte gBattleAnimBankAttacker +_080D8ED8: .4byte gBattleAnimBankTarget +_080D8EDC: .4byte sub_80D8EE0 + thumb_func_end unc_080B06FC + + thumb_func_start sub_80D8EE0 +sub_80D8EE0: @ 80D8EE0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080D8F02 + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim + ldr r0, _080D8F08 @ =sub_8078600 + str r0, [r4, 0x1C] + ldr r1, _080D8F0C @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData +_080D8F02: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D8F08: .4byte sub_8078600 +_080D8F0C: .4byte move_anim_8072740 + thumb_func_end sub_80D8EE0 + + thumb_func_start sub_80D8F10 +sub_80D8F10: @ 80D8F10 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x8 + ldr r3, _080D8F64 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080D8F68 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8078764 + bl Random + movs r5, 0xFF + ands r5, r0 + movs r0, 0x80 + lsls r0, 1 + adds r6, r0, 0 + orrs r5, r6 + bl Random + ldr r1, _080D8F6C @ =0x000001ff + ands r1, r0 + adds r0, r1, 0 + cmp r0, 0xFF + ble _080D8F56 + subs r0, r6, r0 + lsls r0, 16 + lsrs r1, r0, 16 +_080D8F56: + strh r5, [r4, 0x30] + strh r1, [r4, 0x32] + ldr r0, _080D8F70 @ =sub_80D8F74 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D8F64: .4byte 0x000003ff +_080D8F68: .4byte 0xfffffc00 +_080D8F6C: .4byte 0x000001ff +_080D8F70: .4byte sub_80D8F74 + thumb_func_end sub_80D8F10 + + thumb_func_start sub_80D8F74 +sub_80D8F74: @ 80D8F74 + push {r4,lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x34] + adds r3, r0, r1 + strh r3, [r2, 0x34] + ldrh r1, [r2, 0x32] + ldrh r4, [r2, 0x36] + adds r1, r4 + strh r1, [r2, 0x36] + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080D8F98 + lsls r0, r3, 16 + asrs r0, 24 + negs r0, r0 + b _080D8F9C +_080D8F98: + lsls r0, r3, 16 + asrs r0, 24 +_080D8F9C: + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _080D8FBA + adds r0, r2, 0 + bl move_anim_8072740 +_080D8FBA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D8F74 + + thumb_func_start sub_80D8FC0 +sub_80D8FC0: @ 80D8FC0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080D8FE8 @ =gBattleAnimArgs + ldrb r3, [r1] + lsls r3, 1 + adds r3, r1 + ldr r1, _080D8FEC @ =gDisableStructMoveAnim + ldr r1, [r1] + ldrb r1, [r1, 0x11] + lsrs r2, r1, 4 + lsls r1, 28 + lsrs r1, 28 + subs r2, r1 + subs r2, 0x1 + strh r2, [r3] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080D8FE8: .4byte gBattleAnimArgs +_080D8FEC: .4byte gDisableStructMoveAnim + thumb_func_end sub_80D8FC0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/liquid_ball.s b/asm/liquid_ball.s new file mode 100755 index 000000000..6af030ecf --- /dev/null +++ b/asm/liquid_ball.s @@ -0,0 +1,353 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ liquid_ball + + thumb_func_start sub_80D3554 +sub_80D3554: @ 80D3554 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + movs r0, 0x1E + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080D35BC @ =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 + movs r0, 0x2E + ldrsh r1, [r5, r0] + movs r0, 0xD2 + lsls r0, 8 + bl __divsi3 + strh r0, [r5, 0x38] + ldr r0, _080D35C0 @ =gBattleAnimArgs + ldrh r2, [r0, 0x6] + strh r2, [r5, 0x3C] + ldrh r1, [r0, 0xE] + movs r3, 0xE + ldrsh r0, [r0, r3] + cmp r0, 0x7F + ble _080D35C4 + adds r0, r1, 0 + subs r0, 0x7F + lsls r0, 8 + strh r0, [r5, 0x3A] + negs r0, r2 + strh r0, [r5, 0x3C] + b _080D35C8 + .align 2, 0 +_080D35BC: .4byte gBattleAnimBankTarget +_080D35C0: .4byte gBattleAnimArgs +_080D35C4: + lsls r0, r1, 8 + strh r0, [r5, 0x3A] +_080D35C8: + ldr r1, _080D35D8 @ =sub_80D35DC + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D35D8: .4byte sub_80D35DC + thumb_func_end sub_80D3554 + + thumb_func_start sub_80D35DC +sub_80D35DC: @ 80D35DC + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + beq _080D35F0 + adds r0, r4, 0 + bl move_anim_8072740 +_080D35F0: + ldrh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 24 + movs r2, 0x3C + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + movs r2, 0x3A + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + adds r0, r1 + asrs r0, 8 + cmp r0, 0x7F + ble _080D3620 + movs r0, 0 + strh r0, [r4, 0x3A] + ldrh r0, [r4, 0x3C] + negs r0, r0 + strh r0, [r4, 0x3C] + b _080D3628 +_080D3620: + ldrh r0, [r4, 0x38] + ldrh r1, [r4, 0x3A] + adds r0, r1 + strh r0, [r4, 0x3A] +_080D3628: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D35DC + + thumb_func_start sub_80D3630 +sub_80D3630: @ 80D3630 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080D3650 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldr r3, _080D3654 @ =gBattleAnimArgs + ldrh r0, [r3] + movs r2, 0 + strh r0, [r1, 0x8] + strh r2, [r3, 0xE] + ldr r0, _080D3658 @ =sub_80D365C + str r0, [r1] + bx lr + .align 2, 0 +_080D3650: .4byte gTasks +_080D3654: .4byte gBattleAnimArgs +_080D3658: .4byte sub_80D365C + thumb_func_end sub_80D3630 + + thumb_func_start sub_80D365C +sub_80D365C: @ 80D365C + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080D3690 @ =gBattleAnimArgs + ldrh r0, [r2, 0xE] + adds r0, 0x3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r2, 0xE] + ldr r1, _080D3694 @ =gTasks + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x8] + subs r1, 0x1 + strh r1, [r0, 0x8] + lsls r1, 16 + cmp r1, 0 + bne _080D368A + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080D368A: + pop {r0} + bx r0 + .align 2, 0 +_080D3690: .4byte gBattleAnimArgs +_080D3694: .4byte gTasks + thumb_func_end sub_80D365C + + thumb_func_start sub_80D3698 +sub_80D3698: @ 80D3698 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r7, _080D36E4 @ =gBattleAnimBankAttacker + ldrb r0, [r7] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r7] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r6, _080D36E8 @ =0x0000fff6 + strh r6, [r4, 0x26] + ldrb r0, [r7] + bl sub_8079E90 + lsls r0, 24 + lsrs r5, r0, 24 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080D36F2 + ldrb r0, [r7] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D36EC + movs r0, 0xA + strh r0, [r4, 0x24] + b _080D36F4 + .align 2, 0 +_080D36E4: .4byte gBattleAnimBankAttacker +_080D36E8: .4byte 0x0000fff6 +_080D36EC: + strh r6, [r4, 0x24] + subs r0, r5, 0x2 + b _080D36F6 +_080D36F2: + strh r6, [r4, 0x24] +_080D36F4: + adds r0, r5, 0x2 +_080D36F6: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldr r0, _080D3708 @ =sub_80D370C + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D3708: .4byte sub_80D370C + thumb_func_end sub_80D3698 + + thumb_func_start sub_80D370C +sub_80D370C: @ 80D370C + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080D3722 + adds r0, r2, 0 + bl move_anim_8072740 +_080D3722: + pop {r0} + bx r0 + thumb_func_end sub_80D370C + + thumb_func_start sub_80D3728 +sub_80D3728: @ 80D3728 + push {r4-r7,lr} + adds r6, r0, 0 + ldr r5, _080D37E8 @ =gBattleAnimBankAttacker + ldrb r0, [r5] + bl GetBankSide + adds r4, r0, 0 + ldr r0, _080D37EC @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080D3772 + ldr r4, _080D37F0 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4] + ldrb r0, [r5] + bl GetBankIdentity + lsls r0, 24 + cmp r0, 0 + beq _080D376A + ldrb r0, [r5] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080D3772 +_080D376A: + movs r1, 0 + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4] +_080D3772: + ldr r5, _080D37F0 @ =gBattleAnimArgs + movs r1, 0xA + ldrsh r0, [r5, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0 + cmp r0, 0 + bne _080D3786 + movs r1, 0x1 +_080D3786: + ldrb r0, [r5, 0xA] + movs r7, 0x1 + cmp r0, 0 + bne _080D3790 + movs r7, 0x3 +_080D3790: + adds r0, r6, 0 + bl sub_80787B0 + ldr r0, _080D37E8 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D37AA + ldrh r0, [r5, 0x4] + negs r0, r0 + strh r0, [r5, 0x4] +_080D37AA: + ldrh r0, [r5, 0x8] + strh r0, [r6, 0x2E] + ldr r4, _080D37EC @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r5, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r4] + adds r1, r7, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x6] + adds r0, r5 + strh r0, [r6, 0x36] + ldr r0, _080D37F4 @ =sub_8078B34 + str r0, [r6, 0x1C] + ldr r1, _080D37F8 @ =move_anim_8072740 + adds r0, r6, 0 + bl StoreSpriteCallbackInData + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D37E8: .4byte gBattleAnimBankAttacker +_080D37EC: .4byte gBattleAnimBankTarget +_080D37F0: .4byte gBattleAnimArgs +_080D37F4: .4byte sub_8078B34 +_080D37F8: .4byte move_anim_8072740 + thumb_func_end sub_80D3728 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/noise.s b/asm/noise.s new file mode 100755 index 000000000..930b77309 --- /dev/null +++ b/asm/noise.s @@ -0,0 +1,139 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D2D68 +sub_80D2D68: @ 80D2D68 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _080D2D7C @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D2D84 + ldr r0, _080D2D80 @ =gBattleAnimBankAttacker + b _080D2D86 + .align 2, 0 +_080D2D7C: .4byte gBattleAnimArgs +_080D2D80: .4byte gBattleAnimBankAttacker +_080D2D84: + ldr r0, _080D2E1C @ =gBattleAnimBankTarget +_080D2D86: + ldrb r6, [r0] + adds r0, r6, 0 + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080D2DA0 + ldr r1, _080D2E20 @ =gBattleAnimArgs + movs r2, 0x2 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0x2] +_080D2DA0: + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + ldr r7, _080D2E20 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r3, [r7, 0x2] + adds r0, r3 + movs r4, 0 + strh r0, [r5, 0x20] + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r7, 0x4] + adds r0, r1 + strh r0, [r5, 0x22] + strh r4, [r5, 0x2E] + ldrh r1, [r5, 0x20] + lsls r1, 3 + strh r1, [r5, 0x30] + lsls r0, 3 + strh r0, [r5, 0x32] + movs r2, 0x2 + ldrsh r0, [r7, r2] + lsls r0, 3 + cmp r0, 0 + bge _080D2DE0 + adds r0, 0x7 +_080D2DE0: + asrs r0, 3 + strh r0, [r5, 0x34] + movs r3, 0x4 + ldrsh r0, [r7, r3] + lsls r0, 3 + cmp r0, 0 + bge _080D2DF0 + adds r0, 0x7 +_080D2DF0: + asrs r0, 3 + strh r0, [r5, 0x36] + ldrh r2, [r5, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + movs r3, 0x6 + ldrsh r0, [r7, r3] + lsls r0, 4 + adds r1, r0 + ldr r3, _080D2E24 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080D2E28 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + ldr r0, _080D2E2C @ =sub_80D2E30 + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D2E1C: .4byte gBattleAnimBankTarget +_080D2E20: .4byte gBattleAnimArgs +_080D2E24: .4byte 0x000003ff +_080D2E28: .4byte 0xfffffc00 +_080D2E2C: .4byte sub_80D2E30 + thumb_func_end sub_80D2D68 + + thumb_func_start sub_80D2E30 +sub_80D2E30: @ 80D2E30 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x34] + ldrh r1, [r2, 0x30] + adds r0, r1 + strh r0, [r2, 0x30] + ldrh r1, [r2, 0x36] + ldrh r3, [r2, 0x32] + adds r1, r3 + strh r1, [r2, 0x32] + lsls r0, 16 + asrs r0, 19 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 19 + strh r1, [r2, 0x22] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080D2E64 + adds r0, r2, 0 + bl move_anim_8072740 +_080D2E64: + pop {r0} + bx r0 + thumb_func_end sub_80D2E30 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/normal.s b/asm/normal.s new file mode 100755 index 000000000..2d084dcf1 --- /dev/null +++ b/asm/normal.s @@ -0,0 +1,5030 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ normal + + thumb_func_start sub_80E1CB4 +sub_80E1CB4: @ 80E1CB4 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080E1CEC @ =gBattleAnimArgs + 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] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldr r0, _080E1CF0 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _080E1CF4 + ldrh r0, [r5, 0x6] + negs r0, r0 + strh r0, [r4, 0x30] + movs r0, 0x1 + strh r0, [r4, 0x36] + b _080E1D02 + .align 2, 0 +_080E1CEC: .4byte gBattleAnimArgs +_080E1CF0: .4byte gBattleAnimBankAttacker +_080E1CF4: + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + strh r1, [r4, 0x36] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim +_080E1D02: + ldr r0, _080E1D18 @ =gBattleAnimArgs + ldrh r0, [r0, 0x8] + strh r0, [r4, 0x34] + ldr r1, _080E1D1C @ =sub_80E1D20 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E1D18: .4byte gBattleAnimArgs +_080E1D1C: .4byte sub_80E1D20 + thumb_func_end sub_80E1CB4 + + thumb_func_start sub_80E1D20 +sub_80E1D20: @ 80E1D20 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x1E + bl Cos + strh r0, [r4, 0x24] + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r1, 0xA + bl Sin + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + cmp r0, 0x7F + bhi _080E1D52 + ldrb r0, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4, 0x5] + b _080E1D5A +_080E1D52: + ldrb r0, [r4, 0x5] + movs r1, 0xC + orrs r0, r1 + strb r0, [r4, 0x5] +_080E1D5A: + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x2E] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x34 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080E1D7E + adds r0, r4, 0 + bl move_anim_8072740 +_080E1D7E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E1D20 + + thumb_func_start sub_80E1D84 +sub_80E1D84: @ 80E1D84 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + ldr r4, _080E1DBC @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r4, r1] + bl sub_80E1DC4 + movs r1, 0x2 + ldrsb r1, [r4, r1] + ldrb r2, [r4, 0x4] + ldrb r3, [r4, 0x6] + ldrh r4, [r4, 0x8] + str r4, [sp] + bl BeginNormalPaletteFade + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080E1DC0 @ =sub_80E1E0C + str r0, [r5, 0x1C] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E1DBC: .4byte gBattleAnimArgs +_080E1DC0: .4byte sub_80E1E0C + thumb_func_end sub_80E1D84 + + thumb_func_start sub_80E1DC4 +sub_80E1DC4: @ 80E1DC4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0xC + lsls r0, 16 + lsrs r0, 16 + movs r4, 0x1 + mov r8, r0 + mov r1, r8 + ands r1, r4 + mov r8, r1 + lsls r0, 16 + asrs r1, r0, 17 + ands r1, r4 + asrs r2, r0, 18 + ands r2, r4 + asrs r3, r0, 19 + ands r3, r4 + asrs r6, r0, 20 + ands r6, r4 + asrs r5, r0, 21 + ands r5, r4 + asrs r0, 22 + ands r0, r4 + str r6, [sp] + str r5, [sp, 0x4] + str r0, [sp, 0x8] + mov r0, r8 + bl sub_80791A8 + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80E1DC4 + + thumb_func_start sub_80E1E0C +sub_80E1E0C: @ 80E1E0C + push {lr} + adds r2, r0, 0 + ldr r0, _080E1E28 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E1E22 + adds r0, r2, 0 + bl move_anim_8072740 +_080E1E22: + pop {r0} + bx r0 + .align 2, 0 +_080E1E28: .4byte gPaletteFade + thumb_func_end sub_80E1E0C + + thumb_func_start sub_80E1E2C +sub_80E1E2C: @ 80E1E2C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080E1E78 @ =gBattleAnimArgs + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x2E] + strh r0, [r5, 0x30] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x32] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x34] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x36] + ldrh r0, [r4, 0xA] + strh r0, [r5, 0x38] + ldrh r0, [r4, 0xC] + strh r0, [r5, 0x3A] + ldrh r0, [r4] + strh r0, [r5, 0x3C] + movs r1, 0x3C + ldrsh r0, [r5, r1] + bl sub_80E1DC4 + ldrb r1, [r4, 0x8] + ldrh r2, [r4, 0x6] + bl BlendPalettes + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080E1E7C @ =sub_80E1E80 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E1E78: .4byte gBattleAnimArgs +_080E1E7C: .4byte sub_80E1E80 + thumb_func_end sub_80E1E2C + + thumb_func_start sub_80E1E80 +sub_80E1E80: @ 80E1E80 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080E1E94 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + b _080E1F04 +_080E1E94: + ldr r0, _080E1EB0 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E1F04 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E1EB8 + ldr r0, _080E1EB4 @ =sub_80E1F0C + str r0, [r4, 0x1C] + b _080E1F04 + .align 2, 0 +_080E1EB0: .4byte gPaletteFade +_080E1EB4: .4byte sub_80E1F0C +_080E1EB8: + movs r2, 0x3C + ldrsh r0, [r4, r2] + bl sub_80E1DC4 + adds r3, r0, 0 + ldrh r1, [r4, 0x30] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080E1EDE + ldrh r1, [r4, 0x36] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x34] + adds r0, r3, 0 + bl BlendPalettes + b _080E1EEC +_080E1EDE: + ldrh r1, [r4, 0x3A] + lsls r1, 24 + lsrs r1, 24 + ldrh r2, [r4, 0x38] + adds r0, r3, 0 + bl BlendPalettes +_080E1EEC: + ldrh r0, [r4, 0x30] + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + eors r0, r1 + strh r0, [r4, 0x30] + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x32] + subs r0, 0x1 + strh r0, [r4, 0x32] +_080E1F04: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80E1E80 + + thumb_func_start sub_80E1F0C +sub_80E1F0C: @ 80E1F0C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080E1F38 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E1F32 + movs r1, 0x3C + ldrsh r0, [r4, r1] + bl sub_80E1DC4 + movs r1, 0 + movs r2, 0 + bl BlendPalettes + adds r0, r4, 0 + bl move_anim_8072740 +_080E1F32: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E1F38: .4byte gPaletteFade + thumb_func_end sub_80E1F0C + + thumb_func_start sub_80E1F3C +sub_80E1F3C: @ 80E1F3C + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080E1F80 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + movs r2, 0 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + strh r2, [r4, 0x2E] + movs r0, 0xA + strh r0, [r4, 0x30] + movs r0, 0x8 + strh r0, [r4, 0x32] + movs r0, 0x28 + strh r0, [r4, 0x34] + movs r0, 0x70 + strh r0, [r4, 0x36] + strh r2, [r4, 0x38] + ldr r1, _080E1F84 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r1, _080E1F88 @ =sub_8078174 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E1F80: .4byte gBattleAnimArgs +_080E1F84: .4byte move_anim_8074EE0 +_080E1F88: .4byte sub_8078174 + thumb_func_end sub_80E1F3C + + thumb_func_start sub_80E1F8C +sub_80E1F8C: @ 80E1F8C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080E1FD0 @ =gTasks + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r3, _080E1FD4 @ =gBattleAnimArgs + ldrh r1, [r3] + movs r5, 0 + strh r1, [r4, 0x8] + ldrh r1, [r3, 0x2] + strh r1, [r4, 0xA] + ldrh r1, [r3, 0x4] + strh r1, [r4, 0xC] + ldrh r1, [r3, 0x6] + strh r1, [r4, 0xE] + ldrh r2, [r3, 0x8] + strh r2, [r4, 0x10] + ldrh r1, [r3, 0xA] + strh r1, [r4, 0x12] + strh r5, [r4, 0x18] + lsls r2, 24 + lsrs r2, 24 + movs r1, 0 + bl sub_80E1FDC + ldr r0, _080E1FD8 @ =sub_80E202C + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E1FD0: .4byte gTasks +_080E1FD4: .4byte gBattleAnimArgs +_080E1FD8: .4byte sub_80E202C + thumb_func_end sub_80E1F8C + + thumb_func_start sub_80E1FDC +sub_80E1FDC: @ 80E1FDC + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + ldr r1, _080E2028 @ =gTasks + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + bl sub_80E1DC4 + movs r1, 0xA + ldrsb r1, [r4, r1] + ldrh r2, [r4, 0x12] + str r2, [sp] + adds r2, r5, 0 + adds r3, r6, 0 + bl BeginNormalPaletteFade + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x18] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x18] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E2028: .4byte gTasks + thumb_func_end sub_80E1FDC + + thumb_func_start sub_80E202C +sub_80E202C: @ 80E202C + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + adds r4, r3, 0 + ldr r0, _080E2064 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E208E + ldr r1, _080E2068 @ =gTasks + lsls r2, r3, 2 + adds r0, r2, r3 + lsls r0, 3 + adds r3, r0, r1 + movs r5, 0xC + ldrsh r0, [r3, r5] + adds r6, r1, 0 + adds r5, r2, 0 + cmp r0, 0 + ble _080E2088 + movs r1, 0x18 + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080E206C + ldrb r1, [r3, 0xE] + ldrb r2, [r3, 0x10] + b _080E2070 + .align 2, 0 +_080E2064: .4byte gPaletteFade +_080E2068: .4byte gTasks +_080E206C: + ldrb r1, [r3, 0x10] + ldrb r2, [r3, 0xE] +_080E2070: + adds r0, r5, r4 + lsls r0, 3 + adds r0, r6 + movs r3, 0xC + ldrsh r0, [r0, r3] + cmp r0, 0x1 + bne _080E2080 + movs r2, 0 +_080E2080: + adds r0, r4, 0 + bl sub_80E1FDC + b _080E208E +_080E2088: + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080E208E: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E202C + + thumb_func_start sub_80E2094 +sub_80E2094: @ 80E2094 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080E20D8 @ =gTasks + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r3, _080E20DC @ =gBattleAnimArgs + ldrh r1, [r3] + movs r5, 0 + strh r1, [r4, 0x8] + ldrh r1, [r3, 0x2] + strh r1, [r4, 0xA] + ldrh r1, [r3, 0x4] + strh r1, [r4, 0xC] + ldrh r1, [r3, 0x6] + strh r1, [r4, 0xE] + ldrh r2, [r3, 0x8] + strh r2, [r4, 0x10] + ldrh r1, [r3, 0xA] + strh r1, [r4, 0x12] + strh r5, [r4, 0x18] + lsls r2, 24 + lsrs r2, 24 + movs r1, 0 + bl sub_80E20E4 + ldr r0, _080E20E0 @ =sub_80E2140 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E20D8: .4byte gTasks +_080E20DC: .4byte gBattleAnimArgs +_080E20E0: .4byte sub_80E2140 + thumb_func_end sub_80E2094 + + thumb_func_start sub_80E20E4 +sub_80E20E4: @ 80E20E4 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + ldr r1, _080E213C @ =gTasks + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldrh r0, [r4, 0x8] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r2, 0x1 + lsls r2, r0 + movs r1, 0xA + ldrsb r1, [r4, r1] + ldrh r0, [r4, 0x12] + str r0, [sp] + adds r0, r2, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl BeginNormalPaletteFade + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x18] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x18] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E213C: .4byte gTasks + thumb_func_end sub_80E20E4 + + thumb_func_start sub_80E2140 +sub_80E2140: @ 80E2140 + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + adds r4, r3, 0 + ldr r0, _080E2178 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E21A2 + ldr r1, _080E217C @ =gTasks + lsls r2, r3, 2 + adds r0, r2, r3 + lsls r0, 3 + adds r3, r0, r1 + movs r5, 0xC + ldrsh r0, [r3, r5] + adds r6, r1, 0 + adds r5, r2, 0 + cmp r0, 0 + ble _080E219C + movs r1, 0x18 + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _080E2180 + ldrb r1, [r3, 0xE] + ldrb r2, [r3, 0x10] + b _080E2184 + .align 2, 0 +_080E2178: .4byte gPaletteFade +_080E217C: .4byte gTasks +_080E2180: + ldrb r1, [r3, 0x10] + ldrb r2, [r3, 0xE] +_080E2184: + adds r0, r5, r4 + lsls r0, 3 + adds r0, r6 + movs r3, 0xC + ldrsh r0, [r0, r3] + cmp r0, 0x1 + bne _080E2194 + movs r2, 0 +_080E2194: + adds r0, r4, 0 + bl sub_80E20E4 + b _080E21A2 +_080E219C: + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080E21A2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E2140 + + thumb_func_start sub_80E21A8 +sub_80E21A8: @ 80E21A8 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080E2208 @ =gTasks + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + ldr r5, _080E220C @ =gBattleAnimArgs + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x8] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0xA] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0xC] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0xE] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x10] + ldrh r0, [r5, 0xA] + strh r0, [r4, 0x12] + ldrh r0, [r5, 0xC] + strh r0, [r4, 0x14] + ldrh r0, [r5] + strh r0, [r4, 0x16] + ldrh r0, [r5] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r1, 0x1 + lsls r1, r0 + ldrb r3, [r5, 0x8] + ldrh r0, [r5, 0x6] + str r0, [sp] + adds r0, r1, 0 + movs r1, 0 + adds r2, r3, 0 + bl BeginNormalPaletteFade + ldr r0, _080E2210 @ =sub_80E2214 + str r0, [r4] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E2208: .4byte gTasks +_080E220C: .4byte gBattleAnimArgs +_080E2210: .4byte sub_80E2214 + thumb_func_end sub_80E21A8 + + thumb_func_start sub_80E2214 +sub_80E2214: @ 80E2214 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080E2238 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0x8] + movs r2, 0x8 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080E223C + subs r0, r1, 0x1 + strh r0, [r4, 0x8] + b _080E22C0 + .align 2, 0 +_080E2238: .4byte gTasks +_080E223C: + ldr r0, _080E2258 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E22C0 + movs r3, 0xC + ldrsh r0, [r4, r3] + cmp r0, 0 + bne _080E2260 + ldr r0, _080E225C @ =sub_80E22CC + str r0, [r4] + b _080E22C0 + .align 2, 0 +_080E2258: .4byte gPaletteFade +_080E225C: .4byte sub_80E22CC +_080E2260: + ldrh r0, [r4, 0x16] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r2, 0x1 + lsls r2, r0 + ldrh r1, [r4, 0xA] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080E228E + ldrb r3, [r4, 0x10] + ldrh r0, [r4, 0xE] + str r0, [sp] + adds r0, r2, 0 + movs r1, 0 + adds r2, r3, 0 + bl BeginNormalPaletteFade + b _080E229E +_080E228E: + ldrb r3, [r4, 0x14] + ldrh r0, [r4, 0x12] + str r0, [sp] + adds r0, r2, 0 + movs r1, 0 + adds r2, r3, 0 + bl BeginNormalPaletteFade +_080E229E: + ldr r0, _080E22C8 @ =gTasks + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0xA] + movs r3, 0x80 + lsls r3, 1 + adds r2, r3, 0 + eors r0, r2 + strh r0, [r1, 0xA] + movs r2, 0xFF + ands r0, r2 + strh r0, [r1, 0x8] + ldrh r0, [r1, 0xC] + subs r0, 0x1 + strh r0, [r1, 0xC] +_080E22C0: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E22C8: .4byte gTasks + thumb_func_end sub_80E2214 + + thumb_func_start sub_80E22CC +sub_80E22CC: @ 80E22CC + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080E231C @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080E2312 + ldr r1, _080E2320 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x16] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r1, 0x1 + lsls r1, r0 + str r5, [sp] + adds r0, r1, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl BeginNormalPaletteFade + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080E2312: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E231C: .4byte gPaletteFade +_080E2320: .4byte gTasks + thumb_func_end sub_80E22CC + + thumb_func_start sub_80E2324 +sub_80E2324: @ 80E2324 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r2, 0 + ldr r0, _080E239C @ =gBattleAnimBankAttacker + ldrb r6, [r0] + ldr r0, _080E23A0 @ =gBattleAnimBankTarget + ldrb r7, [r0] + ldr r4, _080E23A4 @ =gBattleAnimArgs + ldrh r1, [r4] + movs r5, 0x80 + lsls r5, 1 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080E235E + str r2, [sp] + str r2, [sp, 0x4] + str r2, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r3, 0 + bl sub_80791A8 + adds r2, r0, 0 +_080E235E: + ldrh r1, [r4, 0x2] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080E2370 + movs r0, 0x80 + lsls r0, 9 + lsls r0, r6 + orrs r2, r0 +_080E2370: + ldrh r1, [r4, 0x4] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _080E2382 + movs r0, 0x80 + lsls r0, 9 + lsls r0, r7 + orrs r2, r0 +_080E2382: + adds r0, r2, 0 + bl InvertPlttBuffer + mov r0, r8 + bl DestroyAnimVisualTask + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E239C: .4byte gBattleAnimBankAttacker +_080E23A0: .4byte gBattleAnimBankTarget +_080E23A4: .4byte gBattleAnimArgs + thumb_func_end sub_80E2324 + + thumb_func_start unref_sub_80E23A8 +unref_sub_80E23A8: @ 80E23A8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r5, 0 + ldr r1, _080E249C @ =gTasks + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E23EA + ldr r1, _080E24A0 @ =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r4, 0xC] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0xE] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x10] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0xA] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x12] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x14] + ldrh r0, [r1, 0xC] + strh r0, [r4, 0x16] +_080E23EA: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + ldr r0, _080E24A4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + mov r9, r0 + ldr r0, _080E24A8 @ =gBattleAnimBankTarget + ldrb r0, [r0] + mov r10, r0 + ldrh r1, [r4, 0xC] + movs r7, 0x80 + lsls r7, 1 + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _080E240C + ldr r5, _080E24AC @ =0x0000ffff +_080E240C: + movs r6, 0x1 + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _080E243C + ldr r2, _080E24B0 @ =gSprites + ldr r0, _080E24B4 @ =gHealthboxIDs + add r0, r9 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, 0x14 + adds r0, r2 + ldr r0, [r0] + ldrh r0, [r0, 0x2] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + adds r1, r6, 0 + lsls r1, r0 + lsls r1, 16 + orrs r5, r1 +_080E243C: + ldrh r1, [r4, 0xE] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _080E2450 + adds r0, r6, 0 + mov r2, r9 + lsls r0, r2 + lsls r0, 16 + orrs r5, r0 +_080E2450: + ldrh r1, [r4, 0x10] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _080E2464 + adds r0, r6, 0 + mov r1, r10 + lsls r0, r1 + lsls r0, 16 + orrs r5, r0 +_080E2464: + movs r1, 0x12 + ldrsb r1, [r4, r1] + movs r2, 0x14 + ldrsb r2, [r4, r2] + movs r3, 0x16 + ldrsb r3, [r4, r3] + adds r0, r5, 0 + bl TintPlttBuffer + movs r2, 0x8 + ldrsh r1, [r4, r2] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080E248E + adds r0, r5, 0 + bl UnfadePlttBuffer + mov r0, r8 + bl DestroyAnimVisualTask +_080E248E: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E249C: .4byte gTasks +_080E24A0: .4byte gBattleAnimArgs +_080E24A4: .4byte gBattleAnimBankAttacker +_080E24A8: .4byte gBattleAnimBankTarget +_080E24AC: .4byte 0x0000ffff +_080E24B0: .4byte gSprites +_080E24B4: .4byte gHealthboxIDs + thumb_func_end unref_sub_80E23A8 + + thumb_func_start sub_80E24B8 +sub_80E24B8: @ 80E24B8 + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080E24EC @ =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x34] + movs r2, 0x6 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + beq _080E2500 + cmp r0, 0x1 + bgt _080E24F0 + cmp r0, 0 + beq _080E24F6 + b _080E2518 + .align 2, 0 +_080E24EC: .4byte gBattleAnimArgs +_080E24F0: + cmp r0, 0x2 + beq _080E2508 + b _080E2518 +_080E24F6: + ldr r1, _080E24FC @ =gUnknown_030041B0 + b _080E250A + .align 2, 0 +_080E24FC: .4byte gUnknown_030041B0 +_080E2500: + ldr r1, _080E2504 @ =gUnknown_030041B8 + b _080E250A + .align 2, 0 +_080E2504: .4byte gUnknown_030041B8 +_080E2508: + ldr r1, _080E2514 @ =gSpriteCoordOffsetX +_080E250A: + adds r0, r4, 0 + bl StoreSpriteCallbackInData + b _080E2520 + .align 2, 0 +_080E2514: .4byte gSpriteCoordOffsetX +_080E2518: + ldr r1, _080E2550 @ =gSpriteCoordOffsetY + adds r0, r4, 0 + bl StoreSpriteCallbackInData +_080E2520: + movs r0, 0x3A + ldrsh r1, [r4, r0] + movs r2, 0x3C + ldrsh r0, [r4, r2] + lsls r0, 16 + orrs r1, r0 + ldr r0, [r1] + strh r0, [r4, 0x36] + ldr r0, _080E2554 @ =gBattleAnimArgs + ldrh r0, [r0, 0x6] + strh r0, [r4, 0x38] + subs r0, 0x2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _080E2544 + bl sub_80E260C +_080E2544: + ldr r0, _080E2558 @ =sub_80E255C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E2550: .4byte gSpriteCoordOffsetY +_080E2554: .4byte gBattleAnimArgs +_080E2558: .4byte sub_80E255C + thumb_func_end sub_80E24B8 + + thumb_func_start sub_80E255C +sub_80E255C: @ 80E255C + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x34] + movs r2, 0x34 + ldrsh r0, [r3, r2] + cmp r0, 0 + ble _080E25A0 + subs r0, r1, 0x1 + strh r0, [r3, 0x34] + ldrh r1, [r3, 0x30] + movs r2, 0x30 + ldrsh r0, [r3, r2] + cmp r0, 0 + ble _080E257E + subs r0, r1, 0x1 + strh r0, [r3, 0x30] + b _080E25FA +_080E257E: + ldrh r0, [r3, 0x32] + strh r0, [r3, 0x30] + movs r0, 0x3A + ldrsh r1, [r3, r0] + movs r2, 0x3C + ldrsh r0, [r3, r2] + lsls r0, 16 + orrs r1, r0 + movs r0, 0x2E + ldrsh r2, [r3, r0] + ldr r0, [r1] + adds r0, r2 + str r0, [r1] + ldrh r0, [r3, 0x2E] + negs r0, r0 + strh r0, [r3, 0x2E] + b _080E25FA +_080E25A0: + movs r2, 0x3A + ldrsh r1, [r3, r2] + movs r2, 0x3C + ldrsh r0, [r3, r2] + lsls r0, 16 + orrs r1, r0 + movs r2, 0x36 + ldrsh r0, [r3, r2] + str r0, [r1] + ldrh r0, [r3, 0x38] + subs r0, 0x2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _080E25F4 + movs r4, 0 + ldr r5, _080E2600 @ =gNoOfAllBanks + ldrb r0, [r5] + cmp r4, r0 + bcs _080E25F4 + ldr r2, _080E2604 @ =gSprites + mov r12, r2 + ldr r6, _080E2608 @ =gObjectBankIDs + movs r7, 0x3 + negs r7, r7 +_080E25D2: + adds r0, r4, r6 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + add r1, r12 + adds r1, 0x3E + ldrb r2, [r1] + adds r0, r7, 0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r5] + cmp r4, r0 + bcc _080E25D2 +_080E25F4: + adds r0, r3, 0 + bl move_anim_8072740 +_080E25FA: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E2600: .4byte gNoOfAllBanks +_080E2604: .4byte gSprites +_080E2608: .4byte gObjectBankIDs + thumb_func_end sub_80E255C + + thumb_func_start sub_80E260C +sub_80E260C: @ 80E260C + push {r4-r6,lr} + ldr r6, _080E2680 @ =gSprites + ldr r4, _080E2684 @ =gObjectBankIDs + ldr r5, _080E2688 @ =gBattleAnimBankAttacker + ldrb r0, [r5] + adds r0, r4 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + adds r1, 0x3E + ldrb r3, [r1] + movs r2, 0x3 + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + strb r0, [r1] + ldr r3, _080E268C @ =gBattleAnimBankTarget + ldrb r0, [r3] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + ldr r0, _080E2690 @ =gBattleAnimArgs + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0x2 + bne _080E2694 + ldrb r0, [r5] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r3] + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + b _080E26B0 + .align 2, 0 +_080E2680: .4byte gSprites +_080E2684: .4byte gObjectBankIDs +_080E2688: .4byte gBattleAnimBankAttacker +_080E268C: .4byte gBattleAnimBankTarget +_080E2690: .4byte gBattleAnimArgs +_080E2694: + cmp r0, 0 + bne _080E269C + ldrb r0, [r5] + b _080E269E +_080E269C: + ldrb r0, [r3] +_080E269E: + adds r0, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x2 +_080E26B0: + orrs r1, r2 + strb r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E260C + + thumb_func_start sub_80E26BC +sub_80E26BC: @ 80E26BC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080E26FC @ =gTasks + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + adds r2, r1 + ldr r3, _080E2700 @ =gBattleAnimArgs + ldrh r1, [r3] + strh r1, [r2, 0x8] + ldrh r1, [r3, 0x2] + strh r1, [r2, 0xA] + ldrh r1, [r3, 0x4] + strh r1, [r2, 0xC] + ldrh r1, [r3, 0x6] + strh r1, [r2, 0xE] + ldrh r1, [r3, 0x6] + strh r1, [r2, 0x18] + ldr r4, _080E2704 @ =gUnknown_030041B0 + ldrh r1, [r3] + strh r1, [r4] + ldr r4, _080E2708 @ =gUnknown_030041B8 + ldrh r1, [r3, 0x2] + strh r1, [r4] + ldr r1, _080E270C @ =sub_80E2710 + str r1, [r2] + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E26FC: .4byte gTasks +_080E2700: .4byte gBattleAnimArgs +_080E2704: .4byte gUnknown_030041B0 +_080E2708: .4byte gUnknown_030041B8 +_080E270C: .4byte sub_80E2710 + thumb_func_end sub_80E26BC + + thumb_func_start sub_80E2710 +sub_80E2710: @ 80E2710 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _080E2740 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r3, r0, r1 + ldrh r2, [r3, 0xE] + movs r4, 0xE + ldrsh r0, [r3, r4] + mov r12, r1 + cmp r0, 0 + bne _080E2796 + ldr r0, _080E2744 @ =gUnknown_030041B0 + ldrh r2, [r0] + movs r7, 0x8 + ldrsh r1, [r3, r7] + adds r6, r0, 0 + cmp r2, r1 + bne _080E2748 + ldrh r0, [r3, 0x8] + negs r0, r0 + b _080E274A + .align 2, 0 +_080E2740: .4byte gTasks +_080E2744: .4byte gUnknown_030041B0 +_080E2748: + ldrh r0, [r3, 0x8] +_080E274A: + strh r0, [r6] + ldr r2, _080E2768 @ =gUnknown_030041B8 + ldrh r3, [r2] + lsls r1, r5, 2 + adds r0, r1, r5 + lsls r0, 3 + mov r7, r12 + adds r4, r0, r7 + movs r7, 0xA + ldrsh r0, [r4, r7] + cmn r3, r0 + bne _080E276C + movs r0, 0 + b _080E2770 + .align 2, 0 +_080E2768: .4byte gUnknown_030041B8 +_080E276C: + ldrh r0, [r4, 0xA] + negs r0, r0 +_080E2770: + strh r0, [r2] + adds r0, r1, r5 + lsls r0, 3 + add r0, r12 + ldrh r1, [r0, 0x18] + strh r1, [r0, 0xE] + ldrh r1, [r0, 0xC] + subs r1, 0x1 + strh r1, [r0, 0xC] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0 + bne _080E279A + strh r1, [r6] + strh r1, [r2] + adds r0, r5, 0 + bl DestroyAnimVisualTask + b _080E279A +_080E2796: + subs r0, r2, 0x1 + strh r0, [r3, 0xE] +_080E279A: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80E2710 + + thumb_func_start sub_80E27A0 +sub_80E27A0: @ 80E27A0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080E27C0 @ =gBattleAnimArgs + ldrb r1, [r4, 0x6] + bl StartSpriteAffineAnim + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E27C4 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80787B0 + b _080E27CC + .align 2, 0 +_080E27C0: .4byte gBattleAnimArgs +_080E27C4: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8078764 +_080E27CC: + ldr r0, _080E27E0 @ =sub_80785E4 + str r0, [r5, 0x1C] + ldr r1, _080E27E4 @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E27E0: .4byte sub_80785E4 +_080E27E4: .4byte move_anim_8072740 + thumb_func_end sub_80E27A0 + + thumb_func_start sub_80E27E8 +sub_80E27E8: @ 80E27E8 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080E2808 @ =gBattleAnimArgs + ldrb r1, [r4, 0x6] + bl StartSpriteAffineAnim + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E280C + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80787B0 + b _080E2814 + .align 2, 0 +_080E2808: .4byte gBattleAnimArgs +_080E280C: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8078764 +_080E2814: + ldr r0, _080E282C @ =gBattleAnimArgs + ldrh r0, [r0, 0x8] + strh r0, [r5, 0x2E] + ldr r0, _080E2830 @ =sub_80785E4 + str r0, [r5, 0x1C] + ldr r1, _080E2834 @ =sub_80DA48C + adds r0, r5, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E282C: .4byte gBattleAnimArgs +_080E2830: .4byte sub_80785E4 +_080E2834: .4byte sub_80DA48C + thumb_func_end sub_80E27E8 + + thumb_func_start sub_80E2838 +sub_80E2838: @ 80E2838 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080E2868 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080E285C + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E285C + ldr r1, _080E286C @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] +_080E285C: + adds r0, r4, 0 + bl sub_80E27A0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E2868: .4byte gBattleAnimBankAttacker +_080E286C: .4byte gBattleAnimArgs + thumb_func_end sub_80E2838 + + thumb_func_start sub_80E2870 +sub_80E2870: @ 80E2870 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080E28A8 @ =gBattleAnimArgs + movs r0, 0x2 + ldrsh r1, [r5, r0] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080E288C + bl Random + movs r1, 0x3 + ands r1, r0 + strh r1, [r5, 0x2] +_080E288C: + ldrb r1, [r5, 0x2] + adds r0, r4, 0 + bl StartSpriteAffineAnim + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080E28AC + adds r0, r4, 0 + movs r1, 0 + bl sub_80787B0 + b _080E28B4 + .align 2, 0 +_080E28A8: .4byte gBattleAnimArgs +_080E28AC: + adds r0, r4, 0 + movs r1, 0 + bl sub_8078764 +_080E28B4: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x30 + bl __umodsi3 + ldr r1, _080E28F8 @ =0x0000ffe8 + adds r0, r1 + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x18 + bl __umodsi3 + ldr r1, _080E28FC @ =0x0000fff4 + adds r0, r1 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldr r1, _080E2900 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r0, _080E2904 @ =sub_80785E4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E28F8: .4byte 0x0000ffe8 +_080E28FC: .4byte 0x0000fff4 +_080E2900: .4byte move_anim_8074EE0 +_080E2904: .4byte sub_80785E4 + thumb_func_end sub_80E2870 + + thumb_func_start sub_80E2908 +sub_80E2908: @ 80E2908 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080E2968 @ =gBattleAnimArgs + ldrb r0, [r5] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x2E] + ldr r2, _080E296C @ =gSprites + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x24] + ldrh r0, [r0, 0x20] + adds r1, r0 + strh r1, [r4, 0x20] + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r1, r0 + strh r1, [r4, 0x22] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x24] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x26] + ldrb r1, [r5, 0x6] + adds r0, r4, 0 + bl StartSpriteAffineAnim + ldr r1, _080E2970 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r0, _080E2974 @ =sub_80785E4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E2968: .4byte gBattleAnimArgs +_080E296C: .4byte gSprites +_080E2970: .4byte move_anim_8074EE0 +_080E2974: .4byte sub_80785E4 + thumb_func_end sub_80E2908 + + thumb_func_start sub_80E2978 +sub_80E2978: @ 80E2978 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080E2990 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E2994 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80787B0 + b _080E299C + .align 2, 0 +_080E2990: .4byte gBattleAnimArgs +_080E2994: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8078764 +_080E299C: + ldr r0, _080E29B4 @ =gBattleAnimArgs + ldrh r0, [r0, 0x6] + strh r0, [r4, 0x2E] + ldr r1, _080E29B8 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r0, _080E29BC @ =sub_80782D8 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E29B4: .4byte gBattleAnimArgs +_080E29B8: .4byte move_anim_8072740 +_080E29BC: .4byte sub_80782D8 + thumb_func_end sub_80E2978 + + thumb_func_start sub_80E29C0 +sub_80E29C0: @ 80E29C0 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080E29E0 @ =gBattleAnimArgs + ldrb r1, [r4, 0x6] + bl StartSpriteAffineAnim + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E29E4 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80787B0 + b _080E29EC + .align 2, 0 +_080E29E0: .4byte gBattleAnimArgs +_080E29E4: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8078764 +_080E29EC: + ldr r0, _080E29F8 @ =sub_80E29FC + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E29F8: .4byte sub_80E29FC + thumb_func_end sub_80E29C0 + + thumb_func_start sub_80E29FC +sub_80E29FC: @ 80E29FC + push {lr} + adds r3, r0, 0 + movs r0, 0x3E + adds r0, r3 + mov r12, r0 + ldrb r2, [r0] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] + ldrh r0, [r3, 0x2E] + adds r1, r0, 0x1 + strh r1, [r3, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + ble _080E2A32 + adds r0, r3, 0 + bl move_anim_8072740 +_080E2A32: + pop {r0} + bx r0 + thumb_func_end sub_80E29FC + + thumb_func_start sub_80E2A38 +sub_80E2A38: @ 80E2A38 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r4, _080E2A78 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r4, r1] + bl sub_80E1DC4 + adds r6, r0, 0 + ldrh r3, [r4] + lsls r3, 16 + asrs r0, r3, 23 + movs r4, 0x1 + ands r0, r4 + asrs r1, r3, 24 + ands r1, r4 + asrs r2, r3, 25 + ands r2, r4 + asrs r3, 26 + ands r3, r4 + bl sub_80792C0 + orrs r6, r0 + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_80E2C8C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E2A78: .4byte gBattleAnimArgs + thumb_func_end sub_80E2A38 + + thumb_func_start sub_80E2A7C +sub_80E2A7C: @ 80E2A7C + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r7, r0, 24 + mov r1, sp + movs r0, 0xFF + strb r0, [r1, 0x1] + movs r0, 0x1 + bl sub_80E1DC4 + adds r5, r0, 0 + ldr r0, _080E2AA8 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x7 + bhi _080E2B26 + lsls r0, 2 + ldr r1, _080E2AAC @ =_080E2AB0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E2AA8: .4byte gBattleAnimArgs +_080E2AAC: .4byte _080E2AB0 + .align 2, 0 +_080E2AB0: + .4byte _080E2AD2 + .4byte _080E2ADE + .4byte _080E2AD0 + .4byte _080E2ADC + .4byte _080E2AEC + .4byte _080E2B04 + .4byte _080E2B0C + .4byte _080E2B18 +_080E2AD0: + movs r5, 0 +_080E2AD2: + mov r0, sp + ldr r1, _080E2AD8 @ =gBattleAnimBankAttacker + b _080E2AE2 + .align 2, 0 +_080E2AD8: .4byte gBattleAnimBankAttacker +_080E2ADC: + movs r5, 0 +_080E2ADE: + mov r0, sp + ldr r1, _080E2AE8 @ =gBattleAnimBankTarget +_080E2AE2: + ldrb r1, [r1] + strb r1, [r0] + b _080E2B26 + .align 2, 0 +_080E2AE8: .4byte gBattleAnimBankTarget +_080E2AEC: + mov r1, sp + ldr r0, _080E2AFC @ =gBattleAnimBankAttacker + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _080E2B00 @ =gBattleAnimBankTarget + ldrb r0, [r0] + strb r0, [r1, 0x1] + b _080E2B26 + .align 2, 0 +_080E2AFC: .4byte gBattleAnimBankAttacker +_080E2B00: .4byte gBattleAnimBankTarget +_080E2B04: + mov r1, sp + movs r0, 0xFF + strb r0, [r1] + b _080E2B26 +_080E2B0C: + movs r5, 0 + mov r2, sp + ldr r0, _080E2B14 @ =gBattleAnimBankAttacker + b _080E2B1E + .align 2, 0 +_080E2B14: .4byte gBattleAnimBankAttacker +_080E2B18: + movs r5, 0 + mov r2, sp + ldr r0, _080E2B70 @ =gBattleAnimBankTarget +_080E2B1E: + ldrb r0, [r0] + movs r1, 0x2 + eors r0, r1 + strb r0, [r2] +_080E2B26: + movs r4, 0 + mov r6, sp +_080E2B2A: + ldrb r0, [r6] + cmp r4, r0 + beq _080E2B54 + ldrb r0, [r6, 0x1] + cmp r4, r0 + beq _080E2B54 + adds r0, r4, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080E2B54 + adds r0, r4, 0 + bl sub_80793A8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x80 + lsls r1, 9 + lsls r1, r0 + orrs r5, r1 +_080E2B54: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + bls _080E2B2A + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80E2C8C + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E2B70: .4byte gBattleAnimBankTarget + thumb_func_end sub_80E2A7C + + thumb_func_start sub_80E2B74 +sub_80E2B74: @ 80E2B74 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080E2B98 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + bl sub_80E1DC4 + adds r2, r0, 0 + ldr r0, _080E2B9C @ =gBattleTerrain + ldrb r0, [r0] + cmp r0, 0x9 + bhi _080E2C4A + lsls r0, 2 + ldr r1, _080E2BA0 @ =_080E2BA4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E2B98: .4byte gBattleAnimArgs +_080E2B9C: .4byte gBattleTerrain +_080E2BA0: .4byte _080E2BA4 + .align 2, 0 +_080E2BA4: + .4byte _080E2BCC + .4byte _080E2BDC + .4byte _080E2BE8 + .4byte _080E2BF8 + .4byte _080E2C04 + .4byte _080E2C14 + .4byte _080E2C24 + .4byte _080E2C34 + .4byte _080E2C44 + .4byte _080E2C44 +_080E2BCC: + ldr r1, _080E2BD4 @ =gBattleAnimArgs + ldr r0, _080E2BD8 @ =0x00000b0c + b _080E2C48 + .align 2, 0 +_080E2BD4: .4byte gBattleAnimArgs +_080E2BD8: .4byte 0x00000b0c +_080E2BDC: + ldr r1, _080E2BE4 @ =gBattleAnimArgs + movs r0, 0x9E + lsls r0, 4 + b _080E2C48 + .align 2, 0 +_080E2BE4: .4byte gBattleAnimArgs +_080E2BE8: + ldr r1, _080E2BF0 @ =gBattleAnimArgs + ldr r0, _080E2BF4 @ =0x00002f1e + b _080E2C48 + .align 2, 0 +_080E2BF0: .4byte gBattleAnimArgs +_080E2BF4: .4byte 0x00002f1e +_080E2BF8: + ldr r1, _080E2C00 @ =gBattleAnimArgs + movs r0, 0x90 + lsls r0, 7 + b _080E2C48 + .align 2, 0 +_080E2C00: .4byte gBattleAnimArgs +_080E2C04: + ldr r1, _080E2C0C @ =gBattleAnimArgs + ldr r0, _080E2C10 @ =0x00007ecb + b _080E2C48 + .align 2, 0 +_080E2C0C: .4byte gBattleAnimArgs +_080E2C10: .4byte 0x00007ecb +_080E2C14: + ldr r1, _080E2C1C @ =gBattleAnimArgs + ldr r0, _080E2C20 @ =0x00007ecb + b _080E2C48 + .align 2, 0 +_080E2C1C: .4byte gBattleAnimArgs +_080E2C20: .4byte 0x00007ecb +_080E2C24: + ldr r1, _080E2C2C @ =gBattleAnimArgs + ldr r0, _080E2C30 @ =0x00002a16 + b _080E2C48 + .align 2, 0 +_080E2C2C: .4byte gBattleAnimArgs +_080E2C30: .4byte 0x00002a16 +_080E2C34: + ldr r1, _080E2C3C @ =gBattleAnimArgs + ldr r0, _080E2C40 @ =0x00000d2e + b _080E2C48 + .align 2, 0 +_080E2C3C: .4byte gBattleAnimArgs +_080E2C40: .4byte 0x00000d2e +_080E2C44: + ldr r1, _080E2C58 @ =gBattleAnimArgs + ldr r0, _080E2C5C @ =0x00007fff +_080E2C48: + strh r0, [r1, 0x8] +_080E2C4A: + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_80E2C8C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E2C58: .4byte gBattleAnimArgs +_080E2C5C: .4byte 0x00007fff + thumb_func_end sub_80E2B74 + + thumb_func_start sub_80E2C60 +sub_80E2C60: @ 80E2C60 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080E2C88 @ =gBattleAnimArgs + ldrh r0, [r0] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r1, 0x1 + lsls r1, r0 + adds r0, r4, 0 + bl sub_80E2C8C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E2C88: .4byte gBattleAnimArgs + thumb_func_end sub_80E2C60 + + thumb_func_start sub_80E2C8C +sub_80E2C8C: @ 80E2C8C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080E2CC4 @ =gTasks + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + adds r2, r3 + strh r1, [r2, 0x8] + lsrs r1, 16 + strh r1, [r2, 0xA] + ldr r3, _080E2CC8 @ =gBattleAnimArgs + ldrh r1, [r3, 0x2] + strh r1, [r2, 0xC] + ldrh r1, [r3, 0x4] + strh r1, [r2, 0xE] + ldrh r1, [r3, 0x6] + strh r1, [r2, 0x10] + ldrh r1, [r3, 0x8] + strh r1, [r2, 0x12] + ldrh r1, [r3, 0x4] + strh r1, [r2, 0x1C] + ldr r1, _080E2CCC @ =sub_80E2CD0 + str r1, [r2] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080E2CC4: .4byte gTasks +_080E2CC8: .4byte gBattleAnimArgs +_080E2CCC: .4byte sub_80E2CD0 + thumb_func_end sub_80E2C8C + + thumb_func_start sub_80E2CD0 +sub_80E2CD0: @ 80E2CD0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r7, r0, 24 + movs r6, 0 + ldr r2, _080E2D50 @ =gTasks + lsls r5, r7, 2 + adds r0, r5, r7 + lsls r0, 3 + adds r3, r0, r2 + ldrh r0, [r3, 0x1A] + mov r8, r0 + movs r4, 0x1A + ldrsh r1, [r3, r4] + movs r4, 0xC + ldrsh r0, [r3, r4] + mov r9, r2 + cmp r1, r0 + bne _080E2D66 + strh r6, [r3, 0x1A] + movs r0, 0x8 + ldrsh r4, [r3, r0] + movs r1, 0xA + ldrsh r0, [r3, r1] + lsls r0, 16 + orrs r4, r0 + mov r8, r5 + cmp r4, 0 + beq _080E2D32 + adds r5, r3, 0 +_080E2D10: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080E2D24 + ldrb r2, [r5, 0x1C] + ldrh r3, [r5, 0x12] + adds r0, r6, 0 + movs r1, 0x10 + bl BlendPalette +_080E2D24: + adds r0, r6, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r6, r0, 16 + lsrs r4, 1 + cmp r4, 0 + bne _080E2D10 +_080E2D32: + mov r4, r8 + adds r0, r4, r7 + lsls r0, 3 + mov r1, r9 + adds r2, r0, r1 + ldrh r0, [r2, 0x1C] + movs r4, 0x1C + ldrsh r3, [r2, r4] + movs r4, 0x10 + ldrsh r1, [r2, r4] + cmp r3, r1 + bge _080E2D54 + adds r0, 0x1 + strh r0, [r2, 0x1C] + b _080E2D6C + .align 2, 0 +_080E2D50: .4byte gTasks +_080E2D54: + cmp r3, r1 + ble _080E2D5E + subs r0, 0x1 + strh r0, [r2, 0x1C] + b _080E2D6C +_080E2D5E: + adds r0, r7, 0 + bl DestroyAnimVisualTask + b _080E2D6C +_080E2D66: + mov r0, r8 + adds r0, 0x1 + strh r0, [r3, 0x1A] +_080E2D6C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80E2CD0 + + thumb_func_start sub_80E2D78 +sub_80E2D78: @ 80E2D78 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r4, _080E2DAC @ =gBattleAnimArgs + ldrb r0, [r4] + ldrb r1, [r4, 0x2] + ldrb r2, [r4, 0x4] + ldrb r3, [r4, 0x6] + ldrb r4, [r4, 0x8] + str r4, [sp] + bl BeginHardwarePaletteFade + ldr r1, _080E2DB0 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + ldr r1, _080E2DB4 @ =sub_80E2DB8 + str r1, [r0] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E2DAC: .4byte gBattleAnimArgs +_080E2DB0: .4byte gTasks +_080E2DB4: .4byte sub_80E2DB8 + thumb_func_end sub_80E2D78 + + thumb_func_start sub_80E2DB8 +sub_80E2DB8: @ 80E2DB8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080E2DD4 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080E2DD0 + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E2DD0: + pop {r0} + bx r0 + .align 2, 0 +_080E2DD4: .4byte gPaletteFade + thumb_func_end sub_80E2DB8 + + thumb_func_start sub_80E2DD8 +sub_80E2DD8: @ 80E2DD8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080E2E04 @ =gTasks + adds r1, r0 + ldr r2, _080E2E08 @ =gBattleAnimArgs + ldrh r0, [r2] + movs r3, 0 + strh r0, [r1, 0x8] + strh r3, [r1, 0xA] + ldrh r0, [r2, 0x2] + strh r0, [r1, 0xC] + ldrh r0, [r2, 0x4] + strh r0, [r1, 0xE] + ldrh r0, [r2, 0x6] + strh r0, [r1, 0x10] + strh r3, [r1, 0x12] + ldr r0, _080E2E0C @ =sub_80E2E10 + str r0, [r1] + bx lr + .align 2, 0 +_080E2E04: .4byte gTasks +_080E2E08: .4byte gBattleAnimArgs +_080E2E0C: .4byte sub_80E2E10 + thumb_func_end sub_80E2DD8 + + thumb_func_start sub_80E2E10 +sub_80E2E10: @ 80E2E10 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r2, r5, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080E2E3C @ =gTasks + adds r4, r0, r1 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080E2ED4 + ldrh r1, [r4, 0xA] + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080E2E40 + subs r0, r1, 0x1 + strh r0, [r4, 0xA] + b _080E2EE2 + .align 2, 0 +_080E2E3C: .4byte gTasks +_080E2E40: + ldrb r0, [r4, 0x8] + bl duplicate_obj_of_side_rel2move_in_transparent_mode + strh r0, [r4, 0x14] + lsls r0, 16 + cmp r0, 0 + blt _080E2EBE + ldr r6, _080E2ECC @ =gSprites + movs r1, 0x14 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r3, r1, r6 + movs r2, 0x8 + ldrsh r0, [r4, r2] + movs r2, 0x2 + cmp r0, 0 + beq _080E2E68 + movs r2, 0x1 +_080E2E68: + lsls r2, 2 + ldrb r1, [r3, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x5] + movs r0, 0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r1, [r4, 0xE] + strh r1, [r0, 0x2E] + movs r2, 0x14 + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r5, [r0, 0x30] + movs r0, 0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x5 + strh r1, [r0, 0x32] + movs r2, 0x14 + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r6, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _080E2ED0 @ =sub_80E2EE8 + str r1, [r0] + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] +_080E2EBE: + ldrh r0, [r4, 0x10] + subs r0, 0x1 + strh r0, [r4, 0x10] + ldrh r0, [r4, 0xC] + strh r0, [r4, 0xA] + b _080E2EE2 + .align 2, 0 +_080E2ECC: .4byte gSprites +_080E2ED0: .4byte sub_80E2EE8 +_080E2ED4: + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E2EE2 + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E2EE2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E2E10 + + thumb_func_start sub_80E2EE8 +sub_80E2EE8: @ 80E2EE8 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080E2EFC + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + b _080E2F20 +_080E2EFC: + ldr r3, _080E2F28 @ =gTasks + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x30 + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl obj_delete_but_dont_free_vram +_080E2F20: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E2F28: .4byte gTasks + thumb_func_end sub_80E2EE8 + + thumb_func_start sub_80E2F2C +sub_80E2F2C: @ 80E2F2C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r7, 0 + ldr r0, _080E3038 @ =gUnknown_030042C4 + strh r7, [r0] + ldr r0, _080E303C @ =gUnknown_03004240 + strh r7, [r0] + ldr r1, _080E3040 @ =REG_WININ + ldr r2, _080E3044 @ =0x00003f3f + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r3, _080E3048 @ =0x00003f3d + adds r0, r3, 0 + strh r0, [r1] + movs r2, 0x80 + lsls r2, 19 + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _080E304C @ =REG_BLDCNT + ldr r2, _080E3050 @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r3, _080E3054 @ =0x00000c08 + adds r0, r3, 0 + strh r0, [r1] + ldr r4, _080E3058 @ =REG_BG1CNT + ldrb r1, [r4] + movs r0, 0x4 + negs r0, r0 + mov r8, r0 + ands r0, r1 + strb r0, [r4] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E2FAC + ldrb r0, [r4] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4] +_080E2FAC: + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + beq _080E3028 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E3028 + ldr r5, _080E305C @ =gBattleAnimBankAttacker + ldrb r0, [r5] + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _080E2FDC + ldrb r0, [r5] + bl GetBankIdentity + lsls r0, 24 + cmp r0, 0 + bne _080E3028 +_080E2FDC: + ldrb r0, [r5] + movs r6, 0x2 + eors r0, r6 + bl IsAnimBankSpriteVisible + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E3028 + ldr r3, _080E3060 @ =gSprites + ldr r1, _080E3064 @ =gObjectBankIDs + ldrb r0, [r5] + eors r0, r6 + adds r0, r1 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldrb r1, [r4] + mov r0, r8 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4] + movs r7, 0x1 +_080E3028: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E306C + ldr r0, _080E3068 @ =gSharedMem + 0x19348 + ldrh r4, [r0] + b _080E30B4 + .align 2, 0 +_080E3038: .4byte gUnknown_030042C4 +_080E303C: .4byte gUnknown_03004240 +_080E3040: .4byte REG_WININ +_080E3044: .4byte 0x00003f3f +_080E3048: .4byte 0x00003f3d +_080E304C: .4byte REG_BLDCNT +_080E3050: .4byte 0x00003f42 +_080E3054: .4byte 0x00000c08 +_080E3058: .4byte REG_BG1CNT +_080E305C: .4byte gBattleAnimBankAttacker +_080E3060: .4byte gSprites +_080E3064: .4byte gObjectBankIDs +_080E3068: .4byte gSharedMem + 0x19348 +_080E306C: + ldr r4, _080E308C @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080E3098 + ldr r1, _080E3090 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E3094 @ =gEnemyParty + b _080E30A8 + .align 2, 0 +_080E308C: .4byte gBattleAnimBankAttacker +_080E3090: .4byte gBattlePartyID +_080E3094: .4byte gEnemyParty +_080E3098: + ldr r1, _080E3160 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E3164 @ =gPlayerParty +_080E30A8: + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r4, r0, 16 +_080E30B4: + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080E3168 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_807A4A0 + lsls r0, 24 + lsrs r4, r0, 24 + mov r0, sp + bl sub_8078914 + ldr r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0xC] + ldr r2, _080E316C @ =0x040000d4 + add r0, sp, 0xC + str r0, [r2] + str r1, [r2, 0x4] + ldr r0, _080E3170 @ =0x85000400 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + ldr r0, _080E3174 @ =gUnknown_08D20A30 + bl LZDecompressVram + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E3106 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80763FC +_080E3106: + ldr r0, _080E3178 @ =gUnknown_08D20A14 + ldr r1, [sp] + bl LZDecompressVram + ldr r0, _080E317C @ =gUnknown_083DB568 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + adds r1, 0x1 + movs r2, 0x2 + bl LoadPalette + ldr r2, _080E3180 @ =gUnknown_030042C0 + ldr r0, _080E3184 @ =gSprites + lsls r1, r5, 4 + adds r1, r5 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x20] + negs r0, r0 + adds r0, 0x20 + strh r0, [r2] + ldr r2, _080E3188 @ =gUnknown_030041B4 + ldrh r0, [r1, 0x22] + negs r0, r0 + adds r0, 0x20 + strh r0, [r2] + ldr r1, _080E318C @ =gTasks + mov r2, r9 + lsls r0, r2, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + strh r4, [r0, 0x8] + strh r7, [r0, 0x14] + ldr r1, _080E3190 @ =sub_80E3194 + str r1, [r0] + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E3160: .4byte gBattlePartyID +_080E3164: .4byte gPlayerParty +_080E3168: .4byte gBattleAnimBankAttacker +_080E316C: .4byte 0x040000d4 +_080E3170: .4byte 0x85000400 +_080E3174: .4byte gUnknown_08D20A30 +_080E3178: .4byte gUnknown_08D20A14 +_080E317C: .4byte gUnknown_083DB568 +_080E3180: .4byte gUnknown_030042C0 +_080E3184: .4byte gSprites +_080E3188: .4byte gUnknown_030041B4 +_080E318C: .4byte gTasks +_080E3190: .4byte sub_80E3194 + thumb_func_end sub_80E2F2C + + thumb_func_start sub_80E3194 +sub_80E3194: @ 80E3194 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080E32AC @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x1C] + adds r0, 0x4 + movs r5, 0 + strh r0, [r4, 0x1C] + ldr r7, _080E32B0 @ =gUnknown_030041B4 + ldrh r2, [r7] + subs r1, r2, 0x4 + strh r1, [r7] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x40 + bne _080E329E + strh r5, [r4, 0x1C] + adds r0, r2, 0 + adds r0, 0x3C + strh r0, [r7] + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080E329E + movs r0, 0 + bl sub_8076464 + ldr r0, _080E32B4 @ =gUnknown_030042C4 + strh r5, [r0] + ldr r0, _080E32B8 @ =gUnknown_03004240 + strh r5, [r0] + ldr r0, _080E32BC @ =REG_WININ + ldr r2, _080E32C0 @ =0x00003f3f + adds r1, r2, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E3208 + ldr r2, _080E32C4 @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080E3208: + movs r2, 0x80 + lsls r2, 19 + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + eors r0, r1 + strh r0, [r2] + ldr r0, _080E32C8 @ =REG_BLDCNT + strh r5, [r0] + adds r0, 0x2 + strh r5, [r0] + movs r0, 0 + bl GetAnimBankSpriteId + ldr r0, _080E32CC @ =gSprites + mov r8, r0 + movs r2, 0x8 + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + bl DestroySprite + mov r0, sp + bl sub_8078914 + ldr r2, [sp, 0x4] + str r5, [sp, 0xC] + ldr r1, _080E32D0 @ =0x040000d4 + add r0, sp, 0xC + str r0, [r1] + str r2, [r1, 0x4] + ldr r0, _080E32D4 @ =0x85000200 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r3, 0x14 + ldrsh r0, [r4, r3] + cmp r0, 0x1 + bne _080E3288 + ldr r2, _080E32D8 @ =gObjectBankIDs + ldr r0, _080E32DC @ =gBattleAnimBankAttacker + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + adds r0, r2 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + add r2, r8 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] +_080E3288: + ldr r2, _080E32C4 @ =REG_BG1CNT + ldrb r1, [r2, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x1] + movs r0, 0 + strh r0, [r7] + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080E329E: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E32AC: .4byte gTasks +_080E32B0: .4byte gUnknown_030041B4 +_080E32B4: .4byte gUnknown_030042C4 +_080E32B8: .4byte gUnknown_03004240 +_080E32BC: .4byte REG_WININ +_080E32C0: .4byte 0x00003f3f +_080E32C4: .4byte REG_BG1CNT +_080E32C8: .4byte REG_BLDCNT +_080E32CC: .4byte gSprites +_080E32D0: .4byte 0x040000d4 +_080E32D4: .4byte 0x85000200 +_080E32D8: .4byte gObjectBankIDs +_080E32DC: .4byte gBattleAnimBankAttacker + thumb_func_end sub_80E3194 + + thumb_func_start sub_80E32E0 +sub_80E32E0: @ 80E32E0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r3, r0, 24 + movs r2, 0 + ldr r0, _080E332C @ =gTasks + mov r12, r0 + ldr r1, _080E3330 @ =sub_80E3338 + mov r8, r1 + lsls r1, r3, 2 + adds r0, r1, r3 + lsls r4, r0, 3 + mov r7, r12 + adds r7, 0x8 + adds r5, r1, 0 + ldr r6, _080E3334 @ =gBattleAnimArgs +_080E3302: + lsls r0, r2, 1 + adds r1, r0, r4 + adds r1, r7 + adds r0, r6 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x7 + bls _080E3302 + adds r0, r5, r3 + lsls r0, 3 + add r0, r12 + mov r1, r8 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E332C: .4byte gTasks +_080E3330: .4byte sub_80E3338 +_080E3334: .4byte gBattleAnimArgs + thumb_func_end sub_80E32E0 + + thumb_func_start sub_80E3338 +sub_80E3338: @ 80E3338 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r0, 0 + str r0, [sp, 0x1C] + movs r1, 0 + str r1, [sp, 0x20] + add r7, sp, 0xC + ldr r2, _080E3388 @ =gTasks + mov r3, r9 + lsls r1, r3, 2 + adds r0, r1, r3 + lsls r0, 3 + mov r10, r1 + adds r1, r2, 0 + adds r1, 0x8 + adds r1, r0, r1 + adds r3, r7, 0 + movs r4, 0 + movs r2, 0x7 +_080E336C: + ldrh r0, [r1] + strh r0, [r3] + strh r4, [r1] + adds r1, 0x2 + adds r3, 0x2 + subs r2, 0x1 + cmp r2, 0 + bge _080E336C + movs r1, 0x4 + ldrsh r0, [r7, r1] + cmp r0, 0 + bne _080E3390 + ldr r0, _080E338C @ =gBattleAnimBankAttacker + b _080E3392 + .align 2, 0 +_080E3388: .4byte gTasks +_080E338C: .4byte gBattleAnimBankAttacker +_080E3390: + ldr r0, _080E34B4 @ =gBattleAnimBankTarget +_080E3392: + ldrb r5, [r0] + movs r0, 0x2 + mov r8, r5 + mov r2, r8 + eors r2, r0 + mov r8, r2 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E33BC + movs r3, 0x6 + ldrsh r0, [r7, r3] + cmp r0, 0 + beq _080E33C0 + mov r0, r8 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + bne _080E33C0 +_080E33BC: + movs r0, 0 + strh r0, [r7, 0x6] +_080E33C0: + ldr r0, _080E34B8 @ =gUnknown_030042C4 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E34BC @ =gUnknown_03004240 + strh r1, [r0] + ldr r1, _080E34C0 @ =REG_WININ + ldr r2, _080E34C4 @ =0x00003f3f + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r3, _080E34C8 @ =0x00003f3d + adds r0, r3, 0 + strh r0, [r1] + movs r2, 0x80 + lsls r2, 19 + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _080E34CC @ =REG_BLDCNT + ldr r2, _080E34D0 @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r3, 0x80 + lsls r3, 5 + adds r0, r3, 0 + strh r0, [r1] + ldr r4, _080E34D4 @ =REG_BG1CNT + ldrb r1, [r4] + movs r6, 0x4 + negs r6, r6 + adds r0, r6, 0 + ands r0, r1 + strb r0, [r4] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E3432 + ldrb r0, [r4] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4] +_080E3432: + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + beq _080E34A4 + movs r1, 0x6 + ldrsh r0, [r7, r1] + cmp r0, 0 + bne _080E34A4 + adds r0, r5, 0 + bl GetBankIdentity + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _080E345E + adds r0, r5, 0 + bl GetBankIdentity + lsls r0, 24 + cmp r0, 0 + bne _080E34A4 +_080E345E: + mov r0, r8 + bl IsAnimBankSpriteVisible + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080E34A4 + ldr r1, _080E34D8 @ =gSprites + ldr r0, _080E34DC @ =gObjectBankIDs + add r0, r8 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + subs r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + ldrb r1, [r4] + adds r0, r6, 0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4] + movs r2, 0x1 + str r2, [sp, 0x20] +_080E34A4: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E34E4 + ldr r0, _080E34E0 @ =gSharedMem + 0x19348 + ldrh r4, [r0] + b _080E3522 + .align 2, 0 +_080E34B4: .4byte gBattleAnimBankTarget +_080E34B8: .4byte gUnknown_030042C4 +_080E34BC: .4byte gUnknown_03004240 +_080E34C0: .4byte REG_WININ +_080E34C4: .4byte 0x00003f3f +_080E34C8: .4byte 0x00003f3d +_080E34CC: .4byte REG_BLDCNT +_080E34D0: .4byte 0x00003f42 +_080E34D4: .4byte REG_BG1CNT +_080E34D8: .4byte gSprites +_080E34DC: .4byte gObjectBankIDs +_080E34E0: .4byte gSharedMem + 0x19348 +_080E34E4: + adds r0, r5, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080E3508 + ldr r1, _080E3500 @ =gBattlePartyID + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E3504 @ =gEnemyParty + b _080E3516 + .align 2, 0 +_080E3500: .4byte gBattlePartyID +_080E3504: .4byte gEnemyParty +_080E3508: + ldr r1, _080E3568 @ =gBattlePartyID + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E356C @ =gPlayerParty +_080E3516: + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r4, r0, 16 +_080E3522: + ldr r6, _080E3570 @ =gObjectBankIDs + adds r0, r5, r6 + ldrb r1, [r0] + adds r0, r5, 0 + adds r2, r4, 0 + bl sub_807A4A0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r3, 0x6 + ldrsh r0, [r7, r3] + cmp r0, 0 + beq _080E3550 + mov r1, r8 + adds r0, r1, r6 + ldrb r1, [r0] + mov r0, r8 + adds r2, r4, 0 + bl sub_807A4A0 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x1C] +_080E3550: + mov r0, sp + bl sub_8078914 + movs r2, 0 + ldrsh r0, [r7, r2] + cmp r0, 0 + bne _080E3578 + ldr r0, _080E3574 @ =gBattleStatMask1_Tilemap + ldr r1, [sp, 0x4] + bl LZDecompressVram + b _080E3580 + .align 2, 0 +_080E3568: .4byte gBattlePartyID +_080E356C: .4byte gPlayerParty +_080E3570: .4byte gObjectBankIDs +_080E3574: .4byte gBattleStatMask1_Tilemap +_080E3578: + ldr r0, _080E35B0 @ =gBattleStatMask2_Tilemap + ldr r1, [sp, 0x4] + bl LZDecompressVram +_080E3580: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E3598 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80763FC +_080E3598: + ldr r0, _080E35B4 @ =gBattleStatMask_Gfx + ldr r1, [sp] + bl LZDecompressVram + ldrh r0, [r7, 0x2] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _080E35BC + ldr r0, _080E35B8 @ =gBattleStatMask2_Pal + b _080E35FE + .align 2, 0 +_080E35B0: .4byte gBattleStatMask2_Tilemap +_080E35B4: .4byte gBattleStatMask_Gfx +_080E35B8: .4byte gBattleStatMask2_Pal +_080E35BC: + cmp r0, 0x1 + bne _080E35C8 + ldr r0, _080E35C4 @ =gBattleStatMask1_Pal + b _080E35FE + .align 2, 0 +_080E35C4: .4byte gBattleStatMask1_Pal +_080E35C8: + cmp r0, 0x2 + bne _080E35D4 + ldr r0, _080E35D0 @ =gBattleStatMask3_Pal + b _080E35FE + .align 2, 0 +_080E35D0: .4byte gBattleStatMask3_Pal +_080E35D4: + cmp r0, 0x3 + bne _080E35E0 + ldr r0, _080E35DC @ =gBattleStatMask4_Pal + b _080E35FE + .align 2, 0 +_080E35DC: .4byte gBattleStatMask4_Pal +_080E35E0: + cmp r0, 0x4 + bne _080E35EC + ldr r0, _080E35E8 @ =gBattleStatMask6_Pal + b _080E35FE + .align 2, 0 +_080E35E8: .4byte gBattleStatMask6_Pal +_080E35EC: + cmp r0, 0x5 + bne _080E35F8 + ldr r0, _080E35F4 @ =gBattleStatMask7_Pal + b _080E35FE + .align 2, 0 +_080E35F4: .4byte gBattleStatMask7_Pal +_080E35F8: + cmp r0, 0x6 + bne _080E3610 + ldr r0, _080E360C @ =gBattleStatMask8_Pal +_080E35FE: + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette + b _080E361E + .align 2, 0 +_080E360C: .4byte gBattleStatMask8_Pal +_080E3610: + ldr r0, _080E3644 @ =gBattleStatMask5_Pal + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette +_080E361E: + ldr r2, _080E3648 @ =gUnknown_030042C0 + movs r1, 0 + strh r1, [r2] + ldr r0, _080E364C @ =gUnknown_030041B4 + strh r1, [r0] + movs r3, 0 + ldrsh r0, [r7, r3] + cmp r0, 0x1 + bne _080E3658 + movs r0, 0x40 + strh r0, [r2] + ldr r2, _080E3650 @ =gTasks + mov r0, r10 + add r0, r9 + lsls r0, 3 + adds r0, r2 + ldr r1, _080E3654 @ =0x0000fffd + strh r1, [r0, 0xA] + b _080E3668 + .align 2, 0 +_080E3644: .4byte gBattleStatMask5_Pal +_080E3648: .4byte gUnknown_030042C0 +_080E364C: .4byte gUnknown_030041B4 +_080E3650: .4byte gTasks +_080E3654: .4byte 0x0000fffd +_080E3658: + ldr r0, _080E3680 @ =gTasks + mov r1, r10 + add r1, r9 + lsls r1, 3 + adds r1, r0 + movs r2, 0x3 + strh r2, [r1, 0xA] + adds r2, r0, 0 +_080E3668: + movs r1, 0x8 + ldrsh r0, [r7, r1] + cmp r0, 0 + bne _080E3684 + mov r0, r10 + add r0, r9 + lsls r0, 3 + adds r0, r2 + movs r1, 0xA + strh r1, [r0, 0x10] + movs r1, 0x14 + b _080E3692 + .align 2, 0 +_080E3680: .4byte gTasks +_080E3684: + mov r0, r10 + add r0, r9 + lsls r0, 3 + adds r0, r2 + movs r1, 0xD + strh r1, [r0, 0x10] + movs r1, 0x1E +_080E3692: + strh r1, [r0, 0x12] + mov r1, r10 + add r1, r9 + lsls r1, 3 + adds r1, r2 + strh r5, [r1, 0x8] + ldrh r0, [r7, 0x6] + strh r0, [r1, 0xC] + mov r2, sp + ldrh r2, [r2, 0x1C] + strh r2, [r1, 0xE] + mov r3, sp + ldrh r3, [r3, 0x20] + strh r3, [r1, 0x14] + ldr r0, _080E36D8 @ =gObjectBankIDs + add r0, r8 + ldrb r0, [r0] + strh r0, [r1, 0x16] + ldr r0, _080E36DC @ =sub_80E3704 + str r0, [r1] + movs r1, 0 + ldrsh r0, [r7, r1] + cmp r0, 0 + bne _080E36E0 + movs r0, 0x40 + negs r0, r0 + bl sub_8077094 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xEF + bl PlaySE12WithPanning + b _080E36F4 + .align 2, 0 +_080E36D8: .4byte gObjectBankIDs +_080E36DC: .4byte sub_80E3704 +_080E36E0: + movs r0, 0x40 + negs r0, r0 + bl sub_8077094 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xF5 + bl PlaySE12WithPanning +_080E36F4: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80E3338 + + thumb_func_start sub_80E3704 +sub_80E3704: @ 80E3704 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r2, _080E3730 @ =gUnknown_030041B4 + ldr r1, _080E3734 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0xA] + ldrh r1, [r2] + adds r0, r1 + strh r0, [r2] + movs r3, 0x26 + ldrsh r2, [r4, r3] + cmp r2, 0x1 + beq _080E3774 + cmp r2, 0x1 + bgt _080E3738 + cmp r2, 0 + beq _080E373E + b _080E3866 + .align 2, 0 +_080E3730: .4byte gUnknown_030041B4 +_080E3734: .4byte gTasks +_080E3738: + cmp r2, 0x2 + beq _080E378E + b _080E3866 +_080E373E: + ldrh r0, [r4, 0x1E] + adds r1, r0, 0x1 + strh r1, [r4, 0x1E] + lsls r0, 16 + cmp r0, 0 + bgt _080E374C + b _080E3866 +_080E374C: + strh r2, [r4, 0x1E] + ldrh r1, [r4, 0x20] + adds r1, 0x1 + strh r1, [r4, 0x20] + ldr r2, _080E3770 @ =REG_BLDALPHA + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r0, 0x20 + ldrsh r1, [r4, r0] + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080E3866 + b _080E3786 + .align 2, 0 +_080E3770: .4byte REG_BLDALPHA +_080E3774: + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x12 + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _080E3866 +_080E3786: + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] + b _080E3866 +_080E378E: + ldrh r0, [r4, 0x1E] + adds r1, r0, 0x1 + strh r1, [r4, 0x1E] + lsls r0, 16 + cmp r0, 0 + ble _080E3866 + movs r0, 0 + strh r0, [r4, 0x1E] + ldrh r1, [r4, 0x20] + subs r1, 0x1 + strh r1, [r4, 0x20] + ldr r7, _080E386C @ =REG_BLDALPHA + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r7] + movs r0, 0x20 + ldrsh r5, [r4, r0] + cmp r5, 0 + bne _080E3866 + movs r0, 0 + bl sub_8076464 + ldr r0, _080E3870 @ =gUnknown_030042C4 + strh r5, [r0] + ldr r0, _080E3874 @ =gUnknown_03004240 + strh r5, [r0] + ldr r0, _080E3878 @ =REG_WININ + ldr r2, _080E387C @ =0x00003f3f + adds r1, r2, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E37E8 + ldr r2, _080E3880 @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080E37E8: + movs r2, 0x80 + lsls r2, 19 + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + eors r0, r1 + strh r0, [r2] + ldr r0, _080E3884 @ =REG_BLDCNT + strh r5, [r0] + strh r5, [r7] + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _080E3888 @ =gSprites + adds r0, r5 + bl DestroySprite + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080E3828 + movs r2, 0xE + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl DestroySprite +_080E3828: + movs r3, 0x14 + ldrsh r0, [r4, r3] + cmp r0, 0x1 + bne _080E3854 + movs r1, 0x16 + ldrsh r0, [r4, r1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r5 + ldrb r3, [r2, 0x5] + lsls r1, r3, 28 + lsrs r1, 30 + adds r1, 0x1 + movs r0, 0x3 + ands r1, r0 + lsls r1, 2 + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] +_080E3854: + ldr r2, _080E3880 @ =REG_BG1CNT + ldrb r1, [r2, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x1] + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080E3866: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E386C: .4byte REG_BLDALPHA +_080E3870: .4byte gUnknown_030042C4 +_080E3874: .4byte gUnknown_03004240 +_080E3878: .4byte REG_WININ +_080E387C: .4byte 0x00003f3f +_080E3880: .4byte REG_BG1CNT +_080E3884: .4byte REG_BLDCNT +_080E3888: .4byte gSprites + thumb_func_end sub_80E3704 + + thumb_func_start sub_80E388C +sub_80E388C: @ 80E388C + push {r4-r6,lr} + sub sp, 0xC + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0x1 + bl sub_80792C0 + adds r6, r0, 0 + movs r1, 0 + bl sub_80E39BC + ldr r0, _080E38EC @ =gTasks + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + lsrs r0, r6, 16 + movs r5, 0 + strh r0, [r4, 0x24] + str r5, [sp] + str r5, [sp, 0x4] + str r5, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_80791A8 + adds r6, r0, 0 + ldr r1, _080E38F0 @ =0x0000ffff + ands r6, r1 + adds r0, r6, 0 + bl sub_80E39BC + strh r6, [r4, 0x26] + strh r5, [r4, 0x8] + strh r5, [r4, 0xA] + ldr r0, _080E38F4 @ =sub_80E38F8 + str r0, [r4] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E38EC: .4byte gTasks +_080E38F0: .4byte 0x0000ffff +_080E38F4: .4byte sub_80E38F8 + thumb_func_end sub_80E388C + + thumb_func_start sub_80E38F8 +sub_80E38F8: @ 80E38F8 + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080E391C @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080E393C + cmp r1, 0x1 + bgt _080E3920 + cmp r1, 0 + beq _080E3926 + b _080E39B6 + .align 2, 0 +_080E391C: .4byte gTasks +_080E3920: + cmp r1, 0x2 + beq _080E39B0 + b _080E39B6 +_080E3926: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + ble _080E39B6 + strh r1, [r4, 0xA] + movs r0, 0x10 + strh r0, [r4, 0xC] + b _080E39A4 +_080E393C: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080E39B6 + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + movs r5, 0 + movs r6, 0x1 +_080E3958: + movs r1, 0x26 + ldrsh r0, [r4, r1] + asrs r0, r5 + ands r0, r6 + cmp r0, 0 + beq _080E3972 + lsls r0, r5, 20 + lsrs r0, 16 + ldrb r2, [r4, 0xC] + movs r1, 0x10 + ldr r3, _080E39AC @ =0x0000ffff + bl BlendPalette +_080E3972: + movs r1, 0x24 + ldrsh r0, [r4, r1] + asrs r0, r5 + ands r0, r6 + cmp r0, 0 + beq _080E3992 + lsls r0, r5, 20 + movs r1, 0x80 + lsls r1, 17 + adds r0, r1 + lsrs r0, 16 + ldrb r2, [r4, 0xC] + movs r1, 0x10 + movs r3, 0 + bl BlendPalette +_080E3992: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0xF + bls _080E3958 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080E39B6 +_080E39A4: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080E39B6 + .align 2, 0 +_080E39AC: .4byte 0x0000ffff +_080E39B0: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080E39B6: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80E38F8 + + thumb_func_start sub_80E39BC +sub_80E39BC: @ 80E39BC + push {r4-r6,lr} + adds r3, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + movs r2, 0 +_080E39C6: + movs r0, 0x1 + ands r0, r3 + lsrs r4, r3, 1 + adds r5, r2, 0x1 + cmp r0, 0 + beq _080E39F2 + lsls r0, r2, 20 + lsrs r2, r0, 16 + adds r0, r2, 0 + adds r0, 0x10 + cmp r2, r0 + bge _080E39F2 + ldr r1, _080E3A04 @ =gPlttBufferFaded + adds r3, r0, 0 +_080E39E2: + lsls r0, r2, 1 + adds r0, r1 + strh r6, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r3 + blt _080E39E2 +_080E39F2: + adds r3, r4, 0 + lsls r0, r5, 16 + lsrs r2, r0, 16 + cmp r2, 0x1F + bls _080E39C6 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E3A04: .4byte gPlttBufferFaded + thumb_func_end sub_80E39BC + + thumb_func_start sub_80E3A08 +sub_80E3A08: @ 80E3A08 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + movs r2, 0 + ldr r0, _080E3A50 @ =gBattleAnimBankAttacker + ldrb r3, [r0] + movs r5, 0x1 +_080E3A18: + cmp r3, r2 + beq _080E3A26 + adds r1, r2, 0 + adds r1, 0x10 + adds r0, r5, 0 + lsls r0, r1 + orrs r4, r0 +_080E3A26: + adds r2, 0x1 + cmp r2, 0x3 + bls _080E3A18 + movs r2, 0x5 + ldr r0, _080E3A54 @ =gBattleAnimArgs + adds r1, r0, 0 + adds r1, 0x8 +_080E3A34: + ldrh r0, [r1] + strh r0, [r1, 0x2] + subs r1, 0x2 + subs r2, 0x1 + cmp r2, 0 + bne _080E3A34 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80E2C8C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E3A50: .4byte gBattleAnimBankAttacker +_080E3A54: .4byte gBattleAnimArgs + thumb_func_end sub_80E3A08 + + thumb_func_start sub_80E3A58 +sub_80E3A58: @ 80E3A58 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r0, 0 + bl sub_80789D4 + ldr r0, _080E3AC0 @ =sub_80E3AD0 + movs r1, 0x5 + bl CreateTask + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080E3AC4 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080E3A94 + ldr r0, _080E3AC8 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080E3A94 + ldrh r0, [r4] + negs r0, r0 + strh r0, [r4] + ldrh r0, [r4, 0x2] + negs r0, r0 + strh r0, [r4, 0x2] +_080E3A94: + ldr r0, _080E3ACC @ =gTasks + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldr r2, _080E3AC4 @ =gBattleAnimArgs + ldrh r0, [r2] + strh r0, [r1, 0xA] + ldrh r0, [r2, 0x2] + strh r0, [r1, 0xC] + ldrh r0, [r2, 0x6] + strh r0, [r1, 0xE] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + adds r0, r6, 0 + bl DestroyAnimVisualTask + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E3AC0: .4byte sub_80E3AD0 +_080E3AC4: .4byte gBattleAnimArgs +_080E3AC8: .4byte gBattleAnimBankAttacker +_080E3ACC: .4byte gTasks + thumb_func_end sub_80E3A58 + + thumb_func_start sub_80E3AD0 +sub_80E3AD0: @ 80E3AD0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080E3B3C @ =gTasks + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r3, [r1, 0xA] + ldrh r0, [r1, 0x1C] + adds r3, r0 + movs r4, 0 + mov r12, r4 + strh r3, [r1, 0x1C] + ldrh r2, [r1, 0xC] + ldrh r7, [r1, 0x1E] + adds r2, r7 + strh r2, [r1, 0x1E] + ldr r6, _080E3B40 @ =gUnknown_030041B0 + lsls r0, r3, 16 + asrs r0, 24 + ldrh r4, [r6] + adds r0, r4 + strh r0, [r6] + ldr r4, _080E3B44 @ =gUnknown_030041B8 + lsls r0, r2, 16 + asrs r0, 24 + ldrh r7, [r4] + adds r0, r7 + strh r0, [r4] + movs r0, 0xFF + ands r3, r0 + strh r3, [r1, 0x1C] + ands r2, r0 + strh r2, [r1, 0x1E] + ldr r0, _080E3B48 @ =gBattleAnimArgs + movs r3, 0xE + ldrsh r2, [r0, r3] + movs r7, 0xE + ldrsh r0, [r1, r7] + cmp r2, r0 + bne _080E3B36 + mov r0, r12 + strh r0, [r6] + strh r0, [r4] + movs r0, 0x1 + bl sub_80789D4 + adds r0, r5, 0 + bl DestroyTask +_080E3B36: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E3B3C: .4byte gTasks +_080E3B40: .4byte gUnknown_030041B0 +_080E3B44: .4byte gUnknown_030041B8 +_080E3B48: .4byte gBattleAnimArgs + thumb_func_end sub_80E3AD0 + + thumb_func_start sub_80E3B4C +sub_80E3B4C: @ 80E3B4C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080E3B70 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + ldr r1, _080E3B74 @ =gBattleAnimArgs + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0xE] + adds r0, r4, 0 + bl DestroyAnimVisualTask + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E3B70: .4byte gBattleAnimBankAttacker +_080E3B74: .4byte gBattleAnimArgs + thumb_func_end sub_80E3B4C + + thumb_func_start sub_80E3B78 +sub_80E3B78: @ 80E3B78 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080E3B9C @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + ldr r1, _080E3BA0 @ =gBattleAnimArgs + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0xE] + adds r0, r4, 0 + bl DestroyAnimVisualTask + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E3B9C: .4byte gBattleAnimBankTarget +_080E3BA0: .4byte gBattleAnimArgs + thumb_func_end sub_80E3B78 + + thumb_func_start sub_80E3BA4 +sub_80E3BA4: @ 80E3BA4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r5, _080E3BD0 @ =gBattleAnimArgs + movs r4, 0 + ldr r0, _080E3BD4 @ =gBattleAnimBankAttacker + ldrb r2, [r0] + movs r0, 0x2 + ldr r1, _080E3BD8 @ =gBattleAnimBankTarget + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bne _080E3BC0 + movs r4, 0x1 +_080E3BC0: + strh r4, [r5, 0xE] + adds r0, r3, 0 + bl DestroyAnimVisualTask + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E3BD0: .4byte gBattleAnimArgs +_080E3BD4: .4byte gBattleAnimBankAttacker +_080E3BD8: .4byte gBattleAnimBankTarget + thumb_func_end sub_80E3BA4 + + thumb_func_start sub_80E3BDC +sub_80E3BDC: @ 80E3BDC + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r6, _080E3C3C @ =gSprites +_080E3BE6: + ldr r0, _080E3C40 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + cmp r4, r0 + beq _080E3C24 + lsls r0, r4, 24 + lsrs r0, 24 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080E3C24 + ldr r0, _080E3C44 @ =gObjectBankIDs + adds r0, r4, r0 + ldrb r0, [r0] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r6 + ldr r1, _080E3C48 @ =gBattleAnimArgs + adds r2, 0x3E + movs r0, 0x1 + ldrb r3, [r1] + ands r3, r0 + lsls r3, 2 + ldrb r0, [r2] + movs r7, 0x5 + negs r7, r7 + adds r1, r7, 0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] +_080E3C24: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _080E3BE6 + adds r0, r5, 0 + bl DestroyAnimVisualTask + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E3C3C: .4byte gSprites +_080E3C40: .4byte gBattleAnimBankAttacker +_080E3C44: .4byte gObjectBankIDs +_080E3C48: .4byte gBattleAnimArgs + thumb_func_end sub_80E3BDC + + thumb_func_start sub_80E3C4C +sub_80E3C4C: @ 80E3C4C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + ldr r1, [sp, 0x3C] + ldr r4, [sp, 0x40] + ldr r5, [sp, 0x44] + ldr r6, [sp, 0x48] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0xC] + lsls r3, 24 + lsrs r7, r3, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x10] + lsls r5, 24 + lsrs r5, 24 + str r5, [sp, 0x14] + lsls r6, 24 + lsrs r6, 24 + mov r10, r6 + movs r0, 0 + str r0, [sp, 0x18] + movs r0, 0x2 + adds r6, r7, 0 + eors r6, r0 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E3CAE + mov r1, r8 + cmp r1, 0 + beq _080E3CB2 + adds r0, r6, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + bne _080E3CB2 +_080E3CAE: + movs r2, 0 + mov r8, r2 +_080E3CB2: + ldr r0, _080E3D34 @ =gUnknown_030042C4 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E3D38 @ =gUnknown_03004240 + strh r1, [r0] + ldr r1, _080E3D3C @ =REG_WININ + ldr r3, _080E3D40 @ =0x00003f3f + adds r0, r3, 0 + strh r0, [r1] + adds r1, 0x2 + ldr r2, _080E3D44 @ =0x00003f3d + adds r0, r2, 0 + strh r0, [r1] + movs r2, 0x80 + lsls r2, 19 + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _080E3D48 @ =REG_BLDCNT + ldr r2, _080E3D4C @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r3, 0x80 + lsls r3, 5 + adds r0, r3, 0 + strh r0, [r1] + ldr r4, _080E3D50 @ =REG_BG1CNT + ldrb r1, [r4] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E3D22 + ldrb r0, [r4] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4] +_080E3D22: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E3D58 + ldr r0, _080E3D54 @ =gSharedMem + 0x19348 + ldrh r4, [r0] + b _080E3D96 + .align 2, 0 +_080E3D34: .4byte gUnknown_030042C4 +_080E3D38: .4byte gUnknown_03004240 +_080E3D3C: .4byte REG_WININ +_080E3D40: .4byte 0x00003f3f +_080E3D44: .4byte 0x00003f3d +_080E3D48: .4byte REG_BLDCNT +_080E3D4C: .4byte 0x00003f42 +_080E3D50: .4byte REG_BG1CNT +_080E3D54: .4byte gSharedMem + 0x19348 +_080E3D58: + adds r0, r7, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080E3D7C + ldr r1, _080E3D74 @ =gBattlePartyID + lsls r0, r7, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E3D78 @ =gEnemyParty + b _080E3D8A + .align 2, 0 +_080E3D74: .4byte gBattlePartyID +_080E3D78: .4byte gEnemyParty +_080E3D7C: + ldr r1, _080E3E48 @ =gBattlePartyID + lsls r0, r7, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080E3E4C @ =gPlayerParty +_080E3D8A: + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r4, r0, 16 +_080E3D96: + ldr r5, _080E3E50 @ =gObjectBankIDs + adds r0, r7, r5 + ldrb r1, [r0] + adds r0, r7, 0 + adds r2, r4, 0 + bl sub_807A4A0 + lsls r0, 24 + lsrs r7, r0, 24 + mov r0, r8 + cmp r0, 0 + beq _080E3DC0 + adds r0, r6, r5 + ldrb r1, [r0] + adds r0, r6, 0 + adds r2, r4, 0 + bl sub_807A4A0 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x18] +_080E3DC0: + mov r0, sp + bl sub_8078914 + ldr r1, [sp, 0x4] + ldr r0, [sp, 0x50] + bl LZDecompressVram + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E3DE6 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80763FC +_080E3DE6: + ldr r1, [sp] + ldr r0, [sp, 0x4C] + bl LZDecompressVram + mov r0, sp + ldrb r1, [r0, 0x8] + lsls r1, 4 + ldr r0, [sp, 0x54] + movs r2, 0x20 + bl LoadCompressedPalette + ldr r0, _080E3E54 @ =gUnknown_030042C0 + movs r1, 0 + strh r1, [r0] + ldr r0, _080E3E58 @ =gUnknown_030041B4 + strh r1, [r0] + ldr r1, _080E3E5C @ =gTasks + mov r2, r9 + lsls r0, r2, 2 + add r0, r9 + lsls r0, 3 + adds r0, r1 + mov r3, sp + ldrh r3, [r3, 0xC] + strh r3, [r0, 0xA] + mov r1, sp + ldrh r1, [r1, 0x10] + strh r1, [r0, 0x10] + mov r2, r10 + strh r2, [r0, 0x12] + mov r3, sp + ldrh r3, [r3, 0x14] + strh r3, [r0, 0x14] + strh r7, [r0, 0x8] + mov r1, r8 + strh r1, [r0, 0xC] + mov r2, sp + ldrh r2, [r2, 0x18] + strh r2, [r0, 0xE] + ldr r1, _080E3E60 @ =sub_80E3E64 + str r1, [r0] + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E3E48: .4byte gBattlePartyID +_080E3E4C: .4byte gPlayerParty +_080E3E50: .4byte gObjectBankIDs +_080E3E54: .4byte gUnknown_030042C0 +_080E3E58: .4byte gUnknown_030041B4 +_080E3E5C: .4byte gTasks +_080E3E60: .4byte sub_80E3E64 + thumb_func_end sub_80E3C4C + + thumb_func_start sub_80E3E64 +sub_80E3E64: @ 80E3E64 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080E3E9C @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r3, r0, r1 + movs r0, 0xA + ldrsh r2, [r3, r0] + adds r5, r1, 0 + cmp r2, 0 + bge _080E3E80 + negs r2, r2 +_080E3E80: + ldrh r0, [r3, 0x22] + adds r4, r0, r2 + strh r4, [r3, 0x22] + movs r1, 0xA + ldrsh r0, [r3, r1] + cmp r0, 0 + bge _080E3EA4 + ldr r2, _080E3EA0 @ =gUnknown_030041B4 + lsls r1, r4, 16 + asrs r1, 24 + ldrh r0, [r2] + subs r0, r1 + strh r0, [r2] + b _080E3EB0 + .align 2, 0 +_080E3E9C: .4byte gTasks +_080E3EA0: .4byte gUnknown_030041B4 +_080E3EA4: + ldr r1, _080E3ED4 @ =gUnknown_030041B4 + lsls r0, r4, 16 + asrs r0, 24 + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] +_080E3EB0: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r5 + ldrh r1, [r4, 0x22] + movs r0, 0xFF + ands r0, r1 + movs r2, 0 + strh r0, [r4, 0x22] + movs r3, 0x26 + ldrsh r0, [r4, r3] + cmp r0, 0x1 + beq _080E3F18 + cmp r0, 0x1 + bgt _080E3ED8 + cmp r0, 0 + beq _080E3EDE + b _080E3FE2 + .align 2, 0 +_080E3ED4: .4byte gUnknown_030041B4 +_080E3ED8: + cmp r0, 0x2 + beq _080E3F32 + b _080E3FE2 +_080E3EDE: + ldrh r0, [r4, 0x1E] + adds r1, r0, 0x1 + strh r1, [r4, 0x1E] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x14 + ldrsh r1, [r4, r3] + cmp r0, r1 + blt _080E3FE2 + strh r2, [r4, 0x1E] + ldrh r1, [r4, 0x20] + adds r1, 0x1 + strh r1, [r4, 0x20] + ldr r2, _080E3F14 @ =REG_BLDALPHA + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r0, 0x20 + ldrsh r1, [r4, r0] + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080E3FE2 + b _080E3F2A + .align 2, 0 +_080E3F14: .4byte REG_BLDALPHA +_080E3F18: + ldrh r0, [r4, 0x1C] + adds r0, 0x1 + strh r0, [r4, 0x1C] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x12 + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _080E3FE2 +_080E3F2A: + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] + b _080E3FE2 +_080E3F32: + ldrh r0, [r4, 0x1E] + adds r1, r0, 0x1 + strh r1, [r4, 0x1E] + lsls r0, 16 + asrs r0, 16 + movs r3, 0x14 + ldrsh r1, [r4, r3] + cmp r0, r1 + blt _080E3FE2 + strh r2, [r4, 0x1E] + ldrh r1, [r4, 0x20] + subs r1, 0x1 + strh r1, [r4, 0x20] + ldr r7, _080E3FE8 @ =REG_BLDALPHA + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r7] + movs r0, 0x20 + ldrsh r5, [r4, r0] + cmp r5, 0 + bne _080E3FE2 + movs r0, 0 + bl sub_8076464 + ldr r0, _080E3FEC @ =gUnknown_030042C4 + strh r5, [r0] + ldr r0, _080E3FF0 @ =gUnknown_03004240 + strh r5, [r0] + ldr r0, _080E3FF4 @ =REG_WININ + ldr r2, _080E3FF8 @ =0x00003f3f + adds r1, r2, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080E3F90 + ldr r2, _080E3FFC @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080E3F90: + movs r2, 0x80 + lsls r2, 19 + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + eors r0, r1 + strh r0, [r2] + ldr r0, _080E4000 @ =REG_BLDCNT + strh r5, [r0] + strh r5, [r7] + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _080E4004 @ =gSprites + adds r0, r5 + bl DestroySprite + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080E3FD0 + movs r2, 0xE + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + bl DestroySprite +_080E3FD0: + ldr r2, _080E3FFC @ =REG_BG1CNT + ldrb r1, [r2, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x1] + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080E3FE2: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080E3FE8: .4byte REG_BLDALPHA +_080E3FEC: .4byte gUnknown_030042C4 +_080E3FF0: .4byte gUnknown_03004240 +_080E3FF4: .4byte REG_WININ +_080E3FF8: .4byte 0x00003f3f +_080E3FFC: .4byte REG_BG1CNT +_080E4000: .4byte REG_BLDCNT +_080E4004: .4byte gSprites + thumb_func_end sub_80E3E64 + + thumb_func_start sub_80E4008 +sub_80E4008: @ 80E4008 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E4020 @ =gBattleAnimArgs + ldr r1, _080E4024 @ =gBattleTerrain + ldrb r1, [r1] + strh r1, [r2] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080E4020: .4byte gBattleAnimArgs +_080E4024: .4byte gBattleTerrain + thumb_func_end sub_80E4008 + + thumb_func_start sub_80E4028 +sub_80E4028: @ 80E4028 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + ldr r0, _080E4068 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E406C + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_80791A8 + adds r1, r0, 0 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080E4084 + movs r2, 0x1 +_080E405A: + lsrs r1, 1 + adds r4, 0x1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _080E405A + b _080E4084 + .align 2, 0 +_080E4068: .4byte gBattleAnimArgs +_080E406C: + cmp r0, 0x1 + bne _080E4078 + ldr r0, _080E4074 @ =gBattleAnimBankAttacker + b _080E407E + .align 2, 0 +_080E4074: .4byte gBattleAnimBankAttacker +_080E4078: + cmp r0, 0x2 + bne _080E4084 + ldr r0, _080E409C @ =gBattleAnimBankTarget +_080E407E: + ldrb r0, [r0] + adds r4, r0, 0 + adds r4, 0x10 +_080E4084: + ldr r0, _080E40A0 @ =gBattleAnimArgs + movs r1, 0x2 + ldrsh r0, [r0, r1] + lsls r5, r0, 5 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E40A8 + ldr r0, _080E40A4 @ =gSharedMem + 0x14800 + b _080E40AA + .align 2, 0 +_080E409C: .4byte gBattleAnimBankTarget +_080E40A0: .4byte gBattleAnimArgs +_080E40A4: .4byte gSharedMem + 0x14800 +_080E40A8: + ldr r0, _080E40C8 @ =gSharedMem + 0x18000 +_080E40AA: + adds r2, r5, r0 + lsls r1, r4, 5 + ldr r0, _080E40CC @ =gPlttBufferUnfaded + adds r1, r0 + adds r0, r2, 0 + movs r2, 0x20 + bl memcpy + adds r0, r6, 0 + bl DestroyAnimVisualTask + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E40C8: .4byte gSharedMem + 0x18000 +_080E40CC: .4byte gPlttBufferUnfaded + thumb_func_end sub_80E4028 + + thumb_func_start sub_80E40D0 +sub_80E40D0: @ 80E40D0 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + ldr r0, _080E4110 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E4114 + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_80791A8 + adds r1, r0, 0 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080E412C + movs r2, 0x1 +_080E4102: + lsrs r1, 1 + adds r4, 0x1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _080E4102 + b _080E412C + .align 2, 0 +_080E4110: .4byte gBattleAnimArgs +_080E4114: + cmp r0, 0x1 + bne _080E4120 + ldr r0, _080E411C @ =gBattleAnimBankAttacker + b _080E4126 + .align 2, 0 +_080E411C: .4byte gBattleAnimBankAttacker +_080E4120: + cmp r0, 0x2 + bne _080E412C + ldr r0, _080E4148 @ =gBattleAnimBankTarget +_080E4126: + ldrb r0, [r0] + adds r4, r0, 0 + adds r4, 0x10 +_080E412C: + lsls r1, r4, 5 + ldr r0, _080E414C @ =gPlttBufferUnfaded + adds r5, r1, r0 + ldr r0, _080E4150 @ =gBattleAnimArgs + movs r1, 0x2 + ldrsh r0, [r0, r1] + lsls r4, r0, 5 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E4158 + ldr r0, _080E4154 @ =gSharedMem + 0x14800 + b _080E415A + .align 2, 0 +_080E4148: .4byte gBattleAnimBankTarget +_080E414C: .4byte gPlttBufferUnfaded +_080E4150: .4byte gBattleAnimArgs +_080E4154: .4byte gSharedMem + 0x14800 +_080E4158: + ldr r0, _080E4174 @ =gSharedMem + 0x18000 +_080E415A: + adds r1, r4, r0 + adds r0, r5, 0 + movs r2, 0x20 + bl memcpy + adds r0, r6, 0 + bl DestroyAnimVisualTask + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080E4174: .4byte gSharedMem + 0x18000 + thumb_func_end sub_80E40D0 + + thumb_func_start sub_80E4178 +sub_80E4178: @ 80E4178 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r0, _080E41B8 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080E41BC + str r4, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl sub_80791A8 + adds r1, r0, 0 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080E41D4 + movs r2, 0x1 +_080E41AA: + lsrs r1, 1 + adds r4, 0x1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + beq _080E41AA + b _080E41D4 + .align 2, 0 +_080E41B8: .4byte gBattleAnimArgs +_080E41BC: + cmp r0, 0x1 + bne _080E41C8 + ldr r0, _080E41C4 @ =gBattleAnimBankAttacker + b _080E41CE + .align 2, 0 +_080E41C4: .4byte gBattleAnimBankAttacker +_080E41C8: + cmp r0, 0x2 + bne _080E41D4 + ldr r0, _080E41F4 @ =gBattleAnimBankTarget +_080E41CE: + ldrb r0, [r0] + adds r4, r0, 0 + adds r4, 0x10 +_080E41D4: + lsls r1, r4, 5 + ldr r0, _080E41F8 @ =gPlttBufferUnfaded + adds r0, r1, r0 + ldr r2, _080E41FC @ =gPlttBufferFaded + adds r1, r2 + movs r2, 0x20 + bl memcpy + adds r0, r5, 0 + bl DestroyAnimVisualTask + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E41F4: .4byte gBattleAnimBankTarget +_080E41F8: .4byte gPlttBufferUnfaded +_080E41FC: .4byte gPlttBufferFaded + thumb_func_end sub_80E4178 + + thumb_func_start sub_80E4200 +sub_80E4200: @ 80E4200 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl NotInBattle + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _080E4220 + ldr r1, _080E421C @ =gBattleAnimArgs + movs r0, 0x1 + strh r0, [r1, 0xE] + b _080E4224 + .align 2, 0 +_080E421C: .4byte gBattleAnimArgs +_080E4220: + ldr r0, _080E4230 @ =gBattleAnimArgs + strh r1, [r0, 0xE] +_080E4224: + adds r0, r4, 0 + bl DestroyAnimVisualTask + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E4230: .4byte gBattleAnimArgs + thumb_func_end sub_80E4200 + + thumb_func_start sub_80E4234 +sub_80E4234: @ 80E4234 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E4254 @ =gBattleAnimBankAttacker + ldr r1, _080E4258 @ =gBankTarget + ldrb r1, [r1] + strb r1, [r2] + ldr r2, _080E425C @ =gBattleAnimBankTarget + ldr r1, _080E4260 @ =gEffectBank + ldrb r1, [r1] + strb r1, [r2] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080E4254: .4byte gBattleAnimBankAttacker +_080E4258: .4byte gBankTarget +_080E425C: .4byte gBattleAnimBankTarget +_080E4260: .4byte gEffectBank + thumb_func_end sub_80E4234 + + thumb_func_start sub_80E4264 +sub_80E4264: @ 80E4264 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080E428C @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + adds r4, r0, 0 + ldr r0, _080E4290 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080E4298 + ldr r1, _080E4294 @ =gBattleAnimArgs + movs r0, 0x1 + b _080E429C + .align 2, 0 +_080E428C: .4byte gBattleAnimBankAttacker +_080E4290: .4byte gBattleAnimBankTarget +_080E4294: .4byte gBattleAnimArgs +_080E4298: + ldr r1, _080E42AC @ =gBattleAnimArgs + movs r0, 0 +_080E429C: + strh r0, [r1, 0xE] + adds r0, r5, 0 + bl DestroyAnimVisualTask + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080E42AC: .4byte gBattleAnimArgs + thumb_func_end sub_80E4264 + + thumb_func_start sub_80E42B0 +sub_80E42B0: @ 80E42B0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E42C8 @ =gBattleAnimBankTarget + ldr r1, _080E42CC @ =gBankTarget + ldrb r1, [r1] + strb r1, [r2] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080E42C8: .4byte gBattleAnimBankTarget +_080E42CC: .4byte gBankTarget + thumb_func_end sub_80E42B0 + + thumb_func_start sub_80E42D0 +sub_80E42D0: @ 80E42D0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080E42F0 @ =gBattleAnimBankAttacker + ldr r1, _080E42F4 @ =gBankAttacker + ldrb r1, [r1] + strb r1, [r2] + ldr r2, _080E42F8 @ =gBattleAnimBankTarget + ldr r1, _080E42FC @ =gEffectBank + ldrb r1, [r1] + strb r1, [r2] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080E42F0: .4byte gBattleAnimBankAttacker +_080E42F4: .4byte gBankAttacker +_080E42F8: .4byte gBattleAnimBankTarget +_080E42FC: .4byte gEffectBank + thumb_func_end sub_80E42D0 + + thumb_func_start sub_80E4300 +sub_80E4300: @ 80E4300 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080E4318 + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080E434E +_080E4318: + ldr r0, _080E4354 @ =gTasks + lsls r3, r4, 2 + adds r3, r4 + lsls r3, 3 + adds r3, r0 + ldr r1, _080E4358 @ =gBattleAnimBankAttacker + ldrb r0, [r1] + lsls r0, 2 + ldr r2, _080E435C @ =gSharedMem + 0x17800 + adds r0, r2 + ldr r0, [r0] + lsls r0, 31 + lsrs r0, 31 + strh r0, [r3, 0x8] + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1] + movs r2, 0x1 + orrs r0, r2 + strb r0, [r1] + ldr r0, _080E4360 @ =sub_80E4368 + str r0, [r3] + ldr r1, _080E4364 @ =gAnimVisualTaskCount + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] +_080E434E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E4354: .4byte gTasks +_080E4358: .4byte gBattleAnimBankAttacker +_080E435C: .4byte gSharedMem + 0x17800 +_080E4360: .4byte sub_80E4368 +_080E4364: .4byte gAnimVisualTaskCount + thumb_func_end sub_80E4300 + + thumb_func_start sub_80E4368 +sub_80E4368: @ 80E4368 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080E43B0 @ =gBattleAnimArgs + movs r2, 0xE + ldrsh r1, [r0, r2] + movs r0, 0x80 + lsls r0, 5 + cmp r1, r0 + bne _080E43A8 + ldr r0, _080E43B4 @ =gBattleAnimBankAttacker + ldrb r3, [r0] + lsls r3, 2 + ldr r0, _080E43B8 @ =gSharedMem + 0x17800 + adds r3, r0 + ldr r1, _080E43BC @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrb r0, [r0, 0x8] + movs r1, 0x1 + ands r1, r0 + ldrb r2, [r3] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, 0 + bl DestroyTask +_080E43A8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E43B0: .4byte gBattleAnimArgs +_080E43B4: .4byte gBattleAnimBankAttacker +_080E43B8: .4byte gSharedMem + 0x17800 +_080E43BC: .4byte gTasks + thumb_func_end sub_80E4368 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/note_spin.s b/asm/note_spin.s new file mode 100755 index 000000000..d0df90fd1 --- /dev/null +++ b/asm/note_spin.s @@ -0,0 +1,234 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D2E68 +sub_80D2E68: @ 80D2E68 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D2E8A + ldr r0, _080D2EC4 @ =gBattleAnimArgs + ldrh r1, [r0] + movs r0, 0x78 + subs r0, r1 + strh r0, [r4, 0x30] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080D2E8A: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x30 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080D2EA8 + ldrb r0, [r4, 0x5] + lsrs r0, 4 + adds r0, 0x10 + movs r1, 0 + bl sub_8079108 +_080D2EA8: + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r2, 0x30 + ldrsh r0, [r4, r2] + adds r0, 0x50 + cmp r1, r0 + bne _080D2EBC + adds r0, r4, 0 + bl move_anim_8072740 +_080D2EBC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D2EC4: .4byte gBattleAnimArgs + thumb_func_end sub_80D2E68 + + thumb_func_start sub_80D2EC8 +sub_80D2EC8: @ 80D2EC8 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080D2EF6 + movs r5, 0x78 + strh r5, [r6, 0x20] + ldr r4, _080D2F78 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r4, r2] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + subs r0, 0xF + strh r0, [r6, 0x22] + ldrb r1, [r4, 0x2] + adds r0, r6, 0 + bl StartSpriteAnim + strh r5, [r6, 0x38] + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x34] +_080D2EF6: + ldrh r0, [r6, 0x2E] + adds r0, 0x1 + movs r5, 0 + strh r0, [r6, 0x2E] + movs r1, 0x2E + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r6, 0x30] + movs r2, 0x2E + ldrsh r0, [r6, r2] + lsls r4, r0, 1 + adds r4, r0 + ldrh r0, [r6, 0x34] + adds r4, r0 + movs r2, 0xFF + ldrh r0, [r6, 0x3A] + adds r0, 0xA + movs r1, 0xFF + ands r0, r1 + strh r0, [r6, 0x3A] + ands r4, r2 + adds r0, r4, 0 + movs r1, 0x64 + bl Cos + strh r0, [r6, 0x24] + adds r0, r4, 0 + movs r1, 0xA + bl Sin + adds r4, r0, 0 + movs r1, 0x3A + ldrsh r0, [r6, r1] + movs r1, 0x4 + bl Cos + ldrh r2, [r6, 0x30] + adds r4, r2 + adds r0, r4 + strh r0, [r6, 0x26] + movs r0, 0x2E + ldrsh r1, [r6, r0] + movs r2, 0x38 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _080D2F72 + ldr r0, _080D2F7C @ =sub_80D2F80 + str r0, [r6, 0x1C] + strh r5, [r6, 0x2E] + adds r0, r6, 0 + bl oamt_add_pos2_onto_pos1 + movs r0, 0x5 + strh r0, [r6, 0x32] + strh r5, [r6, 0x36] + strh r5, [r6, 0x34] + adds r0, r6, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim +_080D2F72: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D2F78: .4byte gBattleAnimArgs +_080D2F7C: .4byte sub_80D2F80 + thumb_func_end sub_80D2EC8 + + thumb_func_start sub_80D2F80 +sub_80D2F80: @ 80D2F80 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x2E] + adds r0, 0x1 + strh r0, [r1, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + ble _080D2F9A + movs r0, 0 + strh r0, [r1, 0x2E] + ldr r0, _080D2FA0 @ =sub_80D2FA4 + str r0, [r1, 0x1C] +_080D2F9A: + pop {r0} + bx r0 + .align 2, 0 +_080D2FA0: .4byte sub_80D2FA4 + thumb_func_end sub_80D2F80 + + thumb_func_start sub_80D2FA4 +sub_80D2FA4: @ 80D2FA4 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x32] + ldrh r2, [r4, 0x34] + adds r0, r1, r2 + strh r0, [r4, 0x34] + strh r0, [r4, 0x26] + adds r1, 0x1 + strh r1, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x30 + ble _080D2FCE + lsls r0, r1, 16 + cmp r0, 0 + ble _080D2FCE + ldrh r0, [r4, 0x36] + subs r1, r0, 0x5 + strh r1, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x36] +_080D2FCE: + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + ble _080D3000 + movs r2, 0x32 + ldrsh r1, [r4, r2] + 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] + adds r0, r4, 0 + bl move_anim_8072740 +_080D3000: + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bne _080D300E + adds r0, r4, 0 + bl move_anim_8072740 +_080D300E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D2FA4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/poison.s b/asm/poison.s new file mode 100755 index 000000000..4411027e9 --- /dev/null +++ b/asm/poison.s @@ -0,0 +1,364 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ poison + + thumb_func_start sub_80D9D70 +sub_80D9D70: @ 80D9D70 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080D9DC4 @ =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D9D86 + adds r0, r5, 0 + movs r1, 0x2 + bl StartSpriteAnim +_080D9D86: + adds r0, r5, 0 + movs r1, 0x1 + bl sub_80787B0 + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x2E] + ldr r4, _080D9DC8 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080D9DCC @ =0x0000ffe2 + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_80786EC + ldr r0, _080D9DD0 @ =sub_80D9DD4 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9DC4: .4byte gBattleAnimArgs +_080D9DC8: .4byte gBattleAnimBankTarget +_080D9DCC: .4byte 0x0000ffe2 +_080D9DD0: .4byte sub_80D9DD4 + thumb_func_end sub_80D9D70 + + thumb_func_start sub_80D9DD4 +sub_80D9DD4: @ 80D9DD4 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080D9DE8 + adds r0, r4, 0 + bl move_anim_8072740 +_080D9DE8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9DD4 + + thumb_func_start sub_80D9DF0 +sub_80D9DF0: @ 80D9DF0 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldr r5, _080D9E64 @ =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D9E08 + adds r0, r4, 0 + movs r1, 0x2 + bl StartSpriteAnim +_080D9E08: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080D9E68 @ =gBattleAnimBankTarget + ldrb r0, [r0] + mov r6, sp + adds r6, 0x2 + movs r1, 0x1 + mov r2, sp + adds r3, r6, 0 + bl sub_807A3FC + ldr r0, _080D9E6C @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D9E36 + ldrh r0, [r5, 0x8] + negs r0, r0 + strh r0, [r5, 0x8] +_080D9E36: + 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, _080D9E70 @ =0x0000ffe2 + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_80786EC + ldr r0, _080D9E74 @ =sub_80D9E78 + str r0, [r4, 0x1C] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D9E64: .4byte gBattleAnimArgs +_080D9E68: .4byte gBattleAnimBankTarget +_080D9E6C: .4byte gBattleAnimBankAttacker +_080D9E70: .4byte 0x0000ffe2 +_080D9E74: .4byte sub_80D9E78 + thumb_func_end sub_80D9DF0 + + thumb_func_start sub_80D9E78 +sub_80D9E78: @ 80D9E78 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080D9E8C + adds r0, r4, 0 + bl move_anim_8072740 +_080D9E8C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9E78 + + thumb_func_start sub_80D9E94 +sub_80D9E94: @ 80D9E94 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080D9EE0 @ =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_8078A5C + 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, _080D9EE4 @ =sub_80D9EE8 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9EE0: .4byte gBattleAnimArgs +_080D9EE4: .4byte sub_80D9EE8 + thumb_func_end sub_80D9E94 + + thumb_func_start sub_80D9EE8 +sub_80D9EE8: @ 80D9EE8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078394 + 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 _080D9F0E + adds r0, r4, 0 + bl move_anim_8072740 +_080D9F0E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9EE8 + + thumb_func_start sub_80D9F14 +sub_80D9F14: @ 80D9F14 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D9F74 @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl sub_807A3FC + ldr r0, _080D9F78 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D9F40 + ldr r1, _080D9F7C @ =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080D9F40: + ldr r0, _080D9F7C @ =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, _080D9F80 @ =sub_8078B34 + str r0, [r4, 0x1C] + ldr r1, _080D9F84 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9F74: .4byte gBattleAnimBankTarget +_080D9F78: .4byte gBattleAnimBankAttacker +_080D9F7C: .4byte gBattleAnimArgs +_080D9F80: .4byte sub_8078B34 +_080D9F84: .4byte move_anim_8072740 + thumb_func_end sub_80D9F14 + + thumb_func_start sub_80D9F88 +sub_80D9F88: @ 80D9F88 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080D9FA0 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D9FA4 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8078764 + b _080D9FDA + .align 2, 0 +_080D9FA0: .4byte gBattleAnimArgs +_080D9FA4: + ldr r0, _080D9FE4 @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl sub_807A3FC + ldr r0, _080D9FE8 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D9FCA + ldrh r0, [r5] + negs r0, r0 + strh r0, [r5] +_080D9FCA: + 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] +_080D9FDA: + ldr r0, _080D9FEC @ =sub_80D9FF0 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9FE4: .4byte gBattleAnimBankTarget +_080D9FE8: .4byte gBattleAnimBankAttacker +_080D9FEC: .4byte sub_80D9FF0 + thumb_func_end sub_80D9F88 + + thumb_func_start sub_80D9FF0 +sub_80D9FF0: @ 80D9FF0 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0xB + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x30 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x26] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080DA02C + adds r0, r4, 0 + bl move_anim_8072740 +_080DA02C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D9FF0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s deleted file mode 100644 index 588a0ae80..000000000 --- a/asm/pokemon_summary_screen.s +++ /dev/null @@ -1,8775 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_809D844 -sub_809D844: @ 809D844 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_809D844 - - thumb_func_start sub_809D85C -sub_809D85C: @ 809D85C - push {lr} - ldr r1, _0809D8A0 @ =REG_BG1HOFS - ldr r0, _0809D8A4 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0809D8A8 @ =gUnknown_030041B4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0809D8AC @ =gUnknown_03004288 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0809D8B0 @ =gUnknown_03004280 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0809D8B4 @ =gUnknown_030041B0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0809D8B8 @ =gUnknown_030041B8 - ldrh r0, [r0] - strh r0, [r1] - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - .align 2, 0 -_0809D8A0: .4byte REG_BG1HOFS -_0809D8A4: .4byte gUnknown_030042C0 -_0809D8A8: .4byte gUnknown_030041B4 -_0809D8AC: .4byte gUnknown_03004288 -_0809D8B0: .4byte gUnknown_03004280 -_0809D8B4: .4byte gUnknown_030041B0 -_0809D8B8: .4byte gUnknown_030041B8 - thumb_func_end sub_809D85C - - thumb_func_start ShowPokemonSummaryScreen -ShowPokemonSummaryScreen: @ 809D8BC - push {r4-r7,lr} - ldr r4, [sp, 0x14] - lsls r4, 24 - lsrs r7, r4, 24 - ldr r6, _0809D904 @ =gPaletteFade - ldrb r4, [r6, 0x8] - movs r5, 0x80 - orrs r4, r5 - strb r4, [r6, 0x8] - ldr r5, _0809D908 @ =gSharedMem + 0x18000 - str r0, [r5] - movs r4, 0 - strb r7, [r5, 0x8] - strb r1, [r5, 0x9] - strb r2, [r5, 0xA] - str r3, [r5, 0x4] - adds r0, r5, 0 - adds r0, 0x74 - strb r4, [r0] - adds r1, r5, 0 - adds r1, 0x79 - movs r0, 0x4 - strb r0, [r1] - adds r0, r5, 0 - adds r0, 0x7C - movs r1, 0 - strh r4, [r0] - adds r0, 0x4 - strb r1, [r0] - subs r0, 0x5 - strb r1, [r0] - cmp r7, 0x4 - bls _0809D90C - movs r0, 0x1 - strb r0, [r5, 0xE] - b _0809D90E - .align 2, 0 -_0809D904: .4byte gPaletteFade -_0809D908: .4byte gSharedMem + 0x18000 -_0809D90C: - strb r1, [r5, 0xE] -_0809D90E: - cmp r7, 0x6 - bhi _0809D9D6 - lsls r0, r7, 2 - ldr r1, _0809D91C @ =_0809D920 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809D91C: .4byte _0809D920 - .align 2, 0 -_0809D920: - .4byte _0809D93C - .4byte _0809D9BC - .4byte _0809D992 - .4byte _0809D9D6 - .4byte _0809D966 - .4byte _0809D93C - .4byte _0809D9BC -_0809D93C: - adds r0, r5, 0 - adds r0, 0x75 - movs r1, 0 - strb r1, [r0] - adds r2, r5, 0 - adds r2, 0x76 - movs r0, 0x3 - strb r0, [r2] - adds r0, r5, 0 - adds r0, 0x77 - strb r1, [r0] - adds r0, 0x1 - strb r1, [r0] - adds r1, r5, 0 - adds r1, 0x7E - movs r0, 0x1 - strb r0, [r1] - adds r1, 0x1 - movs r0, 0x7 - strb r0, [r1] - b _0809D9D6 -_0809D966: - adds r0, r5, 0 - adds r0, 0x75 - movs r1, 0 - strb r1, [r0] - adds r2, r5, 0 - adds r2, 0x76 - movs r0, 0x3 - strb r0, [r2] - adds r0, r5, 0 - adds r0, 0x77 - strb r1, [r0] - adds r0, 0x1 - strb r1, [r0] - adds r0, 0x6 - movs r1, 0x1 - strb r1, [r0] - adds r2, 0x9 - movs r0, 0x7 - strb r0, [r2] - adds r0, r5, 0 - adds r0, 0x7B - b _0809D9D4 -_0809D992: - adds r1, r5, 0 - adds r1, 0x75 - movs r3, 0 - movs r0, 0x2 - strb r0, [r1] - adds r0, r5, 0 - adds r0, 0x76 - movs r2, 0x3 - strb r2, [r0] - adds r0, 0x1 - movs r1, 0x1 - strb r1, [r0] - adds r0, 0x1 - strb r1, [r0] - adds r0, 0x6 - strb r2, [r0] - adds r0, 0x1 - strb r3, [r0] - subs r0, 0x6 - strb r3, [r0] - b _0809D9D6 -_0809D9BC: - adds r1, r5, 0 - adds r1, 0x75 - movs r0, 0x2 - strb r0, [r1] - adds r1, 0x1 - movs r0, 0x3 - strb r0, [r1] - adds r0, r5, 0 - adds r0, 0x77 - movs r1, 0x1 - strb r1, [r0] - adds r0, 0x1 -_0809D9D4: - strb r1, [r0] -_0809D9D6: - adds r0, r5, 0 - adds r0, 0x75 - ldrb r0, [r0] - strb r0, [r5, 0xB] - ldr r0, _0809D9EC @ =sub_809DE44 - bl SetMainCallback2 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809D9EC: .4byte sub_809DE44 - thumb_func_end ShowPokemonSummaryScreen - - thumb_func_start sub_809D9F0 -sub_809D9F0: @ 809D9F0 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, [sp, 0x10] - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r5, 16 - lsrs r5, 16 - movs r4, 0x2 - str r4, [sp] - bl ShowPokemonSummaryScreen - ldr r0, _0809DA18 @ =gSharedMem + 0x18000 - adds r0, 0x7C - strh r5, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809DA18: .4byte gSharedMem + 0x18000 - thumb_func_end sub_809D9F0 - - thumb_func_start sub_809DA1C -sub_809DA1C: @ 809DA1C - push {lr} - ldr r0, _0809DA30 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x8] - cmp r0, 0x6 - bhi _0809DA78 - lsls r0, 2 - ldr r1, _0809DA34 @ =_0809DA38 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809DA30: .4byte gSharedMem + 0x18000 -_0809DA34: .4byte _0809DA38 - .align 2, 0 -_0809DA38: - .4byte _0809DA54 - .4byte _0809DA6C - .4byte _0809DA64 - .4byte _0809DA64 - .4byte _0809DA5C - .4byte _0809DA54 - .4byte _0809DA6C -_0809DA54: - ldr r0, _0809DA58 @ =SummaryScreenHandleKeyInput - b _0809DA6E - .align 2, 0 -_0809DA58: .4byte SummaryScreenHandleKeyInput -_0809DA5C: - ldr r0, _0809DA60 @ =SummaryScreenHandleKeyInput - b _0809DA6E - .align 2, 0 -_0809DA60: .4byte SummaryScreenHandleKeyInput -_0809DA64: - ldr r0, _0809DA68 @ =sub_809EB40 - b _0809DA6E - .align 2, 0 -_0809DA68: .4byte sub_809EB40 -_0809DA6C: - ldr r0, _0809DA7C @ =sub_809E3FC -_0809DA6E: - movs r1, 0 - bl CreateTask - ldr r1, _0809DA80 @ =gSharedMem + 0x18000 - strb r0, [r1, 0xF] -_0809DA78: - pop {r0} - bx r0 - .align 2, 0 -_0809DA7C: .4byte sub_809E3FC -_0809DA80: .4byte gSharedMem + 0x18000 - thumb_func_end sub_809DA1C - - thumb_func_start sub_809DA84 -sub_809DA84: @ 809DA84 - push {r4-r7,lr} - sub sp, 0x8 - ldr r1, _0809DAA4 @ =gMain - ldr r2, _0809DAA8 @ =0x0000043c - adds r0, r1, r2 - ldrb r0, [r0] - mov r12, r1 - cmp r0, 0x16 - bls _0809DA98 - b _0809DE00 -_0809DA98: - lsls r0, 2 - ldr r1, _0809DAAC @ =_0809DAB0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809DAA4: .4byte gMain -_0809DAA8: .4byte 0x0000043c -_0809DAAC: .4byte _0809DAB0 - .align 2, 0 -_0809DAB0: - .4byte _0809DB0C - .4byte _0809DB18 - .4byte _0809DB2C - .4byte _0809DB32 - .4byte _0809DB80 - .4byte _0809DB94 - .4byte _0809DBA0 - .4byte _0809DBBC - .4byte _0809DBC8 - .4byte _0809DBDC - .4byte _0809DC2C - .4byte _0809DC48 - .4byte _0809DC5C - .4byte _0809DC90 - .4byte _0809DCB0 - .4byte _0809DCC4 - .4byte _0809DCF8 - .4byte _0809DD02 - .4byte _0809DD30 - .4byte _0809DD3C - .4byte _0809DD68 - .4byte _0809DD98 - .4byte _0809DDE0 -_0809DB0C: - movs r0, 0 - bl SetVBlankCallback - bl ResetSpriteData - b _0809DDE8 -_0809DB18: - bl remove_some_task - ldr r1, _0809DB24 @ =gMain - ldr r2, _0809DB28 @ =0x0000043c - adds r1, r2 - b _0809DDEE - .align 2, 0 -_0809DB24: .4byte gMain -_0809DB28: .4byte 0x0000043c -_0809DB2C: - bl FreeAllSpritePalettes - b _0809DDE8 -_0809DB32: - movs r2, 0xC0 - lsls r2, 19 - movs r3, 0x80 - lsls r3, 9 - movs r5, 0 - ldr r1, _0809DB74 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - ldr r6, _0809DB78 @ =0x85000400 - movs r7, 0x85 - lsls r7, 24 -_0809DB48: - str r5, [sp, 0x4] - add r0, sp, 0x4 - str r0, [r1] - str r2, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _0809DB48 - str r5, [sp, 0x4] - add r0, sp, 0x4 - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _0809DB7C @ =0x0000043c - add r1, r12 - b _0809DDEE - .align 2, 0 -_0809DB74: .4byte 0x040000d4 -_0809DB78: .4byte 0x85000400 -_0809DB7C: .4byte 0x0000043c -_0809DB80: - bl sub_809DE64 - ldr r1, _0809DB8C @ =gMain - ldr r2, _0809DB90 @ =0x0000043c - adds r1, r2 - b _0809DDEE - .align 2, 0 -_0809DB8C: .4byte gMain -_0809DB90: .4byte 0x0000043c -_0809DB94: - ldr r0, _0809DB9C @ =gWindowConfig_81E6E6C - bl SetUpWindowConfig - b _0809DDE8 - .align 2, 0 -_0809DB9C: .4byte gWindowConfig_81E6E6C -_0809DBA0: - ldr r0, _0809DBB0 @ =gWindowConfig_81E6E6C - bl MultistepInitMenuWindowBegin - ldr r1, _0809DBB4 @ =gMain - ldr r2, _0809DBB8 @ =0x0000043c - adds r1, r2 - b _0809DDEE - .align 2, 0 -_0809DBB0: .4byte gWindowConfig_81E6E6C -_0809DBB4: .4byte gMain -_0809DBB8: .4byte 0x0000043c -_0809DBBC: - bl MultistepInitMenuWindowContinue - cmp r0, 0 - bne _0809DBC6 - b _0809DE38 -_0809DBC6: - b _0809DDE8 -_0809DBC8: - bl sub_809DA1C - ldr r1, _0809DBD4 @ =gMain - ldr r2, _0809DBD8 @ =0x0000043c - adds r1, r2 - b _0809DDEE - .align 2, 0 -_0809DBD4: .4byte gMain -_0809DBD8: .4byte 0x0000043c -_0809DBDC: - ldr r1, _0809DC08 @ =gSummaryScreenTextTiles - ldr r2, _0809DC0C @ =0x0600d000 - ldr r0, _0809DC10 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0809DC14 @ =0x800000a0 - str r1, [r0, 0x8] - ldr r1, [r0, 0x8] - ldr r1, _0809DC18 @ =gSummaryScreenButtonTiles - ldr r2, _0809DC1C @ =0x0600d140 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0809DC20 @ =0x80000080 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0809DC24 @ =gSharedMem + 0x18000 - adds r0, 0x74 - movs r1, 0 - strb r1, [r0] - ldr r1, _0809DC28 @ =0x0000043c - add r1, r12 - b _0809DDEE - .align 2, 0 -_0809DC08: .4byte gSummaryScreenTextTiles -_0809DC0C: .4byte 0x0600d000 -_0809DC10: .4byte 0x040000d4 -_0809DC14: .4byte 0x800000a0 -_0809DC18: .4byte gSummaryScreenButtonTiles -_0809DC1C: .4byte 0x0600d140 -_0809DC20: .4byte 0x80000080 -_0809DC24: .4byte gSharedMem + 0x18000 -_0809DC28: .4byte 0x0000043c -_0809DC2C: - bl sub_809DF00 - lsls r0, 24 - cmp r0, 0 - bne _0809DC38 - b _0809DE38 -_0809DC38: - ldr r0, _0809DC44 @ =gSharedMem + 0x18000 - adds r0, 0x74 - movs r1, 0 - strb r1, [r0] - b _0809DDE8 - .align 2, 0 -_0809DC44: .4byte gSharedMem + 0x18000 -_0809DC48: - bl sub_80A18C4 - ldr r1, _0809DC54 @ =gMain - ldr r2, _0809DC58 @ =0x0000043c - adds r1, r2 - b _0809DDEE - .align 2, 0 -_0809DC54: .4byte gMain -_0809DC58: .4byte 0x0000043c -_0809DC5C: - ldr r4, _0809DC78 @ =gSharedMem + 0x18010 - adds r0, r4, 0 - bl sub_809F678 - adds r0, r4, 0 - bl GetMonStatusAndPokerus - lsls r0, 24 - cmp r0, 0 - bne _0809DC7C - movs r0, 0 - bl sub_80A12D0 - b _0809DC82 - .align 2, 0 -_0809DC78: .4byte gSharedMem + 0x18010 -_0809DC7C: - movs r0, 0xA - bl sub_80A12D0 -_0809DC82: - ldr r0, _0809DC8C @ =gSharedMem + 0x18010 - bl sub_80A0EA4 - b _0809DDE8 - .align 2, 0 -_0809DC8C: .4byte gSharedMem + 0x18010 -_0809DC90: - bl sub_80A1950 - ldr r0, _0809DCA4 @ =gSharedMem + 0x18010 - bl sub_80A1D84 - ldr r1, _0809DCA8 @ =gMain - ldr r2, _0809DCAC @ =0x0000043c - adds r1, r2 - b _0809DDEE - .align 2, 0 -_0809DCA4: .4byte gSharedMem + 0x18010 -_0809DCA8: .4byte gMain -_0809DCAC: .4byte 0x0000043c -_0809DCB0: - ldr r4, _0809DCC0 @ =gSharedMem + 0x18010 - adds r0, r4, 0 - bl sub_80A1DE8 - adds r4, 0x64 - movs r0, 0 - strb r0, [r4] - b _0809DDE8 - .align 2, 0 -_0809DCC0: .4byte gSharedMem + 0x18010 -_0809DCC4: - ldr r4, _0809DCEC @ =gSharedMem + 0x18010 - adds r5, r4, 0 - adds r5, 0x64 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_809F6B4 - subs r4, 0x10 - strb r0, [r4, 0xC] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0809DCE0 - b _0809DE38 -_0809DCE0: - movs r0, 0 - strb r0, [r5] - ldr r1, _0809DCF0 @ =gMain - ldr r2, _0809DCF4 @ =0x0000043c - adds r1, r2 - b _0809DDEE - .align 2, 0 -_0809DCEC: .4byte gSharedMem + 0x18010 -_0809DCF0: .4byte gMain -_0809DCF4: .4byte 0x0000043c -_0809DCF8: - bl sub_809E044 - bl sub_80A0EE8 - b _0809DDE8 -_0809DD02: - ldr r1, _0809DD20 @ =gSharedMem + 0x18000 - ldrb r0, [r1, 0xB] - cmp r0, 0x1 - bhi _0809DD18 - ldr r0, _0809DD24 @ =gUnknown_083C1580 - ldrb r1, [r1, 0xB] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 -_0809DD18: - ldr r1, _0809DD28 @ =gMain - ldr r2, _0809DD2C @ =0x0000043c - adds r1, r2 - b _0809DDEE - .align 2, 0 -_0809DD20: .4byte gSharedMem + 0x18000 -_0809DD24: .4byte gUnknown_083C1580 -_0809DD28: .4byte gMain -_0809DD2C: .4byte 0x0000043c -_0809DD30: - ldr r0, _0809DD38 @ =gSharedMem + 0x18010 - bl sub_809FAC8 - b _0809DDE8 - .align 2, 0 -_0809DD38: .4byte gSharedMem + 0x18010 -_0809DD3C: - ldr r2, _0809DD58 @ =gUnknown_083C1598 - ldr r0, _0809DD5C @ =gSharedMem + 0x18000 - ldrb r1, [r0, 0xB] - lsls r1, 2 - adds r1, r2 - adds r0, 0x10 - ldr r1, [r1] - bl _call_via_r1 - ldr r1, _0809DD60 @ =gMain - ldr r2, _0809DD64 @ =0x0000043c - adds r1, r2 - b _0809DDEE - .align 2, 0 -_0809DD58: .4byte gUnknown_083C1598 -_0809DD5C: .4byte gSharedMem + 0x18000 -_0809DD60: .4byte gMain -_0809DD64: .4byte 0x0000043c -_0809DD68: - ldr r0, _0809DD84 @ =gSharedMem + 0x18010 - movs r1, 0x2D - bl GetMonData - adds r1, r0, 0 - cmp r1, 0 - beq _0809DD8C - ldr r1, _0809DD88 @ =gUnknown_030041B0 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - b _0809DDE8 - .align 2, 0 -_0809DD84: .4byte gSharedMem + 0x18010 -_0809DD88: .4byte gUnknown_030041B0 -_0809DD8C: - ldr r0, _0809DD94 @ =gUnknown_030041B0 - strh r1, [r0] - b _0809DDE8 - .align 2, 0 -_0809DD94: .4byte gUnknown_030041B0 -_0809DD98: - bl sub_809EBC4 - ldr r0, _0809DDB8 @ =gSharedMem + 0x18000 - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0 - beq _0809DDBC - movs r0, 0 - movs r1, 0 - bl sub_80A1488 - movs r0, 0 - movs r1, 0 - bl sub_80A1654 - b _0809DDCC - .align 2, 0 -_0809DDB8: .4byte gSharedMem + 0x18000 -_0809DDBC: - movs r0, 0xA - movs r1, 0 - bl sub_80A1488 - movs r0, 0xA - movs r1, 0 - bl sub_80A1654 -_0809DDCC: - bl sub_80A0DD0 - ldr r1, _0809DDD8 @ =gMain - ldr r2, _0809DDDC @ =0x0000043c - adds r1, r2 - b _0809DDEE - .align 2, 0 -_0809DDD8: .4byte gMain -_0809DDDC: .4byte 0x0000043c -_0809DDE0: - bl sub_8055870 - cmp r0, 0x1 - beq _0809DE38 -_0809DDE8: - ldr r1, _0809DDF8 @ =gMain - ldr r0, _0809DDFC @ =0x0000043c - adds r1, r0 -_0809DDEE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0809DE38 - .align 2, 0 -_0809DDF8: .4byte gMain -_0809DDFC: .4byte 0x0000043c -_0809DE00: - ldr r0, _0809DE2C @ =sub_809D85C - bl SetVBlankCallback - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginHardwarePaletteFade - ldr r0, _0809DE30 @ =sub_809D844 - bl SetMainCallback2 - ldr r2, _0809DE34 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - movs r0, 0x1 - b _0809DE3A - .align 2, 0 -_0809DE2C: .4byte sub_809D85C -_0809DE30: .4byte sub_809D844 -_0809DE34: .4byte gPaletteFade -_0809DE38: - movs r0, 0 -_0809DE3A: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_809DA84 - - thumb_func_start sub_809DE44 -sub_809DE44: @ 809DE44 - push {lr} -_0809DE46: - bl sub_809DA84 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0809DE5E - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809DE46 -_0809DE5E: - pop {r0} - bx r0 - thumb_func_end sub_809DE44 - - thumb_func_start sub_809DE64 -sub_809DE64: @ 809DE64 - ldr r1, _0809DED0 @ =REG_BG0CNT - ldr r2, _0809DED4 @ =0x00001e08 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _0809DED8 @ =0x00004801 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _0809DEDC @ =0x00004a02 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _0809DEE0 @ =0x00005c03 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _0809DEE4 @ =gUnknown_030042C0 - movs r0, 0 - strh r0, [r1] - ldr r1, _0809DEE8 @ =gUnknown_030041B4 - strh r0, [r1] - ldr r1, _0809DEEC @ =gUnknown_03004288 - strh r0, [r1] - ldr r1, _0809DEF0 @ =gUnknown_03004280 - strh r0, [r1] - ldr r1, _0809DEF4 @ =gUnknown_030041B0 - strh r0, [r1] - ldr r1, _0809DEF8 @ =gUnknown_030041B8 - strh r0, [r1] - ldr r1, _0809DEFC @ =REG_BG0HOFS - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - adds r1, 0x2 - strh r0, [r1] - adds r1, 0x32 - strh r0, [r1] - subs r1, 0x50 - movs r2, 0xFA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bx lr - .align 2, 0 -_0809DED0: .4byte REG_BG0CNT -_0809DED4: .4byte 0x00001e08 -_0809DED8: .4byte 0x00004801 -_0809DEDC: .4byte 0x00004a02 -_0809DEE0: .4byte 0x00005c03 -_0809DEE4: .4byte gUnknown_030042C0 -_0809DEE8: .4byte gUnknown_030041B4 -_0809DEEC: .4byte gUnknown_03004288 -_0809DEF0: .4byte gUnknown_03004280 -_0809DEF4: .4byte gUnknown_030041B0 -_0809DEF8: .4byte gUnknown_030041B8 -_0809DEFC: .4byte REG_BG0HOFS - thumb_func_end sub_809DE64 - - thumb_func_start sub_809DF00 -sub_809DF00: @ 809DF00 - push {lr} - ldr r0, _0809DF18 @ =gSharedMem + 0x18000 - adds r0, 0x74 - ldrb r0, [r0] - cmp r0, 0xC - bls _0809DF0E - b _0809E030 -_0809DF0E: - lsls r0, 2 - ldr r1, _0809DF1C @ =_0809DF20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809DF18: .4byte gSharedMem + 0x18000 -_0809DF1C: .4byte _0809DF20 - .align 2, 0 -_0809DF20: - .4byte _0809DF54 - .4byte _0809DF64 - .4byte _0809DF74 - .4byte _0809DF88 - .4byte _0809DF9C - .4byte _0809DFAC - .4byte _0809DFC4 - .4byte _0809DFD4 - .4byte _0809DFE0 - .4byte _0809DFEC - .4byte _0809DFF8 - .4byte _0809E004 - .4byte _0809E010 -_0809DF54: - ldr r0, _0809DF60 @ =gStatusScreen_Gfx - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - b _0809E030 - .align 2, 0 -_0809DF60: .4byte gStatusScreen_Gfx -_0809DF64: - ldr r0, _0809DF6C @ =gUnknown_08E73508 - ldr r1, _0809DF70 @ =0x0600e000 - b _0809DFB0 - .align 2, 0 -_0809DF6C: .4byte gUnknown_08E73508 -_0809DF70: .4byte 0x0600e000 -_0809DF74: - ldr r0, _0809DF80 @ =gUnknown_08E74E88 - ldr r1, _0809DF84 @ =0x0600e800 - bl LZDecompressVram - b _0809E030 - .align 2, 0 -_0809DF80: .4byte gUnknown_08E74E88 -_0809DF84: .4byte 0x0600e800 -_0809DF88: - ldr r0, _0809DF94 @ =gStatusScreen_Tilemap - ldr r1, _0809DF98 @ =0x06004800 - bl LZDecompressVram - b _0809E030 - .align 2, 0 -_0809DF94: .4byte gStatusScreen_Tilemap -_0809DF98: .4byte 0x06004800 -_0809DF9C: - ldr r0, _0809DFA4 @ =gUnknown_08E73E88 - ldr r1, _0809DFA8 @ =0x06005800 - b _0809DFB0 - .align 2, 0 -_0809DFA4: .4byte gUnknown_08E73E88 -_0809DFA8: .4byte 0x06005800 -_0809DFAC: - ldr r0, _0809DFBC @ =gUnknown_08E74688 - ldr r1, _0809DFC0 @ =0x06006800 -_0809DFB0: - movs r2, 0x80 - lsls r2, 3 - bl CpuSet - b _0809E030 - .align 2, 0 -_0809DFBC: .4byte gUnknown_08E74688 -_0809DFC0: .4byte 0x06006800 -_0809DFC4: - ldr r0, _0809DFD0 @ =gStatusScreen_Pal - movs r1, 0 - movs r2, 0xA0 - bl LoadCompressedPalette - b _0809E030 - .align 2, 0 -_0809DFD0: .4byte gStatusScreen_Pal -_0809DFD4: - ldr r0, _0809DFDC @ =gUnknown_083C11B8 - bl LoadCompressedObjectPic - b _0809E030 - .align 2, 0 -_0809DFDC: .4byte gUnknown_083C11B8 -_0809DFE0: - ldr r0, _0809DFE8 @ =gUnknown_083C1270 - bl LoadCompressedObjectPic - b _0809E030 - .align 2, 0 -_0809DFE8: .4byte gUnknown_083C1270 -_0809DFEC: - ldr r0, _0809DFF4 @ =gUnknown_083C12F4 - bl LoadCompressedObjectPic - b _0809E030 - .align 2, 0 -_0809DFF4: .4byte gUnknown_083C12F4 -_0809DFF8: - ldr r0, _0809E000 @ =gUnknown_083C12FC - bl LoadCompressedObjectPalette - b _0809E030 - .align 2, 0 -_0809E000: .4byte gUnknown_083C12FC -_0809E004: - ldr r0, _0809E00C @ =gUnknown_083C1278 - bl LoadCompressedObjectPalette - b _0809E030 - .align 2, 0 -_0809E00C: .4byte gUnknown_083C1278 -_0809E010: - ldr r0, _0809E028 @ =gMoveTypes_Pal - movs r1, 0xE8 - lsls r1, 1 - movs r2, 0x60 - bl LoadCompressedPalette - ldr r0, _0809E02C @ =gSharedMem + 0x18000 - adds r0, 0x74 - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - b _0809E03C - .align 2, 0 -_0809E028: .4byte gMoveTypes_Pal -_0809E02C: .4byte gSharedMem + 0x18000 -_0809E030: - ldr r1, _0809E040 @ =gSharedMem + 0x18000 - adds r1, 0x74 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 -_0809E03C: - pop {r1} - bx r1 - .align 2, 0 -_0809E040: .4byte gSharedMem + 0x18000 - thumb_func_end sub_809DF00 - - thumb_func_start sub_809E044 -sub_809E044: @ 809E044 - push {r4,r5,lr} - ldr r4, _0809E0F4 @ =gUnknownPalette_81E6692+0x1C - adds r0, r4, 0 - movs r1, 0x81 - movs r2, 0x2 - bl LoadPalette - adds r5, r4, 0x2 - adds r0, r5, 0 - movs r1, 0x88 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0x8F - movs r2, 0x2 - bl LoadPalette - adds r0, r5, 0 - movs r1, 0x89 - movs r2, 0x2 - bl LoadPalette - subs r5, 0x12 - adds r0, r5, 0 - movs r1, 0xD1 - movs r2, 0x4 - bl LoadPalette - adds r0, r4, 0 - subs r0, 0x8 - movs r1, 0xD3 - movs r2, 0x4 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0xD5 - movs r2, 0x4 - bl LoadPalette - adds r0, r5, 0 - movs r1, 0xD7 - movs r2, 0x4 - bl LoadPalette - adds r0, r4, 0 - subs r0, 0x14 - movs r1, 0xD9 - movs r2, 0x4 - bl LoadPalette - adds r0, r4, 0 - subs r0, 0xC - movs r1, 0xDB - movs r2, 0x4 - bl LoadPalette - adds r0, r4, 0 - subs r0, 0x18 - movs r1, 0xDD - movs r2, 0x2 - bl LoadPalette - subs r5, 0x6 - adds r0, r5, 0 - movs r1, 0xDE - movs r2, 0x2 - bl LoadPalette - subs r4, 0x1A - adds r0, r4, 0 - movs r1, 0xDF - movs r2, 0x2 - bl LoadPalette - ldr r0, _0809E0F8 @ =gFontDefaultPalette - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - adds r0, r5, 0 - movs r1, 0xF9 - movs r2, 0x2 - bl LoadPalette - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809E0F4: .4byte gUnknownPalette_81E6692+0x1C -_0809E0F8: .4byte gFontDefaultPalette - thumb_func_end sub_809E044 - - thumb_func_start SummaryScreenExit -SummaryScreenExit: @ 809E0FC - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0809E134 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809E138 @ =sub_809E13C - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809E134: .4byte gTasks -_0809E138: .4byte sub_809E13C - thumb_func_end SummaryScreenExit - - thumb_func_start sub_809E13C -sub_809E13C: @ 809E13C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_8055870 - cmp r0, 0x1 - beq _0809E182 - ldr r0, _0809E188 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0809E182 - ldr r1, _0809E18C @ =gUnknown_020384F0 - ldr r4, _0809E190 @ =gSharedMem + 0x18000 - ldrb r0, [r4, 0x9] - strb r0, [r1] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl StopCryAndClearCrySongs - ldr r0, _0809E194 @ =gMPlay_BGM - ldr r1, _0809E198 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - ldr r0, [r4, 0x4] - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_0809E182: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809E188: .4byte gPaletteFade -_0809E18C: .4byte gUnknown_020384F0 -_0809E190: .4byte gSharedMem + 0x18000 -_0809E194: .4byte gMPlay_BGM -_0809E198: .4byte 0x0000ffff - thumb_func_end sub_809E13C - - thumb_func_start SummaryScreenHandleKeyInput -SummaryScreenHandleKeyInput: @ 809E19C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0809E1C8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0809E25A - ldr r5, _0809E1CC @ =gMain - ldrh r1, [r5, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0809E1D0 - movs r1, 0x1 - negs r1, r1 - adds r0, r4, 0 - bl SummaryScreenHandleUpDownInput - b _0809E25A - .align 2, 0 -_0809E1C8: .4byte gPaletteFade -_0809E1CC: .4byte gMain -_0809E1D0: - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0809E1E2 - adds r0, r4, 0 - movs r1, 0x1 - bl SummaryScreenHandleUpDownInput - b _0809E25A -_0809E1E2: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0809E1F6 - bl sub_80F9284 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809E202 -_0809E1F6: - movs r1, 0x1 - negs r1, r1 - adds r0, r4, 0 - bl SummaryScreenHandleLeftRightInput - b _0809E25A -_0809E202: - ldrh r1, [r5, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0809E218 - bl sub_80F9284 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0809E222 -_0809E218: - adds r0, r4, 0 - movs r1, 0x1 - bl SummaryScreenHandleLeftRightInput - b _0809E25A -_0809E222: - ldrh r1, [r5, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809E24C - ldr r5, _0809E248 @ =gSharedMem + 0x18000 - ldrb r0, [r5, 0xB] - cmp r0, 0x1 - bls _0809E23A - adds r0, r4, 0 - bl SummaryScreenHandleAButton -_0809E23A: - ldrb r0, [r5, 0xB] - cmp r0, 0 - bne _0809E25A - adds r0, r4, 0 - bl SummaryScreenExit - b _0809E25A - .align 2, 0 -_0809E248: .4byte gSharedMem + 0x18000 -_0809E24C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809E25A - adds r0, r4, 0 - bl SummaryScreenExit -_0809E25A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end SummaryScreenHandleKeyInput - - thumb_func_start sub_809E260 -sub_809E260: @ 809E260 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0809E29C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0809E276 - b _0809E3EE -_0809E276: - ldr r5, _0809E2A0 @ =gMain - ldrh r1, [r5, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0809E2AC - ldr r1, _0809E2A4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x8] - subs r1, 0x5 - ldr r2, _0809E2A8 @ =gSharedMem + 0x18079 - adds r0, r4, 0 - bl sub_809E8F0 - b _0809E3EE - .align 2, 0 -_0809E29C: .4byte gPaletteFade -_0809E2A0: .4byte gMain -_0809E2A4: .4byte gTasks -_0809E2A8: .4byte gSharedMem + 0x18079 -_0809E2AC: - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0809E2D8 - ldr r1, _0809E2D0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x8] - ldr r2, _0809E2D4 @ =gSharedMem + 0x18079 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_809E8F0 - b _0809E3EE - .align 2, 0 -_0809E2D0: .4byte gTasks -_0809E2D4: .4byte gSharedMem + 0x18079 -_0809E2D8: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0809E2EC - bl sub_80F9284 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809E324 -_0809E2EC: - ldr r1, _0809E320 @ =gSharedMem + 0x18000 - ldrb r0, [r1, 0xB] - cmp r0, 0x3 - bne _0809E314 - adds r0, r1, 0 - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0x4 - bne _0809E308 - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - beq _0809E314 -_0809E308: - movs r0, 0 - movs r1, 0xE - movs r2, 0x9 - movs r3, 0x12 - bl MenuZeroFillWindowRect -_0809E314: - movs r1, 0x1 - negs r1, r1 - adds r0, r4, 0 - bl SummaryScreenHandleLeftRightInput - b _0809E3EE - .align 2, 0 -_0809E320: .4byte gSharedMem + 0x18000 -_0809E324: - ldrh r1, [r5, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0809E33A - bl sub_80F9284 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0809E37C -_0809E33A: - ldr r1, _0809E378 @ =gSharedMem + 0x18000 - adds r2, r1, 0 - adds r2, 0x76 - ldrb r0, [r1, 0xB] - ldrb r2, [r2] - cmp r0, r2 - beq _0809E3EE - cmp r0, 0x2 - bne _0809E36C - adds r0, r1, 0 - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0x4 - bne _0809E360 - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - beq _0809E36C -_0809E360: - movs r0, 0 - movs r1, 0xE - movs r2, 0x9 - movs r3, 0x12 - bl MenuZeroFillWindowRect -_0809E36C: - adds r0, r4, 0 - movs r1, 0x1 - bl SummaryScreenHandleLeftRightInput - b _0809E3EE - .align 2, 0 -_0809E378: .4byte gSharedMem + 0x18000 -_0809E37C: - ldrh r1, [r5, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809E3D4 - adds r0, r4, 0 - bl sub_809F7D0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0809E3A0 - ldr r0, _0809E3BC @ =gSharedMem + 0x18000 - adds r5, r0, 0 - adds r5, 0x79 - ldrb r0, [r5] - cmp r0, 0x4 - bne _0809E3C4 -_0809E3A0: - ldr r0, _0809E3BC @ =gSharedMem + 0x18000 - adds r1, r0, 0 - adds r1, 0x79 - ldrb r1, [r1] - adds r0, 0x7A - strb r1, [r0] - ldr r1, _0809E3C0 @ =gSpecialVar_0x8005 - ldrb r0, [r0] - strh r0, [r1] - adds r0, r4, 0 - bl SummaryScreenExit - b _0809E3EE - .align 2, 0 -_0809E3BC: .4byte gSharedMem + 0x18000 -_0809E3C0: .4byte gSpecialVar_0x8005 -_0809E3C4: - movs r0, 0x20 - bl PlaySE - ldrb r1, [r5] - adds r0, r4, 0 - bl sub_809F9D0 - b _0809E3EE -_0809E3D4: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809E3EE - ldr r0, _0809E3F4 @ =gSharedMem + 0x18000 - adds r0, 0x7A - movs r1, 0x4 - strb r1, [r0] - ldr r0, _0809E3F8 @ =gSpecialVar_0x8005 - strh r1, [r0] - adds r0, r4, 0 - bl SummaryScreenExit -_0809E3EE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809E3F4: .4byte gSharedMem + 0x18000 -_0809E3F8: .4byte gSpecialVar_0x8005 - thumb_func_end sub_809E260 - - thumb_func_start sub_809E3FC -sub_809E3FC: @ 809E3FC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, r5, 0 - ldr r0, _0809E438 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0809E502 - ldr r0, _0809E43C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0809E448 - ldr r1, _0809E440 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x8] - subs r1, 0x5 - ldr r2, _0809E444 @ =gSharedMem + 0x18079 - adds r0, r5, 0 - bl sub_809E8F0 - b _0809E502 - .align 2, 0 -_0809E438: .4byte gPaletteFade -_0809E43C: .4byte gMain -_0809E440: .4byte gTasks -_0809E444: .4byte gSharedMem + 0x18079 -_0809E448: - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0809E474 - ldr r1, _0809E46C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x8] - ldr r2, _0809E470 @ =gSharedMem + 0x18079 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_809E8F0 - b _0809E502 - .align 2, 0 -_0809E46C: .4byte gTasks -_0809E470: .4byte gSharedMem + 0x18079 -_0809E474: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809E4EE - ldr r4, _0809E4A8 @ =gSharedMem + 0x18000 - adds r6, r4, 0 - adds r6, 0x79 - ldrb r0, [r6] - cmp r0, 0x4 - beq _0809E4E0 - adds r0, r4, 0 - adds r0, 0x7B - ldrb r0, [r0] - cmp r0, 0 - bne _0809E4E0 - adds r0, r4, 0 - adds r0, 0x10 - bl sub_809E508 - lsls r0, 24 - cmp r0, 0 - bne _0809E4AC - movs r0, 0x20 - bl PlaySE - b _0809E502 - .align 2, 0 -_0809E4A8: .4byte gSharedMem + 0x18000 -_0809E4AC: - movs r0, 0x5 - bl PlaySE - ldrb r1, [r6] - adds r0, r4, 0 - adds r0, 0x7A - strb r1, [r0] - movs r0, 0x1 - bl sub_80A1B40 - movs r0, 0x13 - bl sub_80A1A30 - ldr r1, _0809E4D8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809E4DC @ =sub_809E534 - str r1, [r0] - b _0809E502 - .align 2, 0 -_0809E4D8: .4byte gTasks -_0809E4DC: .4byte sub_809E534 -_0809E4E0: - movs r0, 0x5 - bl PlaySE - adds r0, r7, 0 - bl sub_809EAC8 - b _0809E502 -_0809E4EE: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809E502 - movs r0, 0x5 - bl PlaySE - adds r0, r7, 0 - bl sub_809EAC8 -_0809E502: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_809E3FC - - thumb_func_start sub_809E508 -sub_809E508: @ 809E508 - push {r4,r5,lr} - adds r5, r0, 0 - movs r4, 0x1 -_0809E50E: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_809F760 - lsls r0, 16 - cmp r0, 0 - beq _0809E520 - movs r0, 0x1 - b _0809E52C -_0809E520: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _0809E50E - movs r0, 0 -_0809E52C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809E508 - - thumb_func_start sub_809E534 -sub_809E534: @ 809E534 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - adds r2, r3, 0 - ldr r0, _0809E564 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0809E570 - ldr r1, _0809E568 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x3 - strh r1, [r0, 0x8] - subs r1, 0x4 - ldr r2, _0809E56C @ =gSharedMem + 0x1807A - adds r0, r3, 0 - bl sub_809E8F0 - b _0809E5C0 - .align 2, 0 -_0809E564: .4byte gMain -_0809E568: .4byte gTasks -_0809E56C: .4byte gSharedMem + 0x1807A -_0809E570: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0809E59C - ldr r1, _0809E594 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x3 - strh r1, [r0, 0x8] - ldr r2, _0809E598 @ =gSharedMem + 0x1807A - adds r0, r3, 0 - movs r1, 0x1 - bl sub_809E8F0 - b _0809E5C0 - .align 2, 0 -_0809E594: .4byte gTasks -_0809E598: .4byte gSharedMem + 0x1807A -_0809E59C: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809E5AE - adds r0, r3, 0 - movs r1, 0x1 - bl sub_809E83C - b _0809E5C0 -_0809E5AE: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809E5C0 - movs r1, 0x1 - negs r1, r1 - adds r0, r2, 0 - bl sub_809E83C -_0809E5C0: - pop {r0} - bx r0 - thumb_func_end sub_809E534 - - thumb_func_start sub_809E5C4 -sub_809E5C4: @ 809E5C4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - ldr r1, _0809E6D0 @ =gSharedMem + 0x18000 - ldr r5, [r1] - ldrb r2, [r1, 0x9] - movs r0, 0x64 - muls r0, r2 - adds r5, r0 - adds r0, r1, 0 - adds r0, 0x79 - ldrb r0, [r0] - mov r8, r0 - adds r1, 0x7A - ldrb r6, [r1] - adds r0, 0xD - str r0, [sp, 0x8] - adds r0, r5, 0 - ldr r1, [sp, 0x8] - bl GetMonData - mov r1, sp - adds r1, 0x2 - str r1, [sp, 0x14] - strh r0, [r1] - adds r2, r6, 0 - adds r2, 0xD - str r2, [sp, 0xC] - adds r0, r5, 0 - adds r1, r2, 0 - bl GetMonData - mov r1, sp - strh r0, [r1] - mov r3, r8 - adds r3, 0x11 - str r3, [sp, 0x10] - adds r0, r5, 0 - adds r1, r3, 0 - bl GetMonData - mov r7, sp - adds r7, 0x5 - str r7, [sp, 0x18] - strb r0, [r7] - adds r0, r6, 0 - adds r0, 0x11 - str r0, [sp, 0x1C] - adds r0, r5, 0 - ldr r1, [sp, 0x1C] - bl GetMonData - add r1, sp, 0x4 - mov r10, r1 - strb r0, [r1] - adds r0, r5, 0 - movs r1, 0x15 - bl GetMonData - mov r4, sp - adds r4, 0x6 - strb r0, [r4] - ldr r1, _0809E6D4 @ =gUnknown_08208238 - mov r2, r8 - adds r0, r2, r1 - ldrb r0, [r0] - mov r9, r0 - ldrb r0, [r4] - adds r2, r0, 0 - mov r3, r9 - ands r2, r3 - mov r7, r8 - lsls r7, 1 - mov r8, r7 - asrs r2, r7 - lsls r2, 24 - lsrs r2, 24 - adds r1, r6, r1 - ldrb r3, [r1] - adds r1, r0, 0 - ands r1, r3 - lsls r6, 1 - asrs r1, r6 - lsls r1, 24 - lsrs r1, 24 - mov r7, r9 - bics r0, r7 - strb r0, [r4] - ldrb r0, [r4] - bics r0, r3 - strb r0, [r4] - lsls r2, r6 - mov r0, r8 - lsls r1, r0 - adds r2, r1 - ldrb r0, [r4] - orrs r0, r2 - strb r0, [r4] - adds r0, r5, 0 - ldr r1, [sp, 0x8] - mov r2, sp - bl SetMonData - adds r0, r5, 0 - ldr r1, [sp, 0xC] - ldr r2, [sp, 0x14] - bl SetMonData - adds r0, r5, 0 - ldr r1, [sp, 0x10] - mov r2, r10 - bl SetMonData - adds r0, r5, 0 - ldr r1, [sp, 0x1C] - ldr r2, [sp, 0x18] - bl SetMonData - adds r0, r5, 0 - movs r1, 0x15 - adds r2, r4, 0 - bl SetMonData - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809E6D0: .4byte gSharedMem + 0x18000 -_0809E6D4: .4byte gUnknown_08208238 - thumb_func_end sub_809E5C4 - - thumb_func_start sub_809E6D8 -sub_809E6D8: @ 809E6D8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - ldr r2, _0809E7E8 @ =gSharedMem + 0x18000 - ldr r5, [r2] - ldrb r1, [r2, 0x9] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r5, r0 - adds r0, r2, 0 - adds r0, 0x79 - ldrb r0, [r0] - mov r8, r0 - adds r2, 0x7A - ldrb r6, [r2] - adds r0, 0xD - str r0, [sp, 0x8] - adds r0, r5, 0 - ldr r1, [sp, 0x8] - bl GetBoxMonData - mov r1, sp - adds r1, 0x2 - str r1, [sp, 0x14] - strh r0, [r1] - adds r2, r6, 0 - adds r2, 0xD - str r2, [sp, 0xC] - adds r0, r5, 0 - adds r1, r2, 0 - bl GetBoxMonData - mov r1, sp - strh r0, [r1] - mov r3, r8 - adds r3, 0x11 - str r3, [sp, 0x10] - adds r0, r5, 0 - adds r1, r3, 0 - bl GetBoxMonData - mov r7, sp - adds r7, 0x5 - str r7, [sp, 0x18] - strb r0, [r7] - adds r0, r6, 0 - adds r0, 0x11 - str r0, [sp, 0x1C] - adds r0, r5, 0 - ldr r1, [sp, 0x1C] - bl GetBoxMonData - add r1, sp, 0x4 - mov r10, r1 - strb r0, [r1] - adds r0, r5, 0 - movs r1, 0x15 - bl GetBoxMonData - mov r4, sp - adds r4, 0x6 - strb r0, [r4] - ldr r1, _0809E7EC @ =gUnknown_08208238 - mov r2, r8 - adds r0, r2, r1 - ldrb r0, [r0] - mov r9, r0 - ldrb r0, [r4] - adds r2, r0, 0 - mov r3, r9 - ands r2, r3 - mov r7, r8 - lsls r7, 1 - mov r8, r7 - asrs r2, r7 - lsls r2, 24 - lsrs r2, 24 - adds r1, r6, r1 - ldrb r3, [r1] - adds r1, r0, 0 - ands r1, r3 - lsls r6, 1 - asrs r1, r6 - lsls r1, 24 - lsrs r1, 24 - mov r7, r9 - bics r0, r7 - strb r0, [r4] - ldrb r0, [r4] - bics r0, r3 - strb r0, [r4] - lsls r2, r6 - mov r0, r8 - lsls r1, r0 - adds r2, r1 - ldrb r0, [r4] - orrs r0, r2 - strb r0, [r4] - adds r0, r5, 0 - ldr r1, [sp, 0x8] - mov r2, sp - bl SetBoxMonData - adds r0, r5, 0 - ldr r1, [sp, 0xC] - ldr r2, [sp, 0x14] - bl SetBoxMonData - adds r0, r5, 0 - ldr r1, [sp, 0x10] - mov r2, r10 - bl SetBoxMonData - adds r0, r5, 0 - ldr r1, [sp, 0x1C] - ldr r2, [sp, 0x18] - bl SetBoxMonData - adds r0, r5, 0 - movs r1, 0x15 - adds r2, r4, 0 - bl SetBoxMonData - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809E7E8: .4byte gSharedMem + 0x18000 -_0809E7EC: .4byte gUnknown_08208238 - thumb_func_end sub_809E6D8 - - thumb_func_start sub_809E7F0 -sub_809E7F0: @ 809E7F0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_809F5F8 - lsls r0, 24 - cmp r0, 0 - beq _0809E828 - ldr r1, _0809E830 @ =gSharedMem + 0x18000 - adds r2, r1, 0 - adds r2, 0x74 - movs r0, 0 - strb r0, [r2] - adds r0, r1, 0 - adds r0, 0x10 - adds r1, 0x79 - bl sub_80A0428 - ldr r1, _0809E834 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809E838 @ =sub_809E3FC - str r1, [r0] - adds r0, r4, 0 - bl sub_80A2078 -_0809E828: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809E830: .4byte gSharedMem + 0x18000 -_0809E834: .4byte gTasks -_0809E838: .4byte sub_809E3FC - thumb_func_end sub_809E7F0 - - thumb_func_start sub_809E83C -sub_809E83C: @ 809E83C - push {r4,r5,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - movs r0, 0x13 - bl sub_80A1B1C - movs r0, 0 - bl sub_80A1B40 - cmp r4, 0x1 - bne _0809E8C0 - ldr r1, _0809E87C @ =gSharedMem + 0x18000 - adds r0, r1, 0 - adds r0, 0x79 - adds r2, r1, 0 - adds r2, 0x7A - ldrb r0, [r0] - ldrb r2, [r2] - cmp r0, r2 - beq _0809E8CA - ldrb r0, [r1, 0xE] - cmp r0, 0 - bne _0809E880 - bl sub_809E5C4 - b _0809E884 - .align 2, 0 -_0809E87C: .4byte gSharedMem + 0x18000 -_0809E880: - bl sub_809E6D8 -_0809E884: - ldr r4, _0809E8B4 @ =gSharedMem + 0x18000 - adds r0, r4, 0 - adds r0, 0x7A - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x79 - strb r0, [r1] - adds r0, r4, 0 - adds r0, 0x10 - bl sub_809F678 - adds r1, r4, 0 - adds r1, 0x74 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _0809E8B8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809E8BC @ =sub_809E7F0 - str r1, [r0] - b _0809E8DE - .align 2, 0 -_0809E8B4: .4byte gSharedMem + 0x18000 -_0809E8B8: .4byte gTasks -_0809E8BC: .4byte sub_809E7F0 -_0809E8C0: - ldr r0, _0809E8E4 @ =gSharedMem + 0x18010 - adds r1, r0, 0 - adds r1, 0x69 - bl sub_80A0428 -_0809E8CA: - ldr r0, _0809E8E8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0809E8EC @ =sub_809E3FC - str r0, [r1] - adds r0, r5, 0 - bl sub_80A2078 -_0809E8DE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809E8E4: .4byte gSharedMem + 0x18010 -_0809E8E8: .4byte gTasks -_0809E8EC: .4byte sub_809E3FC - thumb_func_end sub_809E83C - - thumb_func_start sub_809E8F0 -sub_809E8F0: @ 809E8F0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r4, r1, 0 - mov r9, r2 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - str r0, [sp] - movs r0, 0x5 - bl PlaySE - mov r1, r9 - ldrb r6, [r1] - ldr r1, _0809E944 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldrb r0, [r0, 0x8] - movs r2, 0 - lsls r4, 24 - asrs r4, 24 - mov r10, r4 - lsls r7, r0, 24 -_0809E930: - lsls r0, r6, 24 - asrs r0, 24 - add r0, r10 - lsls r0, 24 - lsrs r6, r0, 24 - asrs r1, r0, 24 - cmp r0, r7 - ble _0809E948 - movs r6, 0 - b _0809E94E - .align 2, 0 -_0809E944: .4byte gTasks -_0809E948: - cmp r1, 0 - bge _0809E94E - lsrs r6, r7, 24 -_0809E94E: - lsls r4, r6, 24 - lsrs r1, r4, 24 - ldr r0, _0809EA10 @ =gSharedMem + 0x18010 - str r2, [sp, 0x4] - bl sub_809F760 - lsls r0, 16 - adds r5, r4, 0 - ldr r2, [sp, 0x4] - cmp r0, 0 - bne _0809E97A - asrs r0, r5, 24 - cmp r0, 0x4 - beq _0809E97A - lsls r0, r2, 24 - movs r3, 0x80 - lsls r3, 17 - adds r0, r3 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _0809E930 -_0809E97A: - mov r1, r9 - ldrb r0, [r1] - cmp r0, 0x4 - bne _0809E996 - asrs r0, r5, 24 - cmp r0, 0x4 - beq _0809E996 - ldr r0, _0809EA14 @ =gSharedMem + 0x18000 - adds r0, 0x7C - ldrh r0, [r0] - mov r2, r8 - lsls r7, r2, 2 - cmp r0, 0 - beq _0809E9AC -_0809E996: - ldr r2, _0809EA18 @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - adds r0, r1, r3 - lsls r0, 3 - adds r0, r2 - movs r2, 0x22 - ldrsh r0, [r0, r2] - adds r7, r1, 0 - cmp r0, 0x1 - bne _0809E9D0 -_0809E9AC: - lsrs r4, r5, 24 - movs r0, 0x2 - adds r1, r4, 0 - bl sub_80A1488 - movs r0, 0x2 - adds r1, r4, 0 - bl sub_80A1654 - ldr r1, _0809EA18 @ =gTasks - mov r3, r8 - adds r0, r7, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x22] - movs r0, 0 - str r0, [sp] -_0809E9D0: - mov r1, r9 - ldrb r0, [r1] - cmp r0, 0x4 - beq _0809E9FE - asrs r0, r5, 24 - cmp r0, 0x4 - bne _0809E9FE - ldr r0, _0809EA14 @ =gSharedMem + 0x18000 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - bne _0809E9FE - movs r4, 0x2 - negs r4, r4 - lsrs r5, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A1488 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A1654 -_0809E9FE: - mov r2, r9 - strb r6, [r2] - ldr r0, _0809EA1C @ =gSharedMem + 0x18079 - cmp r9, r0 - bne _0809EA20 - movs r0, 0 - bl sub_80A1C30 - b _0809EA26 - .align 2, 0 -_0809EA10: .4byte gSharedMem + 0x18010 -_0809EA14: .4byte gSharedMem + 0x18000 -_0809EA18: .4byte gTasks -_0809EA1C: .4byte gSharedMem + 0x18079 -_0809EA20: - movs r0, 0x1 - bl sub_80A1C30 -_0809EA26: - ldr r3, [sp] - cmp r3, 0 - beq _0809EA34 - ldr r0, _0809EA4C @ =gSharedMem + 0x18010 - mov r1, r9 - bl sub_80A0428 -_0809EA34: - mov r0, r8 - bl sub_80A2078 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809EA4C: .4byte gSharedMem + 0x18010 - thumb_func_end sub_809E8F0 - - thumb_func_start SummaryScreenHandleAButton -SummaryScreenHandleAButton: @ 809EA50 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x5 - bl PlaySE - ldr r4, _0809EABC @ =gSharedMem + 0x18000 - adds r1, r4, 0 - adds r1, 0x79 - movs r0, 0 - strb r0, [r1] - movs r0, 0x2 - movs r1, 0 - bl sub_80A1488 - movs r0, 0x2 - movs r1, 0 - bl sub_80A1654 - adds r0, r4, 0 - adds r0, 0x7B - ldrb r0, [r0] - cmp r0, 0 - bne _0809EA8C - adds r1, r4, 0 - adds r1, 0x7F - movs r0, 0x5 - strb r0, [r1] - bl sub_80A0DD0 -_0809EA8C: - movs r0, 0 - bl sub_80A16CC - adds r0, r4, 0 - adds r0, 0x10 - bl sub_80A029C - movs r0, 0x9 - bl sub_80A1A30 - ldr r1, _0809EAC0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809EAC4 @ =sub_809E3FC - str r1, [r0] - adds r0, r5, 0 - bl sub_80A2078 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809EABC: .4byte gSharedMem + 0x18000 -_0809EAC0: .4byte gTasks -_0809EAC4: .4byte sub_809E3FC - thumb_func_end SummaryScreenHandleAButton - - thumb_func_start sub_809EAC8 -sub_809EAC8: @ 809EAC8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _0809EB34 @ =gSharedMem + 0x18000 - adds r0, r6, 0 - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0x4 - beq _0809EAEE - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - movs r1, 0 - bl sub_80A1488 - adds r0, r4, 0 - movs r1, 0 - bl sub_80A1654 -_0809EAEE: - movs r0, 0x9 - bl sub_80A1B1C - movs r0, 0x1 - bl sub_80A16CC - movs r0, 0xF - movs r1, 0xC - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - movs r0, 0xB - movs r1, 0xF - movs r2, 0x1C - movs r3, 0x12 - bl MenuZeroFillWindowRect - adds r1, r6, 0 - adds r1, 0x7F - movs r0, 0x6 - strb r0, [r1] - bl sub_80A0DD0 - ldr r1, _0809EB38 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809EB3C @ =SummaryScreenHandleKeyInput - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809EB34: .4byte gSharedMem + 0x18000 -_0809EB38: .4byte gTasks -_0809EB3C: .4byte SummaryScreenHandleKeyInput - thumb_func_end sub_809EAC8 - - thumb_func_start sub_809EB40 -sub_809EB40: @ 809EB40 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0809EB6C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0809EB74 - cmp r0, 0x5 - bne _0809EBA4 - movs r0, 0x9 - bl sub_80A1A30 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r0, _0809EB70 @ =sub_809E260 - str r0, [r4] - b _0809EBB4 - .align 2, 0 -_0809EB6C: .4byte gTasks -_0809EB70: .4byte sub_809E260 -_0809EB74: - ldr r4, _0809EBBC @ =gSharedMem + 0x18000 - adds r6, r4, 0 - adds r6, 0x79 - strb r0, [r6] - adds r0, r4, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - beq _0809EB96 - movs r0, 0xA - movs r1, 0 - bl sub_80A1488 - ldrb r1, [r6] - movs r0, 0xA - bl sub_80A1654 -_0809EB96: - movs r0, 0 - bl sub_80A16CC - adds r0, r4, 0 - adds r0, 0x10 - bl sub_80A029C -_0809EBA4: - ldr r0, _0809EBC0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] -_0809EBB4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809EBBC: .4byte gSharedMem + 0x18000 -_0809EBC0: .4byte gTasks - thumb_func_end sub_809EB40 - - thumb_func_start sub_809EBC4 -sub_809EBC4: @ 809EBC4 - push {r4,lr} - ldr r4, _0809EC28 @ =gSharedMem + 0x18000 - ldrb r0, [r4, 0xB] - cmp r0, 0 - beq _0809EC22 - bl sub_80A0EE8 - ldr r0, _0809EC2C @ =gUnknown_030042C0 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - strh r1, [r0] - ldrb r0, [r4, 0xB] - cmp r0, 0x1 - bne _0809EBF4 - ldr r2, _0809EC30 @ =REG_BG1CNT - ldrh r1, [r2] - ldr r0, _0809EC34 @ =0x0000e0ff - ands r0, r1 - movs r3, 0x80 - lsls r3, 4 - adds r1, r3, 0 - adds r0, r1 - strh r0, [r2] -_0809EBF4: - ldrb r3, [r4, 0xB] - cmp r3, 0x2 - bne _0809EC0C - ldr r2, _0809EC30 @ =REG_BG1CNT - ldrh r1, [r2] - ldr r0, _0809EC34 @ =0x0000e0ff - ands r0, r1 - movs r4, 0xA0 - lsls r4, 4 - adds r1, r4, 0 - adds r0, r1 - strh r0, [r2] -_0809EC0C: - cmp r3, 0x3 - bne _0809EC22 - ldr r2, _0809EC30 @ =REG_BG1CNT - ldrh r1, [r2] - ldr r0, _0809EC34 @ =0x0000e0ff - ands r0, r1 - movs r3, 0xC0 - lsls r3, 4 - adds r1, r3, 0 - adds r0, r1 - strh r0, [r2] -_0809EC22: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809EC28: .4byte gSharedMem + 0x18000 -_0809EC2C: .4byte gUnknown_030042C0 -_0809EC30: .4byte REG_BG1CNT -_0809EC34: .4byte 0x0000e0ff - thumb_func_end sub_809EBC4 - - thumb_func_start sub_809EC38 -sub_809EC38: @ 809EC38 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0809EC5C @ =gTasks + 0x8 - adds r6, r0, r1 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x5 - bls _0809EC52 - b _0809EE64 -_0809EC52: - lsls r0, 2 - ldr r1, _0809EC60 @ =_0809EC64 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809EC5C: .4byte gTasks + 0x8 -_0809EC60: .4byte _0809EC64 - .align 2, 0 -_0809EC64: - .4byte _0809EC7C - .4byte _0809ED14 - .4byte _0809ED98 - .4byte _0809EE12 - .4byte _0809EE1C - .4byte _0809EE4C -_0809EC7C: - ldr r1, _0809ECB8 @ =gSharedMem + 0x18000 - adds r0, r1, 0 - adds r0, 0x80 - ldrb r0, [r0] - cmp r0, 0 - bne _0809ECC8 - ldrb r3, [r1, 0xB] - cmp r3, 0 - beq _0809EC98 - ldr r1, _0809ECBC @ =gUnknown_03004288 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] -_0809EC98: - cmp r3, 0x1 - bne _0809ECAE - ldr r2, _0809ECC0 @ =REG_BG2CNT - ldrh r1, [r2] - ldr r0, _0809ECC4 @ =0x0000e0ff - ands r0, r1 - movs r4, 0x80 - lsls r4, 4 - adds r1, r4, 0 - adds r0, r1 - strh r0, [r2] -_0809ECAE: - cmp r3, 0x2 - beq _0809ECB4 - b _0809EE3A -_0809ECB4: - ldr r2, _0809ECC0 @ =REG_BG2CNT - b _0809ECF6 - .align 2, 0 -_0809ECB8: .4byte gSharedMem + 0x18000 -_0809ECBC: .4byte gUnknown_03004288 -_0809ECC0: .4byte REG_BG2CNT -_0809ECC4: .4byte 0x0000e0ff -_0809ECC8: - ldrb r3, [r1, 0xB] - cmp r3, 0 - beq _0809ECD8 - ldr r1, _0809ED08 @ =gUnknown_030042C0 - movs r4, 0x80 - lsls r4, 1 - adds r0, r4, 0 - strh r0, [r1] -_0809ECD8: - cmp r3, 0x1 - bne _0809ECEE - ldr r2, _0809ED0C @ =REG_BG1CNT - ldrh r1, [r2] - ldr r0, _0809ED10 @ =0x0000e0ff - ands r0, r1 - movs r4, 0x80 - lsls r4, 4 - adds r1, r4, 0 - adds r0, r1 - strh r0, [r2] -_0809ECEE: - cmp r3, 0x2 - beq _0809ECF4 - b _0809EE3A -_0809ECF4: - ldr r2, _0809ED0C @ =REG_BG1CNT -_0809ECF6: - ldrh r1, [r2] - ldr r0, _0809ED10 @ =0x0000e0ff - ands r0, r1 - movs r3, 0xA0 - lsls r3, 4 - adds r1, r3, 0 - adds r0, r1 - strh r0, [r2] - b _0809EE3A - .align 2, 0 -_0809ED08: .4byte gUnknown_030042C0 -_0809ED0C: .4byte REG_BG1CNT -_0809ED10: .4byte 0x0000e0ff -_0809ED14: - ldr r0, _0809ED48 @ =gSharedMem + 0x18000 - adds r0, 0x80 - ldrb r0, [r0] - cmp r0, 0 - bne _0809ED5C - ldr r1, _0809ED4C @ =gUnknown_030042C0 - ldrh r0, [r1] - subs r0, 0x20 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - beq _0809ED2E - b _0809EE64 -_0809ED2E: - ldr r3, _0809ED50 @ =REG_BG1CNT - ldrh r2, [r3] - ldr r1, _0809ED54 @ =0x0000fffc - adds r0, r1, 0 - ands r0, r2 - adds r0, 0x2 - strh r0, [r3] - ldr r2, _0809ED58 @ =REG_BG2CNT - ldrh r0, [r2] - ands r1, r0 - adds r1, 0x1 - strh r1, [r2] - b _0809EE3A - .align 2, 0 -_0809ED48: .4byte gSharedMem + 0x18000 -_0809ED4C: .4byte gUnknown_030042C0 -_0809ED50: .4byte REG_BG1CNT -_0809ED54: .4byte 0x0000fffc -_0809ED58: .4byte REG_BG2CNT -_0809ED5C: - ldr r1, _0809ED88 @ =gUnknown_03004288 - ldrh r0, [r1] - subs r0, 0x20 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - beq _0809ED6C - b _0809EE64 -_0809ED6C: - ldr r3, _0809ED8C @ =REG_BG1CNT - ldrh r2, [r3] - ldr r1, _0809ED90 @ =0x0000fffc - adds r0, r1, 0 - ands r0, r2 - adds r0, 0x1 - strh r0, [r3] - ldr r2, _0809ED94 @ =REG_BG2CNT - ldrh r0, [r2] - ands r1, r0 - adds r1, 0x2 - strh r1, [r2] - b _0809EE3A - .align 2, 0 -_0809ED88: .4byte gUnknown_03004288 -_0809ED8C: .4byte REG_BG1CNT -_0809ED90: .4byte 0x0000fffc -_0809ED94: .4byte REG_BG2CNT -_0809ED98: - ldr r1, _0809EDD4 @ =gSharedMem + 0x18000 - ldrb r3, [r1, 0xB] - adds r0, r3, 0x1 - adds r2, r1, 0 - adds r2, 0x7E - strb r0, [r2] - ldrb r2, [r1, 0x8] - subs r0, r2, 0x2 - lsls r0, 24 - lsrs r0, 24 - adds r5, r1, 0 - cmp r0, 0x1 - bhi _0809EDD8 - adds r1, 0x7F - movs r0, 0 - strb r0, [r1] - adds r4, r5, 0 - adds r4, 0x10 - adds r0, r4, 0 - bl sub_80A029C - adds r5, 0x79 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A0428 - ldrb r0, [r5] - bl sub_80A00F4 - b _0809EE3A - .align 2, 0 -_0809EDD4: .4byte gSharedMem + 0x18000 -_0809EDD8: - lsls r0, r3, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0809EDFA - adds r0, r5, 0 - adds r0, 0x7B - ldrb r0, [r0] - cmp r0, 0 - beq _0809EDF2 - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0809EDFA -_0809EDF2: - adds r1, r5, 0 - adds r1, 0x7F - movs r0, 0x6 - b _0809EE0E -_0809EDFA: - ldrb r0, [r5, 0xB] - cmp r0, 0 - bne _0809EE08 - adds r1, r5, 0 - adds r1, 0x7F - movs r0, 0x7 - b _0809EE0E -_0809EE08: - adds r1, r5, 0 - adds r1, 0x7F - movs r0, 0 -_0809EE0E: - strb r0, [r1] - b _0809EE3A -_0809EE12: - bl sub_80A0EE8 - bl sub_80A0DD0 - b _0809EE3A -_0809EE1C: - ldr r0, _0809EE44 @ =gUnknown_083C1598 - ldr r4, _0809EE48 @ =gSharedMem + 0x18000 - ldrb r1, [r4, 0xB] - lsls r1, 2 - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x10 - ldr r1, [r1] - bl _call_via_r1 - adds r4, 0x80 - ldrb r0, [r4] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4] -_0809EE3A: - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - b _0809EE64 - .align 2, 0 -_0809EE44: .4byte gUnknown_083C1598 -_0809EE48: .4byte gSharedMem + 0x18000 -_0809EE4C: - bl sub_8055870 - cmp r0, 0x1 - beq _0809EE64 - ldr r1, _0809EE6C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809EE70 @ =gUnknown_03005CF0 - ldr r1, [r1] - str r1, [r0] -_0809EE64: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809EE6C: .4byte gTasks -_0809EE70: .4byte gUnknown_03005CF0 - thumb_func_end sub_809EC38 - - thumb_func_start sub_809EE74 -sub_809EE74: @ 809EE74 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0809EE98 @ =gTasks + 0x8 - adds r6, r0, r1 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x6 - bls _0809EE8E - b _0809F0C0 -_0809EE8E: - lsls r0, 2 - ldr r1, _0809EE9C @ =_0809EEA0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809EE98: .4byte gTasks + 0x8 -_0809EE9C: .4byte _0809EEA0 - .align 2, 0 -_0809EEA0: - .4byte _0809EEBC - .4byte _0809EEE0 - .4byte _0809EFB4 - .4byte _0809EFF4 - .4byte _0809F06E - .4byte _0809F078 - .4byte _0809F0A8 -_0809EEBC: - ldr r0, _0809EECC @ =gSharedMem + 0x18000 - adds r0, 0x80 - ldrb r1, [r0] - cmp r1, 0 - bne _0809EED4 - ldr r0, _0809EED0 @ =gUnknown_03004288 - strh r1, [r0] - b _0809F096 - .align 2, 0 -_0809EECC: .4byte gSharedMem + 0x18000 -_0809EED0: .4byte gUnknown_03004288 -_0809EED4: - ldr r1, _0809EEDC @ =gUnknown_030042C0 - movs r0, 0 - strh r0, [r1] - b _0809F096 - .align 2, 0 -_0809EEDC: .4byte gUnknown_030042C0 -_0809EEE0: - ldr r1, _0809EF30 @ =gSharedMem + 0x18000 - adds r0, r1, 0 - adds r0, 0x80 - ldrb r0, [r0] - cmp r0, 0 - bne _0809EF4C - ldrb r3, [r1, 0xB] - cmp r3, 0x1 - bne _0809EF02 - ldr r2, _0809EF34 @ =REG_BG2CNT - ldrh r1, [r2] - ldr r0, _0809EF38 @ =0x0000e0fc - ands r0, r1 - ldr r4, _0809EF3C @ =0x00000801 - adds r1, r4, 0 - adds r0, r1 - strh r0, [r2] -_0809EF02: - cmp r3, 0x2 - bne _0809EF16 - ldr r2, _0809EF34 @ =REG_BG2CNT - ldrh r1, [r2] - ldr r0, _0809EF38 @ =0x0000e0fc - ands r0, r1 - ldr r4, _0809EF40 @ =0x00000a01 - adds r1, r4, 0 - adds r0, r1 - strh r0, [r2] -_0809EF16: - cmp r3, 0x3 - bne _0809EF2A - ldr r2, _0809EF34 @ =REG_BG2CNT - ldrh r1, [r2] - ldr r0, _0809EF38 @ =0x0000e0fc - ands r0, r1 - ldr r3, _0809EF44 @ =0x00000c01 - adds r1, r3, 0 - adds r0, r1 - strh r0, [r2] -_0809EF2A: - ldr r2, _0809EF48 @ =REG_BG1CNT - b _0809EF8C - .align 2, 0 -_0809EF30: .4byte gSharedMem + 0x18000 -_0809EF34: .4byte REG_BG2CNT -_0809EF38: .4byte 0x0000e0fc -_0809EF3C: .4byte 0x00000801 -_0809EF40: .4byte 0x00000a01 -_0809EF44: .4byte 0x00000c01 -_0809EF48: .4byte REG_BG1CNT -_0809EF4C: - ldrb r3, [r1, 0xB] - cmp r3, 0x1 - bne _0809EF62 - ldr r2, _0809EF98 @ =REG_BG1CNT - ldrh r1, [r2] - ldr r0, _0809EF9C @ =0x0000e0fc - ands r0, r1 - ldr r4, _0809EFA0 @ =0x00000801 - adds r1, r4, 0 - adds r0, r1 - strh r0, [r2] -_0809EF62: - cmp r3, 0x2 - bne _0809EF76 - ldr r2, _0809EF98 @ =REG_BG1CNT - ldrh r1, [r2] - ldr r0, _0809EF9C @ =0x0000e0fc - ands r0, r1 - ldr r4, _0809EFA4 @ =0x00000a01 - adds r1, r4, 0 - adds r0, r1 - strh r0, [r2] -_0809EF76: - cmp r3, 0x3 - bne _0809EF8A - ldr r2, _0809EF98 @ =REG_BG1CNT - ldrh r1, [r2] - ldr r0, _0809EF9C @ =0x0000e0fc - ands r0, r1 - ldr r3, _0809EFA8 @ =0x00000c01 - adds r1, r3, 0 - adds r0, r1 - strh r0, [r2] -_0809EF8A: - ldr r2, _0809EFAC @ =REG_BG2CNT -_0809EF8C: - ldrh r1, [r2] - ldr r0, _0809EFB0 @ =0x0000fffc - ands r0, r1 - adds r0, 0x2 - strh r0, [r2] - b _0809F096 - .align 2, 0 -_0809EF98: .4byte REG_BG1CNT -_0809EF9C: .4byte 0x0000e0fc -_0809EFA0: .4byte 0x00000801 -_0809EFA4: .4byte 0x00000a01 -_0809EFA8: .4byte 0x00000c01 -_0809EFAC: .4byte REG_BG2CNT -_0809EFB0: .4byte 0x0000fffc -_0809EFB4: - ldr r0, _0809EFD4 @ =gSharedMem + 0x18000 - adds r0, 0x80 - ldrb r0, [r0] - cmp r0, 0 - bne _0809EFDC - ldr r0, _0809EFD8 @ =gUnknown_03004288 - ldrh r1, [r0] - adds r1, 0x20 - strh r1, [r0] - lsls r1, 16 - movs r0, 0x80 - lsls r0, 17 - cmp r1, r0 - bne _0809F0C0 - b _0809F096 - .align 2, 0 -_0809EFD4: .4byte gSharedMem + 0x18000 -_0809EFD8: .4byte gUnknown_03004288 -_0809EFDC: - ldr r0, _0809EFF0 @ =gUnknown_030042C0 - ldrh r1, [r0] - adds r1, 0x20 - strh r1, [r0] - lsls r1, 16 - movs r0, 0x80 - lsls r0, 17 - cmp r1, r0 - bne _0809F0C0 - b _0809F096 - .align 2, 0 -_0809EFF0: .4byte gUnknown_030042C0 -_0809EFF4: - ldr r1, _0809F030 @ =gSharedMem + 0x18000 - ldrb r3, [r1, 0xB] - adds r0, r3, 0x1 - adds r2, r1, 0 - adds r2, 0x7E - strb r0, [r2] - ldrb r2, [r1, 0x8] - subs r0, r2, 0x2 - lsls r0, 24 - lsrs r0, 24 - adds r5, r1, 0 - cmp r0, 0x1 - bhi _0809F034 - adds r1, 0x7F - movs r0, 0 - strb r0, [r1] - adds r4, r5, 0 - adds r4, 0x10 - adds r0, r4, 0 - bl sub_80A029C - adds r5, 0x79 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A0428 - ldrb r0, [r5] - bl sub_80A00F4 - b _0809F096 - .align 2, 0 -_0809F030: .4byte gSharedMem + 0x18000 -_0809F034: - lsls r0, r3, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0809F056 - adds r0, r5, 0 - adds r0, 0x7B - ldrb r0, [r0] - cmp r0, 0 - beq _0809F04E - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0809F056 -_0809F04E: - adds r1, r5, 0 - adds r1, 0x7F - movs r0, 0x6 - b _0809F06A -_0809F056: - ldrb r0, [r5, 0xB] - cmp r0, 0 - bne _0809F064 - adds r1, r5, 0 - adds r1, 0x7F - movs r0, 0x7 - b _0809F06A -_0809F064: - adds r1, r5, 0 - adds r1, 0x7F - movs r0, 0 -_0809F06A: - strb r0, [r1] - b _0809F096 -_0809F06E: - bl sub_80A0EE8 - bl sub_80A0DD0 - b _0809F096 -_0809F078: - ldr r0, _0809F0A0 @ =gUnknown_083C1598 - ldr r4, _0809F0A4 @ =gSharedMem + 0x18000 - ldrb r1, [r4, 0xB] - lsls r1, 2 - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x10 - ldr r1, [r1] - bl _call_via_r1 - adds r4, 0x80 - ldrb r0, [r4] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4] -_0809F096: - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - b _0809F0C0 - .align 2, 0 -_0809F0A0: .4byte gUnknown_083C1598 -_0809F0A4: .4byte gSharedMem + 0x18000 -_0809F0A8: - bl sub_8055870 - cmp r0, 0x1 - beq _0809F0C0 - ldr r1, _0809F0C8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809F0CC @ =gUnknown_03005CF0 - ldr r1, [r1] - str r1, [r0] -_0809F0C0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809F0C8: .4byte gTasks -_0809F0CC: .4byte gUnknown_03005CF0 - thumb_func_end sub_809EE74 - - thumb_func_start sub_809F0D0 -sub_809F0D0: @ 809F0D0 - push {r4-r7,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0809F110 @ =gSharedMem + 0x18000 - ldrb r0, [r1, 0xB] - adds r0, r4 - movs r5, 0 - strb r0, [r1, 0xB] - ldr r2, _0809F114 @ =gUnknown_03005CF0 - ldr r1, _0809F118 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r6, r0, r1 - ldr r0, [r6] - str r0, [r2] - bl sub_809FBE4 - strh r5, [r6, 0x8] - lsls r4, 24 - asrs r4, 24 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _0809F120 - ldr r0, _0809F11C @ =sub_809EC38 - str r0, [r6] - b _0809F12A - .align 2, 0 -_0809F110: .4byte gSharedMem + 0x18000 -_0809F114: .4byte gUnknown_03005CF0 -_0809F118: .4byte gTasks -_0809F11C: .4byte sub_809EC38 -_0809F120: - ldr r1, _0809F130 @ =sub_809EE74 - str r1, [r6] - adds r0, r7, 0 - bl _call_via_r1 -_0809F12A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809F130: .4byte sub_809EE74 - thumb_func_end sub_809F0D0 - - thumb_func_start SummaryScreenHandleLeftRightInput -SummaryScreenHandleLeftRightInput: @ 809F134 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r4, _0809F1AC @ =gSharedMem + 0x18010 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0809F1A6 - lsls r0, r5, 24 - asrs r5, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - bne _0809F168 - adds r0, r4, 0 - subs r0, 0x10 - adds r1, r4, 0 - adds r1, 0x65 - ldrb r0, [r0, 0xB] - ldrb r1, [r1] - cmp r0, r1 - beq _0809F1A6 -_0809F168: - cmp r5, 0x1 - bne _0809F17C - adds r0, r4, 0 - subs r0, 0x10 - adds r1, r4, 0 - adds r1, 0x66 - ldrb r0, [r0, 0xB] - ldrb r1, [r1] - cmp r0, r1 - beq _0809F1A6 -_0809F17C: - ldr r0, _0809F1B0 @ =sub_80A1334 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0809F1A6 - ldr r0, _0809F1B4 @ =sub_80A1500 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0809F1A6 - movs r0, 0x5 - bl PlaySE - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_809F0D0 -_0809F1A6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809F1AC: .4byte gSharedMem + 0x18010 -_0809F1B0: .4byte sub_80A1334 -_0809F1B4: .4byte sub_80A1500 - thumb_func_end SummaryScreenHandleLeftRightInput - - thumb_func_start SummaryScreenHandleUpDownInput -SummaryScreenHandleUpDownInput: @ 809F1B8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r0, _0809F1E4 @ =gSharedMem + 0x18000 - ldrb r1, [r0, 0xE] - adds r2, r0, 0 - cmp r1, 0x1 - bne _0809F202 - ldrb r0, [r2, 0xB] - cmp r0, 0 - beq _0809F1E8 - lsls r1, r4, 24 - asrs r1, 24 - movs r4, 0x1 - eors r1, r4 - negs r0, r1 - orrs r0, r1 - lsrs r4, r0, 31 - b _0809F1F4 - .align 2, 0 -_0809F1E4: .4byte gSharedMem + 0x18000 -_0809F1E8: - lsls r0, r4, 24 - asrs r0, 24 - movs r4, 0x3 - cmp r0, 0x1 - bne _0809F1F4 - movs r4, 0x2 -_0809F1F4: - ldr r0, [r2] - ldrb r1, [r2, 0x9] - ldrb r2, [r2, 0xA] - adds r3, r4, 0 - bl StorageSystemGetNextMonIndex - b _0809F22C -_0809F202: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809F224 - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809F224 - lsls r0, r4, 24 - asrs r0, 24 - bl sub_809F3CC - b _0809F22C -_0809F224: - lsls r0, r4, 24 - asrs r0, 24 - bl sub_809F284 -_0809F22C: - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _0809F270 - movs r0, 0x5 - bl PlaySE - ldr r5, _0809F278 @ =gSharedMem + 0x18010 - adds r0, r5, 0 - bl GetMonStatusAndPokerus - lsls r0, 24 - cmp r0, 0 - beq _0809F258 - movs r0, 0x2 - negs r0, r0 - bl sub_80A12D0 -_0809F258: - adds r0, r5, 0 - subs r0, 0x10 - strb r4, [r0, 0x9] - ldr r1, _0809F27C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, [r0] - str r1, [r5, 0x74] - ldr r1, _0809F280 @ =sub_809F43C - str r1, [r0] -_0809F270: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809F278: .4byte gSharedMem + 0x18010 -_0809F27C: .4byte gTasks -_0809F280: .4byte sub_809F43C - thumb_func_end SummaryScreenHandleUpDownInput - - thumb_func_start sub_809F284 -sub_809F284: @ 809F284 - push {r4-r7,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _0809F2C0 @ =gSharedMem + 0x18000 - ldr r7, [r0] - movs r6, 0 - ldrb r1, [r0, 0xB] - adds r4, r0, 0 - cmp r1, 0 - bne _0809F2C4 - lsls r0, r3, 24 - asrs r2, r0, 24 - movs r1, 0x1 - negs r1, r1 - adds r5, r0, 0 - cmp r2, r1 - bne _0809F2AC - ldrb r0, [r4, 0x9] - cmp r0, 0 - beq _0809F2E4 -_0809F2AC: - asrs r0, r5, 24 - cmp r0, 0x1 - bne _0809F2BA - ldrb r0, [r4, 0x9] - ldrb r1, [r4, 0xA] - cmp r0, r1 - bcs _0809F2E4 -_0809F2BA: - ldrb r0, [r4, 0x9] - adds r0, r3 - b _0809F304 - .align 2, 0 -_0809F2C0: .4byte gSharedMem + 0x18000 -_0809F2C4: - lsls r5, r3, 24 -_0809F2C6: - lsls r0, r6, 24 - asrs r0, 24 - asrs r1, r5, 24 - adds r0, r1 - lsls r0, 24 - ldr r4, _0809F2EC @ =gSharedMem + 0x18000 - lsrs r6, r0, 24 - asrs r0, 24 - ldrb r2, [r4, 0x9] - adds r1, r0, r2 - cmp r1, 0 - blt _0809F2E4 - ldrb r0, [r4, 0xA] - cmp r1, r0 - ble _0809F2F0 -_0809F2E4: - movs r0, 0x1 - negs r0, r0 - b _0809F308 - .align 2, 0 -_0809F2EC: .4byte gSharedMem + 0x18000 -_0809F2F0: - movs r0, 0x64 - muls r0, r1 - adds r0, r7, r0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0809F2C6 - ldrb r0, [r4, 0x9] - adds r0, r6 -_0809F304: - lsls r0, 24 - asrs r0, 24 -_0809F308: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_809F284 - - thumb_func_start sub_809F310 -sub_809F310: @ 809F310 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0809F33C - ldr r0, _0809F338 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0xB] - cmp r0, 0 - bne _0809F332 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0809F33C -_0809F332: - movs r0, 0x1 - b _0809F33E - .align 2, 0 -_0809F338: .4byte gSharedMem + 0x18000 -_0809F33C: - movs r0, 0 -_0809F33E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809F310 - - thumb_func_start sub_809F344 -sub_809F344: @ 809F344 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 -_0809F34A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - beq _0809F37C - ldr r0, _0809F374 @ =gUnknown_083C15A8 - adds r5, r4, r0 - ldrb r1, [r5] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0809F378 @ =gPlayerParty - adds r0, r1 - bl sub_809F310 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809F34A - movs r0, 0 - ldrsb r0, [r5, r0] - b _0809F380 - .align 2, 0 -_0809F374: .4byte gUnknown_083C15A8 -_0809F378: .4byte gPlayerParty -_0809F37C: - movs r0, 0x1 - negs r0, r0 -_0809F380: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809F344 - - thumb_func_start sub_809F388 -sub_809F388: @ 809F388 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 -_0809F38E: - cmp r4, 0 - beq _0809F3C0 - subs r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0809F3B8 @ =gUnknown_083C15A8 - adds r5, r4, r0 - ldrb r1, [r5] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0809F3BC @ =gPlayerParty - adds r0, r1 - bl sub_809F310 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809F38E - movs r0, 0 - ldrsb r0, [r5, r0] - b _0809F3C4 - .align 2, 0 -_0809F3B8: .4byte gUnknown_083C15A8 -_0809F3BC: .4byte gPlayerParty -_0809F3C0: - movs r0, 0x1 - negs r0, r0 -_0809F3C4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809F388 - - thumb_func_start sub_809F3CC -sub_809F3CC: @ 809F3CC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r2, 0 - movs r1, 0 - ldr r3, _0809F41C @ =gUnknown_083C15A8 - ldr r4, _0809F420 @ =gSharedMem + 0x18000 - ldrb r0, [r3] - ldrb r5, [r4, 0x9] - cmp r0, r5 - beq _0809F3FC - adds r5, r3, 0 - adds r3, r4, 0 -_0809F3E6: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x5 - bhi _0809F3FC - adds r0, r1, r5 - ldrb r0, [r0] - ldrb r4, [r3, 0x9] - cmp r0, r4 - bne _0809F3E6 - adds r2, r1, 0 -_0809F3FC: - lsls r0, r6, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0809F40C - cmp r2, 0 - beq _0809F414 -_0809F40C: - cmp r1, 0x1 - bne _0809F424 - cmp r2, 0x5 - bne _0809F42C -_0809F414: - movs r0, 0x1 - negs r0, r0 - b _0809F436 - .align 2, 0 -_0809F41C: .4byte gUnknown_083C15A8 -_0809F420: .4byte gSharedMem + 0x18000 -_0809F424: - adds r0, r2, 0 - bl sub_809F388 - b _0809F432 -_0809F42C: - adds r0, r2, 0 - bl sub_809F344 -_0809F432: - lsls r0, 24 - asrs r0, 24 -_0809F436: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809F3CC - - thumb_func_start sub_809F43C -sub_809F43C: @ 809F43C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0809F45C @ =gMain - ldr r1, _0809F460 @ =0x0000043c - adds r5, r0, r1 - ldrb r2, [r5] - adds r3, r0, 0 - cmp r2, 0x8 - bls _0809F452 - b _0809F5CC -_0809F452: - lsls r0, r2, 2 - ldr r1, _0809F464 @ =_0809F468 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809F45C: .4byte gMain -_0809F460: .4byte 0x0000043c -_0809F464: .4byte _0809F468 - .align 2, 0 -_0809F468: - .4byte _0809F48C - .4byte _0809F492 - .4byte _0809F4BC - .4byte _0809F4D8 - .4byte _0809F4F4 - .4byte _0809F51C - .4byte _0809F578 - .4byte _0809F584 - .4byte _0809F5A0 -_0809F48C: - bl StopCryAndClearCrySongs - b _0809F5B2 -_0809F492: - ldr r0, _0809F4AC @ =gSharedMem + 0x18000 - ldrb r1, [r0, 0xC] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0809F4B0 @ =gSprites - adds r0, r1 - bl DestroySpriteAndFreeResources - ldr r1, _0809F4B4 @ =gMain - ldr r0, _0809F4B8 @ =0x0000043c - adds r1, r0 - b _0809F5B8 - .align 2, 0 -_0809F4AC: .4byte gSharedMem + 0x18000 -_0809F4B0: .4byte gSprites -_0809F4B4: .4byte gMain -_0809F4B8: .4byte 0x0000043c -_0809F4BC: - ldr r0, _0809F4D0 @ =gSharedMem + 0x18000 - ldrb r1, [r0, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0809F4D4 @ =gSprites - adds r0, r1 - bl DestroySpriteAndFreeResources - b _0809F5B2 - .align 2, 0 -_0809F4D0: .4byte gSharedMem + 0x18000 -_0809F4D4: .4byte gSprites -_0809F4D8: - ldr r0, _0809F4EC @ =gSharedMem + 0x18000 - adds r1, r0, 0 - adds r1, 0x74 - movs r2, 0 - strb r2, [r1] - adds r0, 0x79 - strb r2, [r0] - ldr r0, _0809F4F0 @ =0x0000043c - adds r1, r3, r0 - b _0809F5B8 - .align 2, 0 -_0809F4EC: .4byte gSharedMem + 0x18000 -_0809F4F0: .4byte 0x0000043c -_0809F4F4: - ldr r4, _0809F518 @ =gSharedMem + 0x18010 - adds r0, r4, 0 - bl sub_809F678 - adds r0, r4, 0 - bl GetMonStatusAndPokerus - lsls r0, 24 - cmp r0, 0 - beq _0809F50E - movs r0, 0x2 - bl sub_80A12D0 -_0809F50E: - adds r0, r4, 0 - bl sub_80A0EA4 - b _0809F5B2 - .align 2, 0 -_0809F518: .4byte gSharedMem + 0x18010 -_0809F51C: - ldr r4, _0809F558 @ =gSharedMem + 0x18010 - adds r5, r4, 0 - adds r5, 0x64 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_809F6B4 - adds r1, r4, 0 - subs r1, 0x10 - strb r0, [r1, 0xC] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0809F5EA - movs r0, 0 - strb r0, [r5] - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - adds r1, r0, 0 - cmp r1, 0 - beq _0809F560 - ldr r1, _0809F55C @ =gUnknown_030041B0 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - b _0809F564 - .align 2, 0 -_0809F558: .4byte gSharedMem + 0x18010 -_0809F55C: .4byte gUnknown_030041B0 -_0809F560: - ldr r0, _0809F56C @ =gUnknown_030041B0 - strh r1, [r0] -_0809F564: - ldr r1, _0809F570 @ =gMain - ldr r0, _0809F574 @ =0x0000043c - adds r1, r0 - b _0809F5B8 - .align 2, 0 -_0809F56C: .4byte gUnknown_030041B0 -_0809F570: .4byte gMain -_0809F574: .4byte 0x0000043c -_0809F578: - ldr r0, _0809F580 @ =gSharedMem + 0x18010 - bl sub_80A1DCC - b _0809F5B2 - .align 2, 0 -_0809F580: .4byte gSharedMem + 0x18010 -_0809F584: - ldr r0, _0809F594 @ =gSharedMem + 0x18010 - bl sub_80A1DE8 - ldr r1, _0809F598 @ =gMain - ldr r0, _0809F59C @ =0x0000043c - adds r1, r0 - b _0809F5B8 - .align 2, 0 -_0809F594: .4byte gSharedMem + 0x18010 -_0809F598: .4byte gMain -_0809F59C: .4byte 0x0000043c -_0809F5A0: - bl sub_809F5F8 - lsls r0, 24 - cmp r0, 0 - beq _0809F5EA - ldr r0, _0809F5C0 @ =gSharedMem + 0x18000 - adds r0, 0x74 - movs r1, 0 - strb r1, [r0] -_0809F5B2: - ldr r1, _0809F5C4 @ =gMain - ldr r2, _0809F5C8 @ =0x0000043c - adds r1, r2 -_0809F5B8: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0809F5EA - .align 2, 0 -_0809F5C0: .4byte gSharedMem + 0x18000 -_0809F5C4: .4byte gMain -_0809F5C8: .4byte 0x0000043c -_0809F5CC: - bl sub_8055870 - cmp r0, 0x1 - beq _0809F5EA - movs r0, 0 - strb r0, [r5] - ldr r0, _0809F5F0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0809F5F4 @ =gSharedMem + 0x18000 - adds r0, 0x84 - ldr r0, [r0] - str r0, [r1] -_0809F5EA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809F5F0: .4byte gTasks -_0809F5F4: .4byte gSharedMem + 0x18000 - thumb_func_end sub_809F43C - - thumb_func_start sub_809F5F8 -sub_809F5F8: @ 809F5F8 - push {r4,lr} - ldr r2, _0809F61C @ =gSharedMem + 0x18000 - adds r4, r2, 0 - adds r4, 0x74 - ldrb r0, [r4] - cmp r0, 0 - beq _0809F624 - ldr r0, _0809F620 @ =gUnknown_083C1588 - ldrb r1, [r2, 0xB] - lsls r1, 2 - adds r1, r0 - adds r0, r2, 0 - adds r0, 0x10 - ldr r1, [r1] - bl _call_via_r1 - movs r0, 0x1 - b _0809F634 - .align 2, 0 -_0809F61C: .4byte gSharedMem + 0x18000 -_0809F620: .4byte gUnknown_083C1588 -_0809F624: - adds r0, r2, 0 - adds r0, 0x10 - bl sub_809FAC8 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - movs r0, 0 -_0809F634: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809F5F8 - - thumb_func_start sub_809F63C -sub_809F63C: @ 809F63C - push {r4,lr} - adds r4, r0, 0 - bl sub_809FE80 - adds r0, r4, 0 - bl sub_809FC34 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_809F63C - - thumb_func_start sub_809F650 -sub_809F650: @ 809F650 - push {r4,lr} - adds r4, r0, 0 - bl sub_80A00A4 - adds r0, r4, 0 - bl sub_809FF64 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_809F650 - - thumb_func_start sub_809F664 -sub_809F664: @ 809F664 - push {r4,lr} - adds r4, r0, 0 - bl sub_80A0390 - adds r0, r4, 0 - bl sub_80A015C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_809F664 - - thumb_func_start sub_809F678 -sub_809F678: @ 809F678 - push {lr} - adds r3, r0, 0 - ldr r1, _0809F698 @ =gSharedMem + 0x18000 - ldrb r0, [r1, 0xE] - cmp r0, 0 - bne _0809F69C - ldr r2, [r1] - ldrb r1, [r1, 0x9] - movs r0, 0x64 - muls r1, r0 - adds r1, r2 - adds r0, r3, 0 - movs r2, 0x64 - bl memcpy - b _0809F6AE - .align 2, 0 -_0809F698: .4byte gSharedMem + 0x18000 -_0809F69C: - ldr r0, [r1] - ldrb r2, [r1, 0x9] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 4 - adds r0, r1 - adds r1, r3, 0 - bl sub_803B4B4 -_0809F6AE: - pop {r0} - bx r0 - thumb_func_end sub_809F678 - - thumb_func_start sub_809F6B4 -sub_809F6B4: @ 809F6B4 - push {r4-r7,lr} - sub sp, 0xC - adds r4, r0, 0 - adds r7, r1, 0 - ldrb r0, [r7] - cmp r0, 0 - beq _0809F6D2 - cmp r0, 0x1 - beq _0809F718 - adds r0, r4, 0 - bl sub_80A1808 - lsls r0, 24 - lsrs r0, 24 - b _0809F756 -_0809F6D2: - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - lsls r0, r5, 3 - ldr r1, _0809F70C @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _0809F710 @ =gMonFrontPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _0809F714 @ =gUnknown_081FAF4C - ldr r4, [r4, 0x4] - str r4, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - bl HandleLoadSpecialPokePic - b _0809F74E - .align 2, 0 -_0809F70C: .4byte gMonFrontPicTable -_0809F710: .4byte gMonFrontPicCoords -_0809F714: .4byte gUnknown_081FAF4C -_0809F718: - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - adds r1, r0, 0 - adds r0, r5, 0 - adds r2, r6, 0 - bl GetMonSpritePalStructFromOtIdPersonality - adds r4, r0, 0 - bl LoadCompressedObjectPalette - ldrh r0, [r4, 0x4] - movs r1, 0x1 - bl GetMonSpriteTemplate_803C56C -_0809F74E: - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - movs r0, 0xFF -_0809F756: - add sp, 0xC - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_809F6B4 - - thumb_func_start sub_809F760 -sub_809F760: @ 809F760 - push {lr} - lsls r1, 24 - lsrs r1, 24 - adds r2, r1, 0 - cmp r1, 0x1 - beq _0809F780 - cmp r1, 0x1 - bgt _0809F776 - cmp r1, 0 - beq _0809F77C - b _0809F788 -_0809F776: - cmp r2, 0x2 - beq _0809F784 - b _0809F788 -_0809F77C: - movs r1, 0xD - b _0809F78A -_0809F780: - movs r1, 0xE - b _0809F78A -_0809F784: - movs r1, 0xF - b _0809F78A -_0809F788: - movs r1, 0x10 -_0809F78A: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_809F760 - - thumb_func_start sub_809F798 -sub_809F798: @ 809F798 - push {lr} - lsls r1, 24 - lsrs r1, 24 - adds r2, r1, 0 - cmp r1, 0x1 - beq _0809F7B8 - cmp r1, 0x1 - bgt _0809F7AE - cmp r1, 0 - beq _0809F7B4 - b _0809F7C0 -_0809F7AE: - cmp r2, 0x2 - beq _0809F7BC - b _0809F7C0 -_0809F7B4: - movs r1, 0x11 - b _0809F7C2 -_0809F7B8: - movs r1, 0x12 - b _0809F7C2 -_0809F7BC: - movs r1, 0x13 - b _0809F7C2 -_0809F7C0: - movs r1, 0x14 -_0809F7C2: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_809F798 - - thumb_func_start sub_809F7D0 -sub_809F7D0: @ 809F7D0 - push {r4,lr} - sub sp, 0x64 - mov r0, sp - bl sub_809F678 - ldr r4, _0809F804 @ =gSharedMem + 0x18000 - adds r0, r4, 0 - adds r0, 0x79 - ldrb r1, [r0] - mov r0, sp - bl sub_809F760 - lsls r0, 16 - lsrs r0, 16 - bl IsHMMove - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809F808 - ldrb r0, [r4, 0x8] - cmp r0, 0x3 - beq _0809F808 - movs r0, 0 - b _0809F80A - .align 2, 0 -_0809F804: .4byte gSharedMem + 0x18000 -_0809F808: - movs r0, 0x1 -_0809F80A: - add sp, 0x64 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809F7D0 - - thumb_func_start sub_809F814 -sub_809F814: @ 809F814 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r6, r0, 3 - ldr r0, _0809F83C @ =gTasks + 0x8 - mov r8, r0 - adds r4, r6, r0 - ldrh r1, [r4, 0x1C] - movs r2, 0x1C - ldrsh r0, [r4, r2] - cmp r0, 0x3 - bgt _0809F840 - adds r0, r1, 0x1 - strh r0, [r4, 0x1C] - b _0809F9C0 - .align 2, 0 -_0809F83C: .4byte gTasks + 0x8 -_0809F840: - ldr r7, _0809F874 @ =gMain - ldrh r1, [r7, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0809F880 - mov r0, r8 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _0809F878 @ =sub_809E260 - str r1, [r0] - movs r0, 0x4 - strh r0, [r4] - movs r0, 0x1 - strh r0, [r4, 0x1A] - ldr r2, _0809F87C @ =gSharedMem + 0x18000 - ldrh r0, [r4, 0x1E] - adds r2, 0x79 - strb r0, [r2] - movs r1, 0x1 - negs r1, r1 - adds r0, r5, 0 - bl sub_809E8F0 - b _0809F9C0 - .align 2, 0 -_0809F874: .4byte gMain -_0809F878: .4byte sub_809E260 -_0809F87C: .4byte gSharedMem + 0x18000 -_0809F880: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0809F8B4 - mov r0, r8 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _0809F8AC @ =sub_809E260 - str r1, [r0] - movs r0, 0x4 - strh r0, [r4] - movs r0, 0x1 - strh r0, [r4, 0x1A] - ldr r2, _0809F8B0 @ =gSharedMem + 0x18000 - ldrh r0, [r4, 0x1E] - adds r2, 0x79 - strb r0, [r2] - adds r0, r5, 0 - movs r1, 0x1 - bl sub_809E8F0 - b _0809F9C0 - .align 2, 0 -_0809F8AC: .4byte sub_809E260 -_0809F8B0: .4byte gSharedMem + 0x18000 -_0809F8B4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0809F8C8 - bl sub_80F9284 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809F918 -_0809F8C8: - ldr r1, _0809F90C @ =gSharedMem + 0x18000 - ldrb r0, [r1, 0xB] - cmp r0, 0x2 - beq _0809F9C0 - cmp r0, 0x3 - bne _0809F8F4 - adds r0, r1, 0 - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0x4 - bne _0809F8E8 - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - beq _0809F8F4 -_0809F8E8: - movs r0, 0 - movs r1, 0xE - movs r2, 0x9 - movs r3, 0x12 - bl MenuZeroFillWindowRect -_0809F8F4: - ldr r1, _0809F910 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809F914 @ =sub_809E260 - str r1, [r0] - movs r1, 0x1 - negs r1, r1 - adds r0, r5, 0 - b _0809F972 - .align 2, 0 -_0809F90C: .4byte gSharedMem + 0x18000 -_0809F910: .4byte gTasks -_0809F914: .4byte sub_809E260 -_0809F918: - ldrh r1, [r7, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0809F92E - bl sub_80F9284 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0809F994 -_0809F92E: - ldr r1, _0809F988 @ =gSharedMem + 0x18000 - adds r2, r1, 0 - adds r2, 0x76 - ldrb r0, [r1, 0xB] - ldrb r2, [r2] - cmp r0, r2 - beq _0809F9C0 - cmp r0, 0x2 - bne _0809F960 - adds r0, r1, 0 - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0x4 - bne _0809F954 - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - beq _0809F960 -_0809F954: - movs r0, 0 - movs r1, 0xE - movs r2, 0x9 - movs r3, 0x12 - bl MenuZeroFillWindowRect -_0809F960: - ldr r1, _0809F98C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809F990 @ =sub_809E260 - str r1, [r0] - adds r0, r5, 0 - movs r1, 0x1 -_0809F972: - bl SummaryScreenHandleLeftRightInput - ldrb r1, [r4, 0x1E] - movs r0, 0x1 - bl sub_80A1488 - ldrb r1, [r4, 0x1E] - movs r0, 0x1 - bl sub_80A1654 - b _0809F9C0 - .align 2, 0 -_0809F988: .4byte gSharedMem + 0x18000 -_0809F98C: .4byte gTasks -_0809F990: .4byte sub_809E260 -_0809F994: - ldrh r1, [r7, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0809F9A6 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809F9C0 -_0809F9A6: - ldrb r1, [r4, 0x1E] - movs r0, 0x2 - bl sub_80A1488 - ldrb r1, [r4, 0x1E] - movs r0, 0x2 - bl sub_80A1654 - mov r0, r8 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _0809F9CC @ =sub_809E260 - str r1, [r0] -_0809F9C0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809F9CC: .4byte sub_809E260 - thumb_func_end sub_809F814 - - thumb_func_start sub_809F9D0 -sub_809F9D0: @ 809F9D0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r6, _0809FA24 @ =gTasks + 0x8 - adds r2, r4, r6 - movs r0, 0 - strh r0, [r2, 0x1C] - strh r1, [r2, 0x1E] - movs r5, 0x2 - negs r5, r5 - adds r0, r5, 0 - movs r1, 0x4 - bl sub_80A1488 - adds r0, r5, 0 - movs r1, 0x4 - bl sub_80A1654 - movs r0, 0xB - movs r1, 0xF - movs r2, 0x1C - movs r3, 0x12 - bl MenuZeroFillWindowRect - ldr r0, _0809FA28 @ =gOtherText_CantForgetHMs - movs r1, 0xB - movs r2, 0xF - bl MenuPrint - subs r6, 0x8 - adds r4, r6 - ldr r0, _0809FA2C @ =sub_809F814 - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809FA24: .4byte gTasks + 0x8 -_0809FA28: .4byte gOtherText_CantForgetHMs -_0809FA2C: .4byte sub_809F814 - thumb_func_end sub_809F9D0 - - thumb_func_start sub_809FA30 -sub_809FA30: @ 809FA30 - ldr r0, _0809FA38 @ =gSharedMem + 0x18000 - adds r0, 0x7A - ldrb r0, [r0] - bx lr - .align 2, 0 -_0809FA38: .4byte gSharedMem + 0x18000 - thumb_func_end sub_809FA30 - - thumb_func_start GetStringCenterAlignXOffsetWithLetterSpacing -GetStringCenterAlignXOffsetWithLetterSpacing: @ 809FA3C - push {r4,lr} - lsls r0, 24 - lsls r1, 24 - lsls r2, 24 - lsls r3, 24 - lsrs r2, 23 - lsrs r3, 18 - ldr r4, _0809FA70 @ =0x0600f000 - adds r3, r4 - adds r2, r3 - lsrs r1, 12 - lsrs r0, 23 - movs r4, 0x80 - lsls r4, 2 - adds r3, r4, 0 - adds r0, r3 - adds r1, r0 - adds r0, r1, 0 - adds r0, 0x80 - strh r0, [r2] - adds r2, 0x40 - adds r1, 0x81 - strh r1, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809FA70: .4byte 0x0600f000 - thumb_func_end GetStringCenterAlignXOffsetWithLetterSpacing - - thumb_func_start GetStringCenterAlignXOffset -GetStringCenterAlignXOffset: @ 809FA74 - push {r4,lr} - adds r4, r1, 0 - adds r3, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - movs r1, 0xF - adds r2, r4, 0 - bl GetStringCenterAlignXOffsetWithLetterSpacing - pop {r4} - pop {r0} - bx r0 - thumb_func_end GetStringCenterAlignXOffset - - thumb_func_start sub_809FA94 -sub_809FA94: @ 809FA94 - push {lr} - bl IsShiny - lsls r0, 24 - cmp r0, 0 - beq _0809FAB4 - ldr r0, _0809FAB0 @ =gUnknown_083C157E - movs r1, 0x4 - movs r2, 0x2 - bl LoadPalette - movs r0, 0x1 - b _0809FAC0 - .align 2, 0 -_0809FAB0: .4byte gUnknown_083C157E -_0809FAB4: - ldr r0, _0809FAC4 @ =gUnknown_083C157C - movs r1, 0x4 - movs r2, 0x2 - bl LoadPalette - movs r0, 0 -_0809FAC0: - pop {r1} - bx r1 - .align 2, 0 -_0809FAC4: .4byte gUnknown_083C157C - thumb_func_end sub_809FA94 - - thumb_func_start sub_809FAC8 -sub_809FAC8: @ 809FAC8 - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _0809FB28 - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x4 - movs r3, 0x3 - bl MenuZeroFillWindowRect - movs r0, 0x3 - movs r1, 0x10 - movs r2, 0x9 - movs r3, 0x11 - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0xC - movs r2, 0xB - movs r3, 0xF - bl MenuZeroFillWindowRect - ldr r4, _0809FB20 @ =gStringVar1 - adds r0, r5, 0 - adds r1, r4, 0 - bl GetMonNickname - adds r0, r4, 0 - movs r1, 0xD - movs r2, 0x3 - movs r3, 0x10 - bl sub_80A1FF8 - ldr r0, _0809FB24 @ =gUnknown_083C157C - movs r1, 0x4 - movs r2, 0x2 - bl LoadPalette - b _0809FBD6 - .align 2, 0 -_0809FB20: .4byte gStringVar1 -_0809FB24: .4byte gUnknown_083C157C -_0809FB28: - adds r0, r5, 0 - bl sub_809FA94 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl SpeciesToPokedexNum - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _0809FB6C @ =0x0000ffff - cmp r4, r0 - beq _0809FB96 - cmp r6, 0 - bne _0809FB70 - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0x2 - bl GetStringCenterAlignXOffset - movs r0, 0x11 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0xD - b _0809FB8C - .align 2, 0 -_0809FB6C: .4byte 0x0000ffff -_0809FB70: - movs r0, 0x2 - movs r1, 0x8 - movs r2, 0x1 - movs r3, 0x2 - bl GetStringCenterAlignXOffsetWithLetterSpacing - movs r0, 0x11 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0x8 -_0809FB8C: - movs r2, 0x3 - movs r3, 0x2 - bl sub_80A1F98 - b _0809FBA2 -_0809FB96: - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x4 - movs r3, 0x3 - bl MenuZeroFillWindowRect -_0809FBA2: - ldr r1, _0809FBE0 @ =gStringVar1 - adds r0, r1, 0 - movs r1, 0xD - bl sub_80A1E58 - adds r1, r0, 0 - adds r0, r5, 0 - bl GetMonNickname - adds r1, r0, 0 - movs r0, 0xFC - strb r0, [r1] - movs r0, 0x13 - strb r0, [r1, 0x1] - movs r0, 0x3C - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0809FBE0 @ =gStringVar1 - movs r1, 0x1 - movs r2, 0xC - bl MenuPrint - adds r0, r5, 0 - bl sub_80A0958 -_0809FBD6: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809FBE0: .4byte gStringVar1 - thumb_func_end sub_809FAC8 - - thumb_func_start sub_809FBE4 -sub_809FBE4: @ 809FBE4 - push {r4,lr} - movs r4, 0 -_0809FBE8: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80A1918 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1B - bls _0809FBE8 - movs r0, 0xB - movs r1, 0x4 - movs r2, 0x1D - movs r3, 0x12 - bl MenuZeroFillWindowRect - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_809FBE4 - - thumb_func_start sub_809FC0C -sub_809FC0C: @ 809FC0C - push {lr} - ldr r0, _0809FC30 @ =gOtherText_Type2 - movs r1, 0xB - movs r2, 0x6 - bl MenuPrint - movs r0, 0 - movs r1, 0x16 - movs r2, 0x4 - bl GetStringCenterAlignXOffset - movs r0, 0x2 - movs r1, 0x17 - movs r2, 0x4 - bl GetStringCenterAlignXOffset - pop {r0} - bx r0 - .align 2, 0 -_0809FC30: .4byte gOtherText_Type2 - thumb_func_end sub_809FC0C - - thumb_func_start sub_809FC34 -sub_809FC34: @ 809FC34 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - movs r4, 0 -_0809FC3C: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80A1918 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - bls _0809FC3C - movs r0, 0xB - movs r1, 0x9 - movs r2, 0x1C - movs r3, 0xC - bl MenuZeroFillWindowRect - adds r0, r6, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _0809FD1C - ldr r5, _0809FCD0 @ =gStringVar1 - adds r0, r5, 0 - movs r1, 0xD - bl sub_80A1E58 - adds r5, r0, 0 - ldr r1, _0809FCD4 @ =gOtherText_OriginalTrainer - bl StringCopy - adds r5, r0, 0 - ldr r4, _0809FCD8 @ =gOtherText_FiveQuestionsAndSlash - adds r1, r4, 0 - bl StringCopy - adds r5, r0, 0 - movs r0, 0xFC - strb r0, [r5] - movs r0, 0x13 - strb r0, [r5, 0x1] - movs r0, 0x4E - strb r0, [r5, 0x2] - movs r0, 0xFF - strb r0, [r5, 0x3] - ldr r0, _0809FCD0 @ =gStringVar1 - movs r1, 0xB - movs r2, 0x4 - bl MenuPrint - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0xD - movs r2, 0xC1 - movs r3, 0x20 - bl sub_80A1EF8 - movs r0, 0x9 - movs r1, 0x78 - movs r2, 0x30 - movs r3, 0 - bl sub_80A198C - adds r0, r6, 0 - movs r1, 0x20 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r0, 0 - cmp r0, 0x5 - bhi _0809FCE0 - ldr r0, _0809FCDC @ =gOtherText_EggAbout - b _0809FCF2 - .align 2, 0 -_0809FCD0: .4byte gStringVar1 -_0809FCD4: .4byte gOtherText_OriginalTrainer -_0809FCD8: .4byte gOtherText_FiveQuestionsAndSlash -_0809FCDC: .4byte gOtherText_EggAbout -_0809FCE0: - cmp r0, 0xA - bhi _0809FCEC - ldr r0, _0809FCE8 @ =gOtherText_EggSoon - b _0809FCF2 - .align 2, 0 -_0809FCE8: .4byte gOtherText_EggSoon -_0809FCEC: - cmp r1, 0x28 - bhi _0809FD00 - ldr r0, _0809FCFC @ =gOtherText_EggSomeTime -_0809FCF2: - movs r1, 0xB - movs r2, 0x9 - bl MenuPrint - b _0809FD0A - .align 2, 0 -_0809FCFC: .4byte gOtherText_EggSomeTime -_0809FD00: - ldr r0, _0809FD18 @ =gOtherText_EggLongTime - movs r1, 0xB - movs r2, 0x9 - bl MenuPrint -_0809FD0A: - adds r0, r6, 0 - movs r1, 0xB - movs r2, 0xE - bl PokemonSummaryScreen_PrintEggTrainerMemo - b _0809FE4C - .align 2, 0 -_0809FD18: .4byte gOtherText_EggLongTime -_0809FD1C: - ldr r4, _0809FD64 @ =gStringVar2 - adds r0, r6, 0 - movs r1, 0x7 - adds r2, r4, 0 - bl GetMonData - adds r0, r6, 0 - movs r1, 0x3 - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl ConvertInternationalString - ldr r5, _0809FD68 @ =gStringVar1 - adds r0, r5, 0 - movs r1, 0xD - bl sub_80A1E58 - adds r5, r0, 0 - ldr r1, _0809FD6C @ =gOtherText_OriginalTrainer - bl StringCopy - adds r5, r0, 0 - adds r0, r6, 0 - movs r1, 0x31 - bl GetMonData - cmp r0, 0 - bne _0809FD70 - adds r0, r5, 0 - movs r1, 0x9 - b _0809FD74 - .align 2, 0 -_0809FD64: .4byte gStringVar2 -_0809FD68: .4byte gStringVar1 -_0809FD6C: .4byte gOtherText_OriginalTrainer -_0809FD70: - adds r0, r5, 0 - movs r1, 0xA -_0809FD74: - bl sub_80A1E58 - adds r5, r0, 0 - ldr r1, _0809FE54 @ =gStringVar2 - adds r0, r5, 0 - bl StringCopy - adds r5, r0, 0 - movs r0, 0xFC - strb r0, [r5] - movs r0, 0x13 - strb r0, [r5, 0x1] - movs r0, 0x4E - strb r0, [r5, 0x2] - movs r0, 0xFF - strb r0, [r5, 0x3] - ldr r0, _0809FE58 @ =gStringVar1 - movs r1, 0xB - movs r2, 0x4 - bl MenuPrint - adds r0, r6, 0 - movs r1, 0x1 - bl GetMonData - ldr r1, _0809FE5C @ =0x0000ffff - ands r1, r0 - movs r0, 0xC1 - str r0, [sp] - movs r0, 0x20 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - adds r0, r1, 0 - movs r1, 0xD - movs r2, 0x5 - movs r3, 0x2 - bl sub_80A1F98 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r2, _0809FE60 @ =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r5, r1, r2 - ldrb r4, [r5, 0x6] - adds r0, r4, 0 - movs r1, 0x78 - movs r2, 0x30 - movs r3, 0 - bl sub_80A198C - ldrb r0, [r5, 0x7] - cmp r4, r0 - beq _0809FDF8 - ldrb r0, [r5, 0x7] - movs r1, 0xA0 - movs r2, 0x30 - movs r3, 0x1 - bl sub_80A198C -_0809FDF8: - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r6, 0 - movs r1, 0x2E - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetAbilityBySpecies - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0xD - muls r0, r4 - ldr r1, _0809FE64 @ =gAbilityNames - adds r0, r1 - movs r1, 0xD - movs r2, 0xB - movs r3, 0x9 - bl sub_80A1FF8 - ldr r0, _0809FE68 @ =gAbilityDescriptions - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - movs r1, 0xB - movs r2, 0xB - bl MenuPrint - adds r0, r6, 0 - movs r1, 0xB - movs r2, 0xE - bl PokemonSummaryScreen_PrintTrainerMemo -_0809FE4C: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809FE54: .4byte gStringVar2 -_0809FE58: .4byte gStringVar1 -_0809FE5C: .4byte 0x0000ffff -_0809FE60: .4byte gBaseStats -_0809FE64: .4byte gAbilityNames -_0809FE68: .4byte gAbilityDescriptions - thumb_func_end sub_809FC34 - - thumb_func_start sub_809FE6C -sub_809FE6C: @ 809FE6C - push {r4,lr} - adds r4, r0, 0 - bl sub_809FC0C - adds r0, r4, 0 - bl sub_809FC34 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_809FE6C - - thumb_func_start sub_809FE80 -sub_809FE80: @ 809FE80 - push {lr} - movs r0, 0xE - movs r1, 0x4 - movs r2, 0x12 - movs r3, 0x5 - bl MenuZeroFillWindowRect - movs r0, 0x19 - movs r1, 0x4 - movs r2, 0x1E - movs r3, 0x5 - bl MenuZeroFillWindowRect - movs r0, 0xB - movs r1, 0x9 - movs r2, 0x1C - movs r3, 0xC - bl MenuZeroFillWindowRect - movs r0, 0xB - movs r1, 0xE - movs r2, 0x1C - movs r3, 0x11 - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - thumb_func_end sub_809FE80 - - thumb_func_start sub_809FEB8 -sub_809FEB8: @ 809FEB8 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0809FF40 @ =gOtherText_ExpPoints - movs r1, 0xD - movs r2, 0xB - movs r3, 0xE - bl sub_80A1FF8 - ldr r0, _0809FF44 @ =gOtherText_NextLv - movs r1, 0xD - movs r2, 0xB - movs r3, 0x10 - bl sub_80A1FF8 - ldr r0, _0809FF48 @ =gOtherText_Terminator18 - movs r1, 0x15 - movs r2, 0x10 - bl MenuPrint - ldr r0, _0809FF4C @ =gOtherText_HP - movs r4, 0x2A - str r4, [sp] - movs r1, 0xD - movs r2, 0xB - movs r3, 0x7 - bl sub_80A1F48 - ldr r0, _0809FF50 @ =gOtherText_Attack - str r4, [sp] - movs r1, 0xD - movs r2, 0xB - movs r3, 0x9 - bl sub_80A1F48 - ldr r0, _0809FF54 @ =gOtherText_Defense - str r4, [sp] - movs r1, 0xD - movs r2, 0xB - movs r3, 0xB - bl sub_80A1F48 - ldr r0, _0809FF58 @ =gOtherText_SpAtk - movs r4, 0x24 - str r4, [sp] - movs r1, 0xD - movs r2, 0x16 - movs r3, 0x7 - bl sub_80A1F48 - ldr r0, _0809FF5C @ =gOtherText_SpDef - str r4, [sp] - movs r1, 0xD - movs r2, 0x16 - movs r3, 0x9 - bl sub_80A1F48 - ldr r0, _0809FF60 @ =gOtherText_Speed - str r4, [sp] - movs r1, 0xD - movs r2, 0x16 - movs r3, 0xB - bl sub_80A1F48 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809FF40: .4byte gOtherText_ExpPoints -_0809FF44: .4byte gOtherText_NextLv -_0809FF48: .4byte gOtherText_Terminator18 -_0809FF4C: .4byte gOtherText_HP -_0809FF50: .4byte gOtherText_Attack -_0809FF54: .4byte gOtherText_Defense -_0809FF58: .4byte gOtherText_SpAtk -_0809FF5C: .4byte gOtherText_SpDef -_0809FF60: .4byte gOtherText_Speed - thumb_func_end sub_809FEB8 - - thumb_func_start sub_809FF64 -sub_809FF64: @ 809FF64 - push {r4,r5,lr} - adds r5, r0, 0 - movs r4, 0 -_0809FF6A: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80A1918 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - bls _0809FF6A - adds r0, r5, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB - movs r2, 0x4 - bl sub_80A0BF4 - adds r0, r5, 0 - bl sub_80A0B88 - ldr r4, _080A008C @ =gStringVar1 - adds r0, r5, 0 - movs r1, 0x19 - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x1D - movs r2, 0xE - bl MenuPrint_RightAligned - adds r0, r5, 0 - movs r1, 0x17 - movs r2, 0x10 - bl sub_80A0C80 - adds r0, r5, 0 - movs r1, 0x3B - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0x9 - movs r3, 0x32 - bl sub_8072BD8 - adds r0, r5, 0 - movs r1, 0x3C - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0xB - movs r3, 0x32 - bl sub_8072BD8 - adds r0, r5, 0 - movs r1, 0x3E - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x1B - movs r2, 0x7 - movs r3, 0x12 - bl sub_8072BD8 - adds r0, r5, 0 - movs r1, 0x3F - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x1B - movs r2, 0x9 - movs r3, 0x12 - bl sub_8072BD8 - adds r0, r5, 0 - movs r1, 0x3D - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x1B - movs r2, 0xB - movs r3, 0x12 - bl sub_8072BD8 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x18 - movs r3, 0x1 - bl sub_8072C14 - adds r4, r0, 0 - movs r0, 0xBA - strb r0, [r4] - adds r4, 0x1 - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x30 - movs r3, 0x1 - bl sub_8072C14 - ldr r0, _080A008C @ =gStringVar1 - movs r1, 0x7E - movs r2, 0x38 - movs r3, 0x1 - bl MenuPrint_PixelCoords - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A008C: .4byte gStringVar1 - thumb_func_end sub_809FF64 - - thumb_func_start sub_80A0090 -sub_80A0090: @ 80A0090 - push {r4,lr} - adds r4, r0, 0 - bl sub_809FEB8 - adds r0, r4, 0 - bl sub_809FF64 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A0090 - - thumb_func_start sub_80A00A4 -sub_80A00A4: @ 80A00A4 - push {lr} - movs r0, 0xB - movs r1, 0x4 - movs r2, 0x13 - movs r3, 0x5 - bl MenuZeroFillWindowRect - movs r0, 0x10 - movs r1, 0x7 - movs r2, 0x15 - movs r3, 0x8 - bl MenuZeroFillWindowRect - movs r0, 0x11 - movs r1, 0x9 - movs r2, 0x15 - movs r3, 0xC - bl MenuZeroFillWindowRect - movs r0, 0x1B - movs r1, 0x7 - movs r2, 0x1D - movs r3, 0xC - bl MenuZeroFillWindowRect - movs r0, 0x16 - movs r1, 0xE - movs r2, 0x1C - movs r3, 0xF - bl MenuZeroFillWindowRect - movs r0, 0x17 - movs r1, 0x10 - movs r2, 0x1C - movs r3, 0x11 - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - thumb_func_end sub_80A00A4 - - thumb_func_start sub_80A00F4 -sub_80A00F4: @ 80A00F4 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r2, _080A012C @ =gSharedMem + 0x18000 - adds r0, r2, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - bne _080A010A - cmp r1, 0x4 - beq _080A0150 -_080A010A: - ldrb r0, [r2, 0xB] - cmp r0, 0x2 - bne _080A0138 - ldr r0, _080A0130 @ =gOtherText_Power2 - movs r1, 0xD - movs r2, 0x1 - movs r3, 0xF - bl sub_80A1FF8 - ldr r0, _080A0134 @ =gOtherText_Accuracy2 - movs r1, 0xD - movs r2, 0x1 - movs r3, 0x11 - bl sub_80A1FF8 - b _080A0150 - .align 2, 0 -_080A012C: .4byte gSharedMem + 0x18000 -_080A0130: .4byte gOtherText_Power2 -_080A0134: .4byte gOtherText_Accuracy2 -_080A0138: - ldr r0, _080A0154 @ =gOtherText_Appeal2 - movs r1, 0xD - movs r2, 0x1 - movs r3, 0xF - bl sub_80A1FF8 - ldr r0, _080A0158 @ =gOtherText_Jam2 - movs r1, 0xD - movs r2, 0x1 - movs r3, 0x11 - bl sub_80A1FF8 -_080A0150: - pop {r0} - bx r0 - .align 2, 0 -_080A0154: .4byte gOtherText_Appeal2 -_080A0158: .4byte gOtherText_Jam2 - thumb_func_end sub_80A00F4 - - thumb_func_start sub_80A015C -sub_80A015C: @ 80A015C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - movs r7, 0 -_080A0168: - mov r0, r8 - adds r1, r7, 0 - bl sub_809F760 - lsls r0, 16 - lsrs r6, r0, 16 - mov r0, r8 - adds r1, r7, 0 - bl sub_809F798 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - cmp r6, 0 - bne _080A01B8 - adds r0, r7, 0 - movs r1, 0x1 - bl sub_80A1918 - lsls r4, r7, 25 - movs r0, 0x80 - lsls r0, 19 - adds r4, r0 - lsrs r4, 24 - ldr r0, _080A01B0 @ =gOtherText_OneDash - movs r1, 0xD - movs r2, 0xF - adds r3, r4, 0 - bl sub_80A1FF8 - ldr r0, _080A01B4 @ =gOtherText_TwoDashes - movs r1, 0x1A - adds r2, r4, 0 - bl MenuPrint - b _080A0276 - .align 2, 0 -_080A01B0: .4byte gOtherText_OneDash -_080A01B4: .4byte gOtherText_TwoDashes -_080A01B8: - ldr r0, _080A01E0 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0xB] - cmp r0, 0x2 - bne _080A01E8 - ldr r1, _080A01E4 @ =gBattleMoves - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r4, r7, 1 - adds r2, r4, 0x4 - lsls r2, 27 - lsrs r2, 24 - movs r1, 0x57 - adds r3, r7, 0 - bl sub_80A198C - b _080A020C - .align 2, 0 -_080A01E0: .4byte gSharedMem + 0x18000 -_080A01E4: .4byte gBattleMoves -_080A01E8: - ldr r1, _080A0290 @ =gContestMoves - lsls r0, r6, 3 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 5 - movs r1, 0x90 - lsls r1, 21 - adds r0, r1 - lsrs r0, 24 - lsls r4, r7, 1 - adds r2, r4, 0x4 - lsls r2, 27 - lsrs r2, 24 - movs r1, 0x57 - adds r3, r7, 0 - bl sub_80A198C -_080A020C: - movs r0, 0xD - muls r0, r6 - ldr r1, _080A0294 @ =gMoveNames - adds r0, r1 - adds r5, r4, 0x4 - lsls r5, 24 - lsrs r5, 24 - movs r1, 0xD - movs r2, 0xF - adds r3, r5, 0 - bl sub_80A1FF8 - movs r0, 0x1 - movs r1, 0x18 - adds r2, r5, 0 - bl GetStringCenterAlignXOffset - mov r0, r8 - movs r1, 0x15 - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - adds r2, r7, 0 - bl CalculatePPWithBonus - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080A0298 @ =gStringVar1 - adds r0, r1, 0 - mov r1, r9 - movs r2, 0xE - movs r3, 0x1 - bl sub_8072C14 - adds r1, r0, 0 - movs r0, 0xBA - strb r0, [r1] - adds r1, 0x1 - adds r0, r1, 0 - adds r1, r4, 0 - movs r2, 0x20 - movs r3, 0x1 - bl sub_8072C14 - ldr r0, _080A0298 @ =gStringVar1 - movs r1, 0x19 - adds r2, r5, 0 - bl MenuPrint -_080A0276: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x3 - bhi _080A0282 - b _080A0168 -_080A0282: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A0290: .4byte gContestMoves -_080A0294: .4byte gMoveNames -_080A0298: .4byte gStringVar1 - thumb_func_end sub_80A015C - - thumb_func_start sub_80A029C -sub_80A029C: @ 80A029C - push {r4,r5,lr} - ldr r1, _080A02B8 @ =gSharedMem + 0x18000 - adds r4, r1, 0 - adds r4, 0x7C - ldrh r0, [r4] - cmp r0, 0 - bne _080A02C0 - ldr r0, _080A02BC @ =gOtherText_CancelNoTerminator - movs r1, 0xD - movs r2, 0xF - movs r3, 0xC - bl sub_80A1FF8 - b _080A037E - .align 2, 0 -_080A02B8: .4byte gSharedMem + 0x18000 -_080A02BC: .4byte gOtherText_CancelNoTerminator -_080A02C0: - ldrh r5, [r4] - ldrb r0, [r1, 0xB] - cmp r0, 0x2 - bne _080A02E4 - ldr r1, _080A02E0 @ =gBattleMoves - lsls r4, r5, 1 - adds r0, r4, r5 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - movs r1, 0x57 - movs r2, 0x60 - movs r3, 0x4 - bl sub_80A198C - b _080A0304 - .align 2, 0 -_080A02E0: .4byte gBattleMoves -_080A02E4: - ldr r1, _080A0320 @ =gContestMoves - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 5 - movs r1, 0x90 - lsls r1, 21 - adds r0, r1 - lsrs r0, 24 - movs r1, 0x57 - movs r2, 0x60 - movs r3, 0x4 - bl sub_80A198C - lsls r4, r5, 1 -_080A0304: - ldr r0, _080A0324 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0xB] - cmp r0, 0x2 - bne _080A032C - movs r0, 0xD - muls r0, r5 - ldr r1, _080A0328 @ =gMoveNames - adds r0, r1 - movs r1, 0xA - movs r2, 0xF - movs r3, 0xC - bl sub_80A1FF8 - b _080A033E - .align 2, 0 -_080A0320: .4byte gContestMoves -_080A0324: .4byte gSharedMem + 0x18000 -_080A0328: .4byte gMoveNames -_080A032C: - movs r0, 0xD - muls r0, r5 - ldr r1, _080A0384 @ =gMoveNames - adds r0, r1 - movs r1, 0x9 - movs r2, 0xF - movs r3, 0xC - bl sub_80A1FF8 -_080A033E: - movs r0, 0x1 - movs r1, 0x18 - movs r2, 0xC - bl GetStringCenterAlignXOffset - ldr r2, _080A0388 @ =gStringVar1 - ldr r1, _080A038C @ =gBattleMoves - adds r0, r4, r5 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x4] - adds r0, r2, 0 - adds r1, r4, 0 - movs r2, 0xE - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - movs r0, 0xBA - strb r0, [r2] - adds r2, 0x1 - adds r0, r2, 0 - adds r1, r4, 0 - movs r2, 0x20 - movs r3, 0x1 - bl sub_8072C14 - ldr r0, _080A0388 @ =gStringVar1 - movs r1, 0x19 - movs r2, 0xC - bl MenuPrint -_080A037E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A0384: .4byte gMoveNames -_080A0388: .4byte gStringVar1 -_080A038C: .4byte gBattleMoves - thumb_func_end sub_80A029C - - thumb_func_start sub_80A0390 -sub_80A0390: @ 80A0390 - push {r4,lr} - movs r4, 0 -_080A0394: - lsls r3, r4, 1 - adds r1, r3, 0x4 - lsls r1, 24 - lsrs r1, 24 - adds r3, 0x5 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0xF - movs r2, 0x1C - bl MenuZeroFillWindowRect - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080A0394 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A0390 - - thumb_func_start sub_80A03BC -sub_80A03BC: @ 80A03BC - push {lr} - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x4 - beq _080A03D0 - bl sub_809F760 - lsls r0, 16 - lsrs r1, r0, 16 - b _080A03E0 -_080A03D0: - ldr r0, _080A03E8 @ =gSharedMem + 0x18000 - adds r2, r0, 0 - adds r2, 0x7C - ldrh r0, [r2] - ldr r1, _080A03EC @ =0x0000ffff - cmp r0, 0 - beq _080A03E0 - adds r1, r0, 0 -_080A03E0: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_080A03E8: .4byte gSharedMem + 0x18000 -_080A03EC: .4byte 0x0000ffff - thumb_func_end sub_80A03BC - - thumb_func_start sub_80A03F0 -sub_80A03F0: @ 80A03F0 - push {lr} - ldrb r1, [r1] - bl sub_80A03BC - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _080A0414 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0xB] - cmp r0, 0x2 - bne _080A041C - adds r0, r1, 0 - bl sub_80A04CC - ldr r0, _080A0418 @ =0x0000ffff - bl sub_80A057C - b _080A0422 - .align 2, 0 -_080A0414: .4byte gSharedMem + 0x18000 -_080A0418: .4byte 0x0000ffff -_080A041C: - adds r0, r1, 0 - bl sub_80A057C -_080A0422: - pop {r0} - bx r0 - thumb_func_end sub_80A03F0 - - thumb_func_start sub_80A0428 -sub_80A0428: @ 80A0428 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - ldrb r1, [r6] - bl sub_80A03BC - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0xB - movs r1, 0xF - movs r2, 0x1C - movs r3, 0x12 - bl MenuZeroFillWindowRect - ldr r0, _080A0454 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0xB] - cmp r0, 0x2 - bne _080A0458 - adds r0, r4, 0 - bl sub_80A046C - b _080A045E - .align 2, 0 -_080A0454: .4byte gSharedMem + 0x18000 -_080A0458: - adds r0, r4, 0 - bl sub_80A0498 -_080A045E: - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_80A03F0 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A0428 - - thumb_func_start sub_80A046C -sub_80A046C: @ 80A046C - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _080A0490 @ =0x0000ffff - cmp r1, r0 - beq _080A048A - ldr r0, _080A0494 @ =gMoveDescriptions - subs r1, 0x1 - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - movs r1, 0xB - movs r2, 0xF - bl MenuPrint -_080A048A: - pop {r0} - bx r0 - .align 2, 0 -_080A0490: .4byte 0x0000ffff -_080A0494: .4byte gMoveDescriptions - thumb_func_end sub_80A046C - - thumb_func_start sub_80A0498 -sub_80A0498: @ 80A0498 - push {lr} - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _080A04C0 @ =0x0000ffff - cmp r3, r0 - beq _080A04BC - ldr r2, _080A04C4 @ =gUnknown_083CADD4 - ldr r1, _080A04C8 @ =gContestMoves - lsls r0, r3, 3 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - movs r1, 0xB - movs r2, 0xF - bl MenuPrint -_080A04BC: - pop {r0} - bx r0 - .align 2, 0 -_080A04C0: .4byte 0x0000ffff -_080A04C4: .4byte gUnknown_083CADD4 -_080A04C8: .4byte gContestMoves - thumb_func_end sub_80A0498 - - thumb_func_start sub_80A04CC -sub_80A04CC: @ 80A04CC - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _080A0504 @ =0x0000ffff - cmp r4, r0 - beq _080A0572 - ldr r2, _080A0508 @ =gBattleMoves - lsls r1, r4, 1 - adds r0, r1, r4 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x1] - adds r5, r1, 0 - cmp r0, 0x1 - bhi _080A0514 - ldr r0, _080A050C @ =gStringVar1 - ldr r1, _080A0510 @ =gOtherText_ThreeDashes2 - movs r2, 0x15 - movs r3, 0x1 - bl sub_8072C74 - ldr r0, _080A050C @ =gStringVar1 - movs r1, 0x7 - movs r2, 0xF - bl MenuPrint - b _080A052A - .align 2, 0 -_080A0504: .4byte 0x0000ffff -_080A0508: .4byte gBattleMoves -_080A050C: .4byte gStringVar1 -_080A0510: .4byte gOtherText_ThreeDashes2 -_080A0514: - ldr r0, _080A0550 @ =gStringVar1 - ldrb r1, [r2, 0x1] - movs r2, 0x15 - movs r3, 0x1 - bl sub_8072C14 - ldr r0, _080A0550 @ =gStringVar1 - movs r1, 0x7 - movs r2, 0xF - bl MenuPrint -_080A052A: - ldr r0, _080A0554 @ =gBattleMoves - adds r1, r5, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x3] - cmp r0, 0 - bne _080A055C - ldr r0, _080A0550 @ =gStringVar1 - ldr r1, _080A0558 @ =gOtherText_ThreeDashes2 - movs r2, 0x15 - movs r3, 0x1 - bl sub_8072C74 - ldr r0, _080A0550 @ =gStringVar1 - movs r1, 0x7 - movs r2, 0x11 - bl MenuPrint - b _080A0572 - .align 2, 0 -_080A0550: .4byte gStringVar1 -_080A0554: .4byte gBattleMoves -_080A0558: .4byte gOtherText_ThreeDashes2 -_080A055C: - ldr r0, _080A0578 @ =gStringVar1 - ldrb r1, [r1, 0x3] - movs r2, 0x15 - movs r3, 0x1 - bl sub_8072C14 - ldr r0, _080A0578 @ =gStringVar1 - movs r1, 0x7 - movs r2, 0x11 - bl MenuPrint -_080A0572: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A0578: .4byte gStringVar1 - thumb_func_end sub_80A04CC - - thumb_func_start sub_80A057C -sub_80A057C: @ 80A057C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _080A0648 @ =0x06006800 - mov r8, r0 - ldr r0, _080A064C @ =0x0000ffff - cmp r5, r0 - beq _080A063A - ldr r1, _080A0650 @ =gContestEffects - ldr r2, _080A0654 @ =gContestMoves - lsls r3, r5, 3 - adds r0, r3, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x1] - mov r10, r2 - mov r9, r3 - cmp r4, 0xFF - beq _080A05B8 - adds r0, r4, 0 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r4, r0, 24 -_080A05B8: - movs r2, 0 - movs r7, 0x3 - movs r6, 0xF3 - lsls r6, 2 -_080A05C0: - ldr r3, _080A0658 @ =0x00001039 - cmp r4, 0xFF - beq _080A05CC - cmp r2, r4 - bcs _080A05CC - adds r3, 0x1 -_080A05CC: - lsrs r0, r2, 2 - lsls r0, 5 - adds r1, r2, 0 - ands r1, r7 - adds r1, r0 - lsls r1, 1 - add r1, r8 - adds r1, r6 - strh r3, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _080A05C0 - ldr r0, _080A064C @ =0x0000ffff - cmp r5, r0 - beq _080A063A - mov r0, r9 - add r0, r10 - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _080A0650 @ =gContestEffects - adds r0, r1 - ldrb r4, [r0, 0x2] - cmp r4, 0xFF - beq _080A060C - adds r0, r4, 0 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r4, r0, 24 -_080A060C: - movs r2, 0 - movs r6, 0x3 - ldr r5, _080A065C @ =0x0000044c -_080A0612: - ldr r3, _080A0660 @ =0x0000103d - cmp r4, 0xFF - beq _080A061E - cmp r2, r4 - bcs _080A061E - subs r3, 0x1 -_080A061E: - lsrs r0, r2, 2 - lsls r0, 5 - adds r1, r2, 0 - ands r1, r6 - adds r1, r0 - lsls r1, 1 - add r1, r8 - adds r1, r5 - strh r3, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _080A0612 -_080A063A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A0648: .4byte 0x06006800 -_080A064C: .4byte 0x0000ffff -_080A0650: .4byte gContestEffects -_080A0654: .4byte gContestMoves -_080A0658: .4byte 0x00001039 -_080A065C: .4byte 0x0000044c -_080A0660: .4byte 0x0000103d - thumb_func_end sub_80A057C - - .section .text_80A0958 - - thumb_func_start sub_80A0958 -sub_80A0958: @ 80A0958 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - mov r8, r0 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r2, _080A0A24 @ =gStringVar1 - adds r0, r2, 0 - movs r1, 0xD - bl sub_80A1E58 - adds r2, r0, 0 - movs r6, 0xFC - strb r6, [r2] - movs r0, 0x11 - strb r0, [r2, 0x1] - movs r0, 0x7 - strb r0, [r2, 0x2] - movs r0, 0xBA - strb r0, [r2, 0x3] - adds r2, 0x4 - movs r0, 0xB - adds r1, r4, 0 - muls r1, r0 - ldr r0, _080A0A28 @ =gSpeciesNames - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - strb r6, [r2] - movs r0, 0x13 - mov r10, r0 - strb r0, [r2, 0x1] - movs r0, 0x50 - strb r0, [r2, 0x2] - movs r0, 0xFF - mov r9, r0 - strb r0, [r2, 0x3] - ldr r5, _080A0A24 @ =gStringVar1 - adds r0, r5, 0 - movs r1, 0 - movs r2, 0xE - bl MenuPrint - movs r0, 0x3 - movs r1, 0x10 - movs r2, 0x9 - movs r3, 0x11 - bl MenuZeroFillWindowRect - mov r0, r8 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0xD - bl sub_80A1E58 - adds r2, r0, 0 - movs r0, 0x34 - strb r0, [r2] - adds r2, 0x1 - adds r0, r2, 0 - adds r1, r4, 0 - bl ConvertIntToDecimalString - adds r2, r0, 0 - strb r6, [r2] - mov r0, r10 - strb r0, [r2, 0x1] - movs r0, 0x20 - strb r0, [r2, 0x2] - mov r0, r9 - strb r0, [r2, 0x3] - adds r0, r5, 0 - movs r1, 0x3 - movs r2, 0x10 - bl MenuPrint - mov r0, r8 - movs r1, 0x7 - movs r2, 0x10 - bl sub_80A0A2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A0A24: .4byte gStringVar1 -_080A0A28: .4byte gSpeciesNames - thumb_func_end sub_80A0958 - - thumb_func_start sub_80A0A2C -sub_80A0A2C: @ 80A0A2C - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x20 - beq _080A0A84 - cmp r0, 0x1D - beq _080A0A84 - adds r0, r6, 0 - bl GetMonGender - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080A0A6E - cmp r0, 0xFE - beq _080A0A78 - adds r3, r4, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl MenuZeroFillWindowRect - b _080A0A84 -_080A0A6E: - ldr r0, _080A0A74 @ =gOtherText_MaleSymbol2 - movs r1, 0xB - b _080A0A7C - .align 2, 0 -_080A0A74: .4byte gOtherText_MaleSymbol2 -_080A0A78: - ldr r0, _080A0A8C @ =gOtherText_FemaleSymbolAndLv - movs r1, 0xC -_080A0A7C: - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_80A1FF8 -_080A0A84: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A0A8C: .4byte gOtherText_FemaleSymbolAndLv - thumb_func_end sub_80A0A2C - - thumb_func_start sub_80A0A90 -sub_80A0A90: @ 80A0A90 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x32 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x33 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x34 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x35 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x36 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x43 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x44 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x45 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x46 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x47 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x48 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x49 - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x4A - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x4B - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x4C - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x4D - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x4E - bl GetMonData - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80A0A90 - - thumb_func_start sub_80A0B88 -sub_80A0B88: @ 80A0B88 - push {r4,r5,lr} - bl sub_80A0A90 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080A0BA8 - ldr r0, _080A0BA0 @ =gStringVar1 - ldr r1, _080A0BA4 @ =gOtherText_None - bl StringCopy - b _080A0BD8 - .align 2, 0 -_080A0BA0: .4byte gStringVar1 -_080A0BA4: .4byte gOtherText_None -_080A0BA8: - ldr r4, _080A0BE8 @ =gStringVar1 - ldr r1, _080A0BEC @ =gOtherText_Ribbons00 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - bl StringLength - lsls r0, 24 - lsrs r0, 24 - subs r4, 0x2 - adds r0, r4 - movs r1, 0xFC - strb r1, [r0] - movs r1, 0x14 - strb r1, [r0, 0x1] - movs r1, 0x6 - strb r1, [r0, 0x2] - adds r0, 0x3 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN -_080A0BD8: - ldr r0, _080A0BF0 @ =gUnknown_083C15AE - movs r1, 0x15 - movs r2, 0x4 - bl MenuPrint - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A0BE8: .4byte gStringVar1 -_080A0BEC: .4byte gOtherText_Ribbons00 -_080A0BF0: .4byte gUnknown_083C15AE - thumb_func_end sub_80A0B88 - - thumb_func_start sub_80A0BF4 -sub_80A0BF4: @ 80A0BF4 - push {r4-r7,lr} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - cmp r5, 0xAF - bne _080A0C48 - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A0C48 - bl IsLinkDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A0C48 - ldr r0, _080A0C40 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x9] - cmp r0, 0x1 - beq _080A0C2E - cmp r0, 0x4 - beq _080A0C2E - cmp r0, 0x5 - bne _080A0C48 -_080A0C2E: - ldr r4, _080A0C44 @ =gStringVar1 - adds r0, r5, 0 - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - b _080A0C68 - .align 2, 0 -_080A0C40: .4byte gSharedMem + 0x18000 -_080A0C44: .4byte gStringVar1 -_080A0C48: - cmp r5, 0 - bne _080A0C60 - ldr r0, _080A0C58 @ =gStringVar1 - ldr r1, _080A0C5C @ =gOtherText_None - bl StringCopy - b _080A0C68 - .align 2, 0 -_080A0C58: .4byte gStringVar1 -_080A0C5C: .4byte gOtherText_None -_080A0C60: - ldr r1, _080A0C78 @ =gStringVar1 - adds r0, r5, 0 - bl CopyItemName -_080A0C68: - ldr r0, _080A0C7C @ =gUnknown_083C15B4 - adds r1, r7, 0 - adds r2, r6, 0 - bl MenuPrint - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A0C78: .4byte gStringVar1 -_080A0C7C: .4byte gUnknown_083C15B4 - thumb_func_end sub_80A0BF4 - - thumb_func_start sub_80A0C80 -sub_80A0C80: @ 80A0C80 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - movs r0, 0 - mov r9, r0 - movs r6, 0 - movs r7, 0 - adds r0, r4, 0 - movs r1, 0x19 - bl GetMonData - mov r8, r0 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0x63 - bhi _080A0D14 - ldr r3, _080A0D4C @ =gExperienceTables - adds r1, r5, 0x1 - lsls r1, 2 - ldr r2, _080A0D50 @ =gBaseStats - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r2, r0 - adds r1, r2 - adds r1, r3 - ldr r1, [r1] - mov r0, r8 - subs r0, r1, r0 - mov r9, r0 - lsls r0, r5, 2 - adds r0, r2 - adds r0, r3 - ldr r0, [r0] - subs r1, r0 - mov r2, r8 - subs r4, r2, r0 - lsls r0, r4, 6 - bl __udivsi3 - adds r6, r0, 0 - movs r7, 0 - adds r0, r7, 0 - orrs r0, r6 - cmp r0, 0 - bne _080A0D14 - cmp r4, 0 - beq _080A0D14 - movs r6, 0x1 - movs r7, 0 -_080A0D14: - ldr r4, _080A0D54 @ =gStringVar1 - adds r0, r4, 0 - mov r1, r9 - bl ConvertIntToDecimalString - mov r1, r10 - adds r1, 0x6 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - ldr r2, [sp] - bl MenuPrint_RightAligned - ldr r0, _080A0D58 @ =0x06004caa - mov r9, r0 - movs r2, 0 - mov r12, r2 - ldr r0, _080A0D5C @ =0x00002062 - mov r8, r0 -_080A0D3A: - cmp r7, 0 - bgt _080A0D46 - cmp r7, 0 - bne _080A0D64 - cmp r6, 0x7 - bls _080A0D64 -_080A0D46: - ldr r1, _080A0D60 @ =0x0000206a - b _080A0D96 - .align 2, 0 -_080A0D4C: .4byte gExperienceTables -_080A0D50: .4byte gBaseStats -_080A0D54: .4byte gStringVar1 -_080A0D58: .4byte 0x06004caa -_080A0D5C: .4byte 0x00002062 -_080A0D60: .4byte 0x0000206a -_080A0D64: - adds r5, r7, 0 - adds r4, r6, 0 - cmp r7, 0 - bge _080A0D74 - movs r4, 0x7 - movs r5, 0 - adds r4, r6 - adcs r5, r7 -_080A0D74: - lsls r3, r5, 29 - lsrs r2, r4, 3 - adds r0, r3, 0 - orrs r0, r2 - asrs r1, r5, 3 - lsrs r5, r0, 29 - lsls r4, r1, 3 - adds r3, r5, 0 - orrs r3, r4 - lsls r2, r0, 3 - adds r1, r7, 0 - adds r0, r6, 0 - subs r0, r2 - sbcs r1, r3 - add r0, r8 - lsls r0, 16 - lsrs r1, r0, 16 -_080A0D96: - mov r2, r12 - lsls r0, r2, 1 - add r0, r9 - strh r1, [r0] - movs r0, 0x8 - negs r0, r0 - asrs r1, r0, 31 - adds r6, r0 - adcs r7, r1 - cmp r7, 0 - bge _080A0DB0 - movs r6, 0 - movs r7, 0 -_080A0DB0: - mov r0, r12 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - cmp r0, 0x7 - bls _080A0D3A - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A0C80 - - thumb_func_start sub_80A0DD0 -sub_80A0DD0: @ 80A0DD0 - push {r4,r5,lr} - ldr r2, _080A0E3C @ =gStringVar1 - movs r5, 0xFC - strb r5, [r2] - movs r0, 0x12 - strb r0, [r2, 0x1] - movs r0, 0x2 - strb r0, [r2, 0x2] - adds r2, 0x3 - adds r0, r2, 0 - movs r1, 0xD - bl sub_80A1E58 - adds r2, r0, 0 - ldr r1, _080A0E40 @ =gUnknown_083C1068 - ldr r4, _080A0E44 @ =gSharedMem + 0x18000 - adds r0, r4, 0 - adds r0, 0x7E - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - strb r5, [r2] - movs r0, 0x13 - strb r0, [r2, 0x1] - movs r0, 0x58 - strb r0, [r2, 0x2] - movs r0, 0xFF - strb r0, [r2, 0x3] - ldr r0, _080A0E3C @ =gStringVar1 - movs r1, 0 - movs r2, 0 - bl MenuPrint - adds r4, 0x7F - ldrb r0, [r4] - cmp r0, 0 - beq _080A0E48 - movs r0, 0x5 - movs r1, 0x17 - movs r2, 0 - bl GetStringCenterAlignXOffset - movs r0, 0x6 - movs r1, 0x18 - movs r2, 0 - bl GetStringCenterAlignXOffset - b _080A0E54 - .align 2, 0 -_080A0E3C: .4byte gStringVar1 -_080A0E40: .4byte gUnknown_083C1068 -_080A0E44: .4byte gSharedMem + 0x18000 -_080A0E48: - movs r0, 0x17 - movs r1, 0 - movs r2, 0x18 - movs r3, 0x1 - bl MenuZeroFillWindowRect -_080A0E54: - ldr r2, _080A0E98 @ =gStringVar1 - adds r0, r2, 0 - movs r1, 0xD - bl sub_80A1E58 - adds r2, r0, 0 - ldr r1, _080A0E9C @ =gUnknown_083C1068 - ldr r0, _080A0EA0 @ =gSharedMem + 0x18000 - adds r0, 0x7F - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - movs r0, 0xFC - strb r0, [r2] - movs r0, 0x13 - strb r0, [r2, 0x1] - movs r0, 0x28 - strb r0, [r2, 0x2] - movs r0, 0xFF - strb r0, [r2, 0x3] - ldr r0, _080A0E98 @ =gStringVar1 - movs r1, 0x19 - movs r2, 0 - bl MenuPrint - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A0E98: .4byte gStringVar1 -_080A0E9C: .4byte gUnknown_083C1068 -_080A0EA0: .4byte gSharedMem + 0x18000 - thumb_func_end sub_80A0DD0 - - thumb_func_start sub_80A0EA4 -sub_80A0EA4: @ 80A0EA4 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080A0ECC @ =0x0600e444 - ldr r6, _080A0ED0 @ =0x0600ec44 - movs r1, 0 - bl CheckPartyPokerus - lsls r0, 24 - cmp r0, 0 - bne _080A0ED4 - adds r0, r4, 0 - movs r1, 0 - bl CheckPartyHasHadPokerus - lsls r0, 24 - cmp r0, 0 - beq _080A0ED4 - movs r0, 0x2C - b _080A0ED8 - .align 2, 0 -_080A0ECC: .4byte 0x0600e444 -_080A0ED0: .4byte 0x0600ec44 -_080A0ED4: - ldr r1, _080A0EE4 @ =0x0000081a - adds r0, r1, 0 -_080A0ED8: - strh r0, [r5] - strh r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A0EE4: .4byte 0x0000081a - thumb_func_end sub_80A0EA4 - - thumb_func_start sub_80A0EE8 -sub_80A0EE8: @ 80A0EE8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - movs r3, 0 - ldr r6, _080A0F24 @ =gSharedMem + 0x18000 - adds r5, r6, 0 - ldr r1, _080A0F28 @ =0x00004040 - mov r8, r1 - ldr r2, _080A0F2C @ =0x0000404a - mov r10, r2 -_080A0F02: - adds r0, r5, 0 - adds r0, 0x75 - ldrb r0, [r0] - cmp r3, r0 - bcs _080A0F30 - lsls r1, r3, 1 - lsls r0, r3, 2 - add r0, sp - mov r4, r8 - strh r4, [r0] - adds r1, 0x1 - lsls r1, 1 - mov r7, sp - adds r0, r7, r1 - strh r4, [r0] - b _080A0FE2 - .align 2, 0 -_080A0F24: .4byte gSharedMem + 0x18000 -_080A0F28: .4byte 0x00004040 -_080A0F2C: .4byte 0x0000404a -_080A0F30: - movs r0, 0x76 - adds r0, r6 - mov r12, r0 - ldrb r1, [r0] - cmp r3, r1 - bls _080A0F52 - lsls r1, r3, 1 - lsls r0, r3, 2 - add r0, sp - mov r2, r10 - strh r2, [r0] - adds r1, 0x1 - lsls r1, 1 - mov r4, sp - adds r0, r4, r1 - strh r2, [r0] - b _080A0FE2 -_080A0F52: - ldrb r4, [r5, 0xB] - cmp r3, r4 - bcs _080A0F6E - lsls r1, r3, 1 - lsls r0, r3, 2 - mov r7, sp - adds r2, r7, r0 - ldr r0, _080A0F88 @ =0x00004046 - strh r0, [r2] - adds r1, 0x1 - lsls r1, 1 - add r1, sp - adds r0, 0x1 - strh r0, [r1] -_080A0F6E: - cmp r3, r4 - bne _080A0FA6 - mov r0, r12 - ldrb r0, [r0] - cmp r3, r0 - beq _080A0F90 - lsls r1, r3, 1 - lsls r0, r3, 2 - mov r4, sp - adds r2, r4, r0 - ldr r0, _080A0F8C @ =0x00004041 - b _080A0F9A - .align 2, 0 -_080A0F88: .4byte 0x00004046 -_080A0F8C: .4byte 0x00004041 -_080A0F90: - lsls r1, r3, 1 - lsls r0, r3, 2 - mov r7, sp - adds r2, r7, r0 - ldr r0, _080A0FC4 @ =0x0000404b -_080A0F9A: - strh r0, [r2] - adds r1, 0x1 - lsls r1, 1 - add r1, sp - adds r0, 0x1 - strh r0, [r1] -_080A0FA6: - ldrb r0, [r5, 0xB] - cmp r3, r0 - bls _080A0FE2 - adds r0, r6, 0 - adds r0, 0x76 - ldrb r0, [r0] - cmp r3, r0 - beq _080A0FCC - lsls r1, r3, 1 - lsls r0, r3, 2 - mov r4, sp - adds r2, r4, r0 - ldr r0, _080A0FC8 @ =0x00004043 - b _080A0FD6 - .align 2, 0 -_080A0FC4: .4byte 0x0000404b -_080A0FC8: .4byte 0x00004043 -_080A0FCC: - lsls r1, r3, 1 - lsls r0, r3, 2 - mov r7, sp - adds r2, r7, r0 - ldr r0, _080A1034 @ =0x00004048 -_080A0FD6: - strh r0, [r2] - adds r1, 0x1 - lsls r1, 1 - add r1, sp - adds r0, 0x1 - strh r0, [r1] -_080A0FE2: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080A0F02 - ldr r1, _080A1038 @ =0x0600e016 - ldr r0, _080A103C @ =0x040000d4 - mov r2, sp - str r2, [r0] - str r1, [r0, 0x4] - ldr r1, _080A1040 @ =0x80000008 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - movs r3, 0 -_080A0FFE: - lsls r0, r3, 1 - mov r4, sp - adds r1, r4, r0 - ldrh r0, [r1] - adds r0, 0x10 - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x7 - bls _080A0FFE - ldr r1, _080A1044 @ =0x0600e056 - ldr r0, _080A103C @ =0x040000d4 - str r4, [r0] - str r1, [r0, 0x4] - ldr r1, _080A1040 @ =0x80000008 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A1034: .4byte 0x00004048 -_080A1038: .4byte 0x0600e016 -_080A103C: .4byte 0x040000d4 -_080A1040: .4byte 0x80000008 -_080A1044: .4byte 0x0600e056 - thumb_func_end sub_80A0EE8 - - thumb_func_start sub_80A1048 -sub_80A1048: @ 80A1048 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r0, 2 - add r0, r8 - lsls r0, 3 - ldr r1, _080A10A0 @ =gTasks + 0x8 - adds r6, r0, r1 - ldrh r0, [r6] - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r6, 0x2] - lsls r0, 16 - cmp r0, 0 - bne _080A106E - b _080A1224 -_080A106E: - movs r5, 0x2 - ldrsh r2, [r6, r5] - ldr r0, _080A10A4 @ =0x0000024a - subs r0, r2 - lsls r0, 1 - ldr r1, _080A10A8 @ =gUnknown_08E73508 - adds r4, r0, r1 - ldr r5, _080A10AC @ =0x0600e480 - lsls r2, 1 - movs r0, 0x80 - lsls r0, 5 - adds r7, r1, 0 - cmp r2, r0 - bhi _080A10B4 - ldr r0, _080A10B0 @ =0x040000d4 - str r4, [r0] - str r5, [r0, 0x4] - lsrs r1, r2, 1 - movs r2, 0x80 - lsls r2, 24 - orrs r1, r2 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _080A10E0 - .align 2, 0 -_080A10A0: .4byte gTasks + 0x8 -_080A10A4: .4byte 0x0000024a -_080A10A8: .4byte gUnknown_08E73508 -_080A10AC: .4byte 0x0600e480 -_080A10B0: .4byte 0x040000d4 -_080A10B4: - ldr r3, _080A110C @ =0x040000d4 - str r4, [r3] - str r5, [r3, 0x4] - ldr r0, _080A1110 @ =0x80000800 - str r0, [r3, 0x8] - ldr r0, [r3, 0x8] - movs r0, 0x80 - lsls r0, 5 - adds r4, r0 - adds r5, r0 - ldr r1, _080A1114 @ =0xfffff000 - adds r2, r1 - cmp r2, r0 - bhi _080A10B4 - str r4, [r3] - str r5, [r3, 0x4] - lsrs r0, r2, 1 - movs r1, 0x80 - lsls r1, 24 - orrs r0, r1 - str r0, [r3, 0x8] - ldr r0, [r3, 0x8] -_080A10E0: - movs r5, 0x2 - ldrsh r0, [r6, r5] - ldr r1, _080A1118 @ =0x0000026a - subs r1, r0 - lsls r1, 1 - adds r3, r1, r7 - ldr r4, _080A111C @ =0x0600e4c0 - lsls r1, r0, 1 - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bhi _080A1120 - ldr r0, _080A110C @ =0x040000d4 - str r3, [r0] - str r4, [r0, 0x4] - lsrs r1, 1 - movs r2, 0x80 - lsls r2, 24 - orrs r1, r2 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _080A114C - .align 2, 0 -_080A110C: .4byte 0x040000d4 -_080A1110: .4byte 0x80000800 -_080A1114: .4byte 0xfffff000 -_080A1118: .4byte 0x0000026a -_080A111C: .4byte 0x0600e4c0 -_080A1120: - ldr r2, _080A1178 @ =0x040000d4 - str r3, [r2] - str r4, [r2, 0x4] - ldr r0, _080A117C @ =0x80000800 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0x80 - lsls r0, 5 - adds r3, r0 - adds r4, r0 - ldr r5, _080A1180 @ =0xfffff000 - adds r1, r5 - cmp r1, r0 - bhi _080A1120 - str r3, [r2] - str r4, [r2, 0x4] - lsrs r0, r1, 1 - movs r1, 0x80 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] -_080A114C: - movs r1, 0x2 - ldrsh r0, [r6, r1] - ldr r1, _080A1184 @ =0x0000024a - subs r1, r0 - lsls r1, 1 - adds r3, r1, r7 - ldr r4, _080A1188 @ =0x0600ec80 - lsls r1, r0, 1 - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bhi _080A118C - ldr r0, _080A1178 @ =0x040000d4 - str r3, [r0] - str r4, [r0, 0x4] - lsrs r1, 1 - movs r2, 0x80 - lsls r2, 24 - orrs r1, r2 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _080A11B8 - .align 2, 0 -_080A1178: .4byte 0x040000d4 -_080A117C: .4byte 0x80000800 -_080A1180: .4byte 0xfffff000 -_080A1184: .4byte 0x0000024a -_080A1188: .4byte 0x0600ec80 -_080A118C: - ldr r2, _080A11E4 @ =0x040000d4 - str r3, [r2] - str r4, [r2, 0x4] - ldr r0, _080A11E8 @ =0x80000800 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0x80 - lsls r0, 5 - adds r3, r0 - adds r4, r0 - ldr r5, _080A11EC @ =0xfffff000 - adds r1, r5 - cmp r1, r0 - bhi _080A118C - str r3, [r2] - str r4, [r2, 0x4] - lsrs r0, r1, 1 - movs r1, 0x80 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] -_080A11B8: - movs r1, 0x2 - ldrsh r0, [r6, r1] - ldr r1, _080A11F0 @ =0x0000026a - subs r1, r0 - lsls r1, 1 - adds r3, r1, r7 - ldr r4, _080A11F4 @ =0x0600ecc0 - lsls r1, r0, 1 - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bhi _080A11F8 - ldr r0, _080A11E4 @ =0x040000d4 - str r3, [r0] - str r4, [r0, 0x4] - lsrs r1, 1 - movs r2, 0x80 - lsls r2, 24 - orrs r1, r2 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _080A1224 - .align 2, 0 -_080A11E4: .4byte 0x040000d4 -_080A11E8: .4byte 0x80000800 -_080A11EC: .4byte 0xfffff000 -_080A11F0: .4byte 0x0000026a -_080A11F4: .4byte 0x0600ecc0 -_080A11F8: - ldr r2, _080A12B0 @ =0x040000d4 - str r3, [r2] - str r4, [r2, 0x4] - ldr r0, _080A12B4 @ =0x80000800 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0x80 - lsls r0, 5 - adds r3, r0 - adds r4, r0 - ldr r5, _080A12B8 @ =0xfffff000 - adds r1, r5 - cmp r1, r0 - bhi _080A11F8 - str r3, [r2] - str r4, [r2, 0x4] - lsrs r0, r1, 1 - movs r1, 0x80 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] -_080A1224: - ldrb r4, [r6, 0x2] - ldrh r7, [r6, 0x2] - ldrh r0, [r6] - mov r12, r0 - cmp r4, 0x9 - bhi _080A1272 - adds r3, r6, 0x4 - ldr r2, _080A12B0 @ =0x040000d4 - ldr r5, _080A12BC @ =0x80000001 -_080A1236: - lsls r1, r4, 1 - ldr r6, _080A12C0 @ =0x0600e480 - adds r0, r1, r6 - str r3, [r2] - str r0, [r2, 0x4] - str r5, [r2, 0x8] - ldr r0, [r2, 0x8] - adds r6, 0x40 - adds r0, r1, r6 - str r3, [r2] - str r0, [r2, 0x4] - str r5, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r6, _080A12C4 @ =0x0600ec80 - adds r0, r1, r6 - str r3, [r2] - str r0, [r2, 0x4] - str r5, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r0, _080A12C8 @ =0x0600ecc0 - adds r1, r0 - str r3, [r2] - str r1, [r2, 0x4] - str r5, [r2, 0x8] - ldr r0, [r2, 0x8] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bls _080A1236 -_080A1272: - mov r1, r12 - lsls r0, r1, 16 - cmp r0, 0 - beq _080A1286 - lsls r0, r7, 16 - asrs r0, 16 - cmp r0, 0 - ble _080A1286 - cmp r0, 0x9 - ble _080A12A4 -_080A1286: - lsls r0, r7, 16 - asrs r0, 16 - cmp r0, 0x9 - ble _080A129A - ldr r0, _080A12CC @ =gOtherText_Status - movs r1, 0xD - movs r2, 0x1 - movs r3, 0x12 - bl sub_80A1FF8 -_080A129A: - bl sub_80A1D18 - mov r0, r8 - bl DestroyTask -_080A12A4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A12B0: .4byte 0x040000d4 -_080A12B4: .4byte 0x80000800 -_080A12B8: .4byte 0xfffff000 -_080A12BC: .4byte 0x80000001 -_080A12C0: .4byte 0x0600e480 -_080A12C4: .4byte 0x0600ec80 -_080A12C8: .4byte 0x0600ecc0 -_080A12CC: .4byte gOtherText_Status - thumb_func_end sub_80A1048 - - thumb_func_start sub_80A12D0 -sub_80A12D0: @ 80A12D0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0x12 - movs r2, 0x5 - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0x1D - bl sub_80A18E4 - ldr r0, _080A1310 @ =sub_80A1048 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080A1314 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r1 - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0x8] - cmp r4, 0 - bge _080A1318 - movs r0, 0xA - b _080A131A - .align 2, 0 -_080A1310: .4byte sub_80A1048 -_080A1314: .4byte gTasks -_080A1318: - movs r0, 0 -_080A131A: - strh r0, [r1, 0xA] - ldr r0, _080A1330 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0xC] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1330: .4byte gTasks - thumb_func_end sub_80A12D0 - - thumb_func_start sub_80A1334 -sub_80A1334: @ 80A1334 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r0, 2 - add r0, r10 - lsls r0, 3 - ldr r1, _080A13E4 @ =gTasks + 0x8 - adds r7, r0, r1 - ldrh r0, [r7] - ldrh r1, [r7, 0x2] - adds r0, r1 - strh r0, [r7, 0x2] - lsls r0, 16 - asrs r1, r0, 16 - movs r0, 0 - cmp r1, 0 - blt _080A136A - movs r0, 0xA - cmp r1, 0xA - bgt _080A136A - ldrh r0, [r7, 0x2] -_080A136A: - lsls r0, 16 - asrs r2, r0, 16 - mov r9, r0 - cmp r2, 0 - ble _080A13A6 - movs r0, 0xA - subs r0, r2 - lsls r0, 1 - ldr r1, _080A13E8 @ =0x06005b40 - adds r4, r0, r1 - movs r5, 0 - adds r6, r2, 0 - ldr r0, _080A13EC @ =0x001fffff - mov r8, r0 -_080A1386: - adds r0, r5, 0 - adds r0, 0xD - lsls r0, 6 - ldr r1, _080A13F0 @ =gUnknown_08E73E88 - adds r0, r1 - adds r1, r4, 0 - mov r2, r8 - ands r2, r6 - bl CpuSet - adds r4, 0x40 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x6 - bls _080A1386 -_080A13A6: - mov r1, r9 - asrs r2, r1, 16 - cmp r2, 0x9 - bgt _080A13F4 - ldr r4, _080A13E8 @ =0x06005b40 - movs r5, 0 - mov r8, sp - movs r0, 0xA - subs r6, r0, r2 - ldr r0, _080A13EC @ =0x001fffff - ands r6, r0 - movs r0, 0x80 - lsls r0, 17 - mov r9, r0 -_080A13C2: - ldrh r0, [r7, 0x4] - mov r1, r8 - strh r0, [r1] - mov r0, sp - adds r1, r4, 0 - mov r2, r9 - orrs r2, r6 - bl CpuSet - adds r4, 0x40 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x6 - bls _080A13C2 - b _080A1400 - .align 2, 0 -_080A13E4: .4byte gTasks + 0x8 -_080A13E8: .4byte 0x06005b40 -_080A13EC: .4byte 0x001fffff -_080A13F0: .4byte gUnknown_08E73E88 -_080A13F4: - movs r0, 0 - movs r1, 0x13 - movs r2, 0x9 - movs r3, 0x13 - bl MenuZeroFillWindowRect -_080A1400: - movs r1, 0 - ldrsh r0, [r7, r1] - cmp r0, 0 - beq _080A1410 - movs r1, 0x2 - ldrsh r0, [r7, r1] - cmp r0, 0 - bge _080A144A -_080A1410: - ldr r4, _080A1480 @ =gSharedMem + 0x18000 - ldrb r0, [r4, 0xB] - cmp r0, 0x2 - bne _080A1444 - movs r0, 0 - movs r1, 0xE - movs r2, 0x9 - movs r3, 0x12 - bl MenuZeroFillWindowRect - adds r4, 0x10 - adds r0, r4, 0 - bl sub_80A0958 - adds r0, r4, 0 - bl GetMonStatusAndPokerus - lsls r0, 24 - cmp r0, 0 - beq _080A1444 - ldr r0, _080A1484 @ =gOtherText_Status - movs r1, 0xD - movs r2, 0x1 - movs r3, 0x12 - bl sub_80A1FF8 -_080A1444: - mov r0, r10 - bl DestroyTask -_080A144A: - movs r1, 0x2 - ldrsh r0, [r7, r1] - cmp r0, 0x9 - ble _080A1470 - ldr r4, _080A1480 @ =gSharedMem + 0x18000 - ldrb r0, [r4, 0xB] - cmp r0, 0x2 - bne _080A1460 - ldrb r0, [r7, 0x6] - bl sub_80A00F4 -_080A1460: - adds r0, r4, 0 - adds r0, 0x10 - adds r1, r7, 0x6 - bl sub_80A0428 - mov r0, r10 - bl DestroyTask -_080A1470: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A1480: .4byte gSharedMem + 0x18000 -_080A1484: .4byte gOtherText_Status - thumb_func_end sub_80A1334 - - thumb_func_start sub_80A1488 -sub_80A1488: @ 80A1488 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r0, _080A14DC @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0xB] - cmp r0, 0x2 - bne _080A14A6 - movs r0, 0 - movs r1, 0xE - movs r2, 0x9 - movs r3, 0x13 - bl MenuZeroFillWindowRect -_080A14A6: - ldr r5, _080A14E0 @ =sub_80A1334 - adds r0, r5, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xFF - bne _080A14C2 - adds r0, r5, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 -_080A14C2: - ldr r1, _080A14E4 @ =gTasks - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 3 - adds r3, r0, r1 - lsls r0, r6, 24 - asrs r0, 24 - strh r0, [r3, 0x8] - cmp r0, 0 - bge _080A14E8 - movs r0, 0xA - b _080A14EA - .align 2, 0 -_080A14DC: .4byte gSharedMem + 0x18000 -_080A14E0: .4byte sub_80A1334 -_080A14E4: .4byte gTasks -_080A14E8: - movs r0, 0 -_080A14EA: - strh r0, [r3, 0xA] - adds r0, r2, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - strh r7, [r0, 0xE] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A1488 - - thumb_func_start sub_80A1500 -sub_80A1500: @ 80A1500 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r0, 2 - add r0, r10 - lsls r0, 3 - ldr r1, _080A15B0 @ =gTasks + 0x8 - adds r7, r0, r1 - ldrh r0, [r7] - ldrh r1, [r7, 0x2] - adds r0, r1 - strh r0, [r7, 0x2] - lsls r0, 16 - asrs r1, r0, 16 - movs r0, 0 - cmp r1, 0 - blt _080A1536 - movs r0, 0xA - cmp r1, 0xA - bgt _080A1536 - ldrh r0, [r7, 0x2] -_080A1536: - lsls r0, 16 - asrs r2, r0, 16 - mov r9, r0 - cmp r2, 0 - ble _080A1572 - movs r0, 0xA - subs r0, r2 - lsls r0, 1 - ldr r1, _080A15B4 @ =0x06006b40 - adds r4, r0, r1 - movs r5, 0 - adds r6, r2, 0 - ldr r0, _080A15B8 @ =0x001fffff - mov r8, r0 -_080A1552: - adds r0, r5, 0 - adds r0, 0xD - lsls r0, 6 - ldr r1, _080A15BC @ =gUnknown_08E74688 - adds r0, r1 - adds r1, r4, 0 - mov r2, r8 - ands r2, r6 - bl CpuSet - adds r4, 0x40 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x6 - bls _080A1552 -_080A1572: - mov r1, r9 - asrs r2, r1, 16 - cmp r2, 0x9 - bgt _080A15C0 - ldr r4, _080A15B4 @ =0x06006b40 - movs r5, 0 - mov r8, sp - movs r0, 0xA - subs r6, r0, r2 - ldr r0, _080A15B8 @ =0x001fffff - ands r6, r0 - movs r0, 0x80 - lsls r0, 17 - mov r9, r0 -_080A158E: - ldrh r0, [r7, 0x4] - mov r1, r8 - strh r0, [r1] - mov r0, sp - adds r1, r4, 0 - mov r2, r9 - orrs r2, r6 - bl CpuSet - adds r4, 0x40 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x6 - bls _080A158E - b _080A15CC - .align 2, 0 -_080A15B0: .4byte gTasks + 0x8 -_080A15B4: .4byte 0x06006b40 -_080A15B8: .4byte 0x001fffff -_080A15BC: .4byte gUnknown_08E74688 -_080A15C0: - movs r0, 0 - movs r1, 0x13 - movs r2, 0x9 - movs r3, 0x13 - bl MenuZeroFillWindowRect -_080A15CC: - movs r1, 0 - ldrsh r0, [r7, r1] - cmp r0, 0 - beq _080A15DC - movs r1, 0x2 - ldrsh r0, [r7, r1] - cmp r0, 0 - bge _080A1616 -_080A15DC: - ldr r4, _080A164C @ =gSharedMem + 0x18000 - ldrb r0, [r4, 0xB] - cmp r0, 0x3 - bne _080A1610 - movs r0, 0 - movs r1, 0xE - movs r2, 0x9 - movs r3, 0x12 - bl MenuZeroFillWindowRect - adds r4, 0x10 - adds r0, r4, 0 - bl sub_80A0958 - adds r0, r4, 0 - bl GetMonStatusAndPokerus - lsls r0, 24 - cmp r0, 0 - beq _080A1610 - ldr r0, _080A1650 @ =gOtherText_Status - movs r1, 0xD - movs r2, 0x1 - movs r3, 0x12 - bl sub_80A1FF8 -_080A1610: - mov r0, r10 - bl DestroyTask -_080A1616: - movs r1, 0x2 - ldrsh r0, [r7, r1] - cmp r0, 0x9 - ble _080A163C - ldr r4, _080A164C @ =gSharedMem + 0x18000 - ldrb r0, [r4, 0xB] - cmp r0, 0x3 - bne _080A162C - ldrb r0, [r7, 0x6] - bl sub_80A00F4 -_080A162C: - adds r0, r4, 0 - adds r0, 0x10 - adds r1, r7, 0x6 - bl sub_80A0428 - mov r0, r10 - bl DestroyTask -_080A163C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A164C: .4byte gSharedMem + 0x18000 -_080A1650: .4byte gOtherText_Status - thumb_func_end sub_80A1500 - - thumb_func_start sub_80A1654 -sub_80A1654: @ 80A1654 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r0, _080A16A8 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0xB] - cmp r0, 0x3 - bne _080A1672 - movs r0, 0 - movs r1, 0xE - movs r2, 0x9 - movs r3, 0x13 - bl MenuZeroFillWindowRect -_080A1672: - ldr r5, _080A16AC @ =sub_80A1500 - adds r0, r5, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xFF - bne _080A168E - adds r0, r5, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 -_080A168E: - ldr r1, _080A16B0 @ =gTasks - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 3 - adds r3, r0, r1 - lsls r0, r6, 24 - asrs r0, 24 - strh r0, [r3, 0x8] - cmp r0, 0 - bge _080A16B4 - movs r0, 0xA - b _080A16B6 - .align 2, 0 -_080A16A8: .4byte gSharedMem + 0x18000 -_080A16AC: .4byte sub_80A1500 -_080A16B0: .4byte gTasks -_080A16B4: - movs r0, 0 -_080A16B6: - strh r0, [r3, 0xA] - adds r0, r2, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - strh r7, [r0, 0xE] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A1654 - - thumb_func_start sub_80A16CC -sub_80A16CC: @ 80A16CC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _080A1724 @ =0x06006ad4 - mov r12, r0 - mov r1, r9 - cmp r1, 0 - bne _080A172C - movs r5, 0 - ldr r7, _080A1728 @ =gUnknown_08E94510 - movs r0, 0x80 - lsls r0, 5 - adds r6, r0, 0 - movs r1, 0x40 - adds r1, r7 - mov r8, r1 -_080A16F4: - lsls r2, r5, 1 - mov r0, r12 - adds r3, r2, r0 - adds r4, r2, r7 - ldrh r1, [r4] - adds r0, r6, r1 - strh r0, [r3] - adds r1, r3, 0 - adds r1, 0x40 - ldrh r4, [r4] - adds r0, r6, r4 - strh r0, [r1] - adds r3, 0x80 - add r2, r8 - ldrh r2, [r2] - adds r0, r6, r2 - strh r0, [r3] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x13 - bls _080A16F4 - b _080A1768 - .align 2, 0 -_080A1724: .4byte 0x06006ad4 -_080A1728: .4byte gUnknown_08E94510 -_080A172C: - movs r5, 0 - ldr r6, _080A17B0 @ =gUnknown_08E94550 - movs r7, 0x80 - lsls r7, 5 - adds r4, r7, 0 - movs r0, 0x40 - adds r0, r6 - mov r8, r0 -_080A173C: - lsls r1, r5, 1 - mov r7, r12 - adds r2, r1, r7 - adds r0, r1, r6 - ldrh r0, [r0] - adds r0, r4, r0 - strh r0, [r2] - adds r3, r2, 0 - adds r3, 0x40 - add r1, r8 - ldrh r7, [r1] - adds r0, r4, r7 - strh r0, [r3] - adds r2, 0x80 - ldrh r1, [r1] - adds r0, r4, r1 - strh r0, [r2] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x13 - bls _080A173C -_080A1768: - ldr r0, _080A17B4 @ =0x06005ad4 - mov r12, r0 - mov r1, r9 - cmp r1, 0 - bne _080A17BC - movs r5, 0 - ldr r7, _080A17B8 @ =gUnknown_08E94510 - movs r0, 0xC0 - lsls r0, 6 - adds r6, r0, 0 - movs r1, 0x40 - adds r1, r7 - mov r8, r1 -_080A1782: - lsls r2, r5, 1 - mov r0, r12 - adds r3, r2, r0 - adds r4, r2, r7 - ldrh r1, [r4] - adds r0, r6, r1 - strh r0, [r3] - adds r1, r3, 0 - adds r1, 0x40 - ldrh r4, [r4] - adds r0, r6, r4 - strh r0, [r1] - adds r3, 0x80 - add r2, r8 - ldrh r2, [r2] - adds r0, r6, r2 - strh r0, [r3] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x13 - bls _080A1782 - b _080A17F8 - .align 2, 0 -_080A17B0: .4byte gUnknown_08E94550 -_080A17B4: .4byte 0x06005ad4 -_080A17B8: .4byte gUnknown_08E94510 -_080A17BC: - movs r5, 0 - ldr r6, _080A1804 @ =gUnknown_08E94550 - movs r7, 0xC0 - lsls r7, 6 - adds r4, r7, 0 - movs r0, 0x40 - adds r0, r6 - mov r8, r0 -_080A17CC: - lsls r1, r5, 1 - mov r7, r12 - adds r2, r1, r7 - adds r0, r1, r6 - ldrh r0, [r0] - adds r0, r4, r0 - strh r0, [r2] - adds r3, r2, 0 - adds r3, 0x40 - add r1, r8 - ldrh r7, [r1] - adds r0, r4, r7 - strh r0, [r3] - adds r2, 0x80 - ldrh r1, [r1] - adds r0, r4, r1 - strh r0, [r2] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x13 - bls _080A17CC -_080A17F8: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A1804: .4byte gUnknown_08E94550 - thumb_func_end sub_80A16CC - - thumb_func_start sub_80A1808 -sub_80A1808: @ 80A1808 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r1, 0x41 - bl GetMonData - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - ldr r0, _080A1860 @ =gUnknown_02024E8C - movs r1, 0x28 - movs r2, 0x40 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r4, r0, 4 - add r4, r8 - lsls r4, 2 - ldr r5, _080A1864 @ =gSprites - adds r7, r4, r5 - adds r0, r7, 0 - bl FreeSpriteOamMatrix - strh r6, [r7, 0x2E] - adds r5, 0x1C - adds r4, r5 - ldr r0, _080A1868 @ =sub_80A1888 - str r0, [r4] - adds r0, r6, 0 - bl IsPokeSpriteNotFlipped - lsls r0, 24 - cmp r0, 0 - bne _080A186C - adds r0, r7, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _080A187A - .align 2, 0 -_080A1860: .4byte gUnknown_02024E8C -_080A1864: .4byte gSprites -_080A1868: .4byte sub_80A1888 -_080A186C: - adds r2, r7, 0 - adds r2, 0x3F - ldrb r1, [r2] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080A187A: - mov r0, r8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80A1808 - - thumb_func_start sub_80A1888 -sub_80A1888: @ 80A1888 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A18B8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A18B0 - ldr r0, _080A18BC @ =SpriteCallbackDummy - str r0, [r4, 0x1C] - ldr r0, _080A18C0 @ =gSharedMem + 0x18010 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080A18B0 - ldrh r0, [r4, 0x2E] - movs r1, 0 - bl PlayCry1 -_080A18B0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A18B8: .4byte gPaletteFade -_080A18BC: .4byte SpriteCallbackDummy -_080A18C0: .4byte gSharedMem + 0x18010 - thumb_func_end sub_80A1888 - - thumb_func_start sub_80A18C4 -sub_80A18C4: @ 80A18C4 - push {lr} - movs r1, 0 - ldr r3, _080A18E0 @ =gSharedMem + 0x1A000 - movs r2, 0xFF -_080A18CC: - adds r0, r1, r3 - strb r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1D - bls _080A18CC - pop {r0} - bx r0 - .align 2, 0 -_080A18E0: .4byte gSharedMem + 0x1A000 - thumb_func_end sub_80A18C4 - - thumb_func_start sub_80A18E4 -sub_80A18E4: @ 80A18E4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080A1910 @ =gSharedMem + 0x1A000 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0xFF - beq _080A1908 - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080A1914 @ =gSprites - adds r0, r1 - bl DestroySprite - movs r0, 0xFF - strb r0, [r4] -_080A1908: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1910: .4byte gSharedMem + 0x1A000 -_080A1914: .4byte gSprites - thumb_func_end sub_80A18E4 - - thumb_func_start sub_80A1918 -sub_80A1918: @ 80A1918 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _080A1948 @ =gSprites - ldr r2, _080A194C @ =gSharedMem + 0x1A000 - adds r0, r2 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - adds r2, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - bx lr - .align 2, 0 -_080A1948: .4byte gSprites -_080A194C: .4byte gSharedMem + 0x1A000 - thumb_func_end sub_80A1918 - - thumb_func_start sub_80A1950 -sub_80A1950: @ 80A1950 - push {r4,r5,lr} - movs r5, 0 -_080A1954: - ldr r0, _080A1984 @ =gSharedMem + 0x1A000 - adds r4, r5, r0 - ldrb r0, [r4] - cmp r0, 0xFF - bne _080A196C - ldr r0, _080A1988 @ =gSpriteTemplate_83C11C0 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl CreateSprite - strb r0, [r4] -_080A196C: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80A1918 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _080A1954 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A1984: .4byte gSharedMem + 0x1A000 -_080A1988: .4byte gSpriteTemplate_83C11C0 - thumb_func_end sub_80A1950 - - thumb_func_start sub_80A198C -sub_80A198C: @ 80A198C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - mov r10, r3 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r1, _080A1A24 @ =gSharedMem + 0x1A000 - mov r8, r1 - add r8, r10 - mov r0, r8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080A1A28 @ =gSprites - mov r9, r1 - add r0, r9 - adds r1, r4, 0 - bl StartSpriteAnim - mov r1, r8 - ldrb r0, [r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r9 - ldr r0, _080A1A2C @ =gUnknown_083C11D8 - adds r4, r0 - ldrb r2, [r4] - lsls r2, 4 - ldrb r3, [r1, 0x5] - movs r0, 0xF - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] - mov r0, r8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r9 - adds r5, 0x10 - strh r5, [r0, 0x20] - mov r0, r8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r9 - adds r6, 0x8 - strh r6, [r0, 0x22] - mov r0, r10 - movs r1, 0 - bl sub_80A1918 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A1A24: .4byte gSharedMem + 0x1A000 -_080A1A28: .4byte gSprites -_080A1A2C: .4byte gUnknown_083C11D8 - thumb_func_end sub_80A198C - - thumb_func_start sub_80A1A30 -sub_80A1A30: @ 80A1A30 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - mov r9, r0 - ldr r1, _080A1A98 @ =gSharedMem + 0x18000 - ldrb r0, [r1, 0xB] - cmp r0, 0x1 - bls _080A1B0A - cmp r4, 0x9 - bne _080A1A52 - movs r3, 0x1 - mov r9, r3 -_080A1A52: - movs r5, 0 - movs r0, 0x80 - lsls r0, 6 - adds r0, r1 - mov r8, r0 - ldr r6, _080A1A9C @ =gSprites - mov r10, r5 -_080A1A60: - lsls r1, r5, 20 - movs r3, 0xB0 - lsls r3, 15 - adds r1, r3 - asrs r1, 16 - ldr r0, _080A1AA0 @ =gSpriteTemplate_83C1280 - movs r2, 0x28 - mov r3, r9 - bl CreateSprite - adds r1, r4, r5 - mov r3, r8 - adds r2, r1, r3 - strb r0, [r2] - adds r7, r1, 0 - cmp r5, 0 - bne _080A1AA4 - adds r0, r4, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x4 - bl StartSpriteAnim - b _080A1AD0 - .align 2, 0 -_080A1A98: .4byte gSharedMem + 0x18000 -_080A1A9C: .4byte gSprites -_080A1AA0: .4byte gSpriteTemplate_83C1280 -_080A1AA4: - cmp r5, 0x9 - bne _080A1AC0 - adds r0, r4, 0 - adds r0, 0x9 - add r0, r8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x5 - bl StartSpriteAnim - b _080A1AD0 -_080A1AC0: - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x6 - bl StartSpriteAnim -_080A1AD0: - mov r0, r8 - adds r2, r7, r0 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080A1B18 @ =sub_80A1BC0 - str r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r4, [r0, 0x2E] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r1, r10 - strh r1, [r0, 0x30] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _080A1A60 -_080A1B0A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A1B18: .4byte sub_80A1BC0 - thumb_func_end sub_80A1A30 - - thumb_func_start sub_80A1B1C -sub_80A1B1C: @ 80A1B1C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 -_080A1B24: - adds r0, r5, r4 - lsls r0, 24 - lsrs r0, 24 - bl sub_80A18E4 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bls _080A1B24 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A1B1C - - thumb_func_start sub_80A1B40 -sub_80A1B40: @ 80A1B40 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, r7, 1 - adds r1, r7 - lsls r1, 24 - ldr r0, _080A1BB4 @ =gSharedMem + 0x1A009 - ldrb r2, [r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r2, _080A1BB8 @ =gSprites - adds r0, r2 - lsrs r7, r1, 24 - movs r2, 0x80 - lsls r2, 19 - adds r1, r2 - lsrs r1, 24 - bl StartSpriteAnim - movs r4, 0 - adds r0, r7, 0x6 - lsls r0, 24 - mov r8, r0 -_080A1B74: - ldr r6, _080A1BBC @ =gSharedMem + 0x1A00A - adds r0, r4, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _080A1BB8 @ =gSprites - adds r0, r5 - mov r2, r8 - lsrs r1, r2, 24 - bl StartSpriteAnim - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _080A1B74 - ldrb r1, [r6, 0x8] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r1, r7, 0x5 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A1BB4: .4byte gSharedMem + 0x1A009 -_080A1BB8: .4byte gSprites -_080A1BBC: .4byte gSharedMem + 0x1A00A - thumb_func_end sub_80A1B40 - - thumb_func_start sub_80A1BC0 -sub_80A1BC0: @ 80A1BC0 - push {lr} - adds r2, r0, 0 - adds r0, 0x2A - ldrb r0, [r0] - subs r0, 0x4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bhi _080A1BF8 - ldrh r0, [r2, 0x30] - adds r0, 0x1 - movs r1, 0x1F - ands r0, r1 - strh r0, [r2, 0x30] - cmp r0, 0x18 - ble _080A1BEC - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - b _080A1C06 -_080A1BEC: - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - b _080A1C04 -_080A1BF8: - movs r0, 0 - strh r0, [r2, 0x30] - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - subs r0, 0x5 -_080A1C04: - ands r0, r1 -_080A1C06: - strb r0, [r3] - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0x9 - bne _080A1C1C - ldr r0, _080A1C18 @ =gSharedMem + 0x18000 - adds r0, 0x79 - b _080A1C20 - .align 2, 0 -_080A1C18: .4byte gSharedMem + 0x18000 -_080A1C1C: - ldr r0, _080A1C2C @ =gSharedMem + 0x18000 - adds r0, 0x7A -_080A1C20: - ldrb r0, [r0] - lsls r0, 4 - strh r0, [r2, 0x26] - pop {r0} - bx r0 - .align 2, 0 -_080A1C2C: .4byte gSharedMem + 0x18000 - thumb_func_end sub_80A1BC0 - - thumb_func_start sub_80A1C30 -sub_80A1C30: @ 80A1C30 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 25 - lsrs r3, r0, 24 - adds r4, r3, 0 - adds r0, r3, 0 - adds r0, 0xA - cmp r3, r0 - bge _080A1C82 - ldr r5, _080A1C88 @ =gSprites - movs r7, 0x5 - negs r7, r7 - ldr r6, _080A1C8C @ =gSharedMem + 0x1A009 -_080A1C50: - adds r2, r3, r6 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0 - strh r1, [r0, 0x30] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r7, 0 - ands r0, r2 - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r4, 0 - adds r0, 0xA - cmp r3, r0 - blt _080A1C50 -_080A1C82: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A1C88: .4byte gSprites -_080A1C8C: .4byte gSharedMem + 0x1A009 - thumb_func_end sub_80A1C30 - - thumb_func_start pokemon_ailments_get_primary -pokemon_ailments_get_primary: @ 80A1C90 - push {lr} - adds r1, r0, 0 - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - beq _080A1CA0 - movs r0, 0x1 - b _080A1CD2 -_080A1CA0: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080A1CAC - movs r0, 0x2 - b _080A1CD2 -_080A1CAC: - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _080A1CB8 - movs r0, 0x3 - b _080A1CD2 -_080A1CB8: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A1CC4 - movs r0, 0x4 - b _080A1CD2 -_080A1CC4: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080A1CD0 - movs r0, 0 - b _080A1CD2 -_080A1CD0: - movs r0, 0x5 -_080A1CD2: - pop {r1} - bx r1 - thumb_func_end pokemon_ailments_get_primary - - thumb_func_start GetMonStatusAndPokerus -GetMonStatusAndPokerus: @ 80A1CD8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _080A1CEA - movs r0, 0x7 - b _080A1D12 -_080A1CEA: - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - bl pokemon_ailments_get_primary - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080A1D12 - adds r0, r4, 0 - movs r1, 0 - bl CheckPartyPokerus - lsls r0, 24 - cmp r0, 0 - bne _080A1D10 - movs r0, 0 - b _080A1D12 -_080A1D10: - movs r0, 0x6 -_080A1D12: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetMonStatusAndPokerus - - thumb_func_start sub_80A1D18 -sub_80A1D18: @ 80A1D18 - push {r4,r5,lr} - sub sp, 0x64 - mov r0, sp - bl sub_809F678 - mov r0, sp - bl GetMonStatusAndPokerus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080A1D58 - subs r0, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080A1D50 @ =gSharedMem + 0x1A01D - ldrb r0, [r4] - cmp r0, 0xFF - bne _080A1D60 - ldr r0, _080A1D54 @ =gSpriteTemplate_83C1304 - movs r1, 0x40 - movs r2, 0x98 - movs r3, 0 - bl CreateSprite - strb r0, [r4] - b _080A1D60 - .align 2, 0 -_080A1D50: .4byte gSharedMem + 0x1A01D -_080A1D54: .4byte gSpriteTemplate_83C1304 -_080A1D58: - movs r0, 0x1D - bl sub_80A18E4 - b _080A1D74 -_080A1D60: - ldr r0, _080A1D7C @ =gSharedMem + 0x1A01D - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080A1D80 @ =gSprites - adds r0, r1 - adds r1, r5, 0 - bl StartSpriteAnim -_080A1D74: - add sp, 0x64 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A1D7C: .4byte gSharedMem + 0x1A01D -_080A1D80: .4byte gSprites - thumb_func_end sub_80A1D18 - - thumb_func_start sub_80A1D84 -sub_80A1D84: @ 80A1D84 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r1, _080A1DC0 @ =0x00007533 - ldr r2, _080A1DC4 @ =gSummaryScreenMonMarkingsPalette - adds r0, r1, 0 - bl sub_80F7920 - adds r4, r0, 0 - ldr r6, _080A1DC8 @ =gUnknown_020384F4 - str r4, [r6] - cmp r4, 0 - beq _080A1DBA - adds r0, r5, 0 - movs r1, 0x8 - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r1, [r6] - movs r0, 0x3C - strh r0, [r1, 0x20] - movs r0, 0x1A - strh r0, [r1, 0x22] -_080A1DBA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A1DC0: .4byte 0x00007533 -_080A1DC4: .4byte gSummaryScreenMonMarkingsPalette -_080A1DC8: .4byte gUnknown_020384F4 - thumb_func_end sub_80A1D84 - - thumb_func_start sub_80A1DCC -sub_80A1DCC: @ 80A1DCC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A1DE4 @ =gUnknown_020384F4 - ldr r0, [r0] - bl DestroySprite - adds r0, r4, 0 - bl sub_80A1D84 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1DE4: .4byte gUnknown_020384F4 - thumb_func_end sub_80A1DCC - - thumb_func_start sub_80A1DE8 -sub_80A1DE8: @ 80A1DE8 - push {r4,lr} - movs r1, 0x26 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl ball_number_to_ball_processing_index - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80478DC - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A1E48 @ =gBallSpriteTemplates - adds r0, r1 - movs r1, 0x6 - movs r2, 0x88 - movs r3, 0 - bl CreateSprite - ldr r2, _080A1E4C @ =gSharedMem + 0x18000 - strb r0, [r2, 0xD] - ldr r3, _080A1E50 @ =gSprites - ldrb r1, [r2, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080A1E54 @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r2, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0, 0x5] - movs r2, 0xC - orrs r1, r2 - strb r1, [r0, 0x5] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1E48: .4byte gBallSpriteTemplates -_080A1E4C: .4byte gSharedMem + 0x18000 -_080A1E50: .4byte gSprites -_080A1E54: .4byte SpriteCallbackDummy - thumb_func_end sub_80A1DE8 - - thumb_func_start sub_80A1E58 -sub_80A1E58: @ 80A1E58 - push {r4,lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0xFF - beq _080A1E92 - ldr r3, _080A1E6C @ =gUnknown_083C15BC - ldrb r0, [r3] - adds r4, r2, 0x5 - b _080A1E74 - .align 2, 0 -_080A1E6C: .4byte gUnknown_083C15BC -_080A1E70: - adds r3, 0x4 - ldrb r0, [r3] -_080A1E74: - cmp r0, 0xFF - beq _080A1E7C - cmp r0, r1 - bne _080A1E70 -_080A1E7C: - movs r0, 0xFC - strb r0, [r2] - movs r0, 0x4 - strb r0, [r2, 0x1] - ldrb r0, [r3, 0x1] - strb r0, [r2, 0x2] - ldrb r0, [r3, 0x2] - strb r0, [r2, 0x3] - ldrb r0, [r3, 0x3] - strb r0, [r2, 0x4] - adds r2, r4, 0 -_080A1E92: - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80A1E58 - - thumb_func_start sub_80A1E9C -sub_80A1E9C: @ 80A1E9C - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - adds r5, r1, 0 - lsls r4, r2, 24 - lsrs r4, 24 - mov r1, sp - adds r1, 0x1 - mov r2, sp - adds r2, 0x2 - mov r0, sp - bl sub_8072CD4 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80A1E58 - adds r6, r0, 0 - adds r1, r5, 0 - bl StringCopy - adds r6, r0, 0 - cmp r4, 0xFF - beq _080A1EEC - movs r0, 0xFC - strb r0, [r6] - movs r0, 0x4 - strb r0, [r6, 0x1] - mov r0, sp - ldrb r0, [r0] - strb r0, [r6, 0x2] - mov r0, sp - ldrb r0, [r0, 0x1] - strb r0, [r6, 0x3] - mov r0, sp - ldrb r0, [r0, 0x2] - strb r0, [r6, 0x4] - movs r0, 0xFF - strb r0, [r6, 0x5] - adds r6, 0x5 -_080A1EEC: - adds r0, r6, 0 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80A1E9C - - thumb_func_start sub_80A1EF8 -sub_80A1EF8: @ 80A1EF8 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - mov r9, r0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - ldr r3, [sp, 0x1C] - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 16 - lsrs r6, 16 - ldr r0, _080A1F44 @ =gStringVar4 - mov r8, r0 - mov r1, r9 - adds r2, r4, 0 - str r3, [sp] - bl sub_80A1E9C - ldr r3, [sp] - lsls r3, 24 - lsrs r3, 24 - mov r0, r8 - adds r1, r5, 0 - adds r2, r6, 0 - bl MenuPrint_PixelCoords - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A1F44: .4byte gStringVar4 - thumb_func_end sub_80A1EF8 - - thumb_func_start sub_80A1F48 -sub_80A1F48: @ 80A1F48 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - mov r9, r0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - ldr r3, [sp, 0x1C] - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r3, 16 - lsrs r3, 16 - ldr r0, _080A1F94 @ =gStringVar4 - mov r8, r0 - mov r1, r9 - adds r2, r4, 0 - str r3, [sp] - bl sub_80A1E9C - mov r0, r8 - adds r1, r5, 0 - adds r2, r6, 0 - ldr r3, [sp] - bl sub_8072BD8 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A1F94: .4byte gStringVar4 - thumb_func_end sub_80A1F48 - - thumb_func_start sub_80A1F98 -sub_80A1F98: @ 80A1F98 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r10, r0 - mov r8, r1 - adds r4, r2, 0 - adds r2, r3, 0 - ldr r5, [sp, 0x24] - ldr r6, [sp, 0x28] - ldr r7, [sp, 0x2C] - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r4, 24 - lsrs r4, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 16 - lsrs r6, 16 - ldr r0, _080A1FF4 @ =gStringVar1 - mov r9, r0 - mov r1, r10 - adds r3, r4, 0 - bl ConvertIntToDecimalStringN - str r7, [sp] - mov r0, r9 - mov r1, r8 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_80A1EF8 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A1FF4: .4byte gStringVar1 - thumb_func_end sub_80A1F98 - - thumb_func_start sub_80A1FF8 -sub_80A1FF8: @ 80A1FF8 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - mov r9, r0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _080A2038 @ =gStringVar4 - mov r8, r0 - mov r1, r9 - adds r2, r4, 0 - bl sub_80A1E9C - mov r0, r8 - adds r1, r5, 0 - adds r2, r6, 0 - bl MenuPrint - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A2038: .4byte gStringVar4 - thumb_func_end sub_80A1FF8 - - thumb_func_start PokemonSummaryScreen_CopyPokemonLevel -PokemonSummaryScreen_CopyPokemonLevel: @ 80A203C - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x34 - strb r0, [r4] - adds r4, 0x1 - cmp r1, 0 - bne _080A2052 - movs r1, 0x5 -_080A2052: - mov r0, sp - bl ConvertIntToDecimalString - adds r0, r4, 0 - mov r1, sp - movs r2, 0xE - bl sub_80A1E9C - adds r4, r0, 0 - ldr r1, _080A2074 @ =gOtherText_Comma - bl StringCopy - adds r4, r0, 0 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080A2074: .4byte gOtherText_Comma - thumb_func_end PokemonSummaryScreen_CopyPokemonLevel - - thumb_func_start sub_80A2078 -sub_80A2078: @ 80A2078 - push {lr} - ldr r3, _080A209C @ =gUnknown_03005CF0 - ldr r2, _080A20A0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, [r1] - str r2, [r3] - ldr r2, _080A20A4 @ =sub_80A20A8 - str r2, [r1] - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r2 - pop {r0} - bx r0 - .align 2, 0 -_080A209C: .4byte gUnknown_03005CF0 -_080A20A0: .4byte gTasks -_080A20A4: .4byte sub_80A20A8 - thumb_func_end sub_80A2078 - - thumb_func_start sub_80A20A8 -sub_80A20A8: @ 80A20A8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8055870 - cmp r0, 0x1 - beq _080A20C6 - ldr r1, _080A20CC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080A20D0 @ =gUnknown_03005CF0 - ldr r1, [r1] - str r1, [r0] -_080A20C6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A20CC: .4byte gTasks -_080A20D0: .4byte gUnknown_03005CF0 - thumb_func_end sub_80A20A8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/psychic.s b/asm/psychic.s new file mode 100755 index 000000000..fb024a00d --- /dev/null +++ b/asm/psychic.s @@ -0,0 +1,2183 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ psychic + + thumb_func_start sub_80DB74C +sub_80DB74C: @ 80DB74C + push {r4-r7,lr} + adds r6, r0, 0 + ldr r0, _080DB804 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DB768 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DB77E +_080DB768: + ldrb r1, [r6, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r6, 0x5] + adds r1, r6, 0 + adds r1, 0x43 + movs r0, 0xC8 + strb r0, [r1] +_080DB77E: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080DB7DA + movs r0, 0x1 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r4, r0, 24 + adds r7, r4, 0 + adds r0, r4, 0 + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r5, r1, 31 + adds r0, r4, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080DB7BC + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8076034 +_080DB7BC: + movs r0, 0x2 + adds r4, r0, 0 + eors r4, r7 + adds r0, r4, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080DB7DA + movs r0, 0x1 + eors r5, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8076034 +_080DB7DA: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080DB810 + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + beq _080DB810 + ldr r0, _080DB804 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DB808 + movs r0, 0x48 + strh r0, [r6, 0x20] + movs r0, 0x50 + b _080DB84A + .align 2, 0 +_080DB804: .4byte gBattleAnimBankAttacker +_080DB808: + movs r0, 0xB0 + strh r0, [r6, 0x20] + movs r0, 0x28 + b _080DB84A +_080DB810: + ldr r5, _080DB880 @ =gBattleAnimBankAttacker + ldrb r0, [r5] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DB826 + ldr r1, _080DB884 @ =gBattleAnimArgs + ldrh r0, [r1] + negs r0, r0 + strh r0, [r1] +_080DB826: + ldrb r0, [r5] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + ldr r4, _080DB884 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 +_080DB84A: + strh r0, [r6, 0x22] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DB85C + ldrh r0, [r6, 0x22] + adds r0, 0x9 + strh r0, [r6, 0x22] +_080DB85C: + ldr r0, _080DB884 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1 + strh r0, [r6, 0x2E] + ldr r1, _080DB888 @ =sub_80DB88C + str r1, [r6, 0x1C] + adds r0, r6, 0 + bl _call_via_r1 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DB880: .4byte gBattleAnimBankAttacker +_080DB884: .4byte gBattleAnimArgs +_080DB888: .4byte sub_80DB88C + thumb_func_end sub_80DB74C + + thumb_func_start sub_80DB88C +sub_80DB88C: @ 80DB88C + push {lr} + adds r3, r0, 0 + ldr r2, _080DB8B0 @ =REG_BLDALPHA + ldrh r1, [r3, 0x34] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r0, r1 + strh r0, [r2] + ldrh r1, [r3, 0x34] + movs r2, 0x34 + ldrsh r0, [r3, r2] + cmp r0, 0xD + bne _080DB8B8 + ldr r0, _080DB8B4 @ =sub_80DB8C0 + str r0, [r3, 0x1C] + b _080DB8BC + .align 2, 0 +_080DB8B0: .4byte REG_BLDALPHA +_080DB8B4: .4byte sub_80DB8C0 +_080DB8B8: + adds r0, r1, 0x1 + strh r0, [r3, 0x34] +_080DB8BC: + pop {r0} + bx r0 + thumb_func_end sub_80DB88C + + thumb_func_start sub_80DB8C0 +sub_80DB8C0: @ 80DB8C0 + push {r4-r7,lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080DB91E + movs r0, 0 + strh r0, [r3, 0x30] + ldrh r4, [r3, 0x2E] + ldr r1, _080DB924 @ =gPlttBufferFaded + adds r0, r4, 0 + adds r0, 0x8 + lsls r0, 1 + adds r0, r1 + ldrh r7, [r0] + movs r5, 0x8 + adds r6, r1, 0 + adds r1, r4, 0x7 + lsls r0, r4, 1 + adds r0, r6 + adds r2, r0, 0 + adds r2, 0x10 + lsls r1, 1 + adds r1, r6 +_080DB8F6: + ldrh r0, [r1] + strh r0, [r2] + subs r1, 0x2 + subs r2, 0x2 + subs r5, 0x1 + cmp r5, 0 + bgt _080DB8F6 + adds r0, r4, 0x1 + lsls r0, 1 + adds r0, r6 + strh r7, [r0] + ldrh r0, [r3, 0x32] + adds r0, 0x1 + strh r0, [r3, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + bne _080DB91E + ldr r0, _080DB928 @ =sub_80DB92C + str r0, [r3, 0x1C] +_080DB91E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DB924: .4byte gPlttBufferFaded +_080DB928: .4byte sub_80DB92C + thumb_func_end sub_80DB8C0 + + thumb_func_start sub_80DB92C +sub_80DB92C: @ 80DB92C + push {r4-r6,lr} + adds r5, r0, 0 + ldr r2, _080DB9D4 @ =REG_BLDALPHA + ldrh r1, [r5, 0x34] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r5, 0x34] + subs r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080DB9CC + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080DB9BC + movs r0, 0x1 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + adds r0, r4, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080DB98E + ldr r2, _080DB9D8 @ =gSprites + ldr r0, _080DB9DC @ =gObjectBankIDs + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] +_080DB98E: + movs r0, 0x2 + adds r4, r0, 0 + eors r4, r6 + adds r0, r4, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080DB9BC + ldr r2, _080DB9D8 @ =gSprites + ldr r0, _080DB9DC @ =gObjectBankIDs + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] +_080DB9BC: + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080DB9E0 @ =sub_80DB9E4 + str r0, [r5, 0x1C] +_080DB9CC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DB9D4: .4byte REG_BLDALPHA +_080DB9D8: .4byte gSprites +_080DB9DC: .4byte gObjectBankIDs +_080DB9E0: .4byte sub_80DB9E4 + thumb_func_end sub_80DB92C + + thumb_func_start sub_80DB9E4 +sub_80DB9E4: @ 80DB9E4 + push {r4-r6,lr} + adds r6, r0, 0 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080DBA3C + movs r0, 0x1 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r5, r1, 31 + adds r0, r4, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080DBA22 + adds r0, r5, 0 + bl sub_8076464 +_080DBA22: + movs r0, 0x2 + eors r4, r0 + adds r0, r4, 0 + bl IsAnimBankSpriteVisible + lsls r0, 24 + cmp r0, 0 + beq _080DBA3C + movs r0, 0x1 + eors r5, r0 + adds r0, r5, 0 + bl sub_8076464 +_080DBA3C: + ldr r0, _080DBA48 @ =move_anim_8072740 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DBA48: .4byte move_anim_8072740 + thumb_func_end sub_80DB9E4 + + thumb_func_start sub_80DBA4C +sub_80DBA4C: @ 80DBA4C + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DBAD8 + ldr r5, _080DBA98 @ =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r5, r1] + movs r6, 0 + cmp r0, 0 + bne _080DBA66 + movs r6, 0x1 +_080DBA66: + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080DBAAE + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + beq _080DBAAE + ldr r0, _080DBA9C @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080DBAA0 + ldrh r0, [r5] + movs r1, 0x48 + subs r1, r0 + strh r1, [r4, 0x20] + ldrh r0, [r5, 0x2] + adds r0, 0x50 + strh r0, [r4, 0x22] + b _080DBAD0 + .align 2, 0 +_080DBA98: .4byte gBattleAnimArgs +_080DBA9C: .4byte gBattleAnimBankAttacker +_080DBAA0: + ldrh r0, [r5] + adds r0, 0xB0 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + adds r0, 0x28 + strh r0, [r4, 0x22] + b _080DBAD0 +_080DBAAE: + ldr r0, _080DBAC4 @ =gBattleAnimArgs + movs r1, 0x4 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DBAC8 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_80787B0 + b _080DBAD0 + .align 2, 0 +_080DBAC4: .4byte gBattleAnimArgs +_080DBAC8: + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8078764 +_080DBAD0: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080DBAEC +_080DBAD8: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x30 + ands r0, r1 + cmp r0, 0 + beq _080DBAEC + adds r0, r4, 0 + bl move_anim_8074EE0 +_080DBAEC: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80DBA4C + + thumb_func_start sub_80DBAF4 +sub_80DBAF4: @ 80DBAF4 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080DBB3C @ =gBattleAnimBankAttacker + 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] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DBB44 + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAnim + ldrh r0, [r5, 0x20] + subs r0, 0x28 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + adds r0, 0xA + strh r0, [r5, 0x22] + ldr r0, _080DBB40 @ =0x0000ffff + b _080DBB52 + .align 2, 0 +_080DBB3C: .4byte gBattleAnimBankAttacker +_080DBB40: .4byte 0x0000ffff +_080DBB44: + ldrh r0, [r5, 0x20] + adds r0, 0x28 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + subs r0, 0xA + strh r0, [r5, 0x22] + movs r0, 0x1 +_080DBB52: + strh r0, [r5, 0x30] + ldr r1, _080DBB68 @ =move_anim_8072740 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r0, _080DBB6C @ =sub_8078600 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DBB68: .4byte move_anim_8072740 +_080DBB6C: .4byte sub_8078600 + thumb_func_end sub_80DBAF4 + + thumb_func_start sub_80DBB70 +sub_80DBB70: @ 80DBB70 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r6, _080DBBF4 @ =gBattleAnimBankAttacker + ldrb r0, [r6] + movs r1, 0x1 + bl sub_807A100 + lsls r0, 16 + asrs r1, r0, 16 + lsrs r0, 31 + adds r1, r0 + lsls r1, 15 + lsrs r4, r1, 16 + ldrb r0, [r6] + movs r1, 0 + bl sub_807A100 + lsls r0, 16 + asrs r1, r0, 16 + lsrs r0, 31 + adds r1, r0 + asrs r1, 1 + negs r1, r1 + lsls r1, 16 + lsrs r7, r1, 16 + ldrb r0, [r6] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DBBB6 + lsls r0, r4, 16 + negs r0, r0 + lsrs r4, r0, 16 +_080DBBB6: + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + strh r0, [r5, 0x20] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, r7 + strh r0, [r5, 0x22] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xF + bgt _080DBBE2 + movs r0, 0x10 + strh r0, [r5, 0x22] +_080DBBE2: + ldr r1, _080DBBF8 @ =sub_80DBC00 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r0, _080DBBFC @ =sub_8078600 + str r0, [r5, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DBBF4: .4byte gBattleAnimBankAttacker +_080DBBF8: .4byte sub_80DBC00 +_080DBBFC: .4byte sub_8078600 + thumb_func_end sub_80DBB70 + + thumb_func_start sub_80DBC00 +sub_80DBC00: @ 80DBC00 + push {r4,lr} + adds r4, r0, 0 + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, 0x1] + ldr r0, _080DBC2C @ =gUnknown_083DA888 + str r0, [r4, 0x10] + movs r0, 0 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl InitSpriteAffineAnim + ldr r0, _080DBC30 @ =sub_80DBC34 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DBC2C: .4byte gUnknown_083DA888 +_080DBC30: .4byte sub_80DBC34 + thumb_func_end sub_80DBC00 + + thumb_func_start sub_80DBC34 +sub_80DBC34: @ 80DBC34 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080DBC46 + cmp r0, 0x1 + beq _080DBC74 + b _080DBC8C +_080DBC46: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080DBC8C + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x12 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080DBC8C +_080DBC74: + ldrh r0, [r4, 0x30] + subs r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080DBC8C + adds r0, r4, 0 + bl move_anim_8072740 +_080DBC8C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DBC34 + + thumb_func_start sub_80DBC94 +sub_80DBC94: @ 80DBC94 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080DBCC4 @ =gTasks + adds r4, r0 + movs r0, 0 + bl GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r4, 0x8] + ldr r2, _080DBCC8 @ =gUnknown_083DA8A4 + adds r0, r4, 0 + bl sub_80798F4 + ldr r0, _080DBCCC @ =sub_80DBCD0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DBCC4: .4byte gTasks +_080DBCC8: .4byte gUnknown_083DA8A4 +_080DBCCC: .4byte sub_80DBCD0 + thumb_func_end sub_80DBC94 + + thumb_func_start sub_80DBCD0 +sub_80DBCD0: @ 80DBCD0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080DBCF8 @ =gTasks + adds r0, r1 + bl sub_807992C + lsls r0, 24 + cmp r0, 0 + bne _080DBCF0 + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080DBCF0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DBCF8: .4byte gTasks + thumb_func_end sub_80DBCD0 + + thumb_func_start sub_80DBCFC +sub_80DBCFC: @ 80DBCFC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080DBD48 @ =gTasks + adds r4, r1, r0 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + strh r0, [r4, 0x8] + strh r1, [r4, 0xA] + strh r1, [r4, 0xC] + ldr r0, _080DBD4C @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + movs r1, 0x8 + cmp r0, 0 + beq _080DBD30 + movs r1, 0x4 +_080DBD30: + strh r1, [r4, 0xE] + ldrb r1, [r4, 0x8] + ldr r2, _080DBD50 @ =gUnknown_083DA8C4 + adds r0, r4, 0 + bl sub_80798F4 + ldr r0, _080DBD54 @ =sub_80DBD58 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DBD48: .4byte gTasks +_080DBD4C: .4byte gBattleAnimBankAttacker +_080DBD50: .4byte gUnknown_083DA8C4 +_080DBD54: .4byte sub_80DBD58 + thumb_func_end sub_80DBCFC + + thumb_func_start sub_80DBD58 +sub_80DBD58: @ 80DBD58 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080DBD78 @ =gTasks + adds r4, r0, r1 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080DBD7C + cmp r0, 0x1 + beq _080DBD98 + b _080DBDF6 + .align 2, 0 +_080DBD78: .4byte gTasks +_080DBD7C: + adds r0, r4, 0 + bl sub_807992C + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _080DBDF6 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + b _080DBDF6 +_080DBD98: + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080DBDC0 + ldr r2, _080DBDBC @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r0, 0x26] + subs r1, 0x8 + strh r1, [r0, 0x26] + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + b _080DBDF6 + .align 2, 0 +_080DBDBC: .4byte gSprites +_080DBDC0: + ldr r3, _080DBDFC @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r1, 0x88 + lsls r1, 1 + strh r1, [r0, 0x20] + ldrb r0, [r4, 0x8] + bl sub_8078F40 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080DBDF6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DBDFC: .4byte gSprites + thumb_func_end sub_80DBD58 + + thumb_func_start sub_80DBE00 +sub_80DBE00: @ 80DBE00 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080DBE84 @ =gTasks + adds r5, r1, r0 + movs r0, 0 + movs r7, 0x10 + strh r7, [r5, 0xE] + strh r0, [r5, 0x10] + ldr r4, _080DBE88 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x24] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_807A100 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + ldrb r0, [r4] + movs r1, 0 + bl sub_807A100 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + adds r1, r0, 0 + cmp r0, r6 + bcs _080DBE6A + adds r1, r6, 0 +_080DBE6A: + strh r1, [r5, 0x20] + ldr r1, _080DBE8C @ =REG_BLDCNT + movs r2, 0xFD + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _080DBE90 @ =REG_BLDALPHA + strh r7, [r0] + ldr r0, _080DBE94 @ =sub_80DBE98 + str r0, [r5] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DBE84: .4byte gTasks +_080DBE88: .4byte gBattleAnimBankAttacker +_080DBE8C: .4byte REG_BLDCNT +_080DBE90: .4byte REG_BLDALPHA +_080DBE94: .4byte sub_80DBE98 + thumb_func_end sub_80DBE00 + + thumb_func_start sub_80DBE98 +sub_80DBE98: @ 80DBE98 + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080DBEBC @ =gTasks + adds r4, r0, r1 + movs r0, 0x8 + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _080DBF98 + cmp r1, 0x1 + bgt _080DBEC0 + cmp r1, 0 + beq _080DBECE + b _080DC014 + .align 2, 0 +_080DBEBC: .4byte gTasks +_080DBEC0: + cmp r1, 0x2 + bne _080DBEC6 + b _080DBFF4 +_080DBEC6: + cmp r1, 0x3 + bne _080DBECC + b _080DC004 +_080DBECC: + b _080DC014 +_080DBECE: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + bgt _080DBEDE + b _080DC014 +_080DBEDE: + strh r1, [r4, 0xA] + ldr r0, _080DBF1C @ =gSpriteTemplate_83DA8DC + movs r2, 0x22 + ldrsh r1, [r4, r2] + movs r3, 0x24 + ldrsh r2, [r4, r3] + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + movs r0, 0xC + ldrsh r1, [r4, r0] + adds r1, 0x8 + lsls r1, 1 + adds r0, r4, 0 + adds r0, 0x8 + adds r0, r1 + strh r2, [r0] + cmp r2, 0x40 + beq _080DBF82 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080DBF3C + cmp r0, 0x1 + bgt _080DBF20 + cmp r0, 0 + beq _080DBF2A + b _080DBF82 + .align 2, 0 +_080DBF1C: .4byte gSpriteTemplate_83DA8DC +_080DBF20: + cmp r0, 0x2 + beq _080DBF54 + cmp r0, 0x3 + beq _080DBF6C + b _080DBF82 +_080DBF2A: + ldr r0, _080DBF38 @ =gSprites + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r4, 0x20] + b _080DBF7A + .align 2, 0 +_080DBF38: .4byte gSprites +_080DBF3C: + ldr r0, _080DBF50 @ =gSprites + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r4, 0x20] + negs r0, r0 + strh r0, [r1, 0x24] + ldrh r0, [r4, 0x20] + b _080DBF80 + .align 2, 0 +_080DBF50: .4byte gSprites +_080DBF54: + ldr r1, _080DBF68 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r4, 0x20] + strh r1, [r0, 0x24] + ldrh r1, [r4, 0x20] + strh r1, [r0, 0x26] + b _080DBF82 + .align 2, 0 +_080DBF68: .4byte gSprites +_080DBF6C: + ldr r0, _080DBF94 @ =gSprites + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r4, 0x20] + negs r0, r0 +_080DBF7A: + strh r0, [r1, 0x24] + ldrh r0, [r4, 0x20] + negs r0, r0 +_080DBF80: + strh r0, [r1, 0x26] +_080DBF82: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080DC014 + b _080DBFF4 + .align 2, 0 +_080DBF94: .4byte gSprites +_080DBF98: + ldrh r0, [r4, 0xA] + ands r1, r0 + cmp r1, 0 + beq _080DBFA8 + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + b _080DBFAE +_080DBFA8: + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] +_080DBFAE: + ldr r2, _080DBFFC @ =REG_BLDALPHA + ldrh r0, [r4, 0x10] + lsls r0, 8 + ldrh r1, [r4, 0xE] + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x20 + bne _080DC014 + movs r5, 0x8 + adds r6, r4, 0 + adds r6, 0x8 +_080DBFCE: + lsls r0, r5, 1 + adds r1, r6, r0 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0x40 + beq _080DBFEA + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DC000 @ =gSprites + adds r0, r1 + bl DestroySprite +_080DBFEA: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0xC + bls _080DBFCE +_080DBFF4: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080DC014 + .align 2, 0 +_080DBFFC: .4byte REG_BLDALPHA +_080DC000: .4byte gSprites +_080DC004: + ldr r0, _080DC01C @ =REG_BLDALPHA + movs r1, 0 + strh r1, [r0] + subs r0, 0x2 + strh r1, [r0] + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080DC014: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DC01C: .4byte REG_BLDALPHA + thumb_func_end sub_80DBE98 + + thumb_func_start sub_80DC020 +sub_80DC020: @ 80DC020 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x30 + ldrsh r1, [r4, r0] + movs r2, 0x2E + ldrsh r0, [r4, r2] + subs r0, 0xA + cmp r1, r0 + ble _080DC04A + ldrh r0, [r4, 0x30] + movs r1, 0x1 + ands r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080DC04A: + movs r0, 0x30 + ldrsh r1, [r4, r0] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080DC05C + adds r0, r4, 0 + bl move_anim_8072740 +_080DC05C: + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DC020 + + thumb_func_start sub_80DC068 +sub_80DC068: @ 80DC068 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080DC0A4 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080DC094 + ldr r4, _080DC0A8 @ =gBattleAnimBankAttacker + 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] +_080DC094: + ldrh r0, [r6, 0x2] + strh r0, [r5, 0x2E] + ldr r0, _080DC0AC @ =sub_80DC020 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DC0A4: .4byte gBattleAnimArgs +_080DC0A8: .4byte gBattleAnimBankAttacker +_080DC0AC: .4byte sub_80DC020 + thumb_func_end sub_80DC068 + + thumb_func_start sub_80DC0B0 +sub_80DC0B0: @ 80DC0B0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080DC10C @ =gTasks + adds r5, r1, r0 + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DC154 + ldr r0, _080DC110 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + bne _080DC120 + ldr r0, _080DC114 @ =0x0000fff6 + strh r0, [r5, 0x1C] + ldr r4, _080DC118 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x5 + bl sub_807A100 + subs r0, 0x8 + strh r0, [r5, 0x1E] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x8 + strh r0, [r5, 0x20] + ldr r4, _080DC11C @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x5 + bl sub_807A100 + subs r0, 0x8 + strh r0, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x8 + b _080DC1DE + .align 2, 0 +_080DC10C: .4byte gTasks +_080DC110: .4byte gBattleAnimArgs +_080DC114: .4byte 0x0000fff6 +_080DC118: .4byte gBattleAnimBankTarget +_080DC11C: .4byte gBattleAnimBankAttacker +_080DC120: + movs r0, 0xA + strh r0, [r5, 0x1C] + ldr r4, _080DC14C @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x4 + bl sub_807A100 + adds r0, 0x8 + strh r0, [r5, 0x1E] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_807A100 + subs r0, 0x8 + strh r0, [r5, 0x20] + ldr r4, _080DC150 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x4 + bl sub_807A100 + adds r0, 0x8 + b _080DC1D2 + .align 2, 0 +_080DC14C: .4byte gBattleAnimBankAttacker +_080DC150: .4byte gBattleAnimBankTarget +_080DC154: + ldr r0, _080DC198 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + bne _080DC1A8 + ldr r0, _080DC19C @ =0x0000fff6 + strh r0, [r5, 0x1C] + ldr r4, _080DC1A0 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x4 + bl sub_807A100 + adds r0, 0x8 + strh r0, [r5, 0x1E] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x8 + strh r0, [r5, 0x20] + ldr r4, _080DC1A4 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x4 + bl sub_807A100 + adds r0, 0x8 + strh r0, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_807A100 + adds r0, 0x8 + b _080DC1DE + .align 2, 0 +_080DC198: .4byte gBattleAnimArgs +_080DC19C: .4byte 0x0000fff6 +_080DC1A0: .4byte gBattleAnimBankTarget +_080DC1A4: .4byte gBattleAnimBankAttacker +_080DC1A8: + movs r0, 0xA + strh r0, [r5, 0x1C] + ldr r4, _080DC1F0 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x5 + bl sub_807A100 + subs r0, 0x8 + strh r0, [r5, 0x1E] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_807A100 + subs r0, 0x8 + strh r0, [r5, 0x20] + ldr r4, _080DC1F4 @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x5 + bl sub_807A100 + subs r0, 0x8 +_080DC1D2: + strh r0, [r5, 0x22] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_807A100 + subs r0, 0x8 +_080DC1DE: + strh r0, [r5, 0x24] + movs r0, 0x6 + strh r0, [r5, 0xA] + ldr r0, _080DC1F8 @ =sub_80DC1FC + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DC1F0: .4byte gBattleAnimBankAttacker +_080DC1F4: .4byte gBattleAnimBankTarget +_080DC1F8: .4byte sub_80DC1FC + thumb_func_end sub_80DC0B0 + + thumb_func_start sub_80DC1FC +sub_80DC1FC: @ 80DC1FC + push {r4,r5,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080DC21C @ =gTasks + adds r5, r0, r1 + movs r0, 0x8 + ldrsh r1, [r5, r0] + cmp r1, 0 + beq _080DC220 + cmp r1, 0x1 + beq _080DC294 + b _080DC2A8 + .align 2, 0 +_080DC21C: .4byte gTasks +_080DC220: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + ble _080DC2A8 + strh r1, [r5, 0xA] + ldr r0, _080DC28C @ =gSpriteTemplate_83DA9AC + movs r2, 0x1E + ldrsh r1, [r5, r2] + movs r3, 0x20 + ldrsh r2, [r5, r3] + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080DC274 + ldr r0, _080DC290 @ =gSprites + lsls r4, r1, 4 + adds r4, r1 + lsls r4, 2 + adds r4, r0 + movs r0, 0x10 + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x22] + strh r0, [r4, 0x32] + ldrh r0, [r5, 0x24] + strh r0, [r4, 0x36] + ldrh r0, [r5, 0x1C] + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_80786EC + ldrb r0, [r5, 0xC] + movs r1, 0x3 + ands r1, r0 + adds r0, r4, 0 + bl StartSpriteAffineAnim +_080DC274: + ldrh r0, [r5, 0xC] + adds r0, 0x1 + strh r0, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + bne _080DC2A8 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080DC2A8 + .align 2, 0 +_080DC28C: .4byte gSpriteTemplate_83DA9AC +_080DC290: .4byte gSprites +_080DC294: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x11 + ble _080DC2A8 + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080DC2A8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DC1FC + + thumb_func_start sub_80DC2B0 +sub_80DC2B0: @ 80DC2B0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080DC2CE + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + adds r0, r4, 0 + bl DestroySprite +_080DC2CE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DC2B0 + + thumb_func_start sub_80DC2D4 +sub_80DC2D4: @ 80DC2D4 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080DC30C @ =gTasks + adds r4, r1, r0 + ldr r0, _080DC310 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8077FC0 + lsls r0, 24 + lsrs r1, r0, 24 + adds r0, r1, 0 + subs r0, 0x20 + strh r0, [r4, 0x24] + ldr r0, _080DC314 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0x1 + beq _080DC32A + cmp r0, 0x1 + bgt _080DC318 + cmp r0, 0 + beq _080DC31E + b _080DC346 + .align 2, 0 +_080DC30C: .4byte gTasks +_080DC310: .4byte gBattleAnimBankTarget +_080DC314: .4byte gBattleAnimArgs +_080DC318: + cmp r0, 0x2 + beq _080DC336 + b _080DC346 +_080DC31E: + movs r0, 0x2 + strh r0, [r4, 0x1E] + movs r0, 0x5 + strh r0, [r4, 0x20] + movs r0, 0x40 + b _080DC33E +_080DC32A: + movs r0, 0x2 + strh r0, [r4, 0x1E] + movs r0, 0x5 + strh r0, [r4, 0x20] + movs r0, 0xC0 + b _080DC33E +_080DC336: + movs r0, 0x4 + strh r0, [r4, 0x1E] + strh r0, [r4, 0x20] + movs r0, 0 +_080DC33E: + strh r0, [r4, 0x22] + adds r0, r1, 0 + adds r0, 0x20 + strh r0, [r4, 0x26] +_080DC346: + movs r1, 0x24 + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _080DC352 + movs r0, 0 + strh r0, [r4, 0x24] +_080DC352: + ldr r0, _080DC36C @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DC378 + ldr r0, _080DC370 @ =gUnknown_030042C0 + ldrh r0, [r0] + strh r0, [r4, 0x1C] + ldr r0, _080DC374 @ =REG_BG1HOFS + b _080DC380 + .align 2, 0 +_080DC36C: .4byte gBattleAnimBankTarget +_080DC370: .4byte gUnknown_030042C0 +_080DC374: .4byte REG_BG1HOFS +_080DC378: + ldr r0, _080DC3E0 @ =gUnknown_03004288 + ldrh r0, [r0] + strh r0, [r4, 0x1C] + ldr r0, _080DC3E4 @ =REG_BG2HOFS +_080DC380: + str r0, [sp] + ldrh r1, [r4, 0x24] + lsls r3, r1, 16 + asrs r1, r3, 16 + movs r2, 0x24 + ldrsh r0, [r4, r2] + adds r0, 0x40 + cmp r1, r0 + bgt _080DC3BA + ldr r5, _080DC3E8 @ =gUnknown_03004DE0 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 +_080DC39A: + asrs r3, 16 + lsls r1, r3, 1 + adds r2, r1, r5 + ldrh r0, [r4, 0x1C] + strh r0, [r2] + adds r1, r6 + ldrh r0, [r4, 0x1C] + strh r0, [r1] + adds r3, 0x1 + lsls r3, 16 + asrs r1, r3, 16 + movs r2, 0x24 + ldrsh r0, [r4, r2] + adds r0, 0x40 + cmp r1, r0 + ble _080DC39A +_080DC3BA: + ldr r0, _080DC3EC @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_80895F8 + ldr r0, _080DC3F0 @ =sub_80DC3F4 + str r0, [r4] + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DC3E0: .4byte gUnknown_03004288 +_080DC3E4: .4byte REG_BG2HOFS +_080DC3E8: .4byte gUnknown_03004DE0 +_080DC3EC: .4byte 0xa2600001 +_080DC3F0: .4byte sub_80DC3F4 + thumb_func_end sub_80DC2D4 + + thumb_func_start sub_80DC3F4 +sub_80DC3F4: @ 80DC3F4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080DC41C @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080DC4CE + cmp r0, 0x1 + bgt _080DC420 + cmp r0, 0 + beq _080DC426 + b _080DC4E6 + .align 2, 0 +_080DC41C: .4byte gTasks +_080DC420: + cmp r0, 0x2 + beq _080DC4E0 + b _080DC4E6 +_080DC426: + ldrh r3, [r5, 0x22] + ldrh r4, [r5, 0x24] + movs r2, 0x24 + ldrsh r1, [r5, r2] + movs r2, 0x26 + ldrsh r0, [r5, r2] + cmp r1, r0 + bgt _080DC4BE + ldr r0, _080DC470 @ =gSineTable + mov r9, r0 + movs r7, 0x3 + ldr r1, _080DC474 @ =gUnknown_03004DE0 + mov r12, r1 + movs r2, 0xF0 + lsls r2, 3 + add r2, r12 + mov r8, r2 +_080DC448: + lsls r2, r3, 16 + asrs r0, r2, 15 + add r0, r9 + movs r3, 0 + ldrsh r0, [r0, r3] + movs r3, 0x20 + ldrsh r1, [r5, r3] + asrs r0, r1 + lsls r0, 16 + lsrs r1, r0, 16 + asrs r3, r0, 16 + adds r6, r2, 0 + cmp r3, 0 + ble _080DC478 + ldrh r1, [r5, 0xA] + adds r0, r7, 0 + ands r0, r1 + adds r0, r3, r0 + b _080DC484 + .align 2, 0 +_080DC470: .4byte gSineTable +_080DC474: .4byte gUnknown_03004DE0 +_080DC478: + cmp r3, 0 + bge _080DC488 + ldrh r1, [r5, 0xA] + adds r0, r7, 0 + ands r0, r1 + subs r0, r3, r0 +_080DC484: + lsls r0, 16 + lsrs r1, r0, 16 +_080DC488: + lsls r2, r4, 16 + asrs r2, 16 + lsls r3, r2, 1 + mov r0, r12 + adds r4, r3, r0 + ldrh r0, [r5, 0x1C] + lsls r1, 16 + asrs r1, 16 + adds r0, r1, r0 + strh r0, [r4] + add r3, r8 + ldrh r0, [r5, 0x1C] + adds r1, r0 + strh r1, [r3] + asrs r0, r6, 16 + ldrh r1, [r5, 0x1E] + adds r0, r1 + lsls r0, 16 + lsrs r3, r0, 16 + adds r2, 0x1 + lsls r2, 16 + lsrs r4, r2, 16 + asrs r2, 16 + movs r1, 0x26 + ldrsh r0, [r5, r1] + cmp r2, r0 + ble _080DC448 +_080DC4BE: + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x17 + ble _080DC4E6 + b _080DC4D4 +_080DC4CE: + ldr r1, _080DC4DC @ =gUnknown_03004DC0 + movs r0, 0x3 + strb r0, [r1, 0x15] +_080DC4D4: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080DC4E6 + .align 2, 0 +_080DC4DC: .4byte gUnknown_03004DC0 +_080DC4E0: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080DC4E6: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80DC3F4 + + thumb_func_start sub_80DC4F4 +sub_80DC4F4: @ 80DC4F4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r4, r0, 24 + mov r8, r4 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080DC528 @ =gTasks + adds r7, r0, r1 + bl AllocOamMatrix + lsls r0, 24 + lsrs r5, r0, 24 + mov r10, r5 + adds r6, r5, 0 + cmp r6, 0xFF + bne _080DC52C + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080DC5D6 + .align 2, 0 +_080DC528: .4byte gTasks +_080DC52C: + ldr r1, _080DC550 @ =gBattleAnimArgs + ldrb r0, [r1] + bl duplicate_obj_of_side_rel2move_in_transparent_mode + lsls r0, 16 + lsrs r1, r0, 16 + mov r9, r1 + asrs r0, 16 + cmp r0, 0 + bge _080DC554 + adds r0, r5, 0 + bl FreeOamMatrix + mov r0, r8 + bl DestroyAnimVisualTask + b _080DC5D6 + .align 2, 0 +_080DC550: .4byte gBattleAnimArgs +_080DC554: + ldr r2, _080DC5E4 @ =gSprites + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r0, r2, 0 + adds r0, 0x1C + adds r0, r4, r0 + ldr r1, _080DC5E8 @ =SpriteCallbackDummy + str r1, [r0] + adds r4, r2 + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x1F + ands r6, r0 + lsls r2, r6, 1 + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x3] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, 0 + adds r1, 0x43 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r1, r9 + lsls r0, r1, 24 + lsrs r0, 24 + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + ldrb r3, [r4, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r4, 0 + bl CalcCenterToCornerVec + ldr r1, _080DC5EC @ =gBattleAnimArgs + ldrb r0, [r1] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x22] + mov r0, r10 + strh r0, [r7, 0x24] + mov r1, r9 + strh r1, [r7, 0x26] + ldr r0, _080DC5F0 @ =sub_80DC5F4 + str r0, [r7] +_080DC5D6: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DC5E4: .4byte gSprites +_080DC5E8: .4byte SpriteCallbackDummy +_080DC5EC: .4byte gBattleAnimArgs +_080DC5F0: .4byte sub_80DC5F4 + thumb_func_end sub_80DC4F4 + + thumb_func_start sub_80DC5F4 +sub_80DC5F4: @ 80DC5F4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080DC618 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080DC678 + cmp r0, 0x1 + bgt _080DC61C + cmp r0, 0 + beq _080DC626 + b _080DC6F8 + .align 2, 0 +_080DC618: .4byte gTasks +_080DC61C: + cmp r0, 0x2 + beq _080DC6C8 + cmp r0, 0x3 + beq _080DC6E8 + b _080DC6F8 +_080DC626: + ldrh r0, [r4, 0xA] + adds r0, 0x4 + strh r0, [r4, 0xA] + ldr r1, _080DC674 @ =gSineTable + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + lsls r1, 16 + asrs r1, 17 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + subs r0, r1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xC + ldrsh r2, [r4, r1] + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x22] + lsls r1, 24 + lsrs r1, 24 + bl sub_8079AB8 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0x30 + bne _080DC6F8 + b _080DC6DA + .align 2, 0 +_080DC674: .4byte gSineTable +_080DC678: + ldrh r0, [r4, 0xA] + subs r0, 0x4 + strh r0, [r4, 0xA] + ldr r1, _080DC6C4 @ =gSineTable + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + lsls r1, 16 + asrs r1, 17 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + subs r0, r1 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xC + ldrsh r2, [r4, r1] + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x22] + lsls r1, 24 + lsrs r1, 24 + bl sub_8079AB8 + movs r2, 0xA + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080DC6F8 + b _080DC6DA + .align 2, 0 +_080DC6C4: .4byte gSineTable +_080DC6C8: + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080DC6E4 @ =gSprites + adds r0, r1 + bl obj_delete_but_dont_free_vram +_080DC6DA: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080DC6F8 + .align 2, 0 +_080DC6E4: .4byte gSprites +_080DC6E8: + ldrh r0, [r4, 0x24] + lsls r0, 24 + lsrs r0, 24 + bl FreeOamMatrix + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080DC6F8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80DC5F4 + + thumb_func_start sub_80DC700 +sub_80DC700: @ 80DC700 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080DC778 + cmp r0, 0x1 + bgt _080DC716 + cmp r0, 0 + beq _080DC720 + b _080DC818 +_080DC716: + cmp r0, 0x2 + beq _080DC7AA + cmp r0, 0x3 + beq _080DC808 + b _080DC818 +_080DC720: + ldr r4, _080DC76C @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DC74E + ldrh r0, [r5, 0x22] + adds r0, 0xC + strh r0, [r5, 0x22] +_080DC74E: + movs r0, 0x8 + strh r0, [r5, 0x30] + ldr r1, _080DC770 @ =REG_BLDCNT + movs r2, 0xFD + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + ldr r2, _080DC774 @ =REG_BLDALPHA + ldrh r1, [r5, 0x30] + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r0, r1 + strh r0, [r2] + b _080DC7A2 + .align 2, 0 +_080DC76C: .4byte gBattleAnimBankAttacker +_080DC770: .4byte REG_BLDCNT +_080DC774: .4byte REG_BLDALPHA +_080DC778: + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080DC818 + movs r0, 0x40 + negs r0, r0 + bl sub_8076F98 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0xCB + bl PlaySE12WithPanning + adds r0, r5, 0 + movs r1, 0x1 + bl ChangeSpriteAffineAnim +_080DC7A2: + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080DC818 +_080DC7AA: + ldrh r0, [r5, 0x32] + adds r1, r0, 0x1 + strh r1, [r5, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080DC7E8 + movs r0, 0 + strh r0, [r5, 0x32] + ldrh r1, [r5, 0x30] + subs r1, 0x1 + strh r1, [r5, 0x30] + ldr r2, _080DC804 @ =REG_BLDALPHA + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r1, 0x30 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080DC7E8 + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080DC7E8: + movs r0, 0xE0 + lsls r0, 2 + adds r2, r0, 0 + ldrh r1, [r5, 0x34] + adds r2, r1 + lsls r1, r2, 16 + asrs r1, 24 + ldrh r0, [r5, 0x26] + subs r0, r1 + strh r0, [r5, 0x26] + movs r0, 0xFF + ands r2, r0 + strh r2, [r5, 0x34] + b _080DC818 + .align 2, 0 +_080DC804: .4byte REG_BLDALPHA +_080DC808: + ldr r0, _080DC820 @ =REG_BLDCNT + movs r1, 0 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, r5, 0 + bl move_anim_8072740 +_080DC818: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DC820: .4byte REG_BLDCNT + thumb_func_end sub_80DC700 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/rain.s b/asm/rain.s new file mode 100755 index 000000000..f8f68dd28 --- /dev/null +++ b/asm/rain.s @@ -0,0 +1,123 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ rain + + thumb_func_start sub_80D30F0 +sub_80D30F0: @ 80D30F0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080D3178 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D3118 + ldr r1, _080D317C @ =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r5, 0xA] + ldrh r0, [r1, 0x2] + strh r0, [r5, 0xC] + ldrh r0, [r1, 0x4] + strh r0, [r5, 0xE] +_080D3118: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r2, 0x8 + ldrsh r0, [r5, r2] + movs r2, 0xC + ldrsh r1, [r5, r2] + bl __modsi3 + cmp r0, 0x1 + bne _080D3160 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF0 + bl __umodsi3 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x50 + bl __umodsi3 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _080D3180 @ =gSpriteTemplate_83D9130 + adds r1, r4, 0 + movs r3, 0x4 + bl CreateSprite +_080D3160: + movs r0, 0x8 + ldrsh r1, [r5, r0] + movs r2, 0xE + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _080D3172 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080D3172: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D3178: .4byte gTasks +_080D317C: .4byte gBattleAnimArgs +_080D3180: .4byte gSpriteTemplate_83D9130 + thumb_func_end sub_80D30F0 + + thumb_func_start sub_80D3184 +sub_80D3184: @ 80D3184 + ldr r1, _080D318C @ =sub_80D3190 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080D318C: .4byte sub_80D3190 + thumb_func_end sub_80D3184 + + thumb_func_start sub_80D3190 +sub_80D3190: @ 80D3190 + push {lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + bgt _080D31AE + ldrh r0, [r2, 0x24] + adds r0, 0x1 + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x26] + adds r0, 0x4 + strh r0, [r2, 0x26] +_080D31AE: + adds r0, r2, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080D31C2 + adds r0, r2, 0 + bl DestroySprite +_080D31C2: + pop {r0} + bx r0 + thumb_func_end sub_80D3190 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/rock.s b/asm/rock.s new file mode 100755 index 000000000..66c698577 --- /dev/null +++ b/asm/rock.s @@ -0,0 +1,1643 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ rock + + thumb_func_start sub_80DCE9C +sub_80DCE9C: @ 80DCE9C + push {r4-r6,lr} + adds r5, r0, 0 + ldr r6, _080DCF08 @ =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080DCEBC + ldr r0, _080DCF0C @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x20 + adds r3, r5, 0 + adds r3, 0x22 + movs r1, 0 + bl sub_807A3FC +_080DCEBC: + ldrh r0, [r6] + ldrh r1, [r5, 0x20] + adds r0, r1 + movs r4, 0 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x22] + adds r0, 0xE + strh r0, [r5, 0x22] + ldrb r1, [r6, 0x2] + adds r0, r5, 0 + bl StartSpriteAnim + adds r0, r5, 0 + bl AnimateSprite + strh r4, [r5, 0x2E] + strh r4, [r5, 0x30] + movs r0, 0x4 + strh r0, [r5, 0x32] + movs r0, 0x10 + strh r0, [r5, 0x34] + ldr r0, _080DCF10 @ =0x0000ffba + strh r0, [r5, 0x36] + ldrh r0, [r6, 0x4] + strh r0, [r5, 0x38] + ldr r1, _080DCF14 @ =sub_80DCF1C + adds r0, r5, 0 + bl StoreSpriteCallbackInData + ldr r1, _080DCF18 @ =sub_8078278 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DCF08: .4byte gBattleAnimArgs +_080DCF0C: .4byte gBattleAnimBankTarget +_080DCF10: .4byte 0x0000ffba +_080DCF14: .4byte sub_80DCF1C +_080DCF18: .4byte sub_8078278 + thumb_func_end sub_80DCE9C + + thumb_func_start sub_80DCF1C +sub_80DCF1C: @ 80DCF1C + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x38] + ldrh r2, [r4, 0x20] + adds r0, r1, r2 + strh r0, [r4, 0x20] + movs r0, 0xC0 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r0, 0x4 + strh r0, [r4, 0x32] + movs r0, 0x20 + strh r0, [r4, 0x34] + ldr r0, _080DCF54 @ =0x0000ffe8 + strh r0, [r4, 0x36] + ldr r1, _080DCF58 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + ldr r1, _080DCF5C @ =sub_8078278 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DCF54: .4byte 0x0000ffe8 +_080DCF58: .4byte move_anim_8074EE0 +_080DCF5C: .4byte sub_8078278 + thumb_func_end sub_80DCF1C + + thumb_func_start sub_80DCF60 +sub_80DCF60: @ 80DCF60 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080DCF88 @ =gBattleAnimArgs + ldrb r1, [r4, 0xA] + bl StartSpriteAnim + adds r0, r5, 0 + bl AnimateSprite + ldr r0, _080DCF8C @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DCF90 + ldrh r0, [r5, 0x20] + ldrh r1, [r4] + subs r0, r1 + b _080DCF96 + .align 2, 0 +_080DCF88: .4byte gBattleAnimArgs +_080DCF8C: .4byte gBattleAnimBankAttacker +_080DCF90: + ldrh r0, [r4] + ldrh r1, [r5, 0x20] + adds r0, r1 +_080DCF96: + strh r0, [r5, 0x20] + ldr r3, _080DCFD8 @ =gBattleAnimArgs + ldrh r2, [r3, 0x2] + ldrh r0, [r5, 0x22] + adds r2, r0 + movs r4, 0 + strh r2, [r5, 0x22] + ldrh r0, [r3, 0x8] + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldrh r1, [r3, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + strh r2, [r5, 0x34] + ldrh r0, [r3, 0x6] + adds r2, r0 + strh r2, [r5, 0x36] + adds r0, r5, 0 + bl sub_8078A5C + strh r4, [r5, 0x34] + strh r4, [r5, 0x36] + ldr r0, _080DCFDC @ =sub_8078394 + str r0, [r5, 0x1C] + ldr r1, _080DCFE0 @ =move_anim_8074EE0 + adds r0, r5, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DCFD8: .4byte gBattleAnimArgs +_080DCFDC: .4byte sub_8078394 +_080DCFE0: .4byte move_anim_8074EE0 + thumb_func_end sub_80DCF60 + + thumb_func_start sub_80DCFE4 +sub_80DCFE4: @ 80DCFE4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080DCFFC @ =gBattleAnimArgs + movs r1, 0xC + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080DD000 + adds r0, r4, 0 + movs r1, 0 + bl sub_80787B0 + b _080DD008 + .align 2, 0 +_080DCFFC: .4byte gBattleAnimArgs +_080DD000: + adds r0, r4, 0 + movs r1, 0 + bl sub_8078764 +_080DD008: + ldr r1, _080DD024 @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x34] + ldr r0, _080DD028 @ =sub_80DD02C + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DD024: .4byte gBattleAnimArgs +_080DD028: .4byte sub_80DD02C + thumb_func_end sub_80DCFE4 + + thumb_func_start sub_80DD02C +sub_80DD02C: @ 80DD02C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x36] + adds r0, r1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x26] + movs r2, 0x38 + ldrsh r0, [r4, r2] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x32] + ldrh r1, [r4, 0x38] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + 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 _080DD072 + adds r0, r4, 0 + bl move_anim_8072740 +_080DD072: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DD02C + + thumb_func_start do_boulder_dust +do_boulder_dust: @ 80DD078 + push {r4-r6,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r1, _080DD154 @ =REG_BLDCNT + ldr r2, _080DD158 @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r2, 0x80 + lsls r2, 5 + adds r0, r2, 0 + strh r0, [r1] + ldr r4, _080DD15C @ =REG_BG1CNT + ldrb r1, [r4] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + strb r0, [r4, 0x1] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080DD0C4 + ldrb r0, [r4] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4] +_080DD0C4: + ldr r0, _080DD160 @ =gUnknown_030042C0 + strh r5, [r0] + ldr r0, _080DD164 @ =gUnknown_030041B4 + strh r5, [r0] + ldr r0, _080DD168 @ =REG_BG1HOFS + strh r5, [r0] + adds r0, 0x2 + strh r5, [r0] + mov r0, sp + bl sub_8078914 + ldr r1, [sp, 0x4] + str r5, [sp, 0xC] + ldr r2, _080DD16C @ =0x040000d4 + add r0, sp, 0xC + str r0, [r2] + str r1, [r2, 0x4] + ldr r0, _080DD170 @ =0x85000400 + str r0, [r2, 0x8] + ldr r0, [r2, 0x8] + ldr r0, _080DD174 @ =gBattleAnimBackgroundTilemap_SandstormBrew + bl LZDecompressVram + ldr r0, _080DD178 @ =gBattleAnimBackgroundImage_SandstormBrew + ldr r1, [sp] + bl LZDecompressVram + ldr r0, _080DD17C @ =gBattleAnimSpritePalette_261 + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080DD120 + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_80763FC +_080DD120: + ldr r0, _080DD180 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080DD13A + ldr r0, _080DD184 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DD13A + movs r5, 0x1 +_080DD13A: + ldr r0, _080DD188 @ =gTasks + lsls r1, r6, 2 + adds r1, r6 + lsls r1, 3 + adds r1, r0 + strh r5, [r1, 0x8] + ldr r0, _080DD18C @ =sub_80DD190 + str r0, [r1] + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DD154: .4byte REG_BLDCNT +_080DD158: .4byte 0x00003f42 +_080DD15C: .4byte REG_BG1CNT +_080DD160: .4byte gUnknown_030042C0 +_080DD164: .4byte gUnknown_030041B4 +_080DD168: .4byte REG_BG1HOFS +_080DD16C: .4byte 0x040000d4 +_080DD170: .4byte 0x85000400 +_080DD174: .4byte gBattleAnimBackgroundTilemap_SandstormBrew +_080DD178: .4byte gBattleAnimBackgroundImage_SandstormBrew +_080DD17C: .4byte gBattleAnimSpritePalette_261 +_080DD180: .4byte gBattleAnimArgs +_080DD184: .4byte gBattleAnimBankAttacker +_080DD188: .4byte gTasks +_080DD18C: .4byte sub_80DD190 + thumb_func_end do_boulder_dust + + thumb_func_start sub_80DD190 +sub_80DD190: @ 80DD190 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080DD1C0 @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r3, r1, 0 + cmp r0, 0 + bne _080DD1CC + ldr r1, _080DD1C4 @ =gUnknown_030042C0 + ldr r5, _080DD1C8 @ =0x0000fffa + adds r0, r5, 0 + ldrh r2, [r1] + adds r0, r2 + b _080DD1D2 + .align 2, 0 +_080DD1C0: .4byte gTasks +_080DD1C4: .4byte gUnknown_030042C0 +_080DD1C8: .4byte 0x0000fffa +_080DD1CC: + ldr r1, _080DD204 @ =gUnknown_030042C0 + ldrh r0, [r1] + adds r0, 0x6 +_080DD1D2: + strh r0, [r1] + adds r4, r1, 0 + ldr r1, _080DD208 @ =gUnknown_030041B4 + ldr r5, _080DD20C @ =0x0000ffff + adds r0, r5, 0 + ldrh r2, [r1] + adds r0, r2 + strh r0, [r1] + lsls r2, r7, 2 + adds r0, r2, r7 + lsls r0, 3 + adds r0, r3 + movs r5, 0x20 + ldrsh r0, [r0, r5] + mov r8, r2 + adds r2, r1, 0 + cmp r0, 0x4 + bls _080DD1F8 + b _080DD37C +_080DD1F8: + lsls r0, 2 + ldr r1, _080DD210 @ =_080DD214 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DD204: .4byte gUnknown_030042C0 +_080DD208: .4byte gUnknown_030041B4 +_080DD20C: .4byte 0x0000ffff +_080DD210: .4byte _080DD214 + .align 2, 0 +_080DD214: + .4byte _080DD228 + .4byte _080DD270 + .4byte _080DD292 + .4byte _080DD2D4 + .4byte _080DD358 +_080DD228: + mov r1, r8 + adds r0, r1, r7 + lsls r0, 3 + adds r3, r0, r3 + ldrh r0, [r3, 0x1C] + adds r0, 0x1 + movs r4, 0 + strh r0, [r3, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + beq _080DD242 + b _080DD37C +_080DD242: + strh r4, [r3, 0x1C] + ldrh r1, [r3, 0x1E] + adds r1, 0x1 + strh r1, [r3, 0x1E] + ldr r2, _080DD26C @ =REG_BLDALPHA + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r2, 0x1E + ldrsh r0, [r3, r2] + cmp r0, 0x7 + beq _080DD260 + b _080DD37C +_080DD260: + ldrh r0, [r3, 0x20] + adds r0, 0x1 + strh r0, [r3, 0x20] + strh r4, [r3, 0x1E] + b _080DD37C + .align 2, 0 +_080DD26C: .4byte REG_BLDALPHA +_080DD270: + mov r5, r8 + adds r0, r5, r7 + lsls r0, 3 + adds r1, r0, r3 + ldrh r0, [r1, 0x1E] + adds r0, 0x1 + strh r0, [r1, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x65 + bne _080DD37C + movs r0, 0x7 + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + b _080DD37C +_080DD292: + mov r1, r8 + adds r0, r1, r7 + lsls r0, 3 + adds r3, r0, r3 + ldrh r0, [r3, 0x1C] + adds r0, 0x1 + strh r0, [r3, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bne _080DD37C + movs r0, 0 + strh r0, [r3, 0x1C] + ldrh r1, [r3, 0x1E] + subs r1, 0x1 + strh r1, [r3, 0x1E] + ldr r2, _080DD2D0 @ =REG_BLDALPHA + movs r0, 0x10 + subs r0, r1 + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + movs r2, 0x1E + ldrsh r1, [r3, r2] + cmp r1, 0 + bne _080DD37C + ldrh r0, [r3, 0x20] + adds r0, 0x1 + strh r0, [r3, 0x20] + strh r1, [r3, 0x1E] + b _080DD37C + .align 2, 0 +_080DD2D0: .4byte REG_BLDALPHA +_080DD2D4: + mov r0, sp + bl sub_8078914 + ldr r2, [sp] + movs r3, 0x80 + lsls r3, 6 + add r5, sp, 0xC + movs r6, 0 + ldr r1, _080DD38C @ =0x040000d4 + movs r4, 0x80 + lsls r4, 5 + mov r9, r5 + ldr r0, _080DD390 @ =0x85000400 + mov r12, r0 + movs r0, 0x85 + lsls r0, 24 + mov r10, r0 +_080DD2F6: + str r6, [sp, 0xC] + mov r0, r9 + str r0, [r1] + str r2, [r1, 0x4] + mov r0, r12 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r2, r4 + subs r3, r4 + cmp r3, r4 + bhi _080DD2F6 + str r6, [sp, 0xC] + str r5, [r1] + str r2, [r1, 0x4] + lsrs r0, r3, 2 + mov r2, r10 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + ldr r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0xC] + ldr r0, _080DD38C @ =0x040000d4 + str r5, [r0] + str r1, [r0, 0x4] + ldr r1, _080DD394 @ =0x85000200 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080DD344 + ldr r2, _080DD398 @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080DD344: + ldr r0, _080DD39C @ =gTasks + mov r5, r8 + adds r1, r5, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + ldr r4, _080DD3A0 @ =gUnknown_030042C0 + ldr r2, _080DD3A4 @ =gUnknown_030041B4 +_080DD358: + movs r1, 0 + strh r1, [r4] + strh r1, [r2] + ldr r0, _080DD3A8 @ =REG_BLDCNT + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + ldr r2, _080DD398 @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + adds r0, r7, 0 + bl DestroyAnimVisualTask +_080DD37C: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DD38C: .4byte 0x040000d4 +_080DD390: .4byte 0x85000400 +_080DD394: .4byte 0x85000200 +_080DD398: .4byte REG_BG1CNT +_080DD39C: .4byte gTasks +_080DD3A0: .4byte gUnknown_030042C0 +_080DD3A4: .4byte gUnknown_030041B4 +_080DD3A8: .4byte REG_BLDCNT + thumb_func_end sub_80DD190 + + thumb_func_start sub_80DD3AC +sub_80DD3AC: @ 80DD3AC + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080DD428 + ldr r4, _080DD3F0 @ =gBattleAnimArgs + movs r2, 0x6 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _080DD3F8 + ldr r0, _080DD3F4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080DD3F8 + movs r0, 0x98 + lsls r0, 1 + strh r0, [r5, 0x20] + ldrh r0, [r4, 0x2] + negs r0, r0 + strh r0, [r4, 0x2] + movs r0, 0x1 + strh r0, [r5, 0x38] + ldrb r1, [r5, 0x3] + subs r0, 0x40 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r5, 0x3] + b _080DD3FC + .align 2, 0 +_080DD3F0: .4byte gBattleAnimArgs +_080DD3F4: .4byte gBattleAnimBankAttacker +_080DD3F8: + ldr r0, _080DD41C @ =0x0000ffc0 + strh r0, [r5, 0x20] +_080DD3FC: + ldr r4, _080DD420 @ =gBattleAnimArgs + ldrh r0, [r4] + strh r0, [r5, 0x22] + ldr r1, _080DD424 @ =gUnknown_083DAD10 + adds r0, r5, 0 + bl SetSubspriteTables + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x30] + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080DD484 + .align 2, 0 +_080DD41C: .4byte 0x0000ffc0 +_080DD420: .4byte gBattleAnimArgs +_080DD424: .4byte gUnknown_083DAD10 +_080DD428: + ldrh r1, [r5, 0x30] + ldrh r3, [r5, 0x34] + adds r1, r3 + ldrh r2, [r5, 0x32] + ldrh r0, [r5, 0x36] + adds r2, r0 + lsls r0, r1, 16 + asrs r0, 24 + ldrh r3, [r5, 0x24] + adds r0, r3 + strh r0, [r5, 0x24] + lsls r0, r2, 16 + asrs r0, 24 + ldrh r3, [r5, 0x26] + adds r0, r3 + strh r0, [r5, 0x26] + movs r0, 0xFF + ands r1, r0 + strh r1, [r5, 0x34] + ands r2, r0 + strh r2, [r5, 0x36] + movs r1, 0x38 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080DD46E + movs r2, 0x20 + ldrsh r0, [r5, r2] + movs r3, 0x24 + ldrsh r1, [r5, r3] + adds r0, r1 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + ble _080DD484 + b _080DD480 +_080DD46E: + movs r1, 0x20 + ldrsh r0, [r5, r1] + movs r2, 0x24 + ldrsh r1, [r5, r2] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _080DD484 +_080DD480: + ldr r0, _080DD48C @ =move_anim_8072740 + str r0, [r5, 0x1C] +_080DD484: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD48C: .4byte move_anim_8072740 + thumb_func_end sub_80DD3AC + + thumb_func_start sub_80DD490 +sub_80DD490: @ 80DD490 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080DD4C8 @ =gBattleAnimArgs + ldrb r1, [r5, 0x8] + bl StartSpriteAnim + adds r0, r4, 0 + movs r1, 0 + bl sub_80787B0 + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x32] + ldrh r0, [r5, 0x4] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x36] + ldr r0, _080DD4CC @ =sub_8078B34 + str r0, [r4, 0x1C] + ldr r1, _080DD4D0 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD4C8: .4byte gBattleAnimArgs +_080DD4CC: .4byte sub_8078B34 +_080DD4D0: .4byte move_anim_8072740 + thumb_func_end sub_80DD490 + + thumb_func_start sub_80DD4D4 +sub_80DD4D4: @ 80DD4D4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080DD554 @ =gTasks + adds r6, r1, r0 + ldr r5, _080DD558 @ =gBattleAnimBankAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 8 + movs r1, 0xC0 + lsls r1, 13 + adds r0, r1 + lsrs r7, r0, 16 + ldr r4, _080DD55C @ =gBattleAnimBankTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 8 + movs r2, 0xC0 + lsls r2, 13 + adds r0, r2 + lsrs r0, 16 + mov r8, r0 + ldrb r1, [r5] + movs r0, 0x2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _080DD544 + mov r8, r7 +_080DD544: + bl sub_80DD8BC + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1 + bne _080DD560 + movs r0, 0x20 + b _080DD566 + .align 2, 0 +_080DD554: .4byte gTasks +_080DD558: .4byte gBattleAnimBankAttacker +_080DD55C: .4byte gBattleAnimBankTarget +_080DD560: + lsls r1, r5, 3 + movs r0, 0x30 + subs r0, r1 +_080DD566: + strh r0, [r6, 0x18] + movs r4, 0 + strh r4, [r6, 0x8] + strh r4, [r6, 0x1E] + strh r4, [r6, 0x1A] + movs r0, 0x1 + strh r0, [r6, 0x20] + movs r1, 0x18 + ldrsh r0, [r6, r1] + cmp r0, 0 + bge _080DD57E + adds r0, 0x7 +_080DD57E: + asrs r0, 3 + subs r0, 0x1 + strh r0, [r6, 0x1C] + mov r2, r9 + lsls r0, r2, 3 + strh r0, [r6, 0xC] + lsls r0, r7, 3 + strh r0, [r6, 0xE] + mov r1, r10 + subs r0, r1, r2 + lsls r0, 3 + movs r2, 0x18 + ldrsh r1, [r6, r2] + bl __divsi3 + strh r0, [r6, 0x10] + mov r1, r8 + subs r0, r1, r7 + lsls r0, 3 + movs r2, 0x18 + ldrsh r1, [r6, r2] + bl __divsi3 + strh r0, [r6, 0x12] + strh r4, [r6, 0x14] + strh r4, [r6, 0x16] + movs r0, 0x40 + negs r0, r0 + bl sub_8076F98 + adds r4, r0, 0 + lsls r4, 24 + asrs r4, 8 + lsrs r4, 16 + movs r0, 0x3F + bl sub_8076F98 + lsls r0, 24 + strh r4, [r6, 0x22] + asrs r0, 24 + lsls r4, 16 + asrs r4, 16 + subs r0, r4 + movs r2, 0x18 + ldrsh r1, [r6, r2] + bl __divsi3 + strh r0, [r6, 0x24] + strh r5, [r6, 0xA] + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x26] + ldr r0, _080DD600 @ =sub_80DD604 + str r0, [r6] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DD600: .4byte sub_80DD604 + thumb_func_end sub_80DD4D4 + + thumb_func_start sub_80DD604 +sub_80DD604: @ 80DD604 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080DD628 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bls _080DD61E + b _080DD76C +_080DD61E: + lsls r0, 2 + ldr r1, _080DD62C @ =_080DD630 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DD628: .4byte gTasks +_080DD62C: .4byte _080DD630 + .align 2, 0 +_080DD630: + .4byte _080DD644 + .4byte _080DD6A8 + .4byte _080DD6B0 + .4byte _080DD70C + .4byte _080DD75E +_080DD644: + ldrh r2, [r4, 0x14] + ldrh r0, [r4, 0x10] + subs r2, r0 + strh r2, [r4, 0x14] + ldrh r0, [r4, 0x16] + ldrh r1, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0x16] + ldr r3, _080DD6A4 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + lsls r2, 16 + asrs r2, 19 + strh r2, [r0, 0x24] + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r0, [r4, 0x16] + lsls r0, 16 + asrs r0, 19 + strh r0, [r1, 0x26] + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _080DD694 + movs r0, 0x14 + strh r0, [r4, 0x1E] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080DD694: + ldrh r1, [r4, 0x22] + lsls r1, 24 + asrs r1, 24 + movs r0, 0xA2 + bl PlaySE12WithPanning + b _080DD76C + .align 2, 0 +_080DD6A4: .4byte gSprites +_080DD6A8: + ldrh r0, [r4, 0x1E] + subs r0, 0x1 + strh r0, [r4, 0x1E] + b _080DD750 +_080DD6B0: + ldrh r0, [r4, 0x1A] + subs r0, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + beq _080DD6D0 + ldrh r0, [r4, 0x10] + ldrh r2, [r4, 0x14] + adds r0, r2 + strh r0, [r4, 0x14] + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0x16] + adds r0, r1 + strh r0, [r4, 0x16] + b _080DD6DA +_080DD6D0: + strh r0, [r4, 0x14] + strh r0, [r4, 0x16] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080DD6DA: + ldr r2, _080DD708 @ =gSprites + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r4, 0x14] + lsls r0, 16 + asrs r0, 19 + strh r0, [r1, 0x24] + movs r1, 0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r0, [r4, 0x16] + lsls r0, 16 + asrs r0, 19 + strh r0, [r1, 0x26] + b _080DD76C + .align 2, 0 +_080DD708: .4byte gSprites +_080DD70C: + ldrh r0, [r4, 0x10] + ldrh r2, [r4, 0xC] + adds r0, r2 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x12] + ldrh r1, [r4, 0xE] + adds r0, r1 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x1C + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080DD74A + movs r0, 0 + strh r0, [r4, 0x1A] + adds r0, r4, 0 + bl sub_80DD774 + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x22] + adds r1, r0 + strh r1, [r4, 0x22] + lsls r1, 24 + asrs r1, 24 + movs r0, 0xAF + bl PlaySE12WithPanning +_080DD74A: + ldrh r0, [r4, 0x18] + subs r0, 0x1 + strh r0, [r4, 0x18] +_080DD750: + lsls r0, 16 + cmp r0, 0 + bne _080DD76C + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080DD76C +_080DD75E: + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DD76C + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080DD76C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DD604 + + thumb_func_start sub_80DD774 +sub_80DD774: @ 80DD774 + push {r4-r7,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bhi _080DD864 + lsls r0, 2 + ldr r1, _080DD790 @ =_080DD794 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DD790: .4byte _080DD794 + .align 2, 0 +_080DD794: + .4byte _080DD7A8 + .4byte _080DD7B4 + .4byte _080DD7B4 + .4byte _080DD7C0 + .4byte _080DD7CC +_080DD7A8: + ldr r3, _080DD7B0 @ =gSpriteTemplate_83DAD78 + movs r5, 0 + b _080DD7D0 + .align 2, 0 +_080DD7B0: .4byte gSpriteTemplate_83DAD78 +_080DD7B4: + ldr r3, _080DD7BC @ =gSpriteTemplate_83DAD90 + movs r5, 0x50 + b _080DD7D0 + .align 2, 0 +_080DD7BC: .4byte gSpriteTemplate_83DAD90 +_080DD7C0: + ldr r3, _080DD7C8 @ =gSpriteTemplate_83DAD90 + movs r5, 0x40 + b _080DD7D0 + .align 2, 0 +_080DD7C8: .4byte gSpriteTemplate_83DAD90 +_080DD7CC: + ldr r3, _080DD86C @ =gSpriteTemplate_83DAD90 + movs r5, 0x30 +_080DD7D0: + ldrh r1, [r4, 0xC] + lsls r1, 16 + asrs r1, 19 + lsls r1, 16 + lsrs r1, 16 + ldrh r2, [r4, 0xE] + lsls r2, 16 + asrs r2, 19 + lsls r2, 16 + movs r6, 0x20 + ldrsh r0, [r4, r6] + lsls r0, 2 + adds r1, r0 + lsls r1, 16 + lsrs r6, r1, 16 + asrs r1, 16 + lsrs r7, r2, 16 + asrs r2, 16 + adds r0, r3, 0 + movs r3, 0x23 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _080DD85C + ldr r1, _080DD870 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0x12 + strh r1, [r0, 0x2E] + movs r2, 0x20 + ldrsh r1, [r4, r2] + lsls r2, r1, 2 + adds r2, r1 + lsls r2, 2 + adds r2, r6, r2 + movs r6, 0xA + ldrsh r3, [r4, r6] + lsls r1, r3, 1 + adds r1, r3 + adds r2, r1 + strh r2, [r0, 0x32] + strh r7, [r0, 0x36] + movs r1, 0xA + ldrsh r2, [r4, r1] + lsls r2, 1 + movs r3, 0x10 + negs r3, r3 + adds r1, r3, 0 + subs r1, r2 + strh r1, [r0, 0x38] + ldrh r3, [r0, 0x4] + lsls r2, r3, 22 + lsrs r2, 22 + adds r2, r5 + ldr r5, _080DD874 @ =0x000003ff + adds r1, r5, 0 + ands r2, r1 + ldr r1, _080DD878 @ =0xfffffc00 + ands r1, r3 + orrs r1, r2 + strh r1, [r0, 0x4] + bl sub_80786EC + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] +_080DD85C: + movs r6, 0x20 + ldrsh r0, [r4, r6] + negs r0, r0 + strh r0, [r4, 0x20] +_080DD864: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080DD86C: .4byte gSpriteTemplate_83DAD90 +_080DD870: .4byte gSprites +_080DD874: .4byte 0x000003ff +_080DD878: .4byte 0xfffffc00 + thumb_func_end sub_80DD774 + + thumb_func_start sub_80DD87C +sub_80DD87C: @ 80DD87C + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080DD8AE + ldr r0, _080DD8B4 @ =sub_80DD604 + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080DD8A8 + ldr r0, _080DD8B8 @ =gTasks + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x1E] + subs r0, 0x1 + strh r0, [r1, 0x1E] +_080DD8A8: + adds r0, r4, 0 + bl DestroySprite +_080DD8AE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DD8B4: .4byte sub_80DD604 +_080DD8B8: .4byte gTasks + thumb_func_end sub_80DD87C + + thumb_func_start sub_80DD8BC +sub_80DD8BC: @ 80DD8BC + push {lr} + ldr r0, _080DD8E4 @ =gDisableStructMoveAnim + ldr r0, [r0] + ldrb r1, [r0, 0x11] + lsrs r0, r1, 4 + lsls r1, 28 + lsrs r1, 28 + subs r0, r1 + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xFF + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x4 + bls _080DD8DE + movs r1, 0x1 +_080DD8DE: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_080DD8E4: .4byte gDisableStructMoveAnim + thumb_func_end sub_80DD8BC + + thumb_func_start sub_80DD8E8 +sub_80DD8E8: @ 80DD8E8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080DD920 @ =gBattleAnimArgs + ldrb r1, [r5, 0x8] + bl StartSpriteAnim + ldrh r0, [r5] + strh r0, [r4, 0x24] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + ldrh r1, [r5, 0x4] + subs r0, r1 + strh r0, [r4, 0x34] + movs r0, 0x3 + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080DD924 @ =sub_80DD928 + str r0, [r4, 0x1C] + adds r4, 0x3E + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD920: .4byte gBattleAnimArgs +_080DD924: .4byte sub_80DD928 + thumb_func_end sub_80DD8E8 + + thumb_func_start sub_80DD928 +sub_80DD928: @ 80DD928 + push {lr} + adds r2, r0, 0 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r3] + ldrh r1, [r2, 0x34] + movs r3, 0x34 + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _080DD960 + ldrh r3, [r2, 0x32] + adds r0, r1, r3 + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x2E] + adds r1, r0 + strh r1, [r2, 0x34] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r1, 16 + cmp r1, 0 + ble _080DD972 + movs r0, 0 + strh r0, [r2, 0x34] + b _080DD972 +_080DD960: + ldrh r0, [r2, 0x30] + subs r0, 0x1 + strh r0, [r2, 0x30] + lsls r0, 16 + cmp r0, 0 + bne _080DD972 + adds r0, r2, 0 + bl move_anim_8072740 +_080DD972: + pop {r0} + bx r0 + thumb_func_end sub_80DD928 + + thumb_func_start sub_80DD978 +sub_80DD978: @ 80DD978 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080DD9A0 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080DD994 + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim +_080DD994: + adds r0, r4, 0 + bl sub_807941C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DD9A0: .4byte gBattleAnimBankAttacker + thumb_func_end sub_80DD978 + + thumb_func_start sub_80DD9A4 +sub_80DD9A4: @ 80DD9A4 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080DD9F0 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080DD9F4 @ =gBattleAnimArgs + ldrh r3, [r2] + ldrh r5, [r4, 0x20] + adds r1, r3, r5 + strh r1, [r4, 0x20] + ldrh r1, [r2, 0x2] + adds r0, r1 + strh r0, [r4, 0x22] + strh r3, [r4, 0x30] + strh r1, [r4, 0x32] + ldrh r0, [r2, 0x4] + strh r0, [r4, 0x38] + ldrb r1, [r2, 0x6] + adds r0, r4, 0 + bl StartSpriteAnim + ldr r0, _080DD9F8 @ =sub_80DD9FC + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD9F0: .4byte gBattleAnimBankTarget +_080DD9F4: .4byte gBattleAnimArgs +_080DD9F8: .4byte sub_80DD9FC + thumb_func_end sub_80DD9A4 + + thumb_func_start sub_80DD9FC +sub_80DD9FC: @ 80DD9FC + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x8 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + movs r1, 0x34 + ldrsh r0, [r4, r1] + movs r1, 0x28 + bl __divsi3 + ldrh r1, [r4, 0x24] + adds r1, r0 + strh r1, [r4, 0x24] + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x26] + subs r1, r0 + strh r1, [r4, 0x26] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x8C + ble _080DDA46 + adds r0, r4, 0 + bl move_anim_8072740 +_080DDA46: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80DD9FC + + thumb_func_start sub_80DDA4C +sub_80DDA4C: @ 80DDA4C + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _080DDA84 @ =gMoveDmgMoveAnim + ldr r0, [r2] + cmp r0, 0x20 + bgt _080DDA60 + ldr r1, _080DDA88 @ =gBattleAnimArgs + movs r0, 0 + strh r0, [r1, 0xE] +_080DDA60: + ldr r2, [r2] + adds r0, r2, 0 + subs r0, 0x21 + cmp r0, 0x20 + bhi _080DDA70 + ldr r1, _080DDA88 @ =gBattleAnimArgs + movs r0, 0x1 + strh r0, [r1, 0xE] +_080DDA70: + cmp r2, 0x41 + ble _080DDA7A + ldr r1, _080DDA88 @ =gBattleAnimArgs + movs r0, 0x2 + strh r0, [r1, 0xE] +_080DDA7A: + adds r0, r3, 0 + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080DDA84: .4byte gMoveDmgMoveAnim +_080DDA88: .4byte gBattleAnimArgs + thumb_func_end sub_80DDA4C + + thumb_func_start sub_80DDA8C +sub_80DDA8C: @ 80DDA8C + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080DDAE8 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080DDAAE + movs r0, 0 + bl sub_80789D4 + movs r0, 0xC8 + strh r0, [r5, 0xA] +_080DDAAE: + ldr r4, _080DDAEC @ =gUnknown_030041B8 + movs r1, 0xA + ldrsh r0, [r5, r1] + movs r1, 0xA + bl __divsi3 + ldrh r1, [r4] + adds r1, r0 + strh r1, [r4] + ldrh r0, [r5, 0xA] + subs r0, 0x3 + strh r0, [r5, 0xA] + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x78 + bne _080DDADA + movs r0, 0x1 + bl sub_80789D4 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080DDADA: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DDAE8: .4byte gTasks +_080DDAEC: .4byte gUnknown_030041B8 + thumb_func_end sub_80DDA8C + + thumb_func_start sub_80DDAF0 +sub_80DDAF0: @ 80DDAF0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080DDB5C @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080DDB1C + movs r0, 0 + bl sub_80789D4 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + ldr r0, _080DDB60 @ =gUnknown_030041B8 + ldrh r0, [r0] + strh r0, [r4, 0xC] +_080DDB1C: + ldrh r0, [r4, 0xA] + adds r0, 0x50 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0xA] + ldr r6, _080DDB60 @ =gUnknown_030041B8 + movs r2, 0xA + ldrsh r1, [r4, r2] + movs r0, 0x4 + bl Cos + ldrh r4, [r4, 0xC] + adds r0, r4 + strh r0, [r6] + ldr r0, _080DDB64 @ =gBattleAnimArgs + movs r2, 0xE + ldrsh r1, [r0, r2] + ldr r0, _080DDB68 @ =0x00000fff + cmp r1, r0 + bne _080DDB54 + movs r0, 0 + strh r0, [r6] + movs r0, 0x1 + bl sub_80789D4 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080DDB54: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080DDB5C: .4byte gTasks +_080DDB60: .4byte gUnknown_030041B8 +_080DDB64: .4byte gBattleAnimArgs +_080DDB68: .4byte 0x00000fff + thumb_func_end sub_80DDAF0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/shock.s b/asm/shock.s new file mode 100755 index 000000000..743aefe8a --- /dev/null +++ b/asm/shock.s @@ -0,0 +1,259 @@ + .include "constants/gba_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. diff --git a/asm/struggle.s b/asm/struggle.s new file mode 100755 index 000000000..2d618ed8f --- /dev/null +++ b/asm/struggle.s @@ -0,0 +1,111 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D2C38 +sub_80D2C38: @ 80D2C38 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r1, _080D2C50 @ =gBattleAnimArgs + movs r2, 0x4 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080D2C54 + adds r0, r5, 0 + bl move_anim_8072740 + b _080D2CB8 + .align 2, 0 +_080D2C50: .4byte gBattleAnimArgs +_080D2C54: + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080D2C64 + ldr r4, _080D2C60 @ =gBattleAnimBankAttacker + b _080D2C66 + .align 2, 0 +_080D2C60: .4byte gBattleAnimBankAttacker +_080D2C64: + ldr r4, _080D2C94 @ =gBattleAnimBankTarget +_080D2C66: + 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, _080D2C98 @ =gBattleAnimArgs + movs r2, 0x2 + ldrsh r1, [r0, r2] + adds r2, r0, 0 + cmp r1, 0 + bne _080D2C9C + ldrh r0, [r5, 0x20] + adds r0, 0x20 + b _080D2CA0 + .align 2, 0 +_080D2C94: .4byte gBattleAnimBankTarget +_080D2C98: .4byte gBattleAnimArgs +_080D2C9C: + ldrh r0, [r5, 0x20] + subs r0, 0x20 +_080D2CA0: + strh r0, [r5, 0x20] + ldrh r0, [r2, 0x4] + strh r0, [r5, 0x2E] + ldrh r1, [r2, 0x2] + strh r1, [r5, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim + ldr r0, _080D2CC0 @ =sub_80D2CC4 + str r0, [r5, 0x1C] +_080D2CB8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D2CC0: .4byte sub_80D2CC4 + thumb_func_end sub_80D2C38 + + thumb_func_start sub_80D2CC4 +sub_80D2CC4: @ 80D2CC4 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080D2CF4 + ldrh r0, [r2, 0x2E] + subs r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + cmp r0, 0 + beq _080D2CEE + ldrh r1, [r2, 0x30] + lsls r1, 24 + lsrs r1, 24 + adds r0, r2, 0 + bl StartSpriteAnim + b _080D2CF4 +_080D2CEE: + adds r0, r2, 0 + bl move_anim_8072740 +_080D2CF4: + pop {r0} + bx r0 + thumb_func_end sub_80D2CC4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/sunlight.s b/asm/sunlight.s new file mode 100755 index 000000000..07895e1b9 --- /dev/null +++ b/asm/sunlight.s @@ -0,0 +1,33 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ sunlight + + thumb_func_start sub_80D517C +sub_80D517C: @ 80D517C + push {lr} + movs r1, 0 + strh r1, [r0, 0x20] + strh r1, [r0, 0x22] + movs r1, 0x3C + strh r1, [r0, 0x2E] + movs r1, 0x8C + strh r1, [r0, 0x32] + movs r1, 0x50 + strh r1, [r0, 0x36] + ldr r1, _080D51A0 @ =sub_8078B34 + str r1, [r0, 0x1C] + ldr r1, _080D51A4 @ =move_anim_8072740 + bl StoreSpriteCallbackInData + pop {r0} + bx r0 + .align 2, 0 +_080D51A0: .4byte sub_8078B34 +_080D51A4: .4byte move_anim_8072740 + thumb_func_end sub_80D517C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/swipe.s b/asm/swipe.s new file mode 100755 index 000000000..7f5284d7c --- /dev/null +++ b/asm/swipe.s @@ -0,0 +1,50 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D2BE8 +sub_80D2BE8: @ 80D2BE8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D2C1C + ldr r1, _080D2C18 @ =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] + ldrb r1, [r1, 0x4] + adds r0, r4, 0 + bl StartSpriteAnim + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080D2C30 + .align 2, 0 +_080D2C18: .4byte gBattleAnimArgs +_080D2C1C: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080D2C30 + adds r0, r4, 0 + bl move_anim_8072740 +_080D2C30: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D2BE8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/thunder.s b/asm/thunder.s new file mode 100755 index 000000000..df97608f9 --- /dev/null +++ b/asm/thunder.s @@ -0,0 +1,68 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ thunder + + thumb_func_start sub_80D61C8 +sub_80D61C8: @ 80D61C8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D61E8 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D61F0 + ldr r0, _080D61EC @ =gBattleAnimArgs + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + b _080D61FC + .align 2, 0 +_080D61E8: .4byte gBattleAnimBankAttacker +_080D61EC: .4byte gBattleAnimArgs +_080D61F0: + ldr r1, _080D6210 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + adds r0, r1, 0 +_080D61FC: + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080D6214 @ =sub_80D6218 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6210: .4byte gBattleAnimArgs +_080D6214: .4byte sub_80D6218 + thumb_func_end sub_80D61C8 + + thumb_func_start sub_80D6218 +sub_80D6218: @ 80D6218 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080D622E + adds r0, r2, 0 + bl move_anim_8072740 +_080D622E: + pop {r0} + bx r0 + thumb_func_end sub_80D6218 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/uproar.s b/asm/uproar.s new file mode 100755 index 000000000..04f428d4e --- /dev/null +++ b/asm/uproar.s @@ -0,0 +1,64 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80D2CF8 +sub_80D2CF8: @ 80D2CF8 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080D2D2C @ =gBattleAnimArgs + ldrb r0, [r0] + bl GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + ldr r0, _080D2D30 @ =gTasks + adds r4, r0 + ldr r2, _080D2D34 @ =gUnknown_083D7CA8 + adds r0, r4, 0 + bl sub_80798F4 + ldr r0, _080D2D38 @ =sub_80D2D3C + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D2D2C: .4byte gBattleAnimArgs +_080D2D30: .4byte gTasks +_080D2D34: .4byte gUnknown_083D7CA8 +_080D2D38: .4byte sub_80D2D3C + thumb_func_end sub_80D2CF8 + + thumb_func_start sub_80D2D3C +sub_80D2D3C: @ 80D2D3C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080D2D64 @ =gTasks + adds r0, r1 + bl sub_807992C + lsls r0, 24 + cmp r0, 0 + bne _080D2D5C + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080D2D5C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D2D64: .4byte gTasks + thumb_func_end sub_80D2D3C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/water.s b/asm/water.s new file mode 100755 index 000000000..e982d4265 --- /dev/null +++ b/asm/water.s @@ -0,0 +1,2955 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ water + + thumb_func_start sub_80D37FC +sub_80D37FC: @ 80D37FC + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r0, _080D382C @ =gBattleAnimArgs + ldrh r1, [r0, 0x8] + strh r1, [r4, 0x2E] + ldrh r0, [r0, 0x4] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + adds r1, r0 + strh r1, [r4, 0x36] + ldr r0, _080D3830 @ =sub_8078B34 + str r0, [r4, 0x1C] + ldr r1, _080D3834 @ =move_anim_8072740 + adds r0, r4, 0 + bl StoreSpriteCallbackInData + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D382C: .4byte gBattleAnimArgs +_080D3830: .4byte sub_8078B34 +_080D3834: .4byte move_anim_8072740 + thumb_func_end sub_80D37FC + + thumb_func_start sub_80D3838 +sub_80D3838: @ 80D3838 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080D3850 @ =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080D3854 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8078764 + b _080D385C + .align 2, 0 +_080D3850: .4byte gBattleAnimArgs +_080D3854: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80787B0 +_080D385C: + ldr r0, _080D386C @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x3C] + ldr r0, _080D3870 @ =sub_80D3874 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D386C: .4byte gBattleAnimArgs +_080D3870: .4byte sub_80D3874 + thumb_func_end sub_80D3838 + + thumb_func_start sub_80D3874 +sub_80D3874: @ 80D3874 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0xB + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x4 + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r0, 0x30 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x3C] + subs r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080D38B4 + adds r0, r4, 0 + bl move_anim_8072740 +_080D38B4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D3874 + + thumb_func_start sub_80D38BC +sub_80D38BC: @ 80D38BC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r1, _080D398C @ =REG_BLDCNT + ldr r2, _080D3990 @ =0x00003f42 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r3, 0x80 + lsls r3, 5 + adds r0, r3, 0 + strh r0, [r1] + ldr r2, _080D3994 @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r2, 0x1] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2, 0x1] + mov r0, sp + bl sub_8078914 + ldr r2, [sp] + movs r3, 0x80 + lsls r3, 6 + add r6, sp, 0x10 + add r0, sp, 0xC + mov r12, r0 + movs r5, 0 + ldr r1, _080D3998 @ =0x040000d4 + movs r4, 0x80 + lsls r4, 5 + mov r8, r6 + ldr r7, _080D399C @ =0x85000400 + movs r0, 0x85 + lsls r0, 24 + mov r9, r0 +_080D3920: + str r5, [sp, 0x10] + mov r0, r8 + str r0, [r1] + str r2, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r2, r4 + subs r3, r4 + cmp r3, r4 + bhi _080D3920 + str r5, [sp, 0x10] + str r6, [r1] + str r2, [r1, 0x4] + lsrs r0, r3, 2 + mov r2, r9 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0 + mov r3, r12 + strb r0, [r3] + strb r0, [r3] + ldr r1, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x10] + ldr r0, _080D3998 @ =0x040000d4 + str r6, [r0] + str r1, [r0, 0x4] + ldr r1, _080D399C @ =0x85000400 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080D39B8 + ldr r2, _080D3994 @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080D39A0 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080D39A8 + ldr r0, _080D39A4 @ =gUnknown_08E70968 + b _080D39AA + .align 2, 0 +_080D398C: .4byte REG_BLDCNT +_080D3990: .4byte 0x00003f42 +_080D3994: .4byte REG_BG1CNT +_080D3998: .4byte 0x040000d4 +_080D399C: .4byte 0x85000400 +_080D39A0: .4byte gBattleAnimBankAttacker +_080D39A4: .4byte gUnknown_08E70968 +_080D39A8: + ldr r0, _080D39B4 @ =gUnknown_08E70C38 +_080D39AA: + ldr r1, [sp, 0x4] + bl LZDecompressVram + b _080D39CE + .align 2, 0 +_080D39B4: .4byte gUnknown_08E70C38 +_080D39B8: + ldr r0, _080D39F0 @ =gUnknown_08E70F0C + ldr r1, [sp, 0x4] + bl LZDecompressVram + mov r0, sp + ldrb r0, [r0, 0x8] + ldr r1, [sp, 0x4] + movs r2, 0 + movs r3, 0x1 + bl sub_80763FC +_080D39CE: + ldr r0, _080D39F4 @ =gBattleAnimBackgroundImage_Surf + ldr r1, [sp] + bl LZDecompressVram + ldr r0, _080D39F8 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080D3A00 + ldr r0, _080D39FC @ =gBattleAnimBackgroundPalette_Surf + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette + b _080D3A0E + .align 2, 0 +_080D39F0: .4byte gUnknown_08E70F0C +_080D39F4: .4byte gBattleAnimBackgroundImage_Surf +_080D39F8: .4byte gBattleAnimArgs +_080D39FC: .4byte gBattleAnimBackgroundPalette_Surf +_080D3A00: + ldr r0, _080D3A78 @ =gBattleAnimBackgroundImageMuddyWater_Pal + mov r1, sp + ldrb r1, [r1, 0x8] + lsls r1, 4 + movs r2, 0x20 + bl LoadCompressedPalette +_080D3A0E: + ldr r0, _080D3A7C @ =sub_80D3D68 + ldr r4, _080D3A80 @ =gTasks + mov r2, r10 + lsls r5, r2, 2 + adds r1, r5, r2 + lsls r1, 3 + adds r6, r1, r4 + ldrb r1, [r6, 0x7] + adds r1, 0x1 + lsls r1, 24 + lsrs r1, 24 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r3, 0 + mov r9, r3 + mov r0, r8 + strh r0, [r6, 0x26] + mov r1, r8 + lsls r0, r1, 2 + add r0, r8 + lsls r0, 3 + adds r7, r0, r4 + mov r2, r9 + strh r2, [r7, 0x8] + movs r0, 0x80 + lsls r0, 5 + strh r0, [r7, 0xA] + strh r0, [r7, 0xC] + bl NotInBattle + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080D3A94 + ldr r3, _080D3A84 @ =0x0000ffb0 + adds r0, r3, 0 + ldr r1, _080D3A88 @ =gUnknown_030042C0 + strh r0, [r1] + ldr r2, _080D3A8C @ =0x0000ffd0 + adds r0, r2, 0 + ldr r3, _080D3A90 @ =gUnknown_030041B4 + strh r0, [r3] + movs r0, 0x2 + strh r0, [r6, 0x8] + movs r0, 0x1 + strh r0, [r6, 0xA] + mov r0, r9 + strh r0, [r7, 0xE] + b _080D3AEE + .align 2, 0 +_080D3A78: .4byte gBattleAnimBackgroundImageMuddyWater_Pal +_080D3A7C: .4byte sub_80D3D68 +_080D3A80: .4byte gTasks +_080D3A84: .4byte 0x0000ffb0 +_080D3A88: .4byte gUnknown_030042C0 +_080D3A8C: .4byte 0x0000ffd0 +_080D3A90: .4byte gUnknown_030041B4 +_080D3A94: + ldr r0, _080D3AC4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1 + bne _080D3AD8 + ldr r2, _080D3AC8 @ =0x0000ff20 + adds r0, r2, 0 + ldr r3, _080D3ACC @ =gUnknown_030042C0 + strh r0, [r3] + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + ldr r3, _080D3AD0 @ =gUnknown_030041B4 + strh r0, [r3] + movs r0, 0x2 + strh r0, [r6, 0x8] + ldr r0, _080D3AD4 @ =0x0000ffff + strh r0, [r6, 0xA] + strh r1, [r7, 0xE] + b _080D3AEE + .align 2, 0 +_080D3AC4: .4byte gBattleAnimBankAttacker +_080D3AC8: .4byte 0x0000ff20 +_080D3ACC: .4byte gUnknown_030042C0 +_080D3AD0: .4byte gUnknown_030041B4 +_080D3AD4: .4byte 0x0000ffff +_080D3AD8: + ldr r0, _080D3B1C @ =gUnknown_030042C0 + strh r4, [r0] + ldr r1, _080D3B20 @ =0x0000ffd0 + adds r0, r1, 0 + ldr r2, _080D3B24 @ =gUnknown_030041B4 + strh r0, [r2] + ldr r0, _080D3B28 @ =0x0000fffe + strh r0, [r6, 0x8] + movs r0, 0x1 + strh r0, [r6, 0xA] + strh r4, [r7, 0xE] +_080D3AEE: + ldr r1, _080D3B2C @ =REG_BG1HOFS + ldr r3, _080D3B1C @ =gUnknown_030042C0 + ldrh r0, [r3] + strh r0, [r1] + adds r1, 0x2 + ldr r2, _080D3B24 @ =gUnknown_030041B4 + ldrh r0, [r2] + strh r0, [r1] + ldr r1, _080D3B30 @ =gTasks + mov r3, r8 + lsls r0, r3, 2 + add r0, r8 + lsls r0, 3 + adds r2, r0, r1 + movs r3, 0xE + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _080D3B34 + movs r0, 0x30 + strh r0, [r2, 0x10] + movs r0, 0x70 + b _080D3B38 + .align 2, 0 +_080D3B1C: .4byte gUnknown_030042C0 +_080D3B20: .4byte 0x0000ffd0 +_080D3B24: .4byte gUnknown_030041B4 +_080D3B28: .4byte 0x0000fffe +_080D3B2C: .4byte REG_BG1HOFS +_080D3B30: .4byte gTasks +_080D3B34: + movs r0, 0 + strh r0, [r2, 0x10] +_080D3B38: + strh r0, [r2, 0x12] + mov r2, r10 + adds r0, r5, r2 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x14] + ldr r1, _080D3B5C @ =sub_80D3B60 + str r1, [r0] + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D3B5C: .4byte sub_80D3B60 + thumb_func_end sub_80D38BC + + thumb_func_start sub_80D3B60 +sub_80D3B60: @ 80D3B60 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _080D3D44 @ =gTasks + lsls r4, r7, 2 + adds r4, r7 + lsls r4, 3 + adds r4, r0 + ldrh r0, [r4, 0x8] + ldr r1, _080D3D48 @ =gUnknown_030042C0 + ldrh r1, [r1] + adds r0, r1 + ldr r2, _080D3D48 @ =gUnknown_030042C0 + strh r0, [r2] + ldrh r0, [r4, 0xA] + ldr r3, _080D3D4C @ =gUnknown_030041B4 + ldrh r3, [r3] + adds r0, r3 + ldr r1, _080D3D4C @ =gUnknown_030041B4 + strh r0, [r1] + add r5, sp, 0x4 + adds r0, r5, 0 + bl sub_8078914 + ldrh r0, [r4, 0xA] + ldrh r2, [r4, 0xC] + adds r0, r2 + strh r0, [r4, 0xC] + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + mov r10, r5 + cmp r0, 0x4 + bne _080D3C02 + ldr r1, _080D3D50 @ =gPlttBufferFaded + ldrb r0, [r5, 0x8] + lsls r0, 4 + adds r0, 0x7 + lsls r0, 1 + adds r0, r1 + ldrh r6, [r0] + movs r2, 0x6 + adds r5, r1, 0 + adds r3, r5, 0 + mov r4, r10 +_080D3BC8: + ldrb r0, [r4, 0x8] + lsls r0, 4 + adds r1, r2, 0x1 + adds r0, r1 + lsls r1, r0, 1 + adds r1, r3 + subs r0, 0x1 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r1] + subs r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _080D3BC8 + mov r3, r10 + ldrb r0, [r3, 0x8] + lsls r0, 4 + adds r0, 0x1 + lsls r0, 1 + adds r0, r5 + strh r6, [r0] + ldr r1, _080D3D44 @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + strh r2, [r0, 0x12] +_080D3C02: + ldr r1, _080D3D44 @ =gTasks + lsls r2, r7, 2 + adds r0, r2, r7 + lsls r0, 3 + adds r3, r0, r1 + ldrh r0, [r3, 0x14] + adds r0, 0x1 + strh r0, [r3, 0x14] + lsls r0, 16 + asrs r0, 16 + adds r4, r1, 0 + str r2, [sp, 0x14] + cmp r0, 0x1 + ble _080D3C70 + movs r0, 0 + strh r0, [r3, 0x14] + ldrh r0, [r3, 0xE] + adds r2, r0, 0x1 + strh r2, [r3, 0xE] + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0xD + bgt _080D3C4C + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + movs r0, 0x10 + subs r0, r2 + lsls r0, 8 + orrs r2, r0 + strh r2, [r1, 0xA] + ldrh r0, [r3, 0x10] + adds r0, 0x1 + strh r0, [r3, 0x10] +_080D3C4C: + movs r2, 0xE + ldrsh r0, [r3, r2] + cmp r0, 0x36 + ble _080D3C70 + ldrh r2, [r3, 0x10] + subs r2, 0x1 + strh r2, [r3, 0x10] + movs r1, 0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r4 + movs r0, 0x10 + subs r0, r2 + lsls r0, 8 + orrs r2, r0 + strh r2, [r1, 0xA] +_080D3C70: + ldr r2, [sp, 0x14] + adds r0, r2, r7 + lsls r0, 3 + adds r0, r4 + movs r3, 0x26 + ldrsh r1, [r0, r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r4 + ldrh r1, [r0, 0xA] + movs r0, 0x1F + ands r0, r1 + cmp r0, 0 + bne _080D3D32 + ldr r2, [sp, 0x4] + movs r3, 0x80 + lsls r3, 6 + add r6, sp, 0x10 + movs r5, 0 + ldr r1, _080D3D54 @ =0x040000d4 + movs r4, 0x80 + lsls r4, 5 + mov r8, r6 + ldr r0, _080D3D58 @ =0x85000400 + mov r12, r0 + movs r0, 0x85 + lsls r0, 24 + mov r9, r0 +_080D3CAA: + str r5, [sp, 0x10] + mov r0, r8 + str r0, [r1] + str r2, [r1, 0x4] + mov r0, r12 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r2, r4 + subs r3, r4 + cmp r3, r4 + bhi _080D3CAA + str r5, [sp, 0x10] + str r6, [r1] + str r2, [r1, 0x4] + lsrs r0, r3, 2 + mov r2, r9 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + mov r0, sp + movs r1, 0 + strb r1, [r0] + strb r1, [r0] + mov r3, r10 + ldr r1, [r3, 0x4] + movs r4, 0 + str r4, [sp, 0x10] + ldr r0, _080D3D54 @ =0x040000d4 + str r6, [r0] + str r1, [r0, 0x4] + ldr r1, _080D3D58 @ =0x85000400 + str r1, [r0, 0x8] + ldr r0, [r0, 0x8] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + bne _080D3D02 + ldr r2, _080D3D5C @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_080D3D02: + ldr r0, _080D3D48 @ =gUnknown_030042C0 + strh r4, [r0] + ldr r1, _080D3D4C @ =gUnknown_030041B4 + strh r4, [r1] + ldr r0, _080D3D60 @ =REG_BLDCNT + strh r4, [r0] + adds r0, 0x2 + strh r4, [r0] + ldr r2, _080D3D44 @ =gTasks + ldr r3, [sp, 0x14] + adds r0, r3, r7 + lsls r0, 3 + adds r0, r2 + movs r3, 0x26 + ldrsh r1, [r0, r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldr r1, _080D3D64 @ =0x0000ffff + strh r1, [r0, 0x26] + adds r0, r7, 0 + bl DestroyAnimVisualTask +_080D3D32: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D3D44: .4byte gTasks +_080D3D48: .4byte gUnknown_030042C0 +_080D3D4C: .4byte gUnknown_030041B4 +_080D3D50: .4byte gPlttBufferFaded +_080D3D54: .4byte 0x040000d4 +_080D3D58: .4byte 0x85000400 +_080D3D5C: .4byte REG_BG1CNT +_080D3D60: .4byte REG_BLDCNT +_080D3D64: .4byte 0x0000ffff + thumb_func_end sub_80D3B60 + + thumb_func_start sub_80D3D68 +sub_80D3D68: @ 80D3D68 + push {r4-r7,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r7, r0, 24 + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + ldr r1, _080D3D90 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + bne _080D3D84 + b _080D3EBC +_080D3D84: + cmp r0, 0x1 + bgt _080D3D94 + cmp r0, 0 + beq _080D3D9C + b _080D4032 + .align 2, 0 +_080D3D90: .4byte gTasks +_080D3D94: + cmp r0, 0x2 + bne _080D3D9A + b _080D3F88 +_080D3D9A: + b _080D4032 +_080D3D9C: + movs r3, 0 + movs r2, 0x10 + ldrsh r0, [r4, r2] + ldr r1, _080D3E6C @ =gUnknown_03004DE0 + mov r12, r1 + cmp r3, r0 + bge _080D3DDA + mov r7, r12 + movs r5, 0xF0 + lsls r5, 3 + add r5, r12 + ldr r6, _080D3E70 @ =0x0000ffff +_080D3DB4: + lsls r2, r3, 16 + asrs r2, 16 + lsls r1, r2, 1 + adds r3, r1, r7 + adds r1, r5 + ldrh r0, [r4, 0xC] + strh r0, [r1] + ldrh r1, [r4, 0xC] + adds r0, r6, 0 + ands r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + lsrs r3, r2, 16 + asrs r2, 16 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r2, r0 + blt _080D3DB4 +_080D3DDA: + ldrh r3, [r4, 0x10] + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080D3E14 + ldr r5, _080D3E6C @ =gUnknown_03004DE0 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 + ldr r7, _080D3E70 @ =0x0000ffff +_080D3DF2: + asrs r2, 16 + lsls r1, r2, 1 + adds r3, r1, r5 + adds r1, r6 + ldrh r0, [r4, 0xA] + strh r0, [r1] + ldrh r1, [r4, 0xA] + adds r0, r7, 0 + ands r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _080D3DF2 +_080D3E14: + ldrh r3, [r4, 0x12] + lsls r2, r3, 16 + asrs r0, r2, 16 + cmp r0, 0x9F + bgt _080D3E4A + ldr r5, _080D3E6C @ =gUnknown_03004DE0 + movs r0, 0xF0 + lsls r0, 3 + adds r6, r5, r0 + ldr r7, _080D3E70 @ =0x0000ffff +_080D3E28: + asrs r2, 16 + lsls r1, r2, 1 + adds r3, r1, r5 + adds r1, r6 + ldrh r0, [r4, 0xC] + strh r0, [r1] + ldrh r1, [r4, 0xC] + adds r0, r7, 0 + ands r0, r1 + strh r0, [r3] + adds r2, 0x1 + lsls r2, 16 + lsrs r3, r2, 16 + lsls r2, r3, 16 + asrs r0, r2, 16 + cmp r0, 0x9F + ble _080D3E28 +_080D3E4A: + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D3E74 + lsls r0, r3, 16 + asrs r0, 15 + mov r3, r12 + adds r2, r0, r3 + movs r1, 0xF0 + lsls r1, 3 + add r1, r12 + adds r0, r1 + ldrh r1, [r4, 0xA] + strh r1, [r0] + ldrh r0, [r4, 0xA] + b _080D3E8A + .align 2, 0 +_080D3E6C: .4byte gUnknown_03004DE0 +_080D3E70: .4byte 0x0000ffff +_080D3E74: + lsls r0, r3, 16 + asrs r0, 15 + mov r1, r12 + adds r2, r0, r1 + movs r1, 0xF0 + lsls r1, 3 + add r1, r12 + adds r0, r1 + ldrh r1, [r4, 0xC] + strh r1, [r0] + ldrh r0, [r4, 0xC] +_080D3E8A: + strh r0, [r2] + ldr r0, _080D3EB4 @ =REG_BLDALPHA + str r0, [sp] + ldr r0, _080D3EB8 @ =0xa2600001 + str r0, [sp, 0x4] + mov r1, sp + movs r2, 0 + movs r0, 0x1 + strb r0, [r1, 0x8] + mov r0, sp + strb r2, [r0, 0x9] + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + bl sub_80895F8 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080D4032 + .align 2, 0 +_080D3EB4: .4byte REG_BLDALPHA +_080D3EB8: .4byte 0xa2600001 +_080D3EBC: + movs r2, 0xE + ldrsh r1, [r4, r2] + cmp r1, 0 + bne _080D3ED4 + ldrh r0, [r4, 0x10] + subs r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bgt _080D3EE8 + strh r1, [r4, 0x10] + b _080D3EE2 +_080D3ED4: + ldrh r0, [r4, 0x12] + adds r0, 0x1 + strh r0, [r4, 0x12] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6F + ble _080D3EE8 +_080D3EE2: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080D3EE8: + movs r3, 0 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _080D3F1C + ldr r6, _080D3F80 @ =gUnknown_03004DE0 + ldr r5, _080D3F84 @ =gUnknown_03004DC0 +_080D3EF6: + lsls r1, r3, 16 + asrs r1, 16 + lsls r3, r1, 1 + ldrb r2, [r5, 0x14] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 7 + adds r3, r0 + adds r3, r6 + ldrh r0, [r4, 0xC] + strh r0, [r3] + adds r1, 0x1 + lsls r1, 16 + lsrs r3, r1, 16 + asrs r1, 16 + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _080D3EF6 +_080D3F1C: + ldrh r3, [r4, 0x10] + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080D3F50 + ldr r6, _080D3F80 @ =gUnknown_03004DE0 + ldr r5, _080D3F84 @ =gUnknown_03004DC0 +_080D3F2E: + asrs r3, r2, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xA] + strh r0, [r2] + adds r3, 0x1 + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _080D3F2E +_080D3F50: + ldrh r3, [r4, 0x12] + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _080D4032 + ldr r6, _080D3F80 @ =gUnknown_03004DE0 + ldr r5, _080D3F84 @ =gUnknown_03004DC0 +_080D3F5E: + asrs r3, r1, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r3, 0x1 + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _080D3F5E + b _080D4032 + .align 2, 0 +_080D3F80: .4byte gUnknown_03004DE0 +_080D3F84: .4byte gUnknown_03004DC0 +_080D3F88: + movs r3, 0 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _080D3FBC + ldr r6, _080D403C @ =gUnknown_03004DE0 + ldr r5, _080D4040 @ =gUnknown_03004DC0 +_080D3F96: + lsls r1, r3, 16 + asrs r1, 16 + lsls r3, r1, 1 + ldrb r2, [r5, 0x14] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 7 + adds r3, r0 + adds r3, r6 + ldrh r0, [r4, 0xC] + strh r0, [r3] + adds r1, 0x1 + lsls r1, 16 + lsrs r3, r1, 16 + asrs r1, 16 + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _080D3F96 +_080D3FBC: + ldrh r3, [r4, 0x10] + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _080D3FF0 + ldr r6, _080D403C @ =gUnknown_03004DE0 + ldr r5, _080D4040 @ =gUnknown_03004DC0 +_080D3FCE: + asrs r3, r2, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xA] + strh r0, [r2] + adds r3, 0x1 + lsls r2, r3, 16 + asrs r1, r2, 16 + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _080D3FCE +_080D3FF0: + ldrh r3, [r4, 0x12] + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + bgt _080D401C + ldr r6, _080D403C @ =gUnknown_03004DE0 + ldr r5, _080D4040 @ =gUnknown_03004DC0 +_080D3FFE: + asrs r3, r1, 16 + lsls r2, r3, 1 + ldrb r1, [r5, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + adds r2, r0 + adds r2, r6 + ldrh r0, [r4, 0xC] + strh r0, [r2] + adds r3, 0x1 + lsls r1, r3, 16 + asrs r0, r1, 16 + cmp r0, 0x9F + ble _080D3FFE +_080D401C: + movs r0, 0x26 + ldrsh r1, [r4, r0] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080D4032 + bl remove_some_task + adds r0, r7, 0 + bl DestroyTask +_080D4032: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D403C: .4byte gUnknown_03004DE0 +_080D4040: .4byte gUnknown_03004DC0 + thumb_func_end sub_80D3D68 + + thumb_func_start sub_80D4044 +sub_80D4044: @ 80D4044 + push {r4-r6,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x4] + lsls r1, r2, 22 + lsrs r1, 22 + adds r1, 0x8 + ldr r3, _080D4098 @ =0x000003ff + adds r0, r3, 0 + ands r1, r0 + ldr r0, _080D409C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8078764 + bl Random + movs r5, 0xFF + ands r5, r0 + movs r0, 0x80 + lsls r0, 1 + adds r6, r0, 0 + orrs r5, r6 + bl Random + ldr r1, _080D40A0 @ =0x000001ff + ands r1, r0 + adds r0, r1, 0 + cmp r0, 0xFF + ble _080D408A + subs r0, r6, r0 + lsls r0, 16 + lsrs r1, r0, 16 +_080D408A: + strh r5, [r4, 0x30] + strh r1, [r4, 0x32] + ldr r0, _080D40A4 @ =sub_80D40A8 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4098: .4byte 0x000003ff +_080D409C: .4byte 0xfffffc00 +_080D40A0: .4byte 0x000001ff +_080D40A4: .4byte sub_80D40A8 + thumb_func_end sub_80D4044 + + thumb_func_start sub_80D40A8 +sub_80D40A8: @ 80D40A8 + push {r4,lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x34] + adds r3, r0, r1 + strh r3, [r2, 0x34] + ldrh r1, [r2, 0x32] + ldrh r4, [r2, 0x36] + adds r1, r4 + strh r1, [r2, 0x36] + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080D40CC + lsls r0, r3, 16 + asrs r0, 24 + negs r0, r0 + b _080D40D0 +_080D40CC: + lsls r0, r3, 16 + asrs r0, 24 +_080D40D0: + strh r0, [r2, 0x24] + ldrh r0, [r2, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r2, 0x26] + ldrh r0, [r2, 0x2E] + adds r0, 0x1 + strh r0, [r2, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x15 + bne _080D40EE + adds r0, r2, 0 + bl move_anim_8072740 +_080D40EE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D40A8 + + thumb_func_start sub_80D40F4 +sub_80D40F4: @ 80D40F4 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r0, _080D4144 @ =gTasks + adds r4, r0 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r2, _080D4148 @ =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, 0x12] + bl sub_80D4394 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8078E70 + ldr r0, _080D414C @ =sub_80D4150 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D4144: .4byte gTasks +_080D4148: .4byte gSprites +_080D414C: .4byte sub_80D4150 + thumb_func_end sub_80D40F4 + + thumb_func_start sub_80D4150 +sub_80D4150: @ 80D4150 + push {r4-r6,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080D4178 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x7 + bls _080D416C + b _080D438A +_080D416C: + lsls r0, 2 + ldr r1, _080D417C @ =_080D4180 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D4178: .4byte gTasks +_080D417C: .4byte _080D4180 + .align 2, 0 +_080D4180: + .4byte _080D41A0 + .4byte _080D41C6 + .4byte _080D4258 + .4byte _080D428E + .4byte _080D42A2 + .4byte _080D42B0 + .4byte _080D4330 + .4byte _080D437C +_080D41A0: + 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] +_080D41C6: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D4222 + movs r0, 0 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D4210 + ldr r2, _080D420C @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x3 + strh r1, [r0, 0x24] + 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] + b _080D4222 + .align 2, 0 +_080D420C: .4byte gSprites +_080D4210: + ldr r2, _080D4250 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _080D4254 @ =0x0000fffd + strh r1, [r0, 0x24] +_080D4222: + adds r0, r4, 0 + bl sub_8079C74 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + beq _080D4232 + b _080D438A +_080D4232: + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8079A64 + ldr r2, _080D4250 @ =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, 0xE] + b _080D436C + .align 2, 0 +_080D4250: .4byte gSprites +_080D4254: .4byte 0x0000fffd +_080D4258: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bgt _080D4268 + b _080D438A +_080D4268: + 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, 0xE0 + str r0, [sp, 0x4] + movs r0, 0x8 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r2, 0xE0 + bl sub_8079C08 + movs r0, 0 + strh r0, [r4, 0xE] + b _080D436E +_080D428E: + adds r0, r4, 0 + bl sub_8079C74 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080D438A + strh r0, [r4, 0xE] + strh r0, [r4, 0x10] + b _080D436E +_080D42A2: + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_80D4418 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_080D42B0: + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D438A + movs r0, 0 + strh r0, [r4, 0xE] + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D42E8 + ldr r2, _080D42E4 @ =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, 0x2 + b _080D42FA + .align 2, 0 +_080D42E4: .4byte gSprites +_080D42E8: + ldr r2, _080D432C @ =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, 0x2 +_080D42FA: + strh r1, [r0, 0x26] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r0, 0xA + bne _080D438A + 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, 0xE0 + bl sub_8079C08 + movs r0, 0 + strh r0, [r4, 0xE] + strh r0, [r4, 0x10] + b _080D436E + .align 2, 0 +_080D432C: .4byte gSprites +_080D4330: + ldr r6, _080D4378 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r1, [r0, 0x22] + subs r1, 0x1 + strh r1, [r0, 0x22] + adds r0, r4, 0 + bl sub_8079C74 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _080D438A + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8078F40 + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r1, [r4, 0x12] + strh r1, [r0, 0x22] +_080D436C: + strh r5, [r4, 0x10] +_080D436E: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080D438A + .align 2, 0 +_080D4378: .4byte gSprites +_080D437C: + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D438A + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080D438A: + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80D4150 + + thumb_func_start sub_80D4394 +sub_80D4394: @ 80D4394 + push {r4,r5,lr} + ldr r4, _080D43B8 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D43C8 + ldr r1, _080D43BC @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080D43C0 @ =gPlayerParty + b _080D43D8 + .align 2, 0 +_080D43B8: .4byte gBattleAnimBankAttacker +_080D43BC: .4byte gBattlePartyID +_080D43C0: .4byte gPlayerParty +_080D43C4: + adds r0, r2, 0 + b _080D440A +_080D43C8: + ldr r1, _080D4410 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080D4414 @ =gEnemyParty +_080D43D8: + adds r5, r1, r0 + adds r0, r5, 0 + movs r1, 0x3A + bl GetMonData + adds r4, r0, 0 + lsls r4, 16 + adds r0, r5, 0 + movs r1, 0x39 + bl GetMonData + lsls r0, 16 + lsrs r3, r0, 16 + lsrs r4, 18 + movs r2, 0 +_080D43F6: + adds r1, r2, 0x1 + adds r0, r4, 0 + muls r0, r1 + cmp r3, r0 + blt _080D43C4 + lsls r0, r1, 24 + lsrs r2, r0, 24 + cmp r2, 0x2 + bls _080D43F6 + movs r0, 0x3 +_080D440A: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080D4410: .4byte gBattlePartyID +_080D4414: .4byte gEnemyParty + thumb_func_end sub_80D4394 + + thumb_func_start sub_80D4418 +sub_80D4418: @ 80D4418 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + adds r7, r0, 0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + ldr r4, _080D4520 @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0xAC + ldrb r0, [r4] + bl sub_8079E90 + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x8] + ldrh r1, [r7, 0xA] + movs r0, 0x4 + subs r0, r1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r0, 0 + bgt _080D4468 + movs r1, 0x1 +_080D4468: + movs r0, 0 + str r0, [sp, 0x4] + lsls r0, r1, 16 + mov r10, r8 + mov r9, r6 + mov r1, r10 + lsls r1, 4 + str r1, [sp, 0xC] + mov r1, r9 + lsls r1, 4 + str r1, [sp, 0x10] + asrs r0, 16 + mov r8, r0 +_080D4482: + ldr r0, _080D4524 @ =gSpriteTemplate_83D9378 + mov r1, r10 + mov r2, r9 + ldr r3, [sp, 0x8] + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + lsls r6, r5, 16 + cmp r2, 0x40 + beq _080D44EA + ldr r1, _080D4528 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r5, r0, r1 + mov r0, sp + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x30] + mov r1, sp + ldrh r1, [r1, 0xC] + strh r1, [r5, 0x32] + mov r0, sp + ldrh r0, [r0, 0x10] + strh r0, [r5, 0x34] + asrs r4, r6, 16 + adds r0, r4, 0 + movs r1, 0x40 + bl Cos + strh r0, [r5, 0x36] + adds r0, r4, 0 + movs r1, 0x40 + bl Sin + strh r0, [r5, 0x38] + mov r1, sp + ldrh r1, [r1] + strh r1, [r5, 0x3A] + movs r0, 0x2 + strh r0, [r5, 0x3C] + ldrh r1, [r7, 0xC] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D44E4 + adds r0, r5, 0 + bl sub_80D452C +_080D44E4: + ldrh r0, [r7, 0xC] + adds r0, 0x1 + strh r0, [r7, 0xC] +_080D44EA: + mov r1, r8 + lsls r0, r1, 1 + asrs r1, r6, 16 + adds r1, r0 + lsls r1, 16 + movs r0, 0xFF + lsls r0, 16 + ands r0, r1 + lsrs r5, r0, 16 + ldr r1, [sp, 0x4] + lsls r0, r1, 16 + asrs r0, 16 + add r0, r8 + lsls r0, 16 + lsrs r1, r0, 16 + str r1, [sp, 0x4] + asrs r0, 16 + cmp r0, 0x13 + ble _080D4482 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D4520: .4byte gBattleAnimBankAttacker +_080D4524: .4byte gSpriteTemplate_83D9378 +_080D4528: .4byte gSprites + thumb_func_end sub_80D4418 + + thumb_func_start sub_80D452C +sub_80D452C: @ 80D452C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D453E + cmp r0, 0x1 + beq _080D4574 + b _080D45CE +_080D453E: + movs r2, 0x30 + ldrsh r0, [r4, r2] + movs r1, 0x6 + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + ldrh r0, [r4, 0x36] + adds r1, r0 + strh r1, [r4, 0x36] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x3 + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + lsls r1, r0, 1 + adds r1, r0 + ldrh r2, [r4, 0x38] + adds r1, r2 + strh r1, [r4, 0x38] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] +_080D4574: + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x38] + ldrh r2, [r4, 0x34] + adds r1, r2 + strh r1, [r4, 0x34] + lsls r0, 16 + asrs r0, 20 + strh r0, [r4, 0x20] + lsls r1, 16 + asrs r2, r1, 20 + strh r2, [r4, 0x22] + adds r0, 0x8 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 17 + cmp r0, r1 + bhi _080D45AA + adds r1, r2, 0 + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + blt _080D45AA + cmp r1, 0x78 + ble _080D45CE +_080D45AA: + ldr r3, _080D45D4 @ =gTasks + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl DestroySprite +_080D45CE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D45D4: .4byte gTasks + thumb_func_end sub_80D452C + + thumb_func_start sub_80D45D8 +sub_80D45D8: @ 80D45D8 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080D4608 @ =gTasks + adds r4, r1, r0 + bl sub_80D4394 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xA] + ldr r0, _080D460C @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080D4610 + movs r0, 0x88 + strh r0, [r4, 0x10] + movs r0, 0x28 + b _080D4616 + .align 2, 0 +_080D4608: .4byte gTasks +_080D460C: .4byte gBattleAnimBankAttacker +_080D4610: + movs r0, 0x10 + strh r0, [r4, 0x10] + movs r0, 0x50 +_080D4616: + strh r0, [r4, 0x14] + movs r0, 0x62 + strh r0, [r4, 0x12] + ldrh r0, [r4, 0x10] + adds r0, 0x31 + strh r0, [r4, 0x16] + movs r0, 0xA + ldrsh r1, [r4, r0] + lsls r0, r1, 2 + adds r0, r1 + adds r0, 0x5 + strh r0, [r4, 0x20] + ldr r0, _080D4638 @ =sub_80D463C + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D4638: .4byte sub_80D463C + thumb_func_end sub_80D45D8 + + thumb_func_start sub_80D463C +sub_80D463C: @ 80D463C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r1, r0, 24 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r7, _080D4660 @ =gTasks + adds r4, r0, r7 + movs r0, 0x8 + ldrsh r2, [r4, r0] + cmp r2, 0 + beq _080D4664 + cmp r2, 0x1 + beq _080D4714 + b _080D4722 + .align 2, 0 +_080D4660: .4byte gTasks +_080D4664: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080D467A + strh r2, [r4, 0xC] + adds r0, r4, 0 + bl sub_80D472C +_080D467A: + movs r1, 0x1C + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D46F4 + movs r2, 0x22 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080D46F4 + ldr r5, _080D4708 @ =gBattleAnimArgs + movs r1, 0x1 + mov r8, r1 + mov r2, r8 + strh r2, [r5] + strh r0, [r5, 0x2] + movs r0, 0xC + strh r0, [r5, 0x4] + ldr r6, _080D470C @ =sub_80E1864 + adds r0, r6, 0 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080D46C4 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r7 + ldr r1, [r0] + adds r0, r2, 0 + bl _call_via_r1 + ldr r1, _080D4710 @ =gAnimVisualTaskCount + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080D46C4: + movs r0, 0x3 + strh r0, [r5] + adds r0, r6, 0 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080D46F0 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r0, r7 + ldr r1, [r0] + adds r0, r2, 0 + bl _call_via_r1 + ldr r1, _080D4710 @ =gAnimVisualTaskCount + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_080D46F0: + mov r0, r8 + strh r0, [r4, 0x22] +_080D46F4: + movs r2, 0x1E + ldrsh r1, [r4, r2] + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _080D4722 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080D4722 + .align 2, 0 +_080D4708: .4byte gBattleAnimArgs +_080D470C: .4byte sub_80E1864 +_080D4710: .4byte gAnimVisualTaskCount +_080D4714: + movs r2, 0x1A + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080D4722 + adds r0, r1, 0 + bl DestroyAnimVisualTask +_080D4722: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D463C + + thumb_func_start sub_80D472C +sub_80D472C: @ 80D472C + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + ldr r1, _080D47B8 @ =gSineTable + movs r2, 0x18 + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + adds r0, 0x3 + asrs r0, 4 + ldrh r2, [r4, 0x14] + adds r0, r2 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _080D47BC @ =gSpriteTemplate_83D9378 + movs r2, 0x16 + ldrsh r1, [r4, r2] + movs r2, 0 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _080D4786 + ldr r3, _080D47C0 @ =gSprites + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r3, 0 + adds r1, 0x1C + adds r1, r0, r1 + ldr r2, _080D47C4 @ =sub_80D47D0 + str r2, [r1] + adds r0, r3 + strh r5, [r0, 0x38] + strh r6, [r0, 0x3A] + movs r1, 0x9 + strh r1, [r0, 0x3C] + ldrh r0, [r4, 0x1A] + adds r0, 0x1 + strh r0, [r4, 0x1A] +_080D4786: + ldrh r0, [r4, 0x1E] + adds r0, 0x1 + strh r0, [r4, 0x1E] + ldrh r0, [r4, 0x18] + adds r0, 0x27 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x18] + movs r0, 0x16 + ldrsh r1, [r4, r0] + ldr r0, _080D47C8 @ =0x41c64e6d + muls r0, r1 + ldr r1, _080D47CC @ =0x00003039 + adds r0, r1 + movs r2, 0x12 + ldrsh r1, [r4, r2] + bl __modsi3 + ldrh r1, [r4, 0x10] + adds r1, r0 + strh r1, [r4, 0x16] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D47B8: .4byte gSineTable +_080D47BC: .4byte gSpriteTemplate_83D9378 +_080D47C0: .4byte gSprites +_080D47C4: .4byte sub_80D47D0 +_080D47C8: .4byte 0x41c64e6d +_080D47CC: .4byte 0x00003039 + thumb_func_end sub_80D472C + + thumb_func_start sub_80D47D0 +sub_80D47D0: @ 80D47D0 + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080D4866 + ldrh r0, [r5, 0x22] + adds r0, 0x8 + strh r0, [r5, 0x22] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x38 + ldrsh r1, [r5, r2] + cmp r0, r1 + blt _080D4866 + ldr r2, _080D486C @ =gTasks + movs r3, 0x3A + ldrsh r1, [r5, r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r1, 0x1 + strh r1, [r0, 0x1C] + ldr r0, _080D4870 @ =gBattleAnimSpriteTemplate_83DB4D8 + movs r2, 0x20 + ldrsh r1, [r5, r2] + movs r3, 0x22 + ldrsh r2, [r5, r3] + movs r3, 0x1 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x30] + cmp r0, 0x40 + beq _080D4860 + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080D4874 @ =gSprites + adds r0, r4 + movs r1, 0x3 + bl StartSpriteAffineAnim + movs r2, 0x30 + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x3A] + strh r1, [r0, 0x3A] + movs r3, 0x30 + ldrsh r1, [r5, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x3C] + strh r1, [r0, 0x3C] + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, 0x1C + adds r0, r4 + ldr r1, _080D4878 @ =sub_80D487C + str r1, [r0] +_080D4860: + adds r0, r5, 0 + bl DestroySprite +_080D4866: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D486C: .4byte gTasks +_080D4870: .4byte gBattleAnimSpriteTemplate_83DB4D8 +_080D4874: .4byte gSprites +_080D4878: .4byte sub_80D487C + thumb_func_end sub_80D47D0 + + thumb_func_start sub_80D487C +sub_80D487C: @ 80D487C + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D48E8 + movs r0, 0 + strh r0, [r4, 0x30] + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xC + bne _080D48E8 + ldr r3, _080D48F0 @ =gTasks + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + adds r0, r4, 0 + bl DestroySprite +_080D48E8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D48F0: .4byte gTasks + thumb_func_end sub_80D487C + + thumb_func_start sub_80D48F4 +sub_80D48F4: @ 80D48F4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080D4978 @ =gTasks + adds r5, r1, r0 + ldr r4, _080D497C @ =gBattleAnimBankAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r5, 0xE] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x10] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080D4938 + movs r1, 0x1 +_080D4938: + strh r1, [r5, 0x16] + bl NotInBattle + lsls r0, 24 + cmp r0, 0 + beq _080D494C + movs r1, 0x16 + ldrsh r0, [r5, r1] + negs r0, r0 + strh r0, [r5, 0x16] +_080D494C: + movs r2, 0x16 + ldrsh r0, [r5, r2] + lsls r0, 3 + ldrh r1, [r5, 0xE] + adds r0, r1 + strh r0, [r5, 0x12] + movs r2, 0x16 + ldrsh r1, [r5, r2] + lsls r1, 3 + ldrh r0, [r5, 0x10] + subs r0, r1 + strh r0, [r5, 0x14] + ldr r0, _080D4980 @ =0x0000ffe0 + strh r0, [r5, 0x1A] + strh r6, [r5, 0xA] + strh r6, [r5, 0x8] + ldr r0, _080D4984 @ =sub_80D4988 + str r0, [r5] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4978: .4byte gTasks +_080D497C: .4byte gBattleAnimBankAttacker +_080D4980: .4byte 0x0000ffe0 +_080D4984: .4byte sub_80D4988 + thumb_func_end sub_80D48F4 + + thumb_func_start sub_80D4988 +sub_80D4988: @ 80D4988 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080D49AC @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x6 + bls _080D49A2 + b _080D4AC2 +_080D49A2: + lsls r0, 2 + ldr r1, _080D49B0 @ =_080D49B4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D49AC: .4byte gTasks +_080D49B0: .4byte _080D49B4 + .align 2, 0 +_080D49B4: + .4byte _080D49D0 + .4byte _080D49E0 + .4byte _080D49FA + .4byte _080D4A3C + .4byte _080D4A5E + .4byte _080D4A8C + .4byte _080D4AB2 +_080D49D0: + adds r0, r4, 0 + bl sub_80D4AD0 + movs r1, 0x1C + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080D4AC8 + b _080D4ABA +_080D49E0: + adds r0, r4, 0 + bl sub_80D4AD0 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _080D4AC8 + movs r0, 0 + strh r0, [r4, 0xA] + b _080D4ABA +_080D49FA: + adds r0, r4, 0 + bl sub_80D4AD0 + movs r1, 0x16 + ldrsh r0, [r4, r1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + ldrh r0, [r4, 0x12] + adds r1, r0 + movs r2, 0 + strh r1, [r4, 0x12] + adds r1, 0x10 + lsls r1, 16 + movs r0, 0x88 + lsls r0, 17 + cmp r1, r0 + bls _080D4AC8 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + ble _080D4A38 + movs r0, 0x1 + strh r0, [r4, 0x22] + movs r0, 0x6 + strh r0, [r4, 0x8] + strh r2, [r4, 0xA] + b _080D4AC8 +_080D4A38: + strh r2, [r4, 0xA] + b _080D4ABA +_080D4A3C: + adds r0, r4, 0 + bl sub_80D4AD0 + movs r0, 0x16 + ldrsh r1, [r4, r0] + lsls r1, 1 + ldrh r0, [r4, 0x14] + subs r0, r1 + strh r0, [r4, 0x14] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080D4AC8 + b _080D4ABA +_080D4A5E: + adds r0, r4, 0 + bl sub_80D4AD0 + movs r1, 0x16 + ldrsh r0, [r4, r1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 1 + ldrh r0, [r4, 0x12] + subs r0, r1 + strh r0, [r4, 0x12] + adds r0, 0x10 + lsls r0, 16 + movs r1, 0x88 + lsls r1, 17 + cmp r0, r1 + bls _080D4AC8 + ldrh r0, [r4, 0x20] + adds r0, 0x1 + strh r0, [r4, 0x20] + movs r0, 0 + strh r0, [r4, 0xA] + b _080D4ABA +_080D4A8C: + adds r0, r4, 0 + bl sub_80D4AD0 + movs r0, 0x16 + ldrsh r1, [r4, r0] + lsls r1, 1 + ldrh r0, [r4, 0x14] + subs r0, r1 + strh r0, [r4, 0x14] + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + ble _080D4AC8 + movs r0, 0x2 + strh r0, [r4, 0x8] + b _080D4AC8 +_080D4AB2: + movs r1, 0x18 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D4AC8 +_080D4ABA: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080D4AC8 +_080D4AC2: + adds r0, r2, 0 + bl DestroyAnimVisualTask +_080D4AC8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D4988 + + thumb_func_start sub_80D4AD0 +sub_80D4AD0: @ 80D4AD0 + push {r4-r6,lr} + adds r6, r0, 0 + ldrh r0, [r6, 0xC] + adds r0, 0x1 + strh r0, [r6, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D4B2A + movs r0, 0 + strh r0, [r6, 0xC] + ldr r0, _080D4B30 @ =gSpriteTemplate_83D9378 + movs r2, 0xE + ldrsh r1, [r6, r2] + movs r3, 0x10 + ldrsh r2, [r6, r3] + movs r3, 0xA + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080D4B2A + ldr r5, _080D4B34 @ =gSprites + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r0, r4, r5 + movs r1, 0x10 + strh r1, [r0, 0x2E] + ldrh r1, [r6, 0x12] + strh r1, [r0, 0x32] + ldrh r1, [r6, 0x14] + strh r1, [r0, 0x36] + ldrh r1, [r6, 0x1A] + strh r1, [r0, 0x38] + bl sub_80786EC + adds r5, 0x1C + adds r4, r5 + ldr r0, _080D4B38 @ =sub_80D4B3C + str r0, [r4] + ldrh r0, [r6, 0x18] + adds r0, 0x1 + strh r0, [r6, 0x18] +_080D4B2A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4B30: .4byte gSpriteTemplate_83D9378 +_080D4B34: .4byte gSprites +_080D4B38: .4byte sub_80D4B3C + thumb_func_end sub_80D4AD0 + + thumb_func_start sub_80D4B3C +sub_80D4B3C: @ 80D4B3C + push {r4-r6,lr} + adds r6, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080D4B96 + ldrh r0, [r6, 0x24] + ldrh r1, [r6, 0x20] + adds r0, r1 + strh r0, [r6, 0x20] + ldrh r0, [r6, 0x26] + ldrh r1, [r6, 0x22] + adds r0, r1 + strh r0, [r6, 0x22] + movs r0, 0x6 + strh r0, [r6, 0x2E] + bl Random + movs r4, 0x1F + adds r1, r4, 0 + ands r1, r0 + ldr r5, _080D4B9C @ =0x0000fff0 + adds r1, r5 + ldrh r0, [r6, 0x20] + adds r1, r0 + strh r1, [r6, 0x32] + bl Random + ands r4, r0 + adds r4, r5 + ldrh r1, [r6, 0x22] + adds r4, r1 + strh r4, [r6, 0x36] + bl Random + movs r1, 0x7 + ands r1, r0 + mvns r1, r1 + strh r1, [r6, 0x38] + adds r0, r6, 0 + bl sub_80786EC + ldr r0, _080D4BA0 @ =sub_80D4BA4 + str r0, [r6, 0x1C] +_080D4B96: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4B9C: .4byte 0x0000fff0 +_080D4BA0: .4byte sub_80D4BA4 + thumb_func_end sub_80D4B3C + + thumb_func_start sub_80D4BA4 +sub_80D4BA4: @ 80D4BA4 + push {r4-r6,lr} + adds r5, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080D4BE0 + movs r4, 0 + ldr r6, _080D4BE8 @ =gTasks +_080D4BB6: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r2, r0, r6 + ldr r1, [r2] + ldr r0, _080D4BEC @ =sub_80D4988 + cmp r1, r0 + bne _080D4BD6 + movs r0, 0x1 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0x18] + subs r0, 0x1 + strh r0, [r2, 0x18] + adds r0, r5, 0 + bl DestroySprite +_080D4BD6: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0xF + bls _080D4BB6 +_080D4BE0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4BE8: .4byte gTasks +_080D4BEC: .4byte sub_80D4988 + thumb_func_end sub_80D4BA4 + + thumb_func_start sub_80D4BF0 +sub_80D4BF0: @ 80D4BF0 + ldr r2, _080D4C10 @ =gBattleAnimArgs + ldrh r1, [r2] + strh r1, [r0, 0x20] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x22] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0x2E] + ldrh r1, [r2, 0x6] + strh r1, [r0, 0x30] + ldrh r1, [r2, 0x8] + strh r1, [r0, 0x32] + ldrh r1, [r2, 0xA] + strh r1, [r0, 0x34] + ldr r1, _080D4C14 @ =sub_80D4C18 + str r1, [r0, 0x1C] + bx lr + .align 2, 0 +_080D4C10: .4byte gBattleAnimArgs +_080D4C14: .4byte sub_80D4C18 + thumb_func_end sub_80D4BF0 + + thumb_func_start sub_80D4C18 +sub_80D4C18: @ 80D4C18 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x2E] + subs r0, r1 + strh r0, [r4, 0x36] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x38] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x32 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + lsls r0, 16 + cmp r0, 0 + bne _080D4C5C + adds r0, r4, 0 + bl move_anim_8072740 +_080D4C5C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D4C18 + + thumb_func_start sub_80D4C64 +sub_80D4C64: @ 80D4C64 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r1, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r1, r2 + strh r1, [r4, 0x36] + lsls r0, 16 + asrs r0, 23 + strh r0, [r4, 0x24] + lsls r1, 16 + asrs r1, 23 + strh r1, [r4, 0x26] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080D4C9C + adds r0, r4, 0 + bl FreeSpriteOamMatrix + adds r0, r4, 0 + bl DestroySprite +_080D4C9C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D4C64 + + thumb_func_start sub_80D4CA4 +sub_80D4CA4: @ 80D4CA4 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r5, _080D4CE0 @ =gBattleAnimBankTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x30] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldr r1, _080D4CE4 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x36] + ldr r0, _080D4CE8 @ =sub_80D4CEC + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D4CE0: .4byte gBattleAnimBankTarget +_080D4CE4: .4byte gBattleAnimArgs +_080D4CE8: .4byte sub_80D4CEC + thumb_func_end sub_80D4CA4 + + thumb_func_start sub_80D4CEC +sub_80D4CEC: @ 80D4CEC + push {r4-r6,lr} + adds r4, r0, 0 + movs r0, 0x30 + ldrsh r1, [r4, r0] + movs r2, 0x20 + ldrsh r0, [r4, r2] + subs r6, r1, r0 + movs r0, 0x32 + ldrsh r1, [r4, r0] + movs r2, 0x22 + ldrsh r0, [r4, r2] + subs r5, r1, r0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + muls r0, r6 + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + muls r0, r5 + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080D4D44 + movs r0, 0 + strh r0, [r4, 0x38] + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_80D4D64 +_080D4D44: + movs r0, 0x34 + ldrsh r1, [r4, r0] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080D4D56 + adds r0, r4, 0 + bl move_anim_8072740 +_080D4D56: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80D4CEC + + thumb_func_start sub_80D4D64 +sub_80D4D64: @ 80D4D64 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + adds r4, r1, 0 + adds r5, r2, 0 + movs r2, 0x2E + ldrsh r1, [r0, r2] + lsrs r2, r1, 31 + adds r1, r2 + lsls r1, 15 + lsrs r1, 16 + str r1, [sp] + ldrh r1, [r0, 0x24] + ldrh r3, [r0, 0x20] + adds r1, r3 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r1, r0 + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + adds r0, r5, r0 + subs r0, 0x5 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + bl Random + negs r4, r4 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + adds r4, r0 + subs r4, 0x5 + lsls r4, 16 + lsrs r7, r4, 16 + movs r6, 0 + mov r0, r8 + lsls r0, 16 + mov r8, r0 + mov r1, r10 + lsls r1, 16 + str r1, [sp, 0xC] + ldr r2, [sp] + lsls r2, 16 + str r2, [sp, 0x10] + asrs r1, 16 + lsls r0, r7, 16 + asrs r5, r0, 16 + str r0, [sp, 0x14] + negs r3, r5 + str r3, [sp, 0x4] + asrs r0, r2, 16 + adds r1, r0 + lsls r1, 16 + mov r10, r1 +_080D4DF2: + ldr r0, _080D4E34 @ =gSpriteTemplate_83D9420 + mov r2, r8 + asrs r1, r2, 16 + mov r3, r10 + asrs r2, r3, 16 + movs r3, 0x82 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080D4E38 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r1 + movs r0, 0x14 + strh r0, [r4, 0x2E] + mov r0, r9 + strh r0, [r4, 0x30] + ldr r0, _080D4E3C @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl sub_8079E90 + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + cmp r5, 0 + bge _080D4E40 + mov r1, sp + ldrh r1, [r1, 0x4] + strh r1, [r4, 0x32] + b _080D4E42 + .align 2, 0 +_080D4E34: .4byte gSpriteTemplate_83D9420 +_080D4E38: .4byte gSprites +_080D4E3C: .4byte gBattleAnimBankAttacker +_080D4E40: + strh r7, [r4, 0x32] +_080D4E42: + lsls r0, r6, 16 + movs r2, 0x80 + lsls r2, 9 + adds r0, r2 + lsrs r6, r0, 16 + cmp r0, 0 + ble _080D4DF2 + movs r6, 0 + ldr r3, [sp, 0xC] + asrs r1, r3, 16 + ldr r0, [sp, 0x14] + asrs r5, r0, 16 + negs r2, r5 + str r2, [sp, 0x8] + ldr r3, [sp, 0x10] + asrs r0, r3, 16 + subs r1, r0 + lsls r1, 16 + mov r10, r1 +_080D4E68: + ldr r0, _080D4EAC @ =gSpriteTemplate_83D9420 + mov r2, r8 + asrs r1, r2, 16 + mov r3, r10 + asrs r2, r3, 16 + movs r3, 0x82 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080D4EB0 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r1 + movs r0, 0x14 + strh r0, [r4, 0x2E] + mov r0, r9 + strh r0, [r4, 0x30] + ldr r0, _080D4EB4 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl sub_8079E90 + subs r0, 0x1 + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + cmp r5, 0 + ble _080D4EB8 + mov r1, sp + ldrh r1, [r1, 0x8] + strh r1, [r4, 0x32] + b _080D4EBA + .align 2, 0 +_080D4EAC: .4byte gSpriteTemplate_83D9420 +_080D4EB0: .4byte gSprites +_080D4EB4: .4byte gBattleAnimBankAttacker +_080D4EB8: + strh r7, [r4, 0x32] +_080D4EBA: + lsls r0, r6, 16 + movs r2, 0x80 + lsls r2, 9 + adds r0, r2 + lsrs r6, r0, 16 + cmp r0, 0 + ble _080D4E68 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80D4D64 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/wisp_fire.s b/asm/wisp_fire.s new file mode 100755 index 000000000..a22903e6b --- /dev/null +++ b/asm/wisp_fire.s @@ -0,0 +1,678 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ wisp_fire + + thumb_func_start sub_80D5CC0 +sub_80D5CC0: @ 80D5CC0 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080D5CD8 + ldr r0, _080D5D4C @ =gBattleAnimArgs + ldrh r0, [r0] + strh r0, [r4, 0x30] + adds r0, r1, 0x1 + strh r0, [r4, 0x2E] +_080D5CD8: + movs r0, 0xC0 + lsls r0, 1 + adds r1, r0, 0 + ldrh r2, [r4, 0x34] + adds r1, r2 + strh r1, [r4, 0x34] + ldrh r0, [r4, 0x36] + adds r0, 0xA0 + strh r0, [r4, 0x36] + movs r2, 0x30 + ldrsh r0, [r4, r2] + lsls r1, 16 + asrs r1, 24 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x36] + lsls r1, 16 + asrs r1, 24 + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r2, r0, 0x7 + movs r0, 0xFF + ands r2, r0 + strh r2, [r4, 0x30] + ldr r0, _080D5D50 @ =gMain + ldr r1, _080D5D54 @ =0x0000043d + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080D5D84 + adds r0, r2, 0 + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x83 + bls _080D5D5C + ldr r0, _080D5D58 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + b _080D5DA0 + .align 2, 0 +_080D5D4C: .4byte gBattleAnimArgs +_080D5D50: .4byte gMain +_080D5D54: .4byte 0x0000043d +_080D5D58: .4byte gBattleAnimBankTarget +_080D5D5C: + ldr r0, _080D5D80 @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] + b _080D5DA0 + .align 2, 0 +_080D5D80: .4byte gBattleAnimBankTarget +_080D5D84: + adds r0, r2, 0 + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x83 + bls _080D5D98 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D + b _080D5D9E +_080D5D98: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F +_080D5D9E: + strb r0, [r1] +_080D5DA0: + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + ble _080D5DC8 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080D5DC8: + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0x1E + bne _080D5DD6 + adds r0, r4, 0 + bl move_anim_8072740 +_080D5DD6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D5CC0 + + thumb_func_start sub_80D5DDC +sub_80D5DDC: @ 80D5DDC + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080D5E3C @ =gTasks + adds r4, r1, r0 + ldr r0, _080D5E40 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0 + bne _080D5E02 + movs r1, 0x1 +_080D5E02: + strh r1, [r4, 0x20] + ldr r0, _080D5E44 @ =gBattleAnimBankTarget + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + bl IsAnimBankSpriteVisible + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + strh r0, [r4, 0x22] + movs r0, 0x1 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x24] + movs r0, 0x3 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + ldr r0, _080D5E48 @ =sub_80D5E4C + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D5E3C: .4byte gTasks +_080D5E40: .4byte gBattleAnimBankAttacker +_080D5E44: .4byte gBattleAnimBankTarget +_080D5E48: .4byte sub_80D5E4C + thumb_func_end sub_80D5DDC + + thumb_func_start sub_80D5E4C +sub_80D5E4C: @ 80D5E4C + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080D5E70 @ =gTasks + adds r2, r0, r1 + movs r0, 0x8 + ldrsh r3, [r2, r0] + cmp r3, 0x1 + beq _080D5F14 + cmp r3, 0x1 + bgt _080D5E74 + cmp r3, 0 + beq _080D5E82 + b _080D6074 + .align 2, 0 +_080D5E70: .4byte gTasks +_080D5E74: + cmp r3, 0x2 + bne _080D5E7A + b _080D5F9C +_080D5E7A: + cmp r3, 0x3 + bne _080D5E80 + b _080D6030 +_080D5E80: + b _080D6074 +_080D5E82: + movs r1, 0x20 + ldrsh r0, [r2, r1] + lsls r0, 1 + ldrh r5, [r2, 0x1C] + adds r0, r5 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D5EB4 + strh r3, [r2, 0xA] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D5EB0 + movs r0, 0x2 + b _080D5EB2 +_080D5EB0: + ldr r0, _080D5F0C @ =0x0000fffe +_080D5EB2: + strh r0, [r2, 0x1E] +_080D5EB4: + movs r1, 0 + strh r1, [r2, 0xE] + movs r7, 0x22 + ldrsh r0, [r2, r7] + cmp r1, r0 + bge _080D5EF6 + ldr r4, _080D5F10 @ =gSprites + adds r3, r2, 0 + adds r3, 0x8 +_080D5EC6: + movs r1, 0xE + ldrsh r0, [r2, r1] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r5, 0 + ldrsh r0, [r0, r5] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r2, 0x1E] + ldrh r7, [r2, 0x1C] + adds r0, r7 + strh r0, [r1, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r5, 0x22 + ldrsh r1, [r2, r5] + cmp r0, r1 + blt _080D5EC6 +_080D5EF6: + ldrh r0, [r2, 0x1A] + adds r0, 0x1 + strh r0, [r2, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + beq _080D5F06 + b _080D6074 +_080D5F06: + movs r0, 0 + strh r0, [r2, 0x1A] + b _080D6020 + .align 2, 0 +_080D5F0C: .4byte 0x0000fffe +_080D5F10: .4byte gSprites +_080D5F14: + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + ble _080D5F3C + movs r0, 0 + strh r0, [r2, 0xA] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + ands r0, r3 + lsls r0, 16 + cmp r0, 0 + beq _080D5F38 + movs r0, 0x2 + b _080D5F3A +_080D5F38: + ldr r0, _080D5F94 @ =0x0000fffe +_080D5F3A: + strh r0, [r2, 0x1E] +_080D5F3C: + movs r1, 0 + strh r1, [r2, 0xE] + movs r7, 0x22 + ldrsh r0, [r2, r7] + cmp r1, r0 + bge _080D5F7E + ldr r4, _080D5F98 @ =gSprites + adds r3, r2, 0 + adds r3, 0x8 +_080D5F4E: + movs r1, 0xE + ldrsh r0, [r2, r1] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r5, 0 + ldrsh r0, [r0, r5] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r2, 0x1E] + ldrh r7, [r2, 0x1C] + adds r0, r7 + strh r0, [r1, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r5, 0x22 + ldrsh r1, [r2, r5] + cmp r0, r1 + blt _080D5F4E +_080D5F7E: + ldrh r0, [r2, 0x1A] + adds r0, 0x1 + strh r0, [r2, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x60 + bne _080D6074 + movs r0, 0 + strh r0, [r2, 0x1A] + b _080D6020 + .align 2, 0 +_080D5F94: .4byte 0x0000fffe +_080D5F98: .4byte gSprites +_080D5F9C: + movs r7, 0x20 + ldrsh r1, [r2, r7] + lsls r1, 1 + ldrh r0, [r2, 0x1C] + subs r0, r1 + strh r0, [r2, 0x1C] + ldrh r0, [r2, 0xA] + adds r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080D5FD0 + movs r0, 0 + strh r0, [r2, 0xA] + ldrh r0, [r2, 0xC] + adds r0, 0x1 + strh r0, [r2, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080D5FCC + strh r3, [r2, 0x1E] + b _080D5FD0 +_080D5FCC: + ldr r0, _080D6028 @ =0x0000fffe + strh r0, [r2, 0x1E] +_080D5FD0: + movs r1, 0 + strh r1, [r2, 0xE] + movs r3, 0x22 + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _080D6012 + ldr r4, _080D602C @ =gSprites + adds r3, r2, 0 + adds r3, 0x8 +_080D5FE2: + movs r5, 0xE + ldrsh r0, [r2, r5] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r7, 0 + ldrsh r0, [r0, r7] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrh r0, [r2, 0x1E] + ldrh r5, [r2, 0x1C] + adds r0, r5 + strh r0, [r1, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r7, 0x22 + ldrsh r1, [r2, r7] + cmp r0, r1 + blt _080D5FE2 +_080D6012: + ldrh r0, [r2, 0x1A] + adds r0, 0x1 + strh r0, [r2, 0x1A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + bne _080D6074 +_080D6020: + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + b _080D6074 + .align 2, 0 +_080D6028: .4byte 0x0000fffe +_080D602C: .4byte gSprites +_080D6030: + movs r1, 0 + strh r1, [r2, 0xE] + movs r3, 0x22 + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _080D606E + ldr r6, _080D607C @ =gSprites + adds r3, r2, 0 + adds r3, 0x8 + movs r5, 0 +_080D6044: + movs r7, 0xE + ldrsh r0, [r2, r7] + adds r0, 0xE + lsls r0, 1 + adds r0, r3, r0 + movs r7, 0 + ldrsh r1, [r0, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r5, [r0, 0x24] + ldrh r0, [r2, 0xE] + adds r0, 0x1 + strh r0, [r2, 0xE] + lsls r0, 16 + asrs r0, 16 + movs r7, 0x22 + ldrsh r1, [r2, r7] + cmp r0, r1 + blt _080D6044 +_080D606E: + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080D6074: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D607C: .4byte gSprites + thumb_func_end sub_80D5E4C + + thumb_func_start sub_80D6080 +sub_80D6080: @ 80D6080 + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r0, sp + bl sub_8078914 + mov r0, sp + ldrb r0, [r0, 0x8] + lsls r0, 4 + ldr r1, _080D60B0 @ =gBattleAnimArgs + ldrb r2, [r1] + ldrh r3, [r1, 0x2] + movs r1, 0x10 + bl BlendPalette + adds r0, r4, 0 + bl DestroyAnimVisualTask + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D60B0: .4byte gBattleAnimArgs + thumb_func_end sub_80D6080 + + thumb_func_start sub_80D60B4 +sub_80D60B4: @ 80D60B4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080D610C @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r2, r0, r1 + movs r3, 0x8 + ldrsh r0, [r2, r3] + mov r9, r1 + ldr r4, _080D6110 @ =gBattleAnimArgs + mov r8, r4 + cmp r0, 0 + bne _080D60EA + ldrh r0, [r4] + strh r0, [r2, 0xA] + ldrh r0, [r4, 0x2] + strh r0, [r2, 0xC] + ldrh r0, [r4, 0x4] + strh r0, [r2, 0xE] + ldrh r0, [r4, 0x6] + strh r0, [r2, 0x10] +_080D60EA: + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + ldr r1, _080D6114 @ =gObjectBankIDs + ldr r0, _080D6118 @ =gBattleAnimBankTarget + ldrb r0, [r0] + adds r0, r1 + ldrb r6, [r0] + movs r5, 0x10 + ldrsh r0, [r2, r5] + cmp r0, 0 + bne _080D6120 + ldr r4, _080D611C @ =gUnknown_083D9794 + movs r1, 0x8 + ldrsh r0, [r2, r1] + b _080D6126 + .align 2, 0 +_080D610C: .4byte gTasks +_080D6110: .4byte gBattleAnimArgs +_080D6114: .4byte gObjectBankIDs +_080D6118: .4byte gBattleAnimBankTarget +_080D611C: .4byte gUnknown_083D9794 +_080D6120: + ldr r4, _080D616C @ =gUnknown_083D97A4 + movs r3, 0x8 + ldrsh r0, [r2, r3] +_080D6126: + movs r1, 0xA + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + adds r0, r4 + ldrb r5, [r0] + lsls r0, r7, 2 + adds r1, r0, r7 + lsls r1, 3 + add r1, r9 + movs r4, 0xE + ldrsh r1, [r1, r4] + mov r12, r0 + cmp r1, 0x1 + bne _080D6174 + ldr r2, _080D6170 @ =gSprites + lsls r3, r6, 4 + adds r0, r3, r6 + lsls r0, 2 + adds r0, r2 + mov r10, r0 + mov r0, r8 + movs r4, 0x2 + ldrsh r1, [r0, r4] + lsls r0, r5, 24 + asrs r0, 24 + muls r0, r1 + cmp r0, 0 + bge _080D6164 + negs r0, r0 +_080D6164: + mov r5, r10 + strh r0, [r5, 0x26] + b _080D618E + .align 2, 0 +_080D616C: .4byte gUnknown_083D97A4 +_080D6170: .4byte gSprites +_080D6174: + ldr r3, _080D61C4 @ =gSprites + lsls r4, r6, 4 + adds r2, r4, r6 + lsls r2, 2 + adds r2, r3 + lsls r0, r5, 24 + asrs r0, 24 + mov r5, r8 + ldrh r1, [r5, 0x2] + muls r0, r1 + strh r0, [r2, 0x24] + adds r2, r3, 0 + adds r3, r4, 0 +_080D618E: + mov r1, r12 + adds r0, r1, r7 + lsls r0, 3 + add r0, r9 + movs r4, 0x8 + ldrsh r1, [r0, r4] + movs r5, 0xA + ldrsh r0, [r0, r5] + cmp r1, r0 + bne _080D61B4 + adds r0, r3, r6 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x24] + strh r1, [r0, 0x26] + adds r0, r7, 0 + bl DestroyAnimVisualTask +_080D61B4: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080D61C4: .4byte gSprites + thumb_func_end sub_80D60B4 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/wisp_orb.s b/asm/wisp_orb.s new file mode 100755 index 000000000..cb5920ba4 --- /dev/null +++ b/asm/wisp_orb.s @@ -0,0 +1,230 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + @ wisp_orb + + thumb_func_start sub_80D5B0C +sub_80D5B0C: @ 80D5B0C + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080D5B80 + cmp r0, 0x1 + bgt _080D5B22 + cmp r0, 0 + beq _080D5B28 + b _080D5C4E +_080D5B22: + cmp r0, 0x2 + beq _080D5BDE + b _080D5C4E +_080D5B28: + adds r0, r5, 0 + movs r1, 0 + bl sub_80787B0 + ldr r4, _080D5B50 @ =gBattleAnimArgs + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl StartSpriteAnim + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x3C] + ldr r0, _080D5B54 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D5B58 + movs r0, 0x4 + b _080D5B5A + .align 2, 0 +_080D5B50: .4byte gBattleAnimArgs +_080D5B54: .4byte gBattleAnimBankAttacker +_080D5B58: + ldr r0, _080D5B78 @ =0x0000fffc +_080D5B5A: + strh r0, [r5, 0x36] + ldr r0, _080D5B7C @ =gBattleAnimBankTarget + ldrb r0, [r0] + bl sub_8079ED4 + 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] + b _080D5BD6 + .align 2, 0 +_080D5B78: .4byte 0x0000fffc +_080D5B7C: .4byte gBattleAnimBankTarget +_080D5B80: + ldrh r0, [r5, 0x30] + adds r0, 0xC0 + strh r0, [r5, 0x30] + ldr r0, _080D5BA0 @ =gBattleAnimBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080D5BA4 + ldrh r0, [r5, 0x30] + lsls r0, 16 + asrs r0, 24 + negs r0, r0 + b _080D5BAA + .align 2, 0 +_080D5BA0: .4byte gBattleAnimBankAttacker +_080D5BA4: + ldrh r0, [r5, 0x30] + lsls r0, 16 + asrs r0, 24 +_080D5BAA: + strh r0, [r5, 0x26] + movs r2, 0x32 + ldrsh r0, [r5, r2] + movs r2, 0x36 + ldrsh r1, [r5, r2] + bl Sin + strh r0, [r5, 0x24] + ldrh r0, [r5, 0x32] + adds r0, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080D5C4E + movs r0, 0 + strh r0, [r5, 0x34] +_080D5BD6: + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080D5C4E +_080D5BDE: + movs r1, 0x32 + ldrsh r0, [r5, r1] + movs r2, 0x36 + ldrsh r1, [r5, r2] + bl Sin + adds r2, r0, 0 + movs r3, 0 + strh r2, [r5, 0x24] + ldrh r0, [r5, 0x32] + adds r0, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1F + bne _080D5C4E + ldrh r0, [r5, 0x20] + adds r1, r2, r0 + strh r1, [r5, 0x20] + ldrh r0, [r5, 0x26] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + strh r3, [r5, 0x26] + strh r3, [r5, 0x24] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r5, 0x2E] + strh r1, [r5, 0x30] + ldr r4, _080D5C54 @ =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 sub_8078BD4 + ldr r0, _080D5C58 @ =sub_80D5C5C + str r0, [r5, 0x1C] +_080D5C4E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080D5C54: .4byte gBattleAnimBankTarget +_080D5C58: .4byte sub_80D5C5C + thumb_func_end sub_80D5B0C + + thumb_func_start sub_80D5C5C +sub_80D5C5C: @ 80D5C5C + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + bne _080D5CB4 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x10 + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldrh r2, [r4, 0x38] + adds r0, r2, 0x4 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + ldrh r0, [r4, 0x38] + lsls r2, 16 + asrs r2, 16 + cmp r2, 0 + beq _080D5C92 + cmp r2, 0xC4 + ble _080D5CBA +_080D5C92: + lsls r0, 16 + cmp r0, 0 + ble _080D5CBA + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080D5CBA + ldr r0, _080D5CB0 @ =gUnknown_0202F7D2 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0x90 + bl PlaySE12WithPanning + b _080D5CBA + .align 2, 0 +_080D5CB0: .4byte gUnknown_0202F7D2 +_080D5CB4: + adds r0, r4, 0 + bl move_anim_8072740 +_080D5CBA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80D5C5C + + .align 2, 0 @ Don't pad with nop. diff --git a/data-de/text/contest_strings.inc b/data-de/text/contest_strings.inc index fd7c00e5c..19cfe330f 100644 --- a/data-de/text/contest_strings.inc +++ b/data-de/text/contest_strings.inc @@ -148,7 +148,7 @@ ContestString_DescStopExcitement: @ 83CADA1 .string "terung des Publikums.$" .align 2 -gUnknown_083CADD4:: @ 83CADD4 +gContestEffectStrings:: @ 83CADD4 .4byte ContestString_DescHighlyAppealing .4byte ContestString_DescStartled1 .4byte ContestString_DescGreatLock diff --git a/data-de/text/move_descriptions.inc b/data-de/text/move_descriptions.inc deleted file mode 100644 index 74f7a5b9f..000000000 --- a/data-de/text/move_descriptions.inc +++ /dev/null @@ -1,1771 +0,0 @@ -gMoveDescription_Pound: @ 83BC680 - .string "Ein Hieb mit den Vorder-\n" - .string "beinen oder dem Schweif.$" - -gMoveDescription_KarateChop: @ 83BC6A6 - .string "Gute Möglichkeit, einen\n" - .string "Volltreffer zu landen.$" - -gMoveDescription_DoubleSlap: @ 83BC6D8 - .string "Trifft den Gegner 2 - 5-mal\n" - .string "hintereinander.$" - -gMoveDescription_CometPunch: @ 83BC6FF - .string "Trifft den Gegner 2 - 5-mal\n" - .string "hintereinander.$" - -gMoveDescription_MegaPunch: @ 83BC728 - .string "Ein unglaublich kräftiger\n" - .string "Hieb.$" - -gMoveDescription_PayDay: @ 83BC755 - .string "Wirft Münzen auf Gegner.\n" - .string "Geld wird erstattet.$" - -gMoveDescription_FirePunch: @ 83BC788 - .string "Schlag, der dem Gegner evtl.\n" - .string "Verbrennungen zufügt.$" - -gMoveDescription_IcePunch: @ 83BC7AD - .string "Ein Schlag, der den Gegner\n" - .string "evtl. einfriert.$" - -gMoveDescription_ThunderPunch: @ 83BC7D3 - .string "Schlag, der den Gegner evtl.\n" - .string "paralysiert.$" - -gMoveDescription_Scratch: @ 83BC803 - .string "Der Gegner wird mit\n" - .string "scharfen Klauen zerkratzt.$" - -gMoveDescription_ViceGrip: @ 83BC827 - .string "Umklammert den Gegner mit\n" - .string "großen, kräftigen Zangen.$" - -gMoveDescription_Guillotine: @ 83BC856 - .string "Kräftige Scheren-Attacke.\n" - .string "Führt evtl. zum K.O.$" - -gMoveDescription_RazorWind: @ 83BC888 - .string "Eine Attacke, die auf 2\n" - .string "Runden basiert.$" - -gMoveDescription_SwordsDance: @ 83BC8BC - .string "Erhöht den Angriffs-Wert\n" - .string "drastisch.$" - -gMoveDescription_Cut: @ 83BC8E9 - .string "Trifft den Gegner mit\n" - .string "Klauen, Scheren o. ä.$" - -gMoveDescription_Gust: @ 83BC916 - .string "Trifft den Gegner mit Wind-\n" - .string "stoß durch Flügelschlag.$" - -gMoveDescription_WingAttack: @ 83BC94F - .string "Trifft den Gegner mit weit\n" - .string "gespreizten Flügeln.$" - -gMoveDescription_Whirlwind: @ 83BC977 - .string "Weht Gegner weg und be-\n" - .string "endet den Kampf in Wildnis.$" - -gMoveDescription_Fly: @ 83BC9A9 - .string "Steigt empor in der 1. Runde\n" - .string "und trifft Gegner in der 2.$" - -gMoveDescription_Bind: @ 83BC9E1 - .string "Umklammert und trifft den\n" - .string "Gegner 2 - 5-mal.$" - -gMoveDescription_Slam: @ 83BCA0E - .string "Schlag mit einem langen\n" - .string "Schweif, einer Ranke o. ä.$" - -gMoveDescription_VineWhip: @ 83BCA39 - .string "Peitschenähnlicher Schlag\n" - .string "mit Ranken.$" - -gMoveDescription_Stomp: @ 83BCA67 - .string "Stampfen mit Fuß. Gegner\n" - .string "schreckt evtl. zurück.$" - -gMoveDescription_DoubleKick: @ 83BCA9E - .string "Doppeltritt. Der Gegner\n" - .string "wird zweimal getroffen.$" - -gMoveDescription_MegaKick: @ 83BCAD2 - .string "Ein extrem heftiger Tritt.$" - -gMoveDescription_JumpKick: @ 83BCB01 - .string "Sprung-Tritt. Selbstschä-\n" - .string "digung bei Misserfolg.$" - -gMoveDescription_RollingKick: @ 83BCB36 - .string "Schneller Tritt aus der\n" - .string "Drehung.$" - -gMoveDescription_SandAttack: @ 83BCB5F - .string "Senkt Genauigkeit des Geg-\n" - .string "ners durch Sand.$" - -gMoveDescription_Headbutt: @ 83BCB97 - .string "Rammt den Gegner und lässt\n" - .string "ihn evtl. zurückschrecken.$" - -gMoveDescription_HornAttack: @ 83BCBC2 - .string "Spießt den Gegner mit\n" - .string "spitzen Hörnern auf.$" - -gMoveDescription_FuryAttack: @ 83BCBE1 - .string "Spießt den Gegner 2 - 5-mal\n" - .string "mit spitzen Hörnern auf.$" - -gMoveDescription_HornDrill: @ 83BCC12 - .string "K.O.-Attacke, die ein Horn\n" - .string "als Bohrer einsetzt.$" - -gMoveDescription_Tackle: @ 83BCC45 - .string "Trifft den Gegner mit vollem\n" - .string "Körpereinsatz.$" - -gMoveDescription_BodySlam: @ 83BCC6F - .string "Körper-Ramme, kann\n" - .string "Paralyse hervorrufen.$" - -gMoveDescription_Wrap: @ 83BCC9A - .string "Umwickelt Gegner 2 - 5-mal\n" - .string "mit Ranken o. ä.$" - -gMoveDescription_TakeDown: @ 83BCCD3 - .string "Rücksichtslose Attacke,\n" - .string "mit Selbstschädigung.$" - -gMoveDescription_Thrash: @ 83BCD06 - .string "Attacke in 2 bis 3 Runden,\n" - .string "die Anwender verwirrt.$" - -gMoveDescription_DoubleEdge: @ 83BCD38 - .string "Lebensgefährlicher Angriff\n" - .string "mit Selbstschädigung.$" - -gMoveDescription_TailWhip: @ 83BCD68 - .string "Hieb mit dem Schweif, senkt\n" - .string "die VERT. des Gegners.$" - -gMoveDescription_PoisonSting: @ 83BCD92 - .string "Angriff mit Widerhaken,\n" - .string "kann Gegner vergiften.$" - -gMoveDescription_Twineedle: @ 83BCDC4 - .string "Stacheln an den Vorderbei-\n" - .string "nen treffen Gegner 2-mal.$" - -gMoveDescription_PinMissile: @ 83BCDF0 - .string "Spitze Nadeln treffen den\n" - .string "Gegner 2 - 5-mal.$" - -gMoveDescription_Leer: @ 83BCE1D - .string "Gegners VERT.-Wert wird\n" - .string "durch Blick gesenkt.$" - -gMoveDescription_Bite: @ 83BCE4D - .string "Beißt zu und lässt den Geg-\n" - .string "ner evtl. zurückschrecken.$" - -gMoveDescription_Growl: @ 83BCE7C - .string "Knurren, das den ANGR.-Wert\n" - .string "des Gegners senkt.$" - -gMoveDescription_Roar: @ 83BCEA6 - .string "Verjagt den Gegner und be-\n" - .string "endet den Kampf in Wildnis.$" - -gMoveDescription_Sing: @ 83BCECC - .string "Ein Lied, das den Gegner\n" - .string "in tiefen Schlaf versetzt.$" - -gMoveDescription_Supersonic: @ 83BCEFF - .string "Ausstoß bizarrer Schallwel-\n" - .string "len. Verwirrt Gegner evtl.$" - -gMoveDescription_SonicBoom: @ 83BCF33 - .string "Schockwellen. Richten immer\n" - .string "20 KP Schaden an.$" - -gMoveDescription_Disable: @ 83BCF6A - .string "Psycho-Attacke. Blockiert\n" - .string "eine Attacke des Gegners.$" - -gMoveDescription_Acid: @ 83BCF97 - .string "Versprüht ätzende Flüssig-\n" - .string "keit, senkt evtl. VERT.$" - -gMoveDescription_Ember: @ 83BCFC6 - .string "Schwache Feuer-Attacke.\n" - .string "Verbrennt Gegner evtl.$" - -gMoveDescription_Flamethrower: @ 83BCFF2 - .string "Starke Feuer-Attacke.\n" - .string "Verbrennt Gegner evtl.$" - -gMoveDescription_Mist: @ 83BD022 - .string "Nebel, der die Änderung der\n" - .string "Werte verhindert.$" - -gMoveDescription_WaterGun: @ 83BD054 - .string "Der Gegner wird mit Wasser\n" - .string "bespritzt.$" - -gMoveDescription_HydroPump: @ 83BD075 - .string "Spritzt Wasser mit\n" - .string "Hochdruck auf den Gegner.$" - -gMoveDescription_Surf: @ 83BD0A3 - .string "Eine riesige Welle bricht\n" - .string "über den Gegner herein.$" - -gMoveDescription_IceBeam: @ 83BD0D9 - .string "Gegner wird von Eisstrahl\n" - .string "getroffen, friert evtl. ein.$" - -gMoveDescription_Blizzard: @ 83BD10D - .string "Ein Schneesturm, der den\n" - .string "Gegner einfrieren kann.$" - -gMoveDescription_Psybeam: @ 83BD140 - .string "Feuert einen Strahl ab, der\n" - .string "Gegner verwirren kann.$" - -gMoveDescription_BubbleBeam: @ 83BD16F - .string "Versprüht Blasen, die den\n" - .string "INIT.-Wert evtl. senken.$" - -gMoveDescription_AuroraBeam: @ 83BD19F - .string "Regenbogenfarbener Strahl,\n" - .string "senkt evtl. ANGR.-Wert.$" - -gMoveDescription_HyperBeam: @ 83BD1D3 - .string "Starke Attacke. Angreifer\n" - .string "setzt eine Runde aus.$" - -gMoveDescription_Peck: @ 83BD209 - .string "Greift Gegner mit dem\n" - .string "Schnabel an.$" - -gMoveDescription_DrillPeck: @ 83BD233 - .string "Attacke, bei der der Schna-\n" - .string "bel als Bohrer dient.$" - -gMoveDescription_Submission: @ 83BD26A - .string "Rücksichtsloser Rempler. \n" - .string "Schädigt auch Angreifer.$" - -gMoveDescription_LowKick: @ 83BD299 - .string "Tritt, der massigen Gegnern\n" - .string "mehr Schaden zufügt.$" - -gMoveDescription_Counter: @ 83BD2CB - .string "Kontert physischen Tref-\n" - .string "fer mit doppelter Kraft.$" - -gMoveDescription_SeismicToss: @ 83BD2FE - .string "Richtet Schaden gemäß\n" - .string "Level d. Angreifers an.$" - -gMoveDescription_Strength: @ 83BD32D - .string "Erzeugt enorme Kraft und\n" - .string "rammt den Gegner.$" - -gMoveDescription_Absorb: @ 83BD358 - .string "Attacke, die die Hälfte des\n" - .string "Schadens absorbiert.$" - -gMoveDescription_MegaDrain: @ 83BD38A - .string "Attacke, die die Hälfte des\n" - .string "Schadens absorbiert.$" - -gMoveDescription_LeechSeed: @ 83BD3BC - .string "Gegner wird bepflanzt und\n" - .string "verliert jede Runde KP.$" - -gMoveDescription_Growth: @ 83BD3F0 - .string "Der Körper wächst und\n" - .string "SPEZ. ANGR. wird erhöht.$" - -gMoveDescription_RazorLeaf: @ 83BD41F - .string "Trifft Gegner mit Blättern.\n" - .string "Hohe Volltrefferquote.$" - -gMoveDescription_SolarBeam: @ 83BD454 - .string "Absorbiert Licht in der 1.\n" - .string "Runde, 2. Runde Angriff.$" - -gMoveDescription_PoisonPowder: @ 83BD487 - .string "Verstreut giftigen Puder,\n" - .string "der Gegner vergiften kann.$" - -gMoveDescription_StunSpore: @ 83BD4B8 - .string "Verstreut Puder, der den\n" - .string "Gegner evtl. paralysiert.$" - -gMoveDescription_SleepPowder: @ 83BD4E5 - .string "Verstreut Puder, der Geg.\n" - .string "evtl. in Schlaf versetzt.$" - -gMoveDescription_PetalDance: @ 83BD518 - .string "Angriff in 2-3 Runden.\n" - .string "Angreifer wird verwirrt.$" - -gMoveDescription_StringShot: @ 83BD54A - .string "Umwickelt Gegner mit Faden\n" - .string "und senkt INIT.-Wert.$" - -gMoveDescription_DragonRage: @ 83BD579 - .string "Stößt Schockwellen aus, die\n" - .string "40 KP Schaden anrichten.$" - -gMoveDescription_FireSpin: @ 83BD5B0 - .string "Schließt Gegner für 2-5\n" - .string "Runden in Feuerkreis ein.$" - -gMoveDescription_ThunderShock: @ 83BD5E2 - .string "Elektro-Attacke. Gegner\n" - .string "evtl. paralysiert.$" - -gMoveDescription_Thunderbolt: @ 83BD612 - .string "Starke Elektro-Attacke,\n" - .string "Gegner evtl. paralysiert.$" - -gMoveDescription_ThunderWave: @ 83BD648 - .string "Ein schwacher Stromstoß,\n" - .string "der den Gegner paralysiert.$" - -gMoveDescription_Thunder: @ 83BD67B - .string "Elektro-Attacke, die den\n" - .string "Gegner evtl. paralysiert.$" - -gMoveDescription_RockThrow: @ 83BD6A8 - .string "Wirft kleine Steine auf den\n" - .string "Gegner.$" - -gMoveDescription_Earthquake: @ 83BD6CE - .string "Mächtiges Beben. Ist bei\n" - .string "fliegenden Feinden nutzlos.$" - -gMoveDescription_Fissure: @ 83BD702 - .string "Sofort-K.O. Wirft Gegner\n" - .string "in Gebirgsspalte.$" - -gMoveDescription_Dig: @ 83BD735 - .string "Gräbt sich in der 1. Runde\n" - .string "ein und trifft in der 2.$" - -gMoveDescription_Toxic: @ 83BD76C - .string "Vergiftet den Gegner mit \n" - .string "einem starken Toxin.$" - -gMoveDescription_Confusion: @ 83BD798 - .string "Psycho-Attacke, die den\n" - .string "Gegner evtl. verwirrt.$" - -gMoveDescription_Psychic: @ 83BD7C3 - .string "Starke Psycho-Attacke, die\n" - .string "evtl. SPEZ. VERT. senkt.$" - -gMoveDescription_Hypnosis: @ 83BD7F5 - .string "Hypno-Attacke, die Gegner\n" - .string "evtl. in Schlaf versetzt.$" - -gMoveDescription_Meditate: @ 83BD81F - .string "Friedliche Meditation, um\n" - .string "ANGR.-Wert zu steigern.$" - -gMoveDescription_Agility: @ 83BD850 - .string "Entspannt den Körper, um\n" - .string "INIT.-Wert. zu steigern.$" - -gMoveDescription_QuickAttack: @ 83BD879 - .string "Sehr schneller Angriff mit\n" - .string "Erstschlaggarantie.$" - -gMoveDescription_Rage: @ 83BD8AD - .string "Erhöht ANGR. des Anwenders\n" - .string "bei jedem gegn. Treffer.$" - -gMoveDescription_Teleport: @ 83BD8DC - .string "Psycho-Angriff, um sofort\n" - .string "aus einem Kampf zu fliehen.$" - -gMoveDescription_NightShade: @ 83BD90E - .string "Richtet Schaden gemäß\n" - .string "Level d. Angreifers an.$" - -gMoveDescription_Mimic: @ 83BD93D - .string "Kopiert eine zuvor ausge-\n" - .string "führte Attacke d. Gegners.$" - -gMoveDescription_Screech: @ 83BD96E - .string "Stößt einen Schrei aus, um\n" - .string "gegn. VERT. zu senken.$" - -gMoveDescription_DoubleTeam: @ 83BD9A3 - .string "Erzeugt Ebenbilder, um \n" - .string "Fluchtwert zu erhöhen.$" - -gMoveDescription_Recover: @ 83BD9D1 - .string "Max. KP des Anwenders w.\n" - .string "bis zur Hälfte aufgefüllt.$" - -gMoveDescription_Harden: @ 83BD9FC - .string "Stärkt die Muskulatur und\n" - .string "erhöht VERT.-Wert.$" - -gMoveDescription_Minimize: @ 83BDA2B - .string "Anwender schrumpft, um\n" - .string "Fluchtwert zu erhöhen.$" - -gMoveDescription_Smokescreen: @ 83BDA5B - .string "Senkt Genauigkeit d. Geg-\n" - .string "ners mit Rauch, Tinte o. ä.$" - -gMoveDescription_ConfuseRay: @ 83BDA8C - .string "Ein fieser Strahl, der den\n" - .string "Gegner verwirrt.$" - -gMoveDescription_Withdraw: @ 83BDAB2 - .string "Rückzug in den harten\n" - .string "Panzer. Erhöht VERT.-Wert.$" - -gMoveDescription_DefenseCurl: @ 83BDAEB - .string "Verbirgt Schwächen durch\n" - .string "Einrollen, VERT.-Wert hoch.$" - -gMoveDescription_Barrier: @ 83BDB1D - .string "Erzeugt Barriere, die den\n" - .string "VERT.-Wert stark erhöht.$" - -gMoveDescription_LightScreen: @ 83BDB4C - .string "Erzeugt Lichtwand u. senkt\n" - .string "SPEZ. ANGR.-Schaden.$" - -gMoveDescription_Haze: @ 83BDB80 - .string "Erzeugt dunklen Dunst.\n" - .string "Löscht alle Statusänder.$" - -gMoveDescription_Reflect: @ 83BDBB7 - .string "Erzeugt Lichtwand, schützt\n" - .string "teilweise vor phys. Angr.$" - -gMoveDescription_FocusEnergy: @ 83BDBEE - .string "Bündelt Kraft. Volltreffer-\n" - .string "chance wird erhöht.$" - -gMoveDescription_Bide: @ 83BDC1D - .string "Erträgt 2 Runden Angriffe,\n" - .string "schlägt doppelt zurück.$" - -gMoveDescription_Metronome: @ 83BDC4D - .string "Bewegt Finger und wählt\n" - .string "PKMN-Attacke zufällig aus.$" - -gMoveDescription_MirrorMove: @ 83BDC81 - .string "Erwidert gegn. Angriff mit\n" - .string "derselben Attacke.$" - -gMoveDescription_SelfDestruct: @ 83BDCAF - .string "Richtet großen Schaden an.\n" - .string "Anwender wird besiegt.$" - -gMoveDescription_EggBomb: @ 83BDCE0 - .string "Ein Ei wird auf den Gegner\n" - .string "abgefeuert.$" - -gMoveDescription_Lick: @ 83BDD06 - .string "Leck-Attacke mit Zunge.\n" - .string "Gegner evtl. paralysiert.$" - -gMoveDescription_Smog: @ 83BDD3D - .string "Angriff mit Gas. Gegner wird\n" - .string "evtl. vergiftet.$" - -gMoveDescription_Sludge: @ 83BDD69 - .string "Wirft Schlamm auf Gegner.\n" - .string "Evtl. Vergiftung.$" - -gMoveDescription_BoneClub: @ 83BDD9E - .string "Schlägt Gegner mit Keule\n" - .string "und verschreckt ihn evtl.$" - -gMoveDescription_FireBlast: @ 83BDDCE - .string "Feuersbrunst, die alles ver-\n" - .string "sengt. Verbrennt Geg. evtl.$" - -gMoveDescription_Waterfall: @ 83BDE01 - .string "Attacke basiert auf Tempo.\n" - .string "Erklimmt Wasserfälle.$" - -gMoveDescription_Clamp: @ 83BDE31 - .string "Fängt und drückt Gegner\n" - .string "für 2-5 Runden.$" - -gMoveDescription_Swift: @ 83BDE5E - .string "Verschießt sternförmige\n" - .string "Strahlen. Treffergarantie!$" - -gMoveDescription_SkullBash: @ 83BDE87 - .string "Zieht Kopf ein und greift in\n" - .string "der nächsten Runde an.$" - -gMoveDescription_SpikeCannon: @ 83BDEB9 - .string "Verschießt spitze Stacheln\n" - .string "und trifft 2 - 5-mal.$" - -gMoveDescription_Constrict: @ 83BDEE9 - .string "Schmerzvoller Klammergriff.\n" - .string "Senkt evtl. INIT.-Wert.$" - -gMoveDescription_Amnesia: @ 83BDF16 - .string "Gedächtnisverlust, der\n" - .string "SPEZ. VERT. deutlich erhöht.$" - -gMoveDescription_Kinesis: @ 83BDF4A - .string "Lenkt Gegner ab und senkt\n" - .string "evtl. seine Genauigkeit.$" - -gMoveDescription_SoftBoiled: @ 83BDF71 - .string "Max. KP des Anwenders w.\n" - .string "bis zur Hälfte aufgefüllt.$" - -gMoveDescription_HiJumpKick: @ 83BDF9C - .string "Sprung-Tritt mit Knie. Miss-\n" - .string "erfolg verletzt Anwender.$" - -gMoveDescription_Glare: @ 83BDFD1 - .string "Schüchtert Gegner ein, so\n" - .string "dass er paralysiert ist.$" - -gMoveDescription_DreamEater: @ 83BE003 - .string "Schlafendem Gegner wird\n" - .string "halber Schaden abgezogen.$" - -gMoveDescription_PoisonGas: @ 83BE03A - .string "Hüllt Gegner in giftiges Gas\n" - .string "ein, kann vergiften.$" - -gMoveDescription_Barrage: @ 83BE06B - .string "Wirft 2 - 5-mal runde Gegen-\n" - .string "stände auf den Gegner.$" - -gMoveDescription_LeechLife: @ 83BE098 - .string "Ein Angriff, der die Hälfte\n" - .string "des Schadens saugt.$" - -gMoveDescription_LovelyKiss: @ 83BE0C9 - .string "Fordert Kuss mit bösem\n" - .string "Blick. Evtl. Schlaf.$" - -gMoveDescription_SkyAttack: @ 83BE0FE - .string "Sucht nach Schwächen,\n" - .string "Treffer nächste Runde.$" - -gMoveDescription_Transform: @ 83BE133 - .string "Ändert die Anwenderzellen\n" - .string "für ein Ebenbild d. Gegners.$" - -gMoveDescription_Bubble: @ 83BE168 - .string "Angriff mit Blasen. INIT.-\n" - .string "Wert wird evtl. gesenkt.$" - -gMoveDescription_DizzyPunch: @ 83BE19C - .string "Rhythmischer Schlag, der\n" - .string "den Gegner verwirren kann.$" - -gMoveDescription_Spore: @ 83BE1C7 - .string "Erzeugt eine Wolke aus ein-\n" - .string "schläfernden Sporen.$" - -gMoveDescription_Flash: @ 83BE1FC - .string "Erzeugt helles Licht, das\n" - .string "gegn. Genauigkeit senkt.$" - -gMoveDescription_Psywave: @ 83BE231 - .string "Psycho-Welle mit unter-\n" - .string "schiedlicher Intensität.$" - -gMoveDescription_Splash: @ 83BE263 - .string "Nur ein Platscher..., der\n" - .string "überhaupt nichts bewirkt.$" - -gMoveDescription_AcidArmor: @ 83BE293 - .string "Verflüssigt Körper d. An-\n" - .string "wenders. Erhört VERT.$" - -gMoveDescription_Crabhammer: @ 83BE2C7 - .string "Schlägt mit Schere zu.\n" - .string "Volltrefferchance hoch.$" - -gMoveDescription_Explosion: @ 83BE2FD - .string "Richtet großen Schaden an.\n" - .string "Anwender wird besiegt.$" - -gMoveDescription_FurySwipes: @ 83BE32E - .string "Beharkt Gegner 2 - 5-mal\n" - .string "mit scharfen Klauen o. ä.$" - -gMoveDescription_Bonemerang: @ 83BE362 - .string "Ein Bumerang aus Knochen,\n" - .string "der zweimal trifft.$" - -gMoveDescription_Rest: @ 83BE38E - .string "Anwender schläft 2 Runden,\n" - .string "KP und Status erneuert.$" - -gMoveDescription_RockSlide: @ 83BE3C4 - .string "Schleudert riesige Felsen.\n" - .string "Verschreckt evtl. Gegner.$" - -gMoveDescription_HyperFang: @ 83BE3F4 - .string "Angriff mit Zähnen.\n" - .string "Verschreckt evtl. Gegner.$" - -gMoveDescription_Sharpen: @ 83BE423 - .string "Reduziert Polygonzahl und\n" - .string "erhöht ANGR.-Wert.$" - -gMoveDescription_Conversion: @ 83BE450 - .string "Wandelt Typ d. Anwenders in\n" - .string "eigenen Attacken-Typ.$" - -gMoveDescription_TriAttack: @ 83BE481 - .string "Feuert 3 Arten von Strahlen\n" - .string "gleichzeitig ab.$" - -gMoveDescription_SuperFang: @ 83BE4AE - .string "Greift mit scharfen Zähnen\n" - .string "an. Halbiert gegnerische KP.$" - -gMoveDescription_Slash: @ 83BE4E3 - .string "Hieb mit Klauen o. ä. Hohe\n" - .string "Volltrefferquote.$" - -gMoveDescription_Substitute: @ 83BE51B - .string "Lockvogel, der 1/4 der max.\n" - .string "KP des Anwenders besitzt.$" - -gMoveDescription_Struggle: @ 83BE54F - .string "Einsatz nur bei verbrauch-\n" - .string "ten AP. Selbstschädigung!$" - -gMoveDescription_Sketch: @ 83BE58B - .string "Kopiert stets den zuletzt\n" - .string "erlittenen Angriff.$" - -gMoveDescription_TripleKick: @ 83BE5B3 - .string "Tritt Gegner 3-mal nach-\n" - .string "einander. Härte nimmt zu.$" - -gMoveDescription_Thief: @ 83BE5E9 - .string "Kann das vom Gegner\n" - .string "gehaltene Item stehlen.$" - -gMoveDescription_SpiderWeb: @ 83BE61C - .string "Wickelt Gegner ein. Flucht \n" - .string "oder Tausch unmöglich.$" - -gMoveDescription_MindReader: @ 83BE653 - .string "Ahnt gegnerische Aktion.\n" - .string "Nächste Attacke trifft.$" - -gMoveDescription_Nightmare: @ 83BE68A - .string "Bewirkt 1/4 Schaden pro\n" - .string "Zug bei schlafendem Gegner.$" - -gMoveDescription_FlameWheel: @ 83BE6BC - .string "Feuer-Attacke, die Gegner\n" - .string "evtl. verbrennt.$" - -gMoveDescription_Snore: @ 83BE6EB - .string "Laute Attacke. Kann nur im\n" - .string "Schlaf benutzt werden.$" - -gMoveDescription_Curse: @ 83BE71D - .string "Ein Angriff, der bei GEIST-\n" - .string "PKMN anders funktioniert.$" - -gMoveDescription_Flail: @ 83BE74B - .string "Richtet mehr Schaden an,\n" - .string "wenn eigene KP niedrig sind.$" - -gMoveDescription_Conversion2: @ 83BE77C - .string "Anwender wird resistent\n" - .string "gegen letzten Angr.-Typ.$" - -gMoveDescription_Aeroblast: @ 83BE7B0 - .string "Erzeugt ein Vakuum.\n" - .string "Hohe Volltrefferquote.$" - -gMoveDescription_CottonSpore: @ 83BE7E4 - .string "Sporen heften sich an den\n" - .string "Gegner. Senkt INIT.-Wert.$" - -gMoveDescription_Reversal: @ 83BE815 - .string "Richtet mehr Schaden an,\n" - .string "wenn eigene KP niedrig sind.$" - -gMoveDescription_Spite: @ 83BE846 - .string "AP des letzten gegner.\n" - .string "Angriffs werden gesenkt.$" - -gMoveDescription_PowderSnow: @ 83BE875 - .string "Schnee auf Gegner, der\n" - .string "evtl. eingefroren wird.$" - -gMoveDescription_Protect: @ 83BE8AB - .string "Weicht Angriff aus.\n" - .string "Scheitert evtl. bei Wdh.$" - -gMoveDescription_MachPunch: @ 83BE8DE - .string "Schneller Hieb, der stets\n" - .string "zuerst trifft.$" - -gMoveDescription_ScaryFace: @ 83BE911 - .string "Erschreckt mit Grimasse. \n" - .string "INIT.-Wert sinkt deutlich.$" - -gMoveDescription_FaintAttack: @ 83BE946 - .string "Zieht Gegner heran und\n" - .string "trifft mit Sicherheit.$" - -gMoveDescription_SweetKiss: @ 83BE976 - .string "Fordert Kuss mit süßem\n" - .string "Blick. Verwirrt Gegner evtl.$" - -gMoveDescription_BellyDrum: @ 83BE9AC - .string "Erhöht ANGR.-Wert,\n" - .string "opfert jedoch KP.$" - -gMoveDescription_SludgeBomb: @ 83BE9D3 - .string "Wirft Schlamm auf Gegner\n" - .string "und vergiftet ihn evtl.$" - -gMoveDescription_MudSlap: @ 83BEA08 - .string "Wirft Gegner Matsch ins Ge-\n" - .string "sicht. Genauigkeit sinkt.$" - -gMoveDescription_Octazooka: @ 83BEA3C - .string "Verschießt Tinte und senkt\n" - .string "dadurch Genauigkeit.$" - -gMoveDescription_Spikes: @ 83BEA6C - .string "Richtet bei Tausch Schaden\n" - .string "mit Stacheln an.$" - -gMoveDescription_ZapCannon: @ 83BEA98 - .string "Kräftige, ungenaue At-\n" - .string "tacke, die evtl. paralysiert.$" - -gMoveDescription_Foresight: @ 83BEACE - .string "Verhindert Anstieg von\n" - .string "gegnerischem Fluchtwert.$" - -gMoveDescription_DestinyBond: @ 83BEB01 - .string "Wird der Angreifer besiegt,\n" - .string "gilt das auch für d. Gegner.$" - -gMoveDescription_PerishSong: @ 83BEB34 - .string "Wer dieses Lied hört, wird\n" - .string "nach 3 Runden besiegt.$" - -gMoveDescription_IcyWind: @ 83BEB65 - .string "Eis-Attacke, die den INIT.-\n" - .string "Wert des Gegners senkt.$" - -gMoveDescription_Detect: @ 83BEB94 - .string "Wendet Attacken ab, Erfolg\n" - .string "sinkt bei Wiederholung.$" - -gMoveDescription_BoneRush: @ 83BEBC7 - .string "Greift Gegner 2 - 5-mal in\n" - .string "Folge mit einem Knochen an.$" - -gMoveDescription_LockOn: @ 83BEBF9 - .string "Visiert Gegner an u. trifft\n" - .string "in der nächsten Runde.$" - -gMoveDescription_Outrage: @ 83BEC2B - .string "Wiederholt Angriff 2-3 Run-\n" - .string "den lang. Verwirrt Anwender.$" - -gMoveDescription_Sandstorm: @ 83BEC5D - .string "Erzeugt einen Sandsturm,\n" - .string "der mehrere Runden wütet.$" - -gMoveDescription_GigaDrain: @ 83BEC8E - .string "Absorbiert die Hälfte des\n" - .string "angerichteten Schadens.$" - -gMoveDescription_Endure: @ 83BECBF - .string "Hält jeder Attacke 1 Runde\n" - .string "stand. 1 KP bleibt stets.$" - -gMoveDescription_Charm: @ 83BECF4 - .string "Betört den Gegner u. redu-\n" - .string "ziert seinen ANGR. deutlich.$" - -gMoveDescription_Rollout: @ 83BED23 - .string "Attacke, die 5 Runden\n" - .string "dauert. Die Härte nimmt zu.$" - -gMoveDescription_FalseSwipe: @ 83BED54 - .string "Ein Angriff, der dem Gegner\n" - .string "zumindest 1 KP lässt.$" - -gMoveDescription_Swagger: @ 83BED86 - .string "Verwirrt den Gegner und\n" - .string "erhöht ANGR.-Wert deutlich.$" - -gMoveDescription_MilkDrink: @ 83BEDB8 - .string "Füllt bis zur Hälfte der max.\n" - .string "KP des Benutzers auf.$" - -gMoveDescription_Spark: @ 83BEDE3 - .string "Elektro-Hieb, der Gegner\n" - .string "paralysieren kann.$" - -gMoveDescription_FuryCutter: @ 83BEE14 - .string "Eine Attacke, deren Härte\n" - .string "bei jedem Treffer zunimmt.$" - -gMoveDescription_SteelWing: @ 83BEE47 - .string "Trifft den Gegner hart mit\n" - .string "ausgebreiteten Flügeln.$" - -gMoveDescription_MeanLook: @ 83BEE74 - .string "Böser Blick, der die Flucht\n" - .string "des Gegners vereitelt.$" - -gMoveDescription_Attract: @ 83BEEA9 - .string "Angriff des anderen Ge-\n" - .string "schlechts unwahrscheinl.$" - -gMoveDescription_SleepTalk: @ 83BEEDA - .string "Benutzt per Zufall eine\n" - .string "Attacke im Schlaf.$" - -gMoveDescription_HealBell: @ 83BEF02 - .string "Läutet beruhigend, heilt\n" - .string "alle Status-Veränderungen.$" - -gMoveDescription_Return: @ 83BEF36 - .string "Angriff, dessen Kraft bei \n" - .string "Freundschaft größer wird.$" - -gMoveDescription_Present: @ 83BEF69 - .string "Eine Bombe als Geschenk. Es\n" - .string "kann KP wiederherstellen.$" - -gMoveDescription_Frustration: @ 83BEF97 - .string "Die Attacke ist stärker bei\n" - .string "verhassten TRAINERn.$" - -gMoveDescription_Safeguard: @ 83BEFCE - .string "Mystische Kraft, die alle\n" - .string "Statusprobleme verhindert.$" - -gMoveDescription_PainSplit: @ 83BEFFD - .string "Addiert KP v. Anwender u.\n" - .string "Gegner, teilt gerecht auf.$" - -gMoveDescription_SacredFire: @ 83BF033 - .string "Mystische Feuer-Attacke, \n" - .string "die d. Geg. evtl. verbrennt.$" - -gMoveDescription_Magnitude: @ 83BF063 - .string "Ein erdbebenartiger An-\n" - .string "griff von zufälliger Stärke.$" - -gMoveDescription_DynamicPunch: @ 83BF090 - .string "Kräftige Attacke, die ver-\n" - .string "wirrt, aber ungenau ist.$" - -gMoveDescription_Megahorn: @ 83BF0C6 - .string "Brutaler Frontalangriff\n" - .string "mit spitzen Hörnern.$" - -gMoveDescription_DragonBreath: @ 83BF0F6 - .string "Fegt den Gegner mit zer-\n" - .string "störerisch heißem Atem weg.$" - -gMoveDescription_BatonPass: @ 83BF12A - .string "Tauscht PKMN aus. Alle Än-\n" - .string "derungen bleiben bestehen.$" - -gMoveDescription_Encore: @ 83BF15F - .string "Gegner wiederholt letzten\n" - .string "Angriff 2 - 6-mal.$" - -gMoveDescription_Pursuit: @ 83BF195 - .string "Richtet großen Schaden bei\n" - .string "Austausch des Gegners an.$" - -gMoveDescription_RapidSpin: @ 83BF1C9 - .string "Trifft den Gegner durch\n" - .string "Drehen mit max. Tempo.$" - -gMoveDescription_SweetScent: @ 83BF1F9 - .string "Lockt Gegner an und senkt\n" - .string "seinen Fluchtwert.$" - -gMoveDescription_IronTail: @ 83BF220 - .string "Att. mit hartem Schweif. \n" - .string "Senkt evtl. VERT.-Wert.$" - -gMoveDescription_MetalClaw: @ 83BF252 - .string "Klauen-Attacke. Evtl. Er-\n" - .string "höhung d. ANGR.-Wert d. Anw.$" - -gMoveDescription_VitalThrow: @ 83BF282 - .string "Attacke stets gleich, aber\n" - .string "mit Treffergarantie.$" - -gMoveDescription_MorningSun: @ 83BF2B3 - .string "Füllt KP auf. Die Menge\n" - .string "hängt vom Wetter ab.$" - -gMoveDescription_Synthesis: @ 83BF2E4 - .string "Füllt KP auf. Die Menge\n" - .string "hängt vom Wetter ab.$" - -gMoveDescription_Moonlight: @ 83BF315 - .string "Füllt KP auf. Die Menge\n" - .string "hängt vom Wetter ab.$" - -gMoveDescription_HiddenPower: @ 83BF346 - .string "Die Wirkung dieser Attacke\n" - .string "hängt vom Benutzer ab.$" - -gMoveDescription_CrossChop: @ 83BF36E - .string "Doppelter Hieb. Hohe \n" - .string "Volltrefferquote.$" - -gMoveDescription_Twister: @ 83BF3A1 - .string "Trifft Gegner mit\n" - .string "heftigem Wirbelsturm.$" - -gMoveDescription_RainDance: @ 83BF3D0 - .string "Erhöht Stärke von WASSER-\n" - .string "Attacken 5 Runden lang.$" - -gMoveDescription_SunnyDay: @ 83BF403 - .string "Erhöht Stärke von FEUER-\n" - .string "Attacken 5 Runden lang.$" - -gMoveDescription_Crunch: @ 83BF435 - .string "Beißt mit Reißzähnen zu und\n" - .string "senkt evtl. SPEZ. VERT.$" - -gMoveDescription_MirrorCoat: @ 83BF463 - .string "Kontert d. Spezial-Attacke\n" - .string "d. Geg. mit 2-facher Kraft.$" - -gMoveDescription_PsychUp: @ 83BF49A - .string "Kopiert Effekte d. Gegners\n" - .string "u. gibt sie dem Angreifer.$" - -gMoveDescription_ExtremeSpeed: @ 83BF4CC - .string "Extrem schnelle und kraft-\n" - .string "volle Attacke.$" - -gMoveDescription_AncientPower: @ 83BF4F3 - .string "Ein Angriff, der alle\n" - .string "Status-Werte erhöhen kann.$" - -gMoveDescription_ShadowBall: @ 83BF517 - .string "Bewirft Gegner und senkt\n" - .string "evtl. SPEZ. VERT.$" - -gMoveDescription_FutureSight: @ 83BF54C - .string "Stärkt innere Kraft. Trifft\n" - .string "2 Runden später.$" - -gMoveDescription_RockSmash: @ 83BF57B - .string "Zertrümmernder Angriff, \n" - .string "der evtl. VERT.-Wert senkt.$" - -gMoveDescription_Whirlpool: @ 83BF5AA - .string "Hält Gegner 2-5 Züge in\n" - .string "einem Strudel gefangen.$" - -gMoveDescription_BeatUp: @ 83BF5E3 - .string "Ruft POKéMON hinzu, um an\n" - .string "dem Angriff teilzuhaben.$" - -gMoveDescription_FakeOut: @ 83BF610 - .string "Trifft schon mit dem ersten\n" - .string "Schlag. Verjagt Gegner evtl.$" - -gMoveDescription_Uproar: @ 83BF643 - .string "Erzeugt für 2-5 Züge einen\n" - .string "Aufruhr. Verhindert Schlaf.$" - -gMoveDescription_Stockpile: @ 83BF679 - .string "Lädt Kraft für bis zu 3\n" - .string "Runden auf.$" - -gMoveDescription_SpitUp: @ 83BF69D - .string "Entlädt gehortete Kraft.\n" - .string "Je mehr, desto besser.$" - -gMoveDescription_Swallow: @ 83BF6CE - .string "Absorbiert gehortete\n" - .string "Kraft. Stellt KP wieder her.$" - -gMoveDescription_HeatWave: @ 83BF6F8 - .string "Gegner wird von heißem Atem\n" - .string "getroffen. Verbrennt evtl.$" - -gMoveDescription_Hail: @ 83BF72D - .string "Erzeugt Hagelsturm, der in\n" - .string "jeder Runde trifft.$" - -gMoveDescription_Torment: @ 83BF75A - .string "Quält Gegner u. verhindert\n" - .string "Wdh. eines Angriffs.$" - -gMoveDescription_Flatter: @ 83BF78F - .string "Verwirrt den Gegner, erhöht\n" - .string "aber dessen SPEZ. ANGR.$" - -gMoveDescription_WillOWisp: @ 83BF7B9 - .string "Fügt dem Gegner \n" - .string "Verbrennungen zu.$" - -gMoveDescription_Memento: @ 83BF7E7 - .string "Der Benutzer ist besiegt\n" - .string "und senkt die gegn. Werte.$" - -gMoveDescription_Facade: @ 83BF817 - .string "Erhöht ANGR. nach Verbren-\n" - .string "nung, Paralyse o. Vergift.$" - -gMoveDescription_FocusPunch: @ 83BF84A - .string "Angriff, der später trifft.\n" - .string "Ben. schreckt evtl. zurück.$" - -gMoveDescription_SmellingSalt: @ 83BF87F - .string "Effektiv geg. paralysierte\n" - .string "Gegner. Heilt sie aber auch.$" - -gMoveDescription_FollowMe: @ 83BF8B5 - .string "Zieht Aufmerksamkeit an.\n" - .string "Gegner greift nur Anw. an.$" - -gMoveDescription_NaturePower: @ 83BF8E8 - .string "Die Elementklasse des\n" - .string "Angriffs hängt vom Ort ab.$" - -gMoveDescription_Charge: @ 83BF91D - .string "Lädt Energie für den kom-\n" - .string "menden Elektro-Angr. auf.$" - -gMoveDescription_Taunt: @ 83BF951 - .string "Legt den Gegner rein. Er\n" - .string "benutzt nur noch Angriffe.$" - -gMoveDescription_HelpingHand: @ 83BF97E - .string "Steigert die Kraft der An-\n" - .string "griffe des Getroffenen.$" - -gMoveDescription_Trick: @ 83BF9A9 - .string "Betrügt beim Handel\n" - .string "mit Gegenständen.$" - -gMoveDescription_RolePlay: @ 83BF9D1 - .string "Parodiert Gegner u. kopiert\n" - .string "seine Spezialfähigkeiten.$" - -gMoveDescription_Wish: @ 83BFA03 - .string "Ein Wunsch, der KP auffüllt.\n" - .string "Die Erfüllung braucht Zeit.$" - -gMoveDescription_Assist: @ 83BFA33 - .string "Greift zufällig mit einem\n" - .string "Angriff d. Partners an.$" - -gMoveDescription_Ingrain: @ 83BFA65 - .string "Verwurzelung füllt KP auf.\n" - .string "Austausch unmöglich.$" - -gMoveDescription_Superpower: @ 83BFA9C - .string "Steigert Stärke deutlich,\n" - .string "senkt aber Status-Werte.$" - -gMoveDescription_MagicCoat: @ 83BFACB - .string "Gibt Spezialeffekte zurück\n" - .string "an Benutzer.$" - -gMoveDescription_Recycle: @ 83BFAFA - .string "Recycling eines\n" - .string "verwendeten Items.$" - -gMoveDescription_Revenge: @ 83BFB21 - .string "Attacke wird stärker, wenn\n" - .string "Anwender Schaden nimmt.$" - -gMoveDescription_BrickBreak: @ 83BFB53 - .string "Durchbricht Barrieren und\n" - .string "verursacht Schaden.$" - -gMoveDescription_Yawn: @ 83BFB88 - .string "Gegner gähnt und schläft\n" - .string "in der nächsten Runde ein.$" - -gMoveDescription_KnockOff: @ 83BFBBD - .string "Schlägt Gegner Item weg.\n" - .string "Vereitelt so den Gebrauch.$" - -gMoveDescription_Endeavor: @ 83BFBF1 - .string "Wird stärker, wenn Anw.-KP\n" - .string "geringer als Gegner-KP ist.$" - -gMoveDescription_Eruption: @ 83BFC2A - .string "Je höher KP des Benutzers,\n" - .string "desto mehr Schaden.$" - -gMoveDescription_SkillSwap: @ 83BFC5C - .string "Anw. tauscht Spezial-\n" - .string "fähigkeit mit POKéMON.$" - -gMoveDescription_Imprison: @ 83BFC8E - .string "Hindert Gegner an Atta-\n" - .string "cken, die d. Benutzer kennt.$" - -gMoveDescription_Refresh: @ 83BFCC0 - .string "Kuriert Vergiftungen, Para-\n" - .string "lyse und Verbrennung.$" - -gMoveDescription_Grudge: @ 83BFCE7 - .string "Wenn Anw. bes., werden AP\n" - .string "der Finalattacke gelöscht.$" - -gMoveDescription_Snatch: @ 83BFD1D - .string "Immunität geg. den Effekt\n" - .string "d. nächsten gegn. Angriffs.$" - -gMoveDescription_SecretPower: @ 83BFD4F - .string "Angriff, dessen Auswirkung\n" - .string "abhängig vom Ort ist.$" - -gMoveDescription_Dive: @ 83BFD7D - .string "Taucht in der 1. Runde\n" - .string "unter u. trifft in der 2.$" - -gMoveDescription_ArmThrust: @ 83BFDB4 - .string "Schläge mit geradem Arm, die\n" - .string "Gegner 2 - 5-mal treffen.$" - -gMoveDescription_Camouflage: @ 83BFDEB - .string "Die Elementklasse des\n" - .string "POKéMON hängt vom Ort ab.$" - -gMoveDescription_TailGlow: @ 83BFE20 - .string "Ein blinkendes Licht. SPEZ.\n" - .string "ANGR. wird deutlich erhöht.$" - -gMoveDescription_LusterPurge: @ 83BFE4D - .string "Angriff mit grellem Licht.\n" - .string "Senkt evtl. SPEZ. VERT.$" - -gMoveDescription_MistBall: @ 83BFE7F - .string "Angriff m. Daunengestöber,\n" - .string "Senkt evtl. SPEZ. ANGR.$" - -gMoveDescription_FeatherDance: @ 83BFEB1 - .string "Hüllt Gegner in Daunen und\n" - .string "senkt ANGR.-Wert deutlich.$" - -gMoveDescription_TeeterDance: @ 83BFEE6 - .string "Verwirrt alle POKéMON im \n" - .string "Kampf.$" - -gMoveDescription_BlazeKick: @ 83BFF09 - .string "Hohe Volltrefferquote. Ver-\n" - .string "ursacht evtl. Verbrennung.$" - -gMoveDescription_MudSport: @ 83BFF43 - .string "Bedeckt Anw. mit Lehm u. er-\n" - .string "höht Schutz geg. Elek.-Att.$" - -gMoveDescription_IceBall: @ 83BFF7A - .string "Angriff für 5 Runden. \n" - .string "Stärker, wenn Treffer.$" - -gMoveDescription_NeedleArm: @ 83BFFAF - .string "Angriff mit dornigen Armen. \n" - .string "Geg. schreckt evtl. zurück.$" - -gMoveDescription_SlackOff: @ 83BFFDE - .string "Durch Müßiggang wird die\n" - .string "Hälfte d. max. KP aufgefüllt.$" - -gMoveDescription_HyperVoice: @ 83C000B - .string "Laute Attacke mit Schall-\n" - .string "wellen.$" - -gMoveDescription_PoisonFang: @ 83C003A - .string "Angriff mit Reißzähnen. \n" - .string "Gegner wird evtl. vergiftet.$" - -gMoveDescription_CrushClaw: @ 83C006B - .string "Angriff mit scharfen Klau-\n" - .string "en. Senkt evtl. VERT.-Wert.$" - -gMoveDescription_BlastBurn: @ 83C00A1 - .string "Starker Angriff. Angreifer\n" - .string "muss eine Runde aussetzen.$" - -gMoveDescription_HydroCannon: @ 83C00D7 - .string "Starker Angriff. Angreifer\n" - .string "muss eine Runde aussetzen.$" - -gMoveDescription_MeteorMash: @ 83C010D - .string "Ein Schlag wie ein Meteor.\n" - .string "Erhöht evtl. ANGR.-Wert.$" - -gMoveDescription_Astonish: @ 83C013A - .string "Angriff, der Gegner evtl.\n" - .string "zurückschrecken lässt.$" - -gMoveDescription_WeatherBall: @ 83C016B - .string "Elementkl. u. Stärke der At-\n" - .string "tacke sind wetterabhängig.$" - -gMoveDescription_Aromatherapy: @ 83C019E - .string "Heilt alle Status-Probleme\n" - .string "mit beruhigendem Duft.$" - -gMoveDescription_FakeTears: @ 83C01CF - .string "Täuscht Weinen vor, um\n" - .string "gegn. SPEZ. VERT. zu senken.$" - -gMoveDescription_AirCutter: @ 83C0201 - .string "Greift mit heftigem Wind an.\n" - .string "Hohe Volltrefferquote.$" - -gMoveDescription_Overheat: @ 83C0235 - .string "Angriff mit voller Kraft.\n" - .string "SPEZ. ANGR. sinkt deutlich.$" - -gMoveDescription_OdorSleuth: @ 83C026D - .string "Hindert Gegner daran, ihren\n" - .string "Fluchtwert zu erhöhen.$" - -gMoveDescription_RockTomb: @ 83C02A0 - .string "Hält den Feind mit Steinen\n" - .string "auf u. senkt INIT.-Wert.$" - -gMoveDescription_SilverWind: @ 83C02D5 - .string "Pulver-Attacke, die evtl.\n" - .string "die Werte erhöht.$" - -gMoveDescription_MetalSound: @ 83C0300 - .string "Stößt einen spitzen Schrei\n" - .string "aus. Senkt SPEZ. VERT.$" - -gMoveDescription_GrassWhistle: @ 83C0336 - .string "Versetzt Gegner mit schö-\n" - .string "ner Melodie in den Schlaf.$" - -gMoveDescription_Tickle: @ 83C0367 - .string "Bringt Gegner zum Lachen.\n" - .string "ANGR. u. VERT. sinken.$" - -gMoveDescription_CosmicPower: @ 83C0398 - .string "Erhöht VERT. u. SPEZ. VERT.\n" - .string "durch mystische Kraft.$" - -gMoveDescription_WaterSpout: @ 83C03C8 - .string "Ist wirkungsvoller, wenn KP\n" - .string "des Benutzers hoch sind.$" - -gMoveDescription_SignalBeam: @ 83C03F7 - .string "Seltsame Strahlenattacke.\n" - .string "Verwirrt evtl. den Gegner.$" - -gMoveDescription_ShadowPunch: @ 83C0427 - .string "Schattenhieb. Ausweichen\n" - .string "unmöglich.$" - -gMoveDescription_Extrasensory: @ 83C0459 - .string "Besonderer Angriff. Gegner\n" - .string "schreckt evtl. zurück.$" - -gMoveDescription_SkyUppercut: @ 83C048D - .string "Kinnhaken, als würde man in\n" - .string "die Luft springen.$" - -gMoveDescription_SandTomb: @ 83C04BC - .string "Gegner leidet für 2-5\n" - .string "Runden in Sandhose.$" - -gMoveDescription_SheerCold: @ 83C04F3 - .string "Eis-Attacke. Besiegt den\n" - .string "Gegner, wenn sie trifft.$" - -gMoveDescription_MuddyWater: @ 83C0526 - .string "Greift mit Matsch an und\n" - .string "senkt evtl. Genauigkeit.$" - -gMoveDescription_BulletSeed: @ 83C0554 - .string "Verschießt 2 bis 5 Samen\n" - .string "gleichzeitig auf Gegner.$" - -gMoveDescription_AerialAce: @ 83C0584 - .string "Eine extrem schnelle und\n" - .string "unausweichbare Attacke.$" - -gMoveDescription_IcicleSpear: @ 83C05B0 - .string "Feuert 2-5 Eiszapfen auf\n" - .string "den Gegner.$" - -gMoveDescription_IronDefense: @ 83C05E3 - .string "Stärkt den Körper.\n" - .string "Erhöht VERT.-Wert deutlich.$" - -gMoveDescription_Block: @ 83C0618 - .string "Versperrt den Fluchtweg\n" - .string "des Gegners.$" - -gMoveDescription_Howl: @ 83C0640 - .string "Jault, um in sich zu gehen.\n" - .string "Erhöht ANGR.-Wert.$" - -gMoveDescription_DragonClaw: @ 83C066D - .string "Der Gegner wird mit\n" - .string "scharfen Klauen verletzt.$" - -gMoveDescription_FrenzyPlant: @ 83C068F - .string "Starker Angriff. Angreifer\n" - .string "muss eine Runde aussetzen.$" - -gMoveDescription_BulkUp: @ 83C06C5 - .string "Pumpt den Körper auf. ANGR.\n" - .string "u. VERT. werden erhöht.$" - -gMoveDescription_Bounce: @ 83C06F9 - .string "Springt hoch u. landet in\n" - .string "nächstem Zug. Evtl. Para.$" - -gMoveDescription_MudShot: @ 83C072C - .string "Bewirft den Gegner mit Lehm\n" - .string "und senkt INIT.-Wert.$" - -gMoveDescription_PoisonTail: @ 83C0754 - .string "Hohe Volltrefferquote.\n" - .string "Gegner evtl. vergiftet.$" - -gMoveDescription_Covet: @ 83C0784 - .string "Bittet charmant um das ge-\n" - .string "haltene Item des Gegners.$" - -gMoveDescription_VoltTackle: @ 83C07B3 - .string "Lebensgefährliche Attacke,\n" - .string "leichte Selbstschädigung.$" - -gMoveDescription_MagicalLeaf: @ 83C07E7 - .string "Magischer Blattangriff.\n" - .string "Ausweichen unmöglich.$" - -gMoveDescription_WaterSport: @ 83C081A - .string "Benutzer wird nass, so dass\n" - .string "er Feuer besser standhält.$" - -gMoveDescription_CalmMind: @ 83C084F - .string "Erhöht SPEZ. ANGR. u. SPEZ.\n" - .string "VERT. durch Konzentration.$" - -gMoveDescription_LeafBlade: @ 83C0880 - .string "Hieb mit scharfkantigem\n" - .string "Blatt. Hohe Volltrefferqu.$" - -gMoveDescription_DragonDance: @ 83C08B4 - .string "Ein mystischer Tanz, der\n" - .string "ANGR.- u. INIT.-Wert erhöht.$" - -gMoveDescription_RockBlast: @ 83C08E0 - .string "Wirft 2 - 5-mal in Folge\n" - .string "Felsblöcke auf den Gegner.$" - -gMoveDescription_ShockWave: @ 83C0911 - .string "Schnelle Elektro-Attacke\n" - .string "mit Treffergarantie.$" - -gMoveDescription_WaterPulse: @ 83C0939 - .string "Ultraschallwellen, die den\n" - .string "Gegner verwirren können.$" - -gMoveDescription_DoomDesire: @ 83C096C - .string "Speichert Sonnenenergie.\n" - .string "Angriff 2 Runden später.$" - -gMoveDescription_PsychoBoost: @ 83C099D - .string "Angriff mit voller Kraft.\n" - .string "SPEZ. ANGR. sinkt deutlich.$" - - .align 2 -gMoveDescriptions:: @ 83C09D8 - .4byte gMoveDescription_Pound - .4byte gMoveDescription_KarateChop - .4byte gMoveDescription_DoubleSlap - .4byte gMoveDescription_CometPunch - .4byte gMoveDescription_MegaPunch - .4byte gMoveDescription_PayDay - .4byte gMoveDescription_FirePunch - .4byte gMoveDescription_IcePunch - .4byte gMoveDescription_ThunderPunch - .4byte gMoveDescription_Scratch - .4byte gMoveDescription_ViceGrip - .4byte gMoveDescription_Guillotine - .4byte gMoveDescription_RazorWind - .4byte gMoveDescription_SwordsDance - .4byte gMoveDescription_Cut - .4byte gMoveDescription_Gust - .4byte gMoveDescription_WingAttack - .4byte gMoveDescription_Whirlwind - .4byte gMoveDescription_Fly - .4byte gMoveDescription_Bind - .4byte gMoveDescription_Slam - .4byte gMoveDescription_VineWhip - .4byte gMoveDescription_Stomp - .4byte gMoveDescription_DoubleKick - .4byte gMoveDescription_MegaKick - .4byte gMoveDescription_JumpKick - .4byte gMoveDescription_RollingKick - .4byte gMoveDescription_SandAttack - .4byte gMoveDescription_Headbutt - .4byte gMoveDescription_HornAttack - .4byte gMoveDescription_FuryAttack - .4byte gMoveDescription_HornDrill - .4byte gMoveDescription_Tackle - .4byte gMoveDescription_BodySlam - .4byte gMoveDescription_Wrap - .4byte gMoveDescription_TakeDown - .4byte gMoveDescription_Thrash - .4byte gMoveDescription_DoubleEdge - .4byte gMoveDescription_TailWhip - .4byte gMoveDescription_PoisonSting - .4byte gMoveDescription_Twineedle - .4byte gMoveDescription_PinMissile - .4byte gMoveDescription_Leer - .4byte gMoveDescription_Bite - .4byte gMoveDescription_Growl - .4byte gMoveDescription_Roar - .4byte gMoveDescription_Sing - .4byte gMoveDescription_Supersonic - .4byte gMoveDescription_SonicBoom - .4byte gMoveDescription_Disable - .4byte gMoveDescription_Acid - .4byte gMoveDescription_Ember - .4byte gMoveDescription_Flamethrower - .4byte gMoveDescription_Mist - .4byte gMoveDescription_WaterGun - .4byte gMoveDescription_HydroPump - .4byte gMoveDescription_Surf - .4byte gMoveDescription_IceBeam - .4byte gMoveDescription_Blizzard - .4byte gMoveDescription_Psybeam - .4byte gMoveDescription_BubbleBeam - .4byte gMoveDescription_AuroraBeam - .4byte gMoveDescription_HyperBeam - .4byte gMoveDescription_Peck - .4byte gMoveDescription_DrillPeck - .4byte gMoveDescription_Submission - .4byte gMoveDescription_LowKick - .4byte gMoveDescription_Counter - .4byte gMoveDescription_SeismicToss - .4byte gMoveDescription_Strength - .4byte gMoveDescription_Absorb - .4byte gMoveDescription_MegaDrain - .4byte gMoveDescription_LeechSeed - .4byte gMoveDescription_Growth - .4byte gMoveDescription_RazorLeaf - .4byte gMoveDescription_SolarBeam - .4byte gMoveDescription_PoisonPowder - .4byte gMoveDescription_StunSpore - .4byte gMoveDescription_SleepPowder - .4byte gMoveDescription_PetalDance - .4byte gMoveDescription_StringShot - .4byte gMoveDescription_DragonRage - .4byte gMoveDescription_FireSpin - .4byte gMoveDescription_ThunderShock - .4byte gMoveDescription_Thunderbolt - .4byte gMoveDescription_ThunderWave - .4byte gMoveDescription_Thunder - .4byte gMoveDescription_RockThrow - .4byte gMoveDescription_Earthquake - .4byte gMoveDescription_Fissure - .4byte gMoveDescription_Dig - .4byte gMoveDescription_Toxic - .4byte gMoveDescription_Confusion - .4byte gMoveDescription_Psychic - .4byte gMoveDescription_Hypnosis - .4byte gMoveDescription_Meditate - .4byte gMoveDescription_Agility - .4byte gMoveDescription_QuickAttack - .4byte gMoveDescription_Rage - .4byte gMoveDescription_Teleport - .4byte gMoveDescription_NightShade - .4byte gMoveDescription_Mimic - .4byte gMoveDescription_Screech - .4byte gMoveDescription_DoubleTeam - .4byte gMoveDescription_Recover - .4byte gMoveDescription_Harden - .4byte gMoveDescription_Minimize - .4byte gMoveDescription_Smokescreen - .4byte gMoveDescription_ConfuseRay - .4byte gMoveDescription_Withdraw - .4byte gMoveDescription_DefenseCurl - .4byte gMoveDescription_Barrier - .4byte gMoveDescription_LightScreen - .4byte gMoveDescription_Haze - .4byte gMoveDescription_Reflect - .4byte gMoveDescription_FocusEnergy - .4byte gMoveDescription_Bide - .4byte gMoveDescription_Metronome - .4byte gMoveDescription_MirrorMove - .4byte gMoveDescription_SelfDestruct - .4byte gMoveDescription_EggBomb - .4byte gMoveDescription_Lick - .4byte gMoveDescription_Smog - .4byte gMoveDescription_Sludge - .4byte gMoveDescription_BoneClub - .4byte gMoveDescription_FireBlast - .4byte gMoveDescription_Waterfall - .4byte gMoveDescription_Clamp - .4byte gMoveDescription_Swift - .4byte gMoveDescription_SkullBash - .4byte gMoveDescription_SpikeCannon - .4byte gMoveDescription_Constrict - .4byte gMoveDescription_Amnesia - .4byte gMoveDescription_Kinesis - .4byte gMoveDescription_SoftBoiled - .4byte gMoveDescription_HiJumpKick - .4byte gMoveDescription_Glare - .4byte gMoveDescription_DreamEater - .4byte gMoveDescription_PoisonGas - .4byte gMoveDescription_Barrage - .4byte gMoveDescription_LeechLife - .4byte gMoveDescription_LovelyKiss - .4byte gMoveDescription_SkyAttack - .4byte gMoveDescription_Transform - .4byte gMoveDescription_Bubble - .4byte gMoveDescription_DizzyPunch - .4byte gMoveDescription_Spore - .4byte gMoveDescription_Flash - .4byte gMoveDescription_Psywave - .4byte gMoveDescription_Splash - .4byte gMoveDescription_AcidArmor - .4byte gMoveDescription_Crabhammer - .4byte gMoveDescription_Explosion - .4byte gMoveDescription_FurySwipes - .4byte gMoveDescription_Bonemerang - .4byte gMoveDescription_Rest - .4byte gMoveDescription_RockSlide - .4byte gMoveDescription_HyperFang - .4byte gMoveDescription_Sharpen - .4byte gMoveDescription_Conversion - .4byte gMoveDescription_TriAttack - .4byte gMoveDescription_SuperFang - .4byte gMoveDescription_Slash - .4byte gMoveDescription_Substitute - .4byte gMoveDescription_Struggle - .4byte gMoveDescription_Sketch - .4byte gMoveDescription_TripleKick - .4byte gMoveDescription_Thief - .4byte gMoveDescription_SpiderWeb - .4byte gMoveDescription_MindReader - .4byte gMoveDescription_Nightmare - .4byte gMoveDescription_FlameWheel - .4byte gMoveDescription_Snore - .4byte gMoveDescription_Curse - .4byte gMoveDescription_Flail - .4byte gMoveDescription_Conversion2 - .4byte gMoveDescription_Aeroblast - .4byte gMoveDescription_CottonSpore - .4byte gMoveDescription_Reversal - .4byte gMoveDescription_Spite - .4byte gMoveDescription_PowderSnow - .4byte gMoveDescription_Protect - .4byte gMoveDescription_MachPunch - .4byte gMoveDescription_ScaryFace - .4byte gMoveDescription_FaintAttack - .4byte gMoveDescription_SweetKiss - .4byte gMoveDescription_BellyDrum - .4byte gMoveDescription_SludgeBomb - .4byte gMoveDescription_MudSlap - .4byte gMoveDescription_Octazooka - .4byte gMoveDescription_Spikes - .4byte gMoveDescription_ZapCannon - .4byte gMoveDescription_Foresight - .4byte gMoveDescription_DestinyBond - .4byte gMoveDescription_PerishSong - .4byte gMoveDescription_IcyWind - .4byte gMoveDescription_Detect - .4byte gMoveDescription_BoneRush - .4byte gMoveDescription_LockOn - .4byte gMoveDescription_Outrage - .4byte gMoveDescription_Sandstorm - .4byte gMoveDescription_GigaDrain - .4byte gMoveDescription_Endure - .4byte gMoveDescription_Charm - .4byte gMoveDescription_Rollout - .4byte gMoveDescription_FalseSwipe - .4byte gMoveDescription_Swagger - .4byte gMoveDescription_MilkDrink - .4byte gMoveDescription_Spark - .4byte gMoveDescription_FuryCutter - .4byte gMoveDescription_SteelWing - .4byte gMoveDescription_MeanLook - .4byte gMoveDescription_Attract - .4byte gMoveDescription_SleepTalk - .4byte gMoveDescription_HealBell - .4byte gMoveDescription_Return - .4byte gMoveDescription_Present - .4byte gMoveDescription_Frustration - .4byte gMoveDescription_Safeguard - .4byte gMoveDescription_PainSplit - .4byte gMoveDescription_SacredFire - .4byte gMoveDescription_Magnitude - .4byte gMoveDescription_DynamicPunch - .4byte gMoveDescription_Megahorn - .4byte gMoveDescription_DragonBreath - .4byte gMoveDescription_BatonPass - .4byte gMoveDescription_Encore - .4byte gMoveDescription_Pursuit - .4byte gMoveDescription_RapidSpin - .4byte gMoveDescription_SweetScent - .4byte gMoveDescription_IronTail - .4byte gMoveDescription_MetalClaw - .4byte gMoveDescription_VitalThrow - .4byte gMoveDescription_MorningSun - .4byte gMoveDescription_Synthesis - .4byte gMoveDescription_Moonlight - .4byte gMoveDescription_HiddenPower - .4byte gMoveDescription_CrossChop - .4byte gMoveDescription_Twister - .4byte gMoveDescription_RainDance - .4byte gMoveDescription_SunnyDay - .4byte gMoveDescription_Crunch - .4byte gMoveDescription_MirrorCoat - .4byte gMoveDescription_PsychUp - .4byte gMoveDescription_ExtremeSpeed - .4byte gMoveDescription_AncientPower - .4byte gMoveDescription_ShadowBall - .4byte gMoveDescription_FutureSight - .4byte gMoveDescription_RockSmash - .4byte gMoveDescription_Whirlpool - .4byte gMoveDescription_BeatUp - .4byte gMoveDescription_FakeOut - .4byte gMoveDescription_Uproar - .4byte gMoveDescription_Stockpile - .4byte gMoveDescription_SpitUp - .4byte gMoveDescription_Swallow - .4byte gMoveDescription_HeatWave - .4byte gMoveDescription_Hail - .4byte gMoveDescription_Torment - .4byte gMoveDescription_Flatter - .4byte gMoveDescription_WillOWisp - .4byte gMoveDescription_Memento - .4byte gMoveDescription_Facade - .4byte gMoveDescription_FocusPunch - .4byte gMoveDescription_SmellingSalt - .4byte gMoveDescription_FollowMe - .4byte gMoveDescription_NaturePower - .4byte gMoveDescription_Charge - .4byte gMoveDescription_Taunt - .4byte gMoveDescription_HelpingHand - .4byte gMoveDescription_Trick - .4byte gMoveDescription_RolePlay - .4byte gMoveDescription_Wish - .4byte gMoveDescription_Assist - .4byte gMoveDescription_Ingrain - .4byte gMoveDescription_Superpower - .4byte gMoveDescription_MagicCoat - .4byte gMoveDescription_Recycle - .4byte gMoveDescription_Revenge - .4byte gMoveDescription_BrickBreak - .4byte gMoveDescription_Yawn - .4byte gMoveDescription_KnockOff - .4byte gMoveDescription_Endeavor - .4byte gMoveDescription_Eruption - .4byte gMoveDescription_SkillSwap - .4byte gMoveDescription_Imprison - .4byte gMoveDescription_Refresh - .4byte gMoveDescription_Grudge - .4byte gMoveDescription_Snatch - .4byte gMoveDescription_SecretPower - .4byte gMoveDescription_Dive - .4byte gMoveDescription_ArmThrust - .4byte gMoveDescription_Camouflage - .4byte gMoveDescription_TailGlow - .4byte gMoveDescription_LusterPurge - .4byte gMoveDescription_MistBall - .4byte gMoveDescription_FeatherDance - .4byte gMoveDescription_TeeterDance - .4byte gMoveDescription_BlazeKick - .4byte gMoveDescription_MudSport - .4byte gMoveDescription_IceBall - .4byte gMoveDescription_NeedleArm - .4byte gMoveDescription_SlackOff - .4byte gMoveDescription_HyperVoice - .4byte gMoveDescription_PoisonFang - .4byte gMoveDescription_CrushClaw - .4byte gMoveDescription_BlastBurn - .4byte gMoveDescription_HydroCannon - .4byte gMoveDescription_MeteorMash - .4byte gMoveDescription_Astonish - .4byte gMoveDescription_WeatherBall - .4byte gMoveDescription_Aromatherapy - .4byte gMoveDescription_FakeTears - .4byte gMoveDescription_AirCutter - .4byte gMoveDescription_Overheat - .4byte gMoveDescription_OdorSleuth - .4byte gMoveDescription_RockTomb - .4byte gMoveDescription_SilverWind - .4byte gMoveDescription_MetalSound - .4byte gMoveDescription_GrassWhistle - .4byte gMoveDescription_Tickle - .4byte gMoveDescription_CosmicPower - .4byte gMoveDescription_WaterSpout - .4byte gMoveDescription_SignalBeam - .4byte gMoveDescription_ShadowPunch - .4byte gMoveDescription_Extrasensory - .4byte gMoveDescription_SkyUppercut - .4byte gMoveDescription_SandTomb - .4byte gMoveDescription_SheerCold - .4byte gMoveDescription_MuddyWater - .4byte gMoveDescription_BulletSeed - .4byte gMoveDescription_AerialAce - .4byte gMoveDescription_IcicleSpear - .4byte gMoveDescription_IronDefense - .4byte gMoveDescription_Block - .4byte gMoveDescription_Howl - .4byte gMoveDescription_DragonClaw - .4byte gMoveDescription_FrenzyPlant - .4byte gMoveDescription_BulkUp - .4byte gMoveDescription_Bounce - .4byte gMoveDescription_MudShot - .4byte gMoveDescription_PoisonTail - .4byte gMoveDescription_Covet - .4byte gMoveDescription_VoltTackle - .4byte gMoveDescription_MagicalLeaf - .4byte gMoveDescription_WaterSport - .4byte gMoveDescription_CalmMind - .4byte gMoveDescription_LeafBlade - .4byte gMoveDescription_DragonDance - .4byte gMoveDescription_RockBlast - .4byte gMoveDescription_ShockWave - .4byte gMoveDescription_WaterPulse - .4byte gMoveDescription_DoomDesire - .4byte gMoveDescription_PsychoBoost diff --git a/data-de/text/nature_names.inc b/data-de/text/nature_names.inc deleted file mode 100644 index 78c49a14d..000000000 --- a/data-de/text/nature_names.inc +++ /dev/null @@ -1,102 +0,0 @@ -gNatureName_Hardy: @ 83C0F60 - .string "ROBUST$" - -gNatureName_Lonely: @ 83C0F66 - .string "SOLO$" - -gNatureName_Brave: @ 83C0F6D - .string "MUTIG$" - -gNatureName_Adamant: @ 83C0F73 - .string "HART$" - -gNatureName_Naughty: @ 83C0F7B - .string "FRECH$" - -gNatureName_Bold: @ 83C0F83 - .string "KÜHN$" - -gNatureName_Docile: @ 83C0F88 - .string "SANFT$" - -gNatureName_Relaxed: @ 83C0F8F - .string "LOCKER$" - -gNatureName_Impish: @ 83C0F97 - .string "PFIFFIG$" - -gNatureName_Lax: @ 83C0F9E - .string "LASCH$" - -gNatureName_Timid: @ 83C0FA2 - .string "SCHEU$" - -gNatureName_Hasty: @ 83C0FA8 - .string "HASTIG$" - -gNatureName_Serious: @ 83C0FAE - .string "ERNST$" - -gNatureName_Jolly: @ 83C0FB6 - .string "FROH$" - -gNatureName_Naive: @ 83C0FBC - .string "NAIV$" - -gNatureName_Modest: @ 83C0FC2 - .string "MÄSSIG$" - -gNatureName_Mild: @ 83C0FC9 - .string "MILD$" - -gNatureName_Quiet: @ 83C0FCE - .string "RUHIG$" - -gNatureName_Bashful: @ 83C0FD4 - .string "ZAGHAFT$" - -gNatureName_Rash: @ 83C0FDC - .string "HITZIG$" - -gNatureName_Calm: @ 83C0FE1 - .string "STILL$" - -gNatureName_Gentle: @ 83C0FE6 - .string "ZART$" - -gNatureName_Sassy: @ 83C0FED - .string "FORSCH$" - -gNatureName_Careful: @ 83C0FF3 - .string "SACHT$" - -gNatureName_Quirky: @ 83C0FFB - .string "KAUZIG$" - - .align 2 -gNatureNames:: @ 83C1004 - .4byte gNatureName_Hardy - .4byte gNatureName_Lonely - .4byte gNatureName_Brave - .4byte gNatureName_Adamant - .4byte gNatureName_Naughty - .4byte gNatureName_Bold - .4byte gNatureName_Docile - .4byte gNatureName_Relaxed - .4byte gNatureName_Impish - .4byte gNatureName_Lax - .4byte gNatureName_Timid - .4byte gNatureName_Hasty - .4byte gNatureName_Serious - .4byte gNatureName_Jolly - .4byte gNatureName_Naive - .4byte gNatureName_Modest - .4byte gNatureName_Mild - .4byte gNatureName_Quiet - .4byte gNatureName_Bashful - .4byte gNatureName_Rash - .4byte gNatureName_Calm - .4byte gNatureName_Gentle - .4byte gNatureName_Sassy - .4byte gNatureName_Careful - .4byte gNatureName_Quirky diff --git a/data/graphics.s b/data/graphics.s index f1c7c37a3..7792e8a9e 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -3960,6 +3960,9 @@ gUnknown_08E94510:: @ 8E94510 gUnknown_08E94550:: @ 8E94550 .incbin "graphics/unknown/unknown_E94550.bin" +gUnknown_08E94590:: @ 8E94590 + .incbin "graphics/unknown/unknown_E94590.bin" + gUnknown_08E945D0:: @ 8E945D0 .incbin "graphics/interface/wordgroup_layout.bin" diff --git a/data/pokemon_summary_screen.s b/data/pokemon_summary_screen.s deleted file mode 100644 index 5d577ca84..000000000 --- a/data/pokemon_summary_screen.s +++ /dev/null @@ -1,393 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 83BC680 - .include "data/text/move_descriptions.inc" - -@ 83C0F60 - .include "data/text/nature_names.inc" - - .align 2 -gUnknown_083C1068:: @ 83C1068 - .4byte gEmptyString_81E72B0 - .4byte OtherText_PokeInfo - .4byte OtherText_PokeSkills - .4byte OtherText_BattleMoves - .4byte OtherText_ContestMoves - .4byte OtherText_Switch - .4byte OtherText_Info - .4byte gOtherText_CancelNoTerminator - - .align 2 -gSpriteAffineAnim_83C1088:: @ 83C1088 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_83C1098:: @ 83C1098 - .4byte gSpriteAffineAnim_83C1088 - - .align 2 -gOamData_83C109C:: @ 83C109C - .2byte 0x4000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_83C10A4:: @ 83C10A4 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C10AC:: @ 83C10AC - obj_image_anim_frame 8, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C10B4:: @ 83C10B4 - obj_image_anim_frame 16, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C10BC:: @ 83C10BC - obj_image_anim_frame 24, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C10C4:: @ 83C10C4 - obj_image_anim_frame 32, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C10CC:: @ 83C10CC - obj_image_anim_frame 40, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C10D4:: @ 83C10D4 - obj_image_anim_frame 48, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C10DC:: @ 83C10DC - obj_image_anim_frame 56, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C10E4:: @ 83C10E4 - obj_image_anim_frame 64, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C10EC:: @ 83C10EC - obj_image_anim_frame 72, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C10F4:: @ 83C10F4 - obj_image_anim_frame 80, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C10FC:: @ 83C10FC - obj_image_anim_frame 88, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1104:: @ 83C1104 - obj_image_anim_frame 96, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C110C:: @ 83C110C - obj_image_anim_frame 104, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1114:: @ 83C1114 - obj_image_anim_frame 112, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C111C:: @ 83C111C - obj_image_anim_frame 120, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1124:: @ 83C1124 - obj_image_anim_frame 128, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C112C:: @ 83C112C - obj_image_anim_frame 136, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1134:: @ 83C1134 - obj_image_anim_frame 144, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C113C:: @ 83C113C - obj_image_anim_frame 152, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1144:: @ 83C1144 - obj_image_anim_frame 160, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C114C:: @ 83C114C - obj_image_anim_frame 168, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1154:: @ 83C1154 - obj_image_anim_frame 176, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83C115C:: @ 83C115C - .4byte gSpriteAnim_83C10A4 - .4byte gSpriteAnim_83C10AC - .4byte gSpriteAnim_83C10B4 - .4byte gSpriteAnim_83C10BC - .4byte gSpriteAnim_83C10C4 - .4byte gSpriteAnim_83C10CC - .4byte gSpriteAnim_83C10D4 - .4byte gSpriteAnim_83C10DC - .4byte gSpriteAnim_83C10E4 - .4byte gSpriteAnim_83C10EC - .4byte gSpriteAnim_83C10F4 - .4byte gSpriteAnim_83C10FC - .4byte gSpriteAnim_83C1104 - .4byte gSpriteAnim_83C110C - .4byte gSpriteAnim_83C1114 - .4byte gSpriteAnim_83C111C - .4byte gSpriteAnim_83C1124 - .4byte gSpriteAnim_83C112C - .4byte gSpriteAnim_83C1134 - .4byte gSpriteAnim_83C113C - .4byte gSpriteAnim_83C1144 - .4byte gSpriteAnim_83C114C - .4byte gSpriteAnim_83C1154 - - .align 2 -gUnknown_083C11B8:: @ 83C11B8 - obj_tiles gMoveTypes_Gfx, 5888, 0x7532 - - .align 2 -gSpriteTemplate_83C11C0:: @ 83C11C0 - spr_template 30002, 30002, gOamData_83C109C, gSpriteAnimTable_83C115C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_083C11D8:: @ 83C11D8 - .byte 0xD,0xD,0xE,0xE,0xD,0xD,0xF,0xE,0xD,0xF,0xD,0xE,0xF,0xD,0xE,0xE,0xF,0xD,0xD,0xE,0xE,0xF,0xD - - .align 2 -gOamData_83C11F0:: @ 83C11F0 - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_83C11F8:: @ 83C11F8 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1200:: @ 83C1200 - obj_image_anim_frame 4, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1208:: @ 83C1208 - obj_image_anim_frame 8, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1210:: @ 83C1210 - obj_image_anim_frame 12, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1218:: @ 83C1218 - obj_image_anim_frame 16, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1220:: @ 83C1220 - obj_image_anim_frame 16, 0, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1228:: @ 83C1228 - obj_image_anim_frame 20, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1230:: @ 83C1230 - obj_image_anim_frame 24, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1238:: @ 83C1238 - obj_image_anim_frame 24, 0, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_83C1240:: @ 83C1240 - obj_image_anim_frame 28, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83C1248:: @ 83C1248 - .4byte gSpriteAnim_83C11F8 - .4byte gSpriteAnim_83C1200 - .4byte gSpriteAnim_83C1208 - .4byte gSpriteAnim_83C1210 - .4byte gSpriteAnim_83C1218 - .4byte gSpriteAnim_83C1220 - .4byte gSpriteAnim_83C1228 - .4byte gSpriteAnim_83C1230 - .4byte gSpriteAnim_83C1238 - .4byte gSpriteAnim_83C1240 - - .align 2 -gUnknown_083C1270:: @ 83C1270 - obj_tiles gMenuSummaryGfx, 1024, 0x7530 - - .align 2 -gUnknown_083C1278:: @ 83C1278 - obj_pal gMenuSummaryPal, 0x7530 - - .align 2 -gSpriteTemplate_83C1280:: @ 83C1280 - spr_template 30000, 30000, gOamData_83C11F0, gSpriteAnimTable_83C1248, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gOamData_83C1298:: @ 83C1298 - .2byte 0x4000 - .2byte 0x4000 - .2byte 0x0C00 - - .align 2 -gSpriteAnim_83C12A0:: @ 83C12A0 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C12A8:: @ 83C12A8 - obj_image_anim_frame 4, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C12B0:: @ 83C12B0 - obj_image_anim_frame 8, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C12B8:: @ 83C12B8 - obj_image_anim_frame 12, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C12C0:: @ 83C12C0 - obj_image_anim_frame 16, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C12C8:: @ 83C12C8 - obj_image_anim_frame 20, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83C12D0:: @ 83C12D0 - obj_image_anim_frame 24, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83C12D8:: @ 83C12D8 - .4byte gSpriteAnim_83C12A0 - .4byte gSpriteAnim_83C12A8 - .4byte gSpriteAnim_83C12B0 - .4byte gSpriteAnim_83C12B8 - .4byte gSpriteAnim_83C12C0 - .4byte gSpriteAnim_83C12C8 - .4byte gSpriteAnim_83C12D0 - - .align 2 -gUnknown_083C12F4:: @ 83C12F4 - obj_tiles gStatusGfx_Icons, 896, 0x7531 - - .align 2 -gUnknown_083C12FC:: @ 83C12FC - obj_pal gStatusPal_Icons, 0x7531 - - .align 2 -gSpriteTemplate_83C1304:: @ 83C1304 - spr_template 30001, 30001, gOamData_83C1298, gSpriteAnimTable_83C12D8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSummaryScreenMonMarkingsPalette:: @ 83C131C - .incbin "graphics/summary_screen/mon_markings.gbapal" - -.ifdef ENGLISH - .align 2 -gSummaryScreenTextTiles:: @ 83C133C - .incbin "graphics/summary_screen/text.4bpp" -.endif - - .align 2 -gSummaryScreenButtonTiles:: @ 83C147C - .incbin "graphics/summary_screen/buttons.4bpp" - - .align 1 -gUnknown_083C157C:: @ 83C157C - .2byte 0x5F5A @ palette color - - .align 1 -gUnknown_083C157E:: @ 83C157E - .2byte 0x6FDE @ palette color - - .align 2 -gUnknown_083C1580:: @ 83C1580 - .4byte sub_809FC0C - .4byte sub_809FEB8 - - .align 2 -gUnknown_083C1588:: @ 83C1588 - .4byte sub_809F63C - .4byte sub_809F650 - .4byte sub_809F664 - .4byte sub_809F664 - - .align 2 -gUnknown_083C1598:: @ 83C1598 - .4byte sub_809FE6C - .4byte sub_80A0090 - .4byte sub_80A015C - .4byte sub_80A015C - -gUnknown_083C15A8:: @ 83C15A8 - .byte 0, 2, 3, 1, 4, 5 - -gUnknown_083C15AE:: @ 83C15AE - .string "{STR_VAR_1}{CLEAR_TO 64}$" - -gUnknown_083C15B4:: @ 83C15B4 - .string "{STR_VAR_1}{CLEAR_TO 72}$" - - .align 2 -gUnknown_083C15BC:: @ 83C15BC - .byte 9, 1, 0, 2 - .byte 10, 3, 0, 4 - .byte 8, 5, 0, 6 - .byte 11, 7, 0, 8 - .byte 14, 9, 0, 10 - .byte 12, 11, 0, 12 - .byte 13, 13, 0, 14 - .byte -1, 15, 0, 10 diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc index 4c4f37fc4..94366cc41 100644 --- a/data/text/contest_strings.inc +++ b/data/text/contest_strings.inc @@ -96,7 +96,7 @@ ContestString_DescStopExcitement: .string "Temporarily stops the\ncrowd from growing excited.$" .align 2 -gUnknown_083CADD4:: @ 83CADD4 +gContestEffectStrings:: @ 83CADD4 .4byte ContestString_DescHighlyAppealing .4byte ContestString_DescStartled1 .4byte ContestString_DescGreatLock diff --git a/data/text/move_descriptions.inc b/data/text/move_descriptions.inc deleted file mode 100644 index 29e325ad7..000000000 --- a/data/text/move_descriptions.inc +++ /dev/null @@ -1,1772 +0,0 @@ -gMoveDescription_Pound: @ 83BC680 - .string "Pounds the foe with\n" - .string "forelegs or tail.$" - -gMoveDescription_KarateChop: @ 83BC6A6 - .string "A chopping attack with a\n" - .string "high critical-hit ratio.$" - -gMoveDescription_DoubleSlap: @ 83BC6D8 - .string "Repeatedly slaps the foe\n" - .string "2 to 5 times.$" - -gMoveDescription_CometPunch: @ 83BC6FF - .string "Repeatedly punches the foe\n" - .string "2 to 5 times.$" - -gMoveDescription_MegaPunch: @ 83BC728 - .string "A strong punch thrown with\n" - .string "incredible power.$" - -gMoveDescription_PayDay: @ 83BC755 - .string "Throws coins at the foe.\n" - .string "Money is recovered after.$" - -gMoveDescription_FirePunch: @ 83BC788 - .string "A fiery punch that may burn\n" - .string "the foe.$" - -gMoveDescription_IcePunch: @ 83BC7AD - .string "An icy punch that may\n" - .string "freeze the foe.$" - -gMoveDescription_ThunderPunch: @ 83BC7D3 - .string "An electrified punch that\n" - .string "may paralyze the foe.$" - -gMoveDescription_Scratch: @ 83BC803 - .string "Scratches the foe with\n" - .string "sharp claws.$" - -gMoveDescription_ViceGrip: @ 83BC827 - .string "Grips the foe with large and\n" - .string "powerful pincers.$" - -gMoveDescription_Guillotine: @ 83BC856 - .string "A powerful pincer attack\n" - .string "that may cause fainting.$" - -gMoveDescription_RazorWind: @ 83BC888 - .string "A 2-turn move that strikes\n" - .string "the foe on the 2nd turn.$" - -gMoveDescription_SwordsDance: @ 83BC8BC - .string "A fighting dance that\n" - .string "sharply raises ATTACK.$" - -gMoveDescription_Cut: @ 83BC8E9 - .string "Cuts the foe with sharp\n" - .string "scythes, claws, etc.$" - -gMoveDescription_Gust: @ 83BC916 - .string "Strikes the foe with a gust\n" - .string "of wind whipped up by wings.$" - -gMoveDescription_WingAttack: @ 83BC94F - .string "Strikes the foe with wings\n" - .string "spread wide.$" - -gMoveDescription_Whirlwind: @ 83BC977 - .string "Blows away the foe with\n" - .string "wind and ends the battle.$" - -gMoveDescription_Fly: @ 83BC9A9 - .string "Flies up on the first turn,\n" - .string "then strikes the next turn.$" - -gMoveDescription_Bind: @ 83BC9E1 - .string "Binds and squeezes the foe\n" - .string "for 2 to 5 turns.$" - -gMoveDescription_Slam: @ 83BCA0E - .string "Slams the foe with a long\n" - .string "tail, vine, etc.$" - -gMoveDescription_VineWhip: @ 83BCA39 - .string "Strikes the foe with\n" - .string "slender, whiplike vines.$" - -gMoveDescription_Stomp: @ 83BCA67 - .string "Stomps the enemy with a big\n" - .string "foot. May cause flinching.$" - -gMoveDescription_DoubleKick: @ 83BCA9E - .string "A double-kicking attack\n" - .string "that strikes the foe twice.$" - -gMoveDescription_MegaKick: @ 83BCAD2 - .string "An extremely powerful kick\n" - .string "with intense force.$" - -gMoveDescription_JumpKick: @ 83BCB01 - .string "A strong jumping kick. May\n" - .string "miss and hurt the kicker.$" - -gMoveDescription_RollingKick: @ 83BCB36 - .string "A fast kick delivered from\n" - .string "a rapid spin.$" - -gMoveDescription_SandAttack: @ 83BCB5F - .string "Reduces the foe’s accuracy\n" - .string "by hurling sand in its face.$" - -gMoveDescription_Headbutt: @ 83BCB97 - .string "A ramming attack that may\n" - .string "cause flinching.$" - -gMoveDescription_HornAttack: @ 83BCBC2 - .string "Jabs the foe with sharp\n" - .string "horns.$" - -gMoveDescription_FuryAttack: @ 83BCBE1 - .string "Jabs the foe 2 to 5 times\n" - .string "with sharp horns, etc.$" - -gMoveDescription_HornDrill: @ 83BCC12 - .string "A one-hit KO attack that\n" - .string "uses a horn like a drill.$" - -gMoveDescription_Tackle: @ 83BCC45 - .string "Charges the foe with a full-\n" - .string "body tackle.$" - -gMoveDescription_BodySlam: @ 83BCC6F - .string "A full-body slam that may\n" - .string "cause paralysis.$" - -gMoveDescription_Wrap: @ 83BCC9A - .string "Wraps and squeezes the foe\n" - .string "2 to 5 times with vines, etc.$" - -gMoveDescription_TakeDown: @ 83BCCD3 - .string "A reckless charge attack\n" - .string "that also hurts the user.$" - -gMoveDescription_Thrash: @ 83BCD06 - .string "A rampage of 2 to 3 turns\n" - .string "that confuses the user.$" - -gMoveDescription_DoubleEdge: @ 83BCD38 - .string "A life-risking tackle that\n" - .string "also hurts the user.$" - -gMoveDescription_TailWhip: @ 83BCD68 - .string "Wags the tail to lower the\n" - .string "foe’s DEFENSE.$" - -gMoveDescription_PoisonSting: @ 83BCD92 - .string "A toxic attack with barbs,\n" - .string "etc., that may poison.$" - -gMoveDescription_Twineedle: @ 83BCDC4 - .string "Stingers on the forelegs\n" - .string "jab the foe twice.$" - -gMoveDescription_PinMissile: @ 83BCDF0 - .string "Sharp pins are fired to\n" - .string "strike 2 to 5 times.$" - -gMoveDescription_Leer: @ 83BCE1D - .string "Frightens the foe with a\n" - .string "leer to lower DEFENSE.$" - -gMoveDescription_Bite: @ 83BCE4D - .string "Bites with vicious fangs.\n" - .string "May cause flinching.$" - -gMoveDescription_Growl: @ 83BCE7C - .string "Growls cutely to reduce the\n" - .string "foe’s ATTACK.$" - -gMoveDescription_Roar: @ 83BCEA6 - .string "Makes the foe flee to end\n" - .string "the battle.$" - -gMoveDescription_Sing: @ 83BCECC - .string "A soothing song lulls the\n" - .string "foe into a deep slumber.$" - -gMoveDescription_Supersonic: @ 83BCEFF - .string "Emits bizarre sound waves\n" - .string "that may confuse the foe.$" - -gMoveDescription_SonicBoom: @ 83BCF33 - .string "Launches shock waves that\n" - .string "always inflict 20 HP damage.$" - -gMoveDescription_Disable: @ 83BCF6A - .string "Psychically disables one of\n" - .string "the foe’s moves.$" - -gMoveDescription_Acid: @ 83BCF97 - .string "Sprays a hide-melting acid.\n" - .string "May lower DEFENSE.$" - -gMoveDescription_Ember: @ 83BCFC6 - .string "A weak fire attack that may\n" - .string "inflict a burn.$" - -gMoveDescription_Flamethrower: @ 83BCFF2 - .string "A powerful fire attack that\n" - .string "may inflict a burn.$" - -gMoveDescription_Mist: @ 83BD022 - .string "Creates a mist that stops\n" - .string "reduction of abilities.$" - -gMoveDescription_WaterGun: @ 83BD054 - .string "Squirts water to attack\n" - .string "the foe.$" - -gMoveDescription_HydroPump: @ 83BD075 - .string "Blasts water at high power\n" - .string "to strike the foe.$" - -gMoveDescription_Surf: @ 83BD0A3 - .string "Creates a huge wave, then\n" - .string "crashes it down on the foe.$" - -gMoveDescription_IceBeam: @ 83BD0D9 - .string "Blasts the foe with an icy\n" - .string "beam that may freeze it.$" - -gMoveDescription_Blizzard: @ 83BD10D - .string "Hits the foe with an icy\n" - .string "storm that may freeze it.$" - -gMoveDescription_Psybeam: @ 83BD140 - .string "Fires a peculiar ray that\n" - .string "may confuse the foe.$" - -gMoveDescription_BubbleBeam: @ 83BD16F - .string "Forcefully sprays bubbles\n" - .string "that may lower SPEED.$" - -gMoveDescription_AuroraBeam: @ 83BD19F - .string "Fires a rainbow-colored\n" - .string "beam that may lower ATTACK.$" - -gMoveDescription_HyperBeam: @ 83BD1D3 - .string "Powerful, but leaves the\n" - .string "user immobile the next turn.$" - -gMoveDescription_Peck: @ 83BD209 - .string "Attacks the foe with a\n" - .string "jabbing beak, etc.$" - -gMoveDescription_DrillPeck: @ 83BD233 - .string "A corkscrewing attack with\n" - .string "the beak acting as a drill.$" - -gMoveDescription_Submission: @ 83BD26A - .string "A reckless body slam that\n" - .string "also hurts the user.$" - -gMoveDescription_LowKick: @ 83BD299 - .string "A kick that inflicts more\n" - .string "damage on heavier foes.$" - -gMoveDescription_Counter: @ 83BD2CB - .string "Retaliates any physical hit\n" - .string "with double the power.$" - -gMoveDescription_SeismicToss: @ 83BD2FE - .string "Inflicts damage identical\n" - .string "to the user’s level.$" - -gMoveDescription_Strength: @ 83BD32D - .string "Builds enormous power,\n" - .string "then slams the foe.$" - -gMoveDescription_Absorb: @ 83BD358 - .string "An attack that absorbs\n" - .string "half the damage inflicted.$" - -gMoveDescription_MegaDrain: @ 83BD38A - .string "An attack that absorbs\n" - .string "half the damage inflicted.$" - -gMoveDescription_LeechSeed: @ 83BD3BC - .string "Plants a seed on the foe to\n" - .string "steal HP on every turn.$" - -gMoveDescription_Growth: @ 83BD3F0 - .string "Forces the body to grow\n" - .string "and heightens SP. ATK.$" - -gMoveDescription_RazorLeaf: @ 83BD41F - .string "Cuts the enemy with leaves.\n" - .string "High critical-hit ratio.$" - -gMoveDescription_SolarBeam: @ 83BD454 - .string "Absorbs light in one turn,\n" - .string "then attacks next turn.$" - -gMoveDescription_PoisonPowder: @ 83BD487 - .string "Scatters a toxic powder\n" - .string "that may poison the foe.$" - -gMoveDescription_StunSpore: @ 83BD4B8 - .string "Scatters a powder that may\n" - .string "paralyze the foe.$" - -gMoveDescription_SleepPowder: @ 83BD4E5 - .string "Scatters a powder that may\n" - .string "cause the foe to sleep.$" - -gMoveDescription_PetalDance: @ 83BD518 - .string "A rampage of 2 to 3 turns\n" - .string "that confuses the user.$" - -gMoveDescription_StringShot: @ 83BD54A - .string "Binds the foe with string\n" - .string "to reduce its SPEED.$" - -gMoveDescription_DragonRage: @ 83BD579 - .string "Launches shock waves that\n" - .string "always inflict 40 HP damage.$" - -gMoveDescription_FireSpin: @ 83BD5B0 - .string "Traps the foe in a ring of\n" - .string "fire for 2 to 5 turns.$" - -gMoveDescription_ThunderShock: @ 83BD5E2 - .string "An electrical attack that\n" - .string "may paralyze the foe.$" - -gMoveDescription_Thunderbolt: @ 83BD612 - .string "A strong electrical attack\n" - .string "that may paralyze the foe.$" - -gMoveDescription_ThunderWave: @ 83BD648 - .string "A weak jolt of electricity\n" - .string "that paralyzes the foe.$" - -gMoveDescription_Thunder: @ 83BD67B - .string "A lightning attack that may\n" - .string "cause paralysis.$" - -gMoveDescription_RockThrow: @ 83BD6A8 - .string "Throws small rocks to\n" - .string "strike the foe.$" - -gMoveDescription_Earthquake: @ 83BD6CE - .string "A powerful quake, but has\n" - .string "no effect on flying foes.$" - -gMoveDescription_Fissure: @ 83BD702 - .string "A one-hit KO move that\n" - .string "drops the foe in a fissure.$" - -gMoveDescription_Dig: @ 83BD735 - .string "Digs underground the first\n" - .string "turn and strikes next turn.$" - -gMoveDescription_Toxic: @ 83BD76C - .string "Poisons the foe with an\n" - .string "intensifying toxin.$" - -gMoveDescription_Confusion: @ 83BD798 - .string "A psychic attack that may\n" - .string "cause confusion.$" - -gMoveDescription_Psychic: @ 83BD7C3 - .string "A powerful psychic attack\n" - .string "that may lower SP. DEF.$" - -gMoveDescription_Hypnosis: @ 83BD7F5 - .string "A hypnotizing move that\n" - .string "may induce sleep.$" - -gMoveDescription_Meditate: @ 83BD81F - .string "Meditates in a peaceful\n" - .string "fashion to raise ATTACK.$" - -gMoveDescription_Agility: @ 83BD850 - .string "Relaxes the body to sharply\n" - .string "boost SPEED.$" - -gMoveDescription_QuickAttack: @ 83BD879 - .string "An extremely fast attack\n" - .string "that always strikes first.$" - -gMoveDescription_Rage: @ 83BD8AD - .string "Raises the user’s ATTACK\n" - .string "every time it is hit.$" - -gMoveDescription_Teleport: @ 83BD8DC - .string "A psychic move for fleeing\n" - .string "from battle instantly.$" - -gMoveDescription_NightShade: @ 83BD90E - .string "Inflicts damage identical\n" - .string "to the user’s level.$" - -gMoveDescription_Mimic: @ 83BD93D - .string "Copies a move used by the\n" - .string "foe during one battle.$" - -gMoveDescription_Screech: @ 83BD96E - .string "Emits a screech to sharply\n" - .string "reduce the foe’s DEFENSE.$" - -gMoveDescription_DoubleTeam: @ 83BD9A3 - .string "Creates illusory copies to\n" - .string "raise evasiveness.$" - -gMoveDescription_Recover: @ 83BD9D1 - .string "Recovers up to half the\n" - .string "user’s maximum HP.$" - -gMoveDescription_Harden: @ 83BD9FC - .string "Stiffens the body’s \n" - .string "muscles to raise DEFENSE.$" - -gMoveDescription_Minimize: @ 83BDA2B - .string "Minimizes the user’s size\n" - .string "to raise evasiveness.$" - -gMoveDescription_Smokescreen: @ 83BDA5B - .string "Lowers the foe’s accuracy\n" - .string "using smoke, ink, etc.$" - -gMoveDescription_ConfuseRay: @ 83BDA8C - .string "A sinister ray that\n" - .string "confuses the foe.$" - -gMoveDescription_Withdraw: @ 83BDAB2 - .string "Withdraws the body into its\n" - .string "hard shell to raise DEFENSE.$" - -gMoveDescription_DefenseCurl: @ 83BDAEB - .string "Curls up to conceal weak\n" - .string "spots and raise DEFENSE.$" - -gMoveDescription_Barrier: @ 83BDB1D - .string "Creates a barrier that\n" - .string "sharply raises DEFENSE.$" - -gMoveDescription_LightScreen: @ 83BDB4C - .string "Creates a wall of light that\n" - .string "lowers SP. ATK damage.$" - -gMoveDescription_Haze: @ 83BDB80 - .string "Creates a black haze that\n" - .string "eliminates all stat changes.$" - -gMoveDescription_Reflect: @ 83BDBB7 - .string "Creates a wall of light that\n" - .string "weakens physical attacks.$" - -gMoveDescription_FocusEnergy: @ 83BDBEE - .string "Focuses power to raise the\n" - .string "critical-hit ratio.$" - -gMoveDescription_Bide: @ 83BDC1D - .string "Endures attack for 2\n" - .string "turns to retaliate double.$" - -gMoveDescription_Metronome: @ 83BDC4D - .string "Waggles a finger to use any\n" - .string "POKéMON move at random.$" - -gMoveDescription_MirrorMove: @ 83BDC81 - .string "Counters the foe’s attack\n" - .string "with the same move.$" - -gMoveDescription_SelfDestruct: @ 83BDCAF - .string "Inflicts severe damage but\n" - .string "makes the user faint.$" - -gMoveDescription_EggBomb: @ 83BDCE0 - .string "An egg is forcibly hurled at\n" - .string "the foe.$" - -gMoveDescription_Lick: @ 83BDD06 - .string "Licks with a long tongue to\n" - .string "injure. May also paralyze.$" - -gMoveDescription_Smog: @ 83BDD3D - .string "An exhaust-gas attack\n" - .string "that may also poison.$" - -gMoveDescription_Sludge: @ 83BDD69 - .string "Sludge is hurled to inflict\n" - .string "damage. May also poison.$" - -gMoveDescription_BoneClub: @ 83BDD9E - .string "Clubs the foe with a bone.\n" - .string "May cause flinching.$" - -gMoveDescription_FireBlast: @ 83BDDCE - .string "A fiery blast that scorches\n" - .string "all. May cause a burn.$" - -gMoveDescription_Waterfall: @ 83BDE01 - .string "Charges the foe with speed\n" - .string "to climb waterfalls.$" - -gMoveDescription_Clamp: @ 83BDE31 - .string "Traps and squeezes the\n" - .string "foe for 2 to 5 turns.$" - -gMoveDescription_Swift: @ 83BDE5E - .string "Sprays star-shaped rays\n" - .string "that never miss.$" - -gMoveDescription_SkullBash: @ 83BDE87 - .string "Tucks in the head, then\n" - .string "attacks on the next turn.$" - -gMoveDescription_SpikeCannon: @ 83BDEB9 - .string "Launches sharp spikes that\n" - .string "strike 2 to 5 times.$" - -gMoveDescription_Constrict: @ 83BDEE9 - .string "Constricts to inflict pain.\n" - .string "May lower SPEED.$" - -gMoveDescription_Amnesia: @ 83BDF16 - .string "Forgets about something\n" - .string "and sharply raises SP. DEF.$" - -gMoveDescription_Kinesis: @ 83BDF4A - .string "Distracts the foe.\n" - .string "May lower accuracy.$" - -gMoveDescription_SoftBoiled: @ 83BDF71 - .string "Recovers up to half the\n" - .string "user’s maximum HP.$" - -gMoveDescription_HiJumpKick: @ 83BDF9C - .string "A jumping knee kick. If it\n" - .string "misses, the user is hurt.$" - -gMoveDescription_Glare: @ 83BDFD1 - .string "Intimidates and frightens\n" - .string "the foe into paralysis.$" - -gMoveDescription_DreamEater: @ 83BE003 - .string "Takes one half the damage\n" - .string "inflicted on a sleeping foe.$" - -gMoveDescription_PoisonGas: @ 83BE03A - .string "Envelops the foe in a toxic\n" - .string "gas that may poison.$" - -gMoveDescription_Barrage: @ 83BE06B - .string "Hurls round objects at the\n" - .string "foe 2 to 5 times.$" - -gMoveDescription_LeechLife: @ 83BE098 - .string "An attack that steals half\n" - .string "the damage inflicted.$" - -gMoveDescription_LovelyKiss: @ 83BE0C9 - .string "Demands a kiss with a scary\n" - .string "face that induces sleep.$" - -gMoveDescription_SkyAttack: @ 83BE0FE - .string "Searches out weak spots,\n" - .string "then strikes the next turn.$" - -gMoveDescription_Transform: @ 83BE133 - .string "Alters the user’s cells to\n" - .string "become a copy of the foe.$" - -gMoveDescription_Bubble: @ 83BE168 - .string "An attack using bubbles.\n" - .string "May lower the foe’s SPEED.$" - -gMoveDescription_DizzyPunch: @ 83BE19C - .string "A rhythmic punch that may\n" - .string "confuse the foe.$" - -gMoveDescription_Spore: @ 83BE1C7 - .string "Scatters a cloud of spores\n" - .string "that always induce sleep.$" - -gMoveDescription_Flash: @ 83BE1FC - .string "Looses a powerful blast of\n" - .string "light that cuts accuracy.$" - -gMoveDescription_Psywave: @ 83BE231 - .string "Attacks with a psychic\n" - .string "wave of varying intensity.$" - -gMoveDescription_Splash: @ 83BE263 - .string "It’s just a splash...\n" - .string "Has no effect whatsoever.$" - -gMoveDescription_AcidArmor: @ 83BE293 - .string "Liquifies the user’s body\n" - .string "to sharply raise DEFENSE.$" - -gMoveDescription_Crabhammer: @ 83BE2C7 - .string "Hammers with a pincer. Has a\n" - .string "high critical-hit ratio.$" - -gMoveDescription_Explosion: @ 83BE2FD - .string "Inflicts severe damage but\n" - .string "makes the user faint.$" - -gMoveDescription_FurySwipes: @ 83BE32E - .string "Rakes the foe with sharp\n" - .string "claws, etc., 2 to 5 times.$" - -gMoveDescription_Bonemerang: @ 83BE362 - .string "Throws a bone boomerang\n" - .string "that strikes twice.$" - -gMoveDescription_Rest: @ 83BE38E - .string "The user sleeps for 2 turns,\n" - .string "restoring HP and status.$" - -gMoveDescription_RockSlide: @ 83BE3C4 - .string "Large boulders are hurled.\n" - .string "May cause flinching.$" - -gMoveDescription_HyperFang: @ 83BE3F4 - .string "Attacks with sharp fangs.\n" - .string "May cause flinching.$" - -gMoveDescription_Sharpen: @ 83BE423 - .string "Reduces the polygon count\n" - .string "and raises ATTACK.$" - -gMoveDescription_Conversion: @ 83BE450 - .string "Changes the user’s type\n" - .string "into an own move’s type.$" - -gMoveDescription_TriAttack: @ 83BE481 - .string "Fires three types of beams\n" - .string "at the same time.$" - -gMoveDescription_SuperFang: @ 83BE4AE - .string "Attacks with sharp fangs\n" - .string "and cuts half the foe’s HP.$" - -gMoveDescription_Slash: @ 83BE4E3 - .string "Slashes with claws, etc. Has\n" - .string "a high critical-hit ratio.$" - -gMoveDescription_Substitute: @ 83BE51B - .string "Creates a decoy using 1/4\n" - .string "of the user’s maximum HP.$" - -gMoveDescription_Struggle: @ 83BE54F - .string "Used only if all PP are gone.\n" - .string "Also hurts the user a little.$" - -gMoveDescription_Sketch: @ 83BE58B - .string "Copies the foe’s last move\n" - .string "permanently.$" - -gMoveDescription_TripleKick: @ 83BE5B3 - .string "Kicks the foe 3 times in a\n" - .string "row with rising intensity.$" - -gMoveDescription_Thief: @ 83BE5E9 - .string "While attacking, it may\n" - .string "steal the foe’s held item.$" - -gMoveDescription_SpiderWeb: @ 83BE61C - .string "Ensnares the foe to stop it\n" - .string "from fleeing or switching.$" - -gMoveDescription_MindReader: @ 83BE653 - .string "Senses the foe’s action to\n" - .string "ensure the next move’s hit.$" - -gMoveDescription_Nightmare: @ 83BE68A - .string "Inflicts 1/4 damage on a\n" - .string "sleeping foe every turn.$" - -gMoveDescription_FlameWheel: @ 83BE6BC - .string "A fiery charge attack that\n" - .string "may inflict a burn.$" - -gMoveDescription_Snore: @ 83BE6EB - .string "A loud attack that can be\n" - .string "used only while asleep.$" - -gMoveDescription_Curse: @ 83BE71D - .string "A move that functions\n" - .string "differently for GHOSTS.$" - -gMoveDescription_Flail: @ 83BE74B - .string "Inflicts more damage when\n" - .string "the user’s HP is down.$" - -gMoveDescription_Conversion2: @ 83BE77C - .string "Makes the user resistant\n" - .string "to the last attack’s type.$" - -gMoveDescription_Aeroblast: @ 83BE7B0 - .string "Launches a vacuumed blast.\n" - .string "High critical-hit ratio.$" - -gMoveDescription_CottonSpore: @ 83BE7E4 - .string "Spores cling to the foe,\n" - .string "sharply reducing SPEED.$" - -gMoveDescription_Reversal: @ 83BE815 - .string "Inflicts more damage when\n" - .string "the user’s HP is down.$" - -gMoveDescription_Spite: @ 83BE846 - .string "Spitefully cuts the PP\n" - .string "of the foe’s last move.$" - -gMoveDescription_PowderSnow: @ 83BE875 - .string "Blasts the foe with a snowy\n" - .string "gust. May cause freezing.$" - -gMoveDescription_Protect: @ 83BE8AB - .string "Evades attack, but may fail\n" - .string "if used in succession.$" - -gMoveDescription_MachPunch: @ 83BE8DE - .string "A punch is thrown at wicked\n" - .string "speed to strike first.$" - -gMoveDescription_ScaryFace: @ 83BE911 - .string "Frightens with a scary face\n" - .string "to sharply reduce SPEED.$" - -gMoveDescription_FaintAttack: @ 83BE946 - .string "Draws the foe close, then\n" - .string "strikes without fail.$" - -gMoveDescription_SweetKiss: @ 83BE976 - .string "Demands a kiss with a cute\n" - .string "look. May cause confusion.$" - -gMoveDescription_BellyDrum: @ 83BE9AC - .string "Maximizes ATTACK while\n" - .string "sacrificing HP.$" - -gMoveDescription_SludgeBomb: @ 83BE9D3 - .string "Sludge is hurled to inflict\n" - .string "damage. May also poison.$" - -gMoveDescription_MudSlap: @ 83BEA08 - .string "Hurls mud in the foe’s face\n" - .string "to reduce its accuracy.$" - -gMoveDescription_Octazooka: @ 83BEA3C - .string "Fires a lump of ink to\n" - .string "damage and cut accuracy.$" - -gMoveDescription_Spikes: @ 83BEA6C - .string "Sets spikes that hurt a \n" - .string "foe switching out.$" - -gMoveDescription_ZapCannon: @ 83BEA98 - .string "Powerful and sure to cause\n" - .string "paralysis, but inaccurate.$" - -gMoveDescription_Foresight: @ 83BEACE - .string "Negates the foe’s efforts\n" - .string "to heighten evasiveness.$" - -gMoveDescription_DestinyBond: @ 83BEB01 - .string "If the user faints, the foe\n" - .string "is also made to faint.$" - -gMoveDescription_PerishSong: @ 83BEB34 - .string "Any POKéMON hearing this\n" - .string "song faints in 3 turns.$" - -gMoveDescription_IcyWind: @ 83BEB65 - .string "A chilling attack that\n" - .string "lowers the foe’s SPEED.$" - -gMoveDescription_Detect: @ 83BEB94 - .string "Evades attack, but may fail\n" - .string "if used in succession.$" - -gMoveDescription_BoneRush: @ 83BEBC7 - .string "Strikes the foe with a bone\n" - .string "in hand 2 to 5 times.$" - -gMoveDescription_LockOn: @ 83BEBF9 - .string "Locks on to the foe to\n" - .string "ensure the next move hits.$" - -gMoveDescription_Outrage: @ 83BEC2B - .string "A rampage of 2 to 3 turns\n" - .string "that confuses the user.$" - -gMoveDescription_Sandstorm: @ 83BEC5D - .string "Causes a sandstorm that\n" - .string "rages for several turns.$" - -gMoveDescription_GigaDrain: @ 83BEC8E - .string "An attack that steals half\n" - .string "the damage inflicted.$" - -gMoveDescription_Endure: @ 83BECBF - .string "Endures any attack for\n" - .string "1 turn, leaving at least 1HP.$" - -gMoveDescription_Charm: @ 83BECF4 - .string "Charms the foe and sharply\n" - .string "reduces its ATTACK.$" - -gMoveDescription_Rollout: @ 83BED23 - .string "An attack lasting 5 turns\n" - .string "with rising intensity.$" - -gMoveDescription_FalseSwipe: @ 83BED54 - .string "An attack that leaves the\n" - .string "foe with at least 1 HP.$" - -gMoveDescription_Swagger: @ 83BED86 - .string "Confuses the foe, but also\n" - .string "sharply raises ATTACK.$" - -gMoveDescription_MilkDrink: @ 83BEDB8 - .string "Recovers up to half the\n" - .string "user’s maximum HP.$" - -gMoveDescription_Spark: @ 83BEDE3 - .string "An electrified tackle that\n" - .string "may paralyze the foe.$" - -gMoveDescription_FuryCutter: @ 83BEE14 - .string "An attack that intensifies\n" - .string "on each successive hit.$" - -gMoveDescription_SteelWing: @ 83BEE47 - .string "Strikes the foe with hard\n" - .string "wings spread wide.$" - -gMoveDescription_MeanLook: @ 83BEE74 - .string "Fixes the foe with a mean\n" - .string "look that prevents escape.$" - -gMoveDescription_Attract: @ 83BEEA9 - .string "Makes the opposite gender\n" - .string "less likely to attack.$" - -gMoveDescription_SleepTalk: @ 83BEEDA - .string "Uses an own move randomly\n" - .string "while asleep.$" - -gMoveDescription_HealBell: @ 83BEF02 - .string "Chimes soothingly to heal\n" - .string "all status abnormalities.$" - -gMoveDescription_Return: @ 83BEF36 - .string "An attack that increases\n" - .string "in power with friendship.$" - -gMoveDescription_Present: @ 83BEF69 - .string "A gift in the form of a\n" - .string "bomb. May restore HP.$" - -gMoveDescription_Frustration: @ 83BEF97 - .string "An attack that is stronger\n" - .string "if the TRAINER is disliked.$" - -gMoveDescription_Safeguard: @ 83BEFCE - .string "A mystical force prevents\n" - .string "all status problems.$" - -gMoveDescription_PainSplit: @ 83BEFFD - .string "Adds the user and foe’s HP,\n" - .string "then shares them equally.$" - -gMoveDescription_SacredFire: @ 83BF033 - .string "A mystical fire attack that\n" - .string "may inflict a burn.$" - -gMoveDescription_Magnitude: @ 83BF063 - .string "A ground-shaking attack\n" - .string "of random intensity.$" - -gMoveDescription_DynamicPunch: @ 83BF090 - .string "Powerful and sure to cause\n" - .string "confusion, but inaccurate.$" - -gMoveDescription_Megahorn: @ 83BF0C6 - .string "A brutal ramming attack\n" - .string "using out-thrust horns.$" - -gMoveDescription_DragonBreath: @ 83BF0F6 - .string "Strikes the foe with an\n" - .string "incredible blast of breath.$" - -gMoveDescription_BatonPass: @ 83BF12A - .string "Switches out the user while\n" - .string "keeping effects in play.$" - -gMoveDescription_Encore: @ 83BF15F - .string "Makes the foe repeat its\n" - .string "last move over 2 to 6 turns.$" - -gMoveDescription_Pursuit: @ 83BF195 - .string "Inflicts bad damage if used\n" - .string "on a foe switching out.$" - -gMoveDescription_RapidSpin: @ 83BF1C9 - .string "Spins the body at high\n" - .string "speed to strike the foe.$" - -gMoveDescription_SweetScent: @ 83BF1F9 - .string "Allures the foe to reduce\n" - .string "evasiveness.$" - -gMoveDescription_IronTail: @ 83BF220 - .string "Attacks with a rock-hard\n" - .string "tail. May lower DEFENSE.$" - -gMoveDescription_MetalClaw: @ 83BF252 - .string "A claw attack that may\n" - .string "raise the user’s ATTACK.$" - -gMoveDescription_VitalThrow: @ 83BF282 - .string "Makes the user’s move last,\n" - .string "but it never misses.$" - -gMoveDescription_MorningSun: @ 83BF2B3 - .string "Restores HP. The amount\n" - .string "varies with the weather.$" - -gMoveDescription_Synthesis: @ 83BF2E4 - .string "Restores HP. The amount\n" - .string "varies with the weather.$" - -gMoveDescription_Moonlight: @ 83BF315 - .string "Restores HP. The amount\n" - .string "varies with the weather.$" - -gMoveDescription_HiddenPower: @ 83BF346 - .string "The effectiveness varies\n" - .string "with the user.$" - -gMoveDescription_CrossChop: @ 83BF36E - .string "A double-chopping attack.\n" - .string "High critical-hit ratio.$" - -gMoveDescription_Twister: @ 83BF3A1 - .string "Whips up a vicious twister\n" - .string "to tear at the foe.$" - -gMoveDescription_RainDance: @ 83BF3D0 - .string "Boosts the power of WATER-\n" - .string "type moves for 5 turns.$" - -gMoveDescription_SunnyDay: @ 83BF403 - .string "Boosts the power of FIRE-\n" - .string "type moves for 5 turns.$" - -gMoveDescription_Crunch: @ 83BF435 - .string "Crunches with sharp fangs.\n" - .string "May lower SP. DEF.$" - -gMoveDescription_MirrorCoat: @ 83BF463 - .string "Counters the foe’s special\n" - .string "attack at double the power.$" - -gMoveDescription_PsychUp: @ 83BF49A - .string "Copies the foe’s effect(s)\n" - .string "and gives to the user.$" - -gMoveDescription_ExtremeSpeed: @ 83BF4CC - .string "An extremely fast and\n" - .string "powerful attack.$" - -gMoveDescription_AncientPower: @ 83BF4F3 - .string "An attack that may raise\n" - .string "all stats.$" - -gMoveDescription_ShadowBall: @ 83BF517 - .string "Hurls a black blob that may\n" - .string "lower the foe’s SP. DEF.$" - -gMoveDescription_FutureSight: @ 83BF54C - .string "Heightens inner power to\n" - .string "strike 2 turns later.$" - -gMoveDescription_RockSmash: @ 83BF57B - .string "A rock-crushing attack\n" - .string "that may lower DEFENSE.$" - -gMoveDescription_Whirlpool: @ 83BF5AA - .string "Traps and hurts the foe in\n" - .string "a whirlpool for 2 to 5 turns.$" - -gMoveDescription_BeatUp: @ 83BF5E3 - .string "Summons party POKéMON to\n" - .string "join in the attack.$" - -gMoveDescription_FakeOut: @ 83BF610 - .string "A 1st-turn, 1st-strike move\n" - .string "that causes flinching.$" - -gMoveDescription_Uproar: @ 83BF643 - .string "Causes an uproar for 2 to 5\n" - .string "turns and prevents sleep.$" - -gMoveDescription_Stockpile: @ 83BF679 - .string "Charges up power for up to\n" - .string "3 turns.$" - -gMoveDescription_SpitUp: @ 83BF69D - .string "Releases stockpiled power\n" - .string "(the more the better).$" - -gMoveDescription_Swallow: @ 83BF6CE - .string "Absorbs stockpiled power\n" - .string "and restores HP.$" - -gMoveDescription_HeatWave: @ 83BF6F8 - .string "Exhales a hot breath on the\n" - .string "foe. May inflict a burn.$" - -gMoveDescription_Hail: @ 83BF72D - .string "Summons a hailstorm that\n" - .string "strikes every turn.$" - -gMoveDescription_Torment: @ 83BF75A - .string "Torments the foe and stops\n" - .string "successive use of a move.$" - -gMoveDescription_Flatter: @ 83BF78F - .string "Confuses the foe, but\n" - .string "raises its SP. ATK.$" - -gMoveDescription_WillOWisp: @ 83BF7B9 - .string "Inflicts a burn on the foe\n" - .string "with intense fire.$" - -gMoveDescription_Memento: @ 83BF7E7 - .string "The user faints and lowers\n" - .string "the foe’s abilities.$" - -gMoveDescription_Facade: @ 83BF817 - .string "Boosts ATTACK when burned,\n" - .string "paralyzed, or poisoned.$" - -gMoveDescription_FocusPunch: @ 83BF84A - .string "A powerful loyalty attack.\n" - .string "The user flinches if hit.$" - -gMoveDescription_SmellingSalt: @ 83BF87F - .string "Powerful against paralyzed\n" - .string "foes, but also heals them.$" - -gMoveDescription_FollowMe: @ 83BF8B5 - .string "Draws attention to make\n" - .string "foes attack only the user.$" - -gMoveDescription_NaturePower: @ 83BF8E8 - .string "The type of attack varies\n" - .string "depending on the location.$" - -gMoveDescription_Charge: @ 83BF91D - .string "Charges power to boost the\n" - .string "electric move used next.$" - -gMoveDescription_Taunt: @ 83BF951 - .string "Taunts the foe into only\n" - .string "using attack moves.$" - -gMoveDescription_HelpingHand: @ 83BF97E - .string "Boosts the power of the\n" - .string "recipient’s moves.$" - -gMoveDescription_Trick: @ 83BF9A9 - .string "Tricks the foe into trading\n" - .string "held items.$" - -gMoveDescription_RolePlay: @ 83BF9D1 - .string "Mimics the target and\n" - .string "copies its special ability.$" - -gMoveDescription_Wish: @ 83BFA03 - .string "A wish that restores HP.\n" - .string "It takes time to work.$" - -gMoveDescription_Assist: @ 83BFA33 - .string "Attacks randomly with one\n" - .string "of the partner’s moves.$" - -gMoveDescription_Ingrain: @ 83BFA65 - .string "Lays roots that restore HP.\n" - .string "The user can’t switch out.$" - -gMoveDescription_Superpower: @ 83BFA9C - .string "Boosts strength sharply,\n" - .string "but lowers abilities.$" - -gMoveDescription_MagicCoat: @ 83BFACB - .string "Reflects special effects\n" - .string "back to the attacker.$" - -gMoveDescription_Recycle: @ 83BFAFA - .string "Recycles a used item for\n" - .string "one more use.$" - -gMoveDescription_Revenge: @ 83BFB21 - .string "An attack that gains power\n" - .string "if injured by the foe.$" - -gMoveDescription_BrickBreak: @ 83BFB53 - .string "Destroys barriers such as\n" - .string "REFLECT and causes damage.$" - -gMoveDescription_Yawn: @ 83BFB88 - .string "Lulls the foe into yawning,\n" - .string "then sleeping next turn.$" - -gMoveDescription_KnockOff: @ 83BFBBD - .string "Knocks down the foe’s held\n" - .string "item to prevent its use.$" - -gMoveDescription_Endeavor: @ 83BFBF1 - .string "Gains power if the user’s HP\n" - .string "is lower than the foe’s HP.$" - -gMoveDescription_Eruption: @ 83BFC2A - .string "The higher the user’s HP,\n" - .string "the more damage caused.$" - -gMoveDescription_SkillSwap: @ 83BFC5C - .string "The user swaps special\n" - .string "abilities with the target.$" - -gMoveDescription_Imprison: @ 83BFC8E - .string "Prevents foes from using\n" - .string "moves known by the user.$" - -gMoveDescription_Refresh: @ 83BFCC0 - .string "Heals poisoning, paralysis,\n" - .string "or a burn.$" - -gMoveDescription_Grudge: @ 83BFCE7 - .string "If the user faints, deletes\n" - .string "the PP of the final move.$" - -gMoveDescription_Snatch: @ 83BFD1D - .string "Steals the effects of the\n" - .string "move the foe uses next.$" - -gMoveDescription_SecretPower: @ 83BFD4F - .string "An attack with effects\n" - .string "that vary by location.$" - -gMoveDescription_Dive: @ 83BFD7D - .string "Dives underwater the first\n" - .string "turn and strikes next turn.$" - -gMoveDescription_ArmThrust: @ 83BFDB4 - .string "Straight-arm punches that\n" - .string "strike the foe 2 to 5 times.$" - -gMoveDescription_Camouflage: @ 83BFDEB - .string "Alters the POKéMON’s type\n" - .string "depending on the location.$" - -gMoveDescription_TailGlow: @ 83BFE20 - .string "Flashes a light that sharply\n" - .string "raises SP. ATK.$" - -gMoveDescription_LusterPurge: @ 83BFE4D - .string "Attacks with a burst of\n" - .string "light. May lower SP. DEF.$" - -gMoveDescription_MistBall: @ 83BFE7F - .string "Attacks with a flurry of\n" - .string "down. May lower SP. ATK.$" - -gMoveDescription_FeatherDance: @ 83BFEB1 - .string "Envelops the foe with down\n" - .string "to sharply reduce ATTACK.$" - -gMoveDescription_TeeterDance: @ 83BFEE6 - .string "Confuses all POKéMON on\n" - .string "the scene.$" - -gMoveDescription_BlazeKick: @ 83BFF09 - .string "A kick with a high critical-\n" - .string "hit ratio. May cause a burn.$" - -gMoveDescription_MudSport: @ 83BFF43 - .string "Covers the user in mud to\n" - .string "raise electrical resistance.$" - -gMoveDescription_IceBall: @ 83BFF7A - .string "A 5-turn attack that gains\n" - .string "power on successive hits.$" - -gMoveDescription_NeedleArm: @ 83BFFAF - .string "Attacks with thorny arms.\n" - .string "May cause flinching.$" - -gMoveDescription_SlackOff: @ 83BFFDE - .string "Slacks off and restores\n" - .string "half the maximum HP.$" - -gMoveDescription_HyperVoice: @ 83C000B - .string "A loud attack that uses\n" - .string "sound waves to injure.$" - -gMoveDescription_PoisonFang: @ 83C003A - .string "A sharp-fanged attack.\n" - .string "May badly poison the foe.$" - -gMoveDescription_CrushClaw: @ 83C006B - .string "Tears at the foe with sharp\n" - .string "claws. May lower DEFENSE.$" - -gMoveDescription_BlastBurn: @ 83C00A1 - .string "Powerful, but leaves the\n" - .string "user immobile the next turn.$" - -gMoveDescription_HydroCannon: @ 83C00D7 - .string "Powerful, but leaves the\n" - .string "user immobile the next turn.$" - -gMoveDescription_MeteorMash: @ 83C010D - .string "Fires a meteor-like punch.\n" - .string "May raise ATTACK.$" - -gMoveDescription_Astonish: @ 83C013A - .string "An attack that may shock\n" - .string "the foe into flinching.$" - -gMoveDescription_WeatherBall: @ 83C016B - .string "The move’s type and power\n" - .string "change with the weather.$" - -gMoveDescription_Aromatherapy: @ 83C019E - .string "Heals all status problems\n" - .string "with a soothing scent.$" - -gMoveDescription_FakeTears: @ 83C01CF - .string "Feigns crying to sharply\n" - .string "lower the foe’s SP. DEF.$" - -gMoveDescription_AirCutter: @ 83C0201 - .string "Hacks with razorlike wind.\n" - .string "High critical-hit ratio.$" - -gMoveDescription_Overheat: @ 83C0235 - .string "Allows a full-power attack,\n" - .string "but sharply lowers SP. ATK.$" - -gMoveDescription_OdorSleuth: @ 83C026D - .string "Negates the foe’s efforts\n" - .string "to heighten evasiveness.$" - -gMoveDescription_RockTomb: @ 83C02A0 - .string "Stops the foe from moving\n" - .string "with rocks and cuts SPEED.$" - -gMoveDescription_SilverWind: @ 83C02D5 - .string "A powdery attack that may\n" - .string "raise abilities.$" - -gMoveDescription_MetalSound: @ 83C0300 - .string "Emits a horrible screech\n" - .string "that sharply lowers SP. DEF.$" - -gMoveDescription_GrassWhistle: @ 83C0336 - .string "Lulls the foe into sleep\n" - .string "with a pleasant melody.$" - -gMoveDescription_Tickle: @ 83C0367 - .string "Makes the foe laugh to\n" - .string "lower ATTACK and DEFENSE.$" - -gMoveDescription_CosmicPower: @ 83C0398 - .string "Raises DEFENSE and SP. DEF\n" - .string "with a mystic power.$" - -gMoveDescription_WaterSpout: @ 83C03C8 - .string "Inflicts more damage if the\n" - .string "user’s HP is high.$" - -gMoveDescription_SignalBeam: @ 83C03F7 - .string "A strange beam attack that\n" - .string "may confuse the foe.$" - -gMoveDescription_ShadowPunch: @ 83C0427 - .string "An unavoidable punch that\n" - .string "is thrown from shadows.$" - -gMoveDescription_Extrasensory: @ 83C0459 - .string "Attacks with a peculiar\n" - .string "power. May cause flinching.$" - -gMoveDescription_SkyUppercut: @ 83C048D - .string "An uppercut thrown as if\n" - .string "leaping into the sky.$" - -gMoveDescription_SandTomb: @ 83C04BC - .string "Traps and hurts the foe in\n" - .string "quicksand for 2 to 5 turns.$" - -gMoveDescription_SheerCold: @ 83C04F3 - .string "A chilling attack that\n" - .string "causes fainting if it hits.$" - -gMoveDescription_MuddyWater: @ 83C0526 - .string "Attacks with muddy water.\n" - .string "May lower accuracy.$" - -gMoveDescription_BulletSeed: @ 83C0554 - .string "Shoots 2 to 5 seeds in a row\n" - .string "to strike the foe.$" - -gMoveDescription_AerialAce: @ 83C0584 - .string "An extremely speedy and\n" - .string "unavoidable attack.$" - -gMoveDescription_IcicleSpear: @ 83C05B0 - .string "Attacks the foe by firing\n" - .string "2 to 5 icicles in a row.$" - -gMoveDescription_IronDefense: @ 83C05E3 - .string "Hardens the body’s surface\n" - .string "to sharply raise DEFENSE.$" - -gMoveDescription_Block: @ 83C0618 - .string "Blocks the foe’s way to\n" - .string "prevent escape.$" - -gMoveDescription_Howl: @ 83C0640 - .string "Howls to raise the spirit\n" - .string "and boosts ATTACK.$" - -gMoveDescription_DragonClaw: @ 83C066D - .string "Slashes the foe with sharp\n" - .string "claws.$" - -gMoveDescription_FrenzyPlant: @ 83C068F - .string "Powerful, but leaves the\n" - .string "user immobile the next turn.$" - -gMoveDescription_BulkUp: @ 83C06C5 - .string "Bulks up the body to boost\n" - .string "both ATTACK and DEFENSE.$" - -gMoveDescription_Bounce: @ 83C06F9 - .string "Bounces up, then down the\n" - .string "next turn. May paralyze.$" - -gMoveDescription_MudShot: @ 83C072C - .string "Hurls mud at the foe and\n" - .string "reduces SPEED.$" - -gMoveDescription_PoisonTail: @ 83C0754 - .string "Has a high critical-hit\n" - .string "ratio. May also poison.$" - -gMoveDescription_Covet: @ 83C0784 - .string "Cutely begs to obtain an\n" - .string "item held by the foe.$" - -gMoveDescription_VoltTackle: @ 83C07B3 - .string "A life-risking tackle that\n" - .string "slightly hurts the user.$" - -gMoveDescription_MagicalLeaf: @ 83C07E7 - .string "Attacks with a strange leaf\n" - .string "that cannot be evaded.$" - -gMoveDescription_WaterSport: @ 83C081A - .string "The user becomes soaked to\n" - .string "raise resistance to fire.$" - -gMoveDescription_CalmMind: @ 83C084F - .string "Raises SP. ATK and SP. DEF\n" - .string "by focusing the mind.$" - -gMoveDescription_LeafBlade: @ 83C0880 - .string "Slashes with a sharp leaf.\n" - .string "High critical-hit ratio.$" - -gMoveDescription_DragonDance: @ 83C08B4 - .string "A mystical dance that ups\n" - .string "ATTACK and SPEED.$" - -gMoveDescription_RockBlast: @ 83C08E0 - .string "Hurls boulders at the foe\n" - .string "2 to 5 times in a row.$" - -gMoveDescription_ShockWave: @ 83C0911 - .string "A fast and unavoidable\n" - .string "electric attack.$" - -gMoveDescription_WaterPulse: @ 83C0939 - .string "Attacks with ultrasonic\n" - .string "waves. May confuse the foe$" - -gMoveDescription_DoomDesire: @ 83C096C - .string "Summons strong sunlight to\n" - .string "attack 2 turns later.$" - -gMoveDescription_PsychoBoost: @ 83C099D - .string "Allows a full-power attack,\n" - .string "but sharply lowers SP. ATK.$" - - .align 2 -gMoveDescriptions:: @ 83C09D8 - .4byte gMoveDescription_Pound - .4byte gMoveDescription_KarateChop - .4byte gMoveDescription_DoubleSlap - .4byte gMoveDescription_CometPunch - .4byte gMoveDescription_MegaPunch - .4byte gMoveDescription_PayDay - .4byte gMoveDescription_FirePunch - .4byte gMoveDescription_IcePunch - .4byte gMoveDescription_ThunderPunch - .4byte gMoveDescription_Scratch - .4byte gMoveDescription_ViceGrip - .4byte gMoveDescription_Guillotine - .4byte gMoveDescription_RazorWind - .4byte gMoveDescription_SwordsDance - .4byte gMoveDescription_Cut - .4byte gMoveDescription_Gust - .4byte gMoveDescription_WingAttack - .4byte gMoveDescription_Whirlwind - .4byte gMoveDescription_Fly - .4byte gMoveDescription_Bind - .4byte gMoveDescription_Slam - .4byte gMoveDescription_VineWhip - .4byte gMoveDescription_Stomp - .4byte gMoveDescription_DoubleKick - .4byte gMoveDescription_MegaKick - .4byte gMoveDescription_JumpKick - .4byte gMoveDescription_RollingKick - .4byte gMoveDescription_SandAttack - .4byte gMoveDescription_Headbutt - .4byte gMoveDescription_HornAttack - .4byte gMoveDescription_FuryAttack - .4byte gMoveDescription_HornDrill - .4byte gMoveDescription_Tackle - .4byte gMoveDescription_BodySlam - .4byte gMoveDescription_Wrap - .4byte gMoveDescription_TakeDown - .4byte gMoveDescription_Thrash - .4byte gMoveDescription_DoubleEdge - .4byte gMoveDescription_TailWhip - .4byte gMoveDescription_PoisonSting - .4byte gMoveDescription_Twineedle - .4byte gMoveDescription_PinMissile - .4byte gMoveDescription_Leer - .4byte gMoveDescription_Bite - .4byte gMoveDescription_Growl - .4byte gMoveDescription_Roar - .4byte gMoveDescription_Sing - .4byte gMoveDescription_Supersonic - .4byte gMoveDescription_SonicBoom - .4byte gMoveDescription_Disable - .4byte gMoveDescription_Acid - .4byte gMoveDescription_Ember - .4byte gMoveDescription_Flamethrower - .4byte gMoveDescription_Mist - .4byte gMoveDescription_WaterGun - .4byte gMoveDescription_HydroPump - .4byte gMoveDescription_Surf - .4byte gMoveDescription_IceBeam - .4byte gMoveDescription_Blizzard - .4byte gMoveDescription_Psybeam - .4byte gMoveDescription_BubbleBeam - .4byte gMoveDescription_AuroraBeam - .4byte gMoveDescription_HyperBeam - .4byte gMoveDescription_Peck - .4byte gMoveDescription_DrillPeck - .4byte gMoveDescription_Submission - .4byte gMoveDescription_LowKick - .4byte gMoveDescription_Counter - .4byte gMoveDescription_SeismicToss - .4byte gMoveDescription_Strength - .4byte gMoveDescription_Absorb - .4byte gMoveDescription_MegaDrain - .4byte gMoveDescription_LeechSeed - .4byte gMoveDescription_Growth - .4byte gMoveDescription_RazorLeaf - .4byte gMoveDescription_SolarBeam - .4byte gMoveDescription_PoisonPowder - .4byte gMoveDescription_StunSpore - .4byte gMoveDescription_SleepPowder - .4byte gMoveDescription_PetalDance - .4byte gMoveDescription_StringShot - .4byte gMoveDescription_DragonRage - .4byte gMoveDescription_FireSpin - .4byte gMoveDescription_ThunderShock - .4byte gMoveDescription_Thunderbolt - .4byte gMoveDescription_ThunderWave - .4byte gMoveDescription_Thunder - .4byte gMoveDescription_RockThrow - .4byte gMoveDescription_Earthquake - .4byte gMoveDescription_Fissure - .4byte gMoveDescription_Dig - .4byte gMoveDescription_Toxic - .4byte gMoveDescription_Confusion - .4byte gMoveDescription_Psychic - .4byte gMoveDescription_Hypnosis - .4byte gMoveDescription_Meditate - .4byte gMoveDescription_Agility - .4byte gMoveDescription_QuickAttack - .4byte gMoveDescription_Rage - .4byte gMoveDescription_Teleport - .4byte gMoveDescription_NightShade - .4byte gMoveDescription_Mimic - .4byte gMoveDescription_Screech - .4byte gMoveDescription_DoubleTeam - .4byte gMoveDescription_Recover - .4byte gMoveDescription_Harden - .4byte gMoveDescription_Minimize - .4byte gMoveDescription_Smokescreen - .4byte gMoveDescription_ConfuseRay - .4byte gMoveDescription_Withdraw - .4byte gMoveDescription_DefenseCurl - .4byte gMoveDescription_Barrier - .4byte gMoveDescription_LightScreen - .4byte gMoveDescription_Haze - .4byte gMoveDescription_Reflect - .4byte gMoveDescription_FocusEnergy - .4byte gMoveDescription_Bide - .4byte gMoveDescription_Metronome - .4byte gMoveDescription_MirrorMove - .4byte gMoveDescription_SelfDestruct - .4byte gMoveDescription_EggBomb - .4byte gMoveDescription_Lick - .4byte gMoveDescription_Smog - .4byte gMoveDescription_Sludge - .4byte gMoveDescription_BoneClub - .4byte gMoveDescription_FireBlast - .4byte gMoveDescription_Waterfall - .4byte gMoveDescription_Clamp - .4byte gMoveDescription_Swift - .4byte gMoveDescription_SkullBash - .4byte gMoveDescription_SpikeCannon - .4byte gMoveDescription_Constrict - .4byte gMoveDescription_Amnesia - .4byte gMoveDescription_Kinesis - .4byte gMoveDescription_SoftBoiled - .4byte gMoveDescription_HiJumpKick - .4byte gMoveDescription_Glare - .4byte gMoveDescription_DreamEater - .4byte gMoveDescription_PoisonGas - .4byte gMoveDescription_Barrage - .4byte gMoveDescription_LeechLife - .4byte gMoveDescription_LovelyKiss - .4byte gMoveDescription_SkyAttack - .4byte gMoveDescription_Transform - .4byte gMoveDescription_Bubble - .4byte gMoveDescription_DizzyPunch - .4byte gMoveDescription_Spore - .4byte gMoveDescription_Flash - .4byte gMoveDescription_Psywave - .4byte gMoveDescription_Splash - .4byte gMoveDescription_AcidArmor - .4byte gMoveDescription_Crabhammer - .4byte gMoveDescription_Explosion - .4byte gMoveDescription_FurySwipes - .4byte gMoveDescription_Bonemerang - .4byte gMoveDescription_Rest - .4byte gMoveDescription_RockSlide - .4byte gMoveDescription_HyperFang - .4byte gMoveDescription_Sharpen - .4byte gMoveDescription_Conversion - .4byte gMoveDescription_TriAttack - .4byte gMoveDescription_SuperFang - .4byte gMoveDescription_Slash - .4byte gMoveDescription_Substitute - .4byte gMoveDescription_Struggle - .4byte gMoveDescription_Sketch - .4byte gMoveDescription_TripleKick - .4byte gMoveDescription_Thief - .4byte gMoveDescription_SpiderWeb - .4byte gMoveDescription_MindReader - .4byte gMoveDescription_Nightmare - .4byte gMoveDescription_FlameWheel - .4byte gMoveDescription_Snore - .4byte gMoveDescription_Curse - .4byte gMoveDescription_Flail - .4byte gMoveDescription_Conversion2 - .4byte gMoveDescription_Aeroblast - .4byte gMoveDescription_CottonSpore - .4byte gMoveDescription_Reversal - .4byte gMoveDescription_Spite - .4byte gMoveDescription_PowderSnow - .4byte gMoveDescription_Protect - .4byte gMoveDescription_MachPunch - .4byte gMoveDescription_ScaryFace - .4byte gMoveDescription_FaintAttack - .4byte gMoveDescription_SweetKiss - .4byte gMoveDescription_BellyDrum - .4byte gMoveDescription_SludgeBomb - .4byte gMoveDescription_MudSlap - .4byte gMoveDescription_Octazooka - .4byte gMoveDescription_Spikes - .4byte gMoveDescription_ZapCannon - .4byte gMoveDescription_Foresight - .4byte gMoveDescription_DestinyBond - .4byte gMoveDescription_PerishSong - .4byte gMoveDescription_IcyWind - .4byte gMoveDescription_Detect - .4byte gMoveDescription_BoneRush - .4byte gMoveDescription_LockOn - .4byte gMoveDescription_Outrage - .4byte gMoveDescription_Sandstorm - .4byte gMoveDescription_GigaDrain - .4byte gMoveDescription_Endure - .4byte gMoveDescription_Charm - .4byte gMoveDescription_Rollout - .4byte gMoveDescription_FalseSwipe - .4byte gMoveDescription_Swagger - .4byte gMoveDescription_MilkDrink - .4byte gMoveDescription_Spark - .4byte gMoveDescription_FuryCutter - .4byte gMoveDescription_SteelWing - .4byte gMoveDescription_MeanLook - .4byte gMoveDescription_Attract - .4byte gMoveDescription_SleepTalk - .4byte gMoveDescription_HealBell - .4byte gMoveDescription_Return - .4byte gMoveDescription_Present - .4byte gMoveDescription_Frustration - .4byte gMoveDescription_Safeguard - .4byte gMoveDescription_PainSplit - .4byte gMoveDescription_SacredFire - .4byte gMoveDescription_Magnitude - .4byte gMoveDescription_DynamicPunch - .4byte gMoveDescription_Megahorn - .4byte gMoveDescription_DragonBreath - .4byte gMoveDescription_BatonPass - .4byte gMoveDescription_Encore - .4byte gMoveDescription_Pursuit - .4byte gMoveDescription_RapidSpin - .4byte gMoveDescription_SweetScent - .4byte gMoveDescription_IronTail - .4byte gMoveDescription_MetalClaw - .4byte gMoveDescription_VitalThrow - .4byte gMoveDescription_MorningSun - .4byte gMoveDescription_Synthesis - .4byte gMoveDescription_Moonlight - .4byte gMoveDescription_HiddenPower - .4byte gMoveDescription_CrossChop - .4byte gMoveDescription_Twister - .4byte gMoveDescription_RainDance - .4byte gMoveDescription_SunnyDay - .4byte gMoveDescription_Crunch - .4byte gMoveDescription_MirrorCoat - .4byte gMoveDescription_PsychUp - .4byte gMoveDescription_ExtremeSpeed - .4byte gMoveDescription_AncientPower - .4byte gMoveDescription_ShadowBall - .4byte gMoveDescription_FutureSight - .4byte gMoveDescription_RockSmash - .4byte gMoveDescription_Whirlpool - .4byte gMoveDescription_BeatUp - .4byte gMoveDescription_FakeOut - .4byte gMoveDescription_Uproar - .4byte gMoveDescription_Stockpile - .4byte gMoveDescription_SpitUp - .4byte gMoveDescription_Swallow - .4byte gMoveDescription_HeatWave - .4byte gMoveDescription_Hail - .4byte gMoveDescription_Torment - .4byte gMoveDescription_Flatter - .4byte gMoveDescription_WillOWisp - .4byte gMoveDescription_Memento - .4byte gMoveDescription_Facade - .4byte gMoveDescription_FocusPunch - .4byte gMoveDescription_SmellingSalt - .4byte gMoveDescription_FollowMe - .4byte gMoveDescription_NaturePower - .4byte gMoveDescription_Charge - .4byte gMoveDescription_Taunt - .4byte gMoveDescription_HelpingHand - .4byte gMoveDescription_Trick - .4byte gMoveDescription_RolePlay - .4byte gMoveDescription_Wish - .4byte gMoveDescription_Assist - .4byte gMoveDescription_Ingrain - .4byte gMoveDescription_Superpower - .4byte gMoveDescription_MagicCoat - .4byte gMoveDescription_Recycle - .4byte gMoveDescription_Revenge - .4byte gMoveDescription_BrickBreak - .4byte gMoveDescription_Yawn - .4byte gMoveDescription_KnockOff - .4byte gMoveDescription_Endeavor - .4byte gMoveDescription_Eruption - .4byte gMoveDescription_SkillSwap - .4byte gMoveDescription_Imprison - .4byte gMoveDescription_Refresh - .4byte gMoveDescription_Grudge - .4byte gMoveDescription_Snatch - .4byte gMoveDescription_SecretPower - .4byte gMoveDescription_Dive - .4byte gMoveDescription_ArmThrust - .4byte gMoveDescription_Camouflage - .4byte gMoveDescription_TailGlow - .4byte gMoveDescription_LusterPurge - .4byte gMoveDescription_MistBall - .4byte gMoveDescription_FeatherDance - .4byte gMoveDescription_TeeterDance - .4byte gMoveDescription_BlazeKick - .4byte gMoveDescription_MudSport - .4byte gMoveDescription_IceBall - .4byte gMoveDescription_NeedleArm - .4byte gMoveDescription_SlackOff - .4byte gMoveDescription_HyperVoice - .4byte gMoveDescription_PoisonFang - .4byte gMoveDescription_CrushClaw - .4byte gMoveDescription_BlastBurn - .4byte gMoveDescription_HydroCannon - .4byte gMoveDescription_MeteorMash - .4byte gMoveDescription_Astonish - .4byte gMoveDescription_WeatherBall - .4byte gMoveDescription_Aromatherapy - .4byte gMoveDescription_FakeTears - .4byte gMoveDescription_AirCutter - .4byte gMoveDescription_Overheat - .4byte gMoveDescription_OdorSleuth - .4byte gMoveDescription_RockTomb - .4byte gMoveDescription_SilverWind - .4byte gMoveDescription_MetalSound - .4byte gMoveDescription_GrassWhistle - .4byte gMoveDescription_Tickle - .4byte gMoveDescription_CosmicPower - .4byte gMoveDescription_WaterSpout - .4byte gMoveDescription_SignalBeam - .4byte gMoveDescription_ShadowPunch - .4byte gMoveDescription_Extrasensory - .4byte gMoveDescription_SkyUppercut - .4byte gMoveDescription_SandTomb - .4byte gMoveDescription_SheerCold - .4byte gMoveDescription_MuddyWater - .4byte gMoveDescription_BulletSeed - .4byte gMoveDescription_AerialAce - .4byte gMoveDescription_IcicleSpear - .4byte gMoveDescription_IronDefense - .4byte gMoveDescription_Block - .4byte gMoveDescription_Howl - .4byte gMoveDescription_DragonClaw - .4byte gMoveDescription_FrenzyPlant - .4byte gMoveDescription_BulkUp - .4byte gMoveDescription_Bounce - .4byte gMoveDescription_MudShot - .4byte gMoveDescription_PoisonTail - .4byte gMoveDescription_Covet - .4byte gMoveDescription_VoltTackle - .4byte gMoveDescription_MagicalLeaf - .4byte gMoveDescription_WaterSport - .4byte gMoveDescription_CalmMind - .4byte gMoveDescription_LeafBlade - .4byte gMoveDescription_DragonDance - .4byte gMoveDescription_RockBlast - .4byte gMoveDescription_ShockWave - .4byte gMoveDescription_WaterPulse - .4byte gMoveDescription_DoomDesire - .4byte gMoveDescription_PsychoBoost diff --git a/data/text/nature_names.inc b/data/text/nature_names.inc deleted file mode 100644 index f191f80ba..000000000 --- a/data/text/nature_names.inc +++ /dev/null @@ -1,102 +0,0 @@ -gNatureName_Hardy: @ 83C0F60 - .string "HARDY$" - -gNatureName_Lonely: @ 83C0F66 - .string "LONELY$" - -gNatureName_Brave: @ 83C0F6D - .string "BRAVE$" - -gNatureName_Adamant: @ 83C0F73 - .string "ADAMANT$" - -gNatureName_Naughty: @ 83C0F7B - .string "NAUGHTY$" - -gNatureName_Bold: @ 83C0F83 - .string "BOLD$" - -gNatureName_Docile: @ 83C0F88 - .string "DOCILE$" - -gNatureName_Relaxed: @ 83C0F8F - .string "RELAXED$" - -gNatureName_Impish: @ 83C0F97 - .string "IMPISH$" - -gNatureName_Lax: @ 83C0F9E - .string "LAX$" - -gNatureName_Timid: @ 83C0FA2 - .string "TIMID$" - -gNatureName_Hasty: @ 83C0FA8 - .string "HASTY$" - -gNatureName_Serious: @ 83C0FAE - .string "SERIOUS$" - -gNatureName_Jolly: @ 83C0FB6 - .string "JOLLY$" - -gNatureName_Naive: @ 83C0FBC - .string "NAIVE$" - -gNatureName_Modest: @ 83C0FC2 - .string "MODEST$" - -gNatureName_Mild: @ 83C0FC9 - .string "MILD$" - -gNatureName_Quiet: @ 83C0FCE - .string "QUIET$" - -gNatureName_Bashful: @ 83C0FD4 - .string "BASHFUL$" - -gNatureName_Rash: @ 83C0FDC - .string "RASH$" - -gNatureName_Calm: @ 83C0FE1 - .string "CALM$" - -gNatureName_Gentle: @ 83C0FE6 - .string "GENTLE$" - -gNatureName_Sassy: @ 83C0FED - .string "SASSY$" - -gNatureName_Careful: @ 83C0FF3 - .string "CAREFUL$" - -gNatureName_Quirky: @ 83C0FFB - .string "QUIRKY$" - - .align 2 -gNatureNames:: @ 83C1004 - .4byte gNatureName_Hardy - .4byte gNatureName_Lonely - .4byte gNatureName_Brave - .4byte gNatureName_Adamant - .4byte gNatureName_Naughty - .4byte gNatureName_Bold - .4byte gNatureName_Docile - .4byte gNatureName_Relaxed - .4byte gNatureName_Impish - .4byte gNatureName_Lax - .4byte gNatureName_Timid - .4byte gNatureName_Hasty - .4byte gNatureName_Serious - .4byte gNatureName_Jolly - .4byte gNatureName_Naive - .4byte gNatureName_Modest - .4byte gNatureName_Mild - .4byte gNatureName_Quiet - .4byte gNatureName_Bashful - .4byte gNatureName_Rash - .4byte gNatureName_Calm - .4byte gNatureName_Gentle - .4byte gNatureName_Sassy - .4byte gNatureName_Careful - .4byte gNatureName_Quirky diff --git a/graphics/unknown/unknown_E94550.bin b/graphics/unknown/unknown_E94550.bin Binary files differindex ba6830b73..ed5feb3d6 100644 --- a/graphics/unknown/unknown_E94550.bin +++ b/graphics/unknown/unknown_E94550.bin diff --git a/graphics/unknown/unknown_E94590.bin b/graphics/unknown/unknown_E94590.bin Binary files differnew file mode 100644 index 000000000..bed9142e8 --- /dev/null +++ b/graphics/unknown/unknown_E94590.bin diff --git a/include/ewram.h b/include/ewram.h index 06ea513a3..eacc02cab 100755 --- a/include/ewram.h +++ b/include/ewram.h @@ -207,6 +207,7 @@ extern u8 gSharedMem[]; #define eEggHatchData (struct EggHatchData*)(&gSharedMem[0x18000]) #define ePokedexView1 (struct PokedexView *)(gSharedMem + 0x18000) #define UNK_2018000_STRUCT (*(struct UnknownStruct2018000 *)(gSharedMem + 0x18000)) +#define pssData (*(struct PokemonSummaryScreenStruct *)(gSharedMem + 0x18000)) #define ewram18300 ((u16 *)(gSharedMem + 0x18300)) #define ewram18800 (&gSharedMem[0x18800]) #define ePokedexView2 (struct PokedexView *)(gSharedMem + 0x18800) diff --git a/include/gba/macro.h b/include/gba/macro.h index 1e0254806..a0edf2a49 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -103,6 +103,22 @@ } \ } +#define DmaClearLarge(dmaNum, dest, size, block, bit) \ +{ \ + u32 _size = size; \ + while (1) \ + { \ + DmaFill##bit(dmaNum, 0, dest, (block)); \ + dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaFill##bit(dmaNum, 0, dest, _size); \ + break; \ + } \ + } \ +} + #define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16) #define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32) diff --git a/include/learn_move.h b/include/learn_move.h index 85fbf046e..7a05ea60b 100644 --- a/include/learn_move.h +++ b/include/learn_move.h @@ -1,6 +1,21 @@ #ifndef GUARD_LEARN_MOVE_H #define GUARD_LEARN_MOVE_H +struct ContestMove +{ + u8 effect; + u8 contestCategory:3; + u8 comboStarterId; + u8 comboMoves[4]; +}; + +struct ContestEffect +{ + u8 effectType; + u8 appeal; + u8 jam; +}; + void sub_8132670(void); #endif // GUARD_LEARN_MOVE_H diff --git a/include/party_menu.h b/include/party_menu.h index 304389e78..3998054da 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -216,5 +216,6 @@ void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func); void sub_806D668(u8 monIndex); void TaughtMove(u8 taskId); void StopTryingToTeachMove_806F588(u8 taskId); +bool8 IsHMMove(u16 move); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index 7fc8e181f..a1c30f1f3 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -578,6 +578,7 @@ void MonRestorePP(struct Pokemon *); u8 *sub_803F378(u16 itemId); +u16 SpeciesToPokedexNum(u16 species); u16 NationalPokedexNumToSpecies(u16 nationalNum); u16 NationalToHoennOrder(u16); u16 SpeciesToNationalPokedexNum(u16); @@ -611,6 +612,9 @@ const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *); bool8 IsPokeSpriteNotFlipped(u16); u8 GetLevelUpMovesBySpecies(u16, u16 *); u8 TryIncrementMonLevel(struct Pokemon *); +bool8 IsShiny(struct Pokemon *mon); + +struct Sprite *sub_80F7920(u16, u16, const u16 *); #endif // GUARD_POKEMON_H diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index c1b99c367..945e810a3 100644 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -1,11 +1,65 @@ #ifndef GUARD_POKEMON_SUMMARY_SCREEN_H #define GUARD_POKEMON_SUMMARY_SCREEN_H +#include "main.h" +#include "task.h" + extern const u8 *const gNatureNames[]; -void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int); -void sub_809D9F0(struct Pokemon *party, u8, u8, void *, u32); -void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); +// The Pokemon Summary Screen can operate in different modes. Certain features, +// such as move re-ordering, are available in the different modes. +enum PokemonSummaryScreenMode +{ + PSS_MODE_NORMAL, + PSS_MODE_MOVES_ONLY, + PSS_MODE_SELECT_MOVE, + PSS_MODE_UNKNOWN, // TODO: this mode might be used by pokemon_storage_system + PSS_MODE_NO_MOVE_ORDER_EDIT, + PSS_MODE_PC_NORMAL, + PSS_MODE_PC_MOVES_ONLY, +}; + +enum PokemonSummaryScreenPage +{ + PSS_PAGE_INFO, + PSS_PAGE_SKILLS, + PSS_PAGE_BATTLE_MOVES, + PSS_PAGE_CONTEST_MOVES, +}; + +struct PokemonSummaryScreenStruct +{ + /*0x00*/ union { + struct Pokemon *partyMons; + struct BoxPokemon *boxMons; + } monList; + /*0x04*/ MainCallback callback; + /*0x08*/ u8 mode; // see enum PokemonSummaryScreenMode + /*0x09*/ u8 monIndex; + /*0x0A*/ u8 maxMonIndex; + /*0x0B*/ u8 page; // enum PokemonSummaryScreenPage + /*0x0C*/ u8 monSpriteId; + /*0x0D*/ u8 ballSpriteId; + /*0x0E*/ bool8 usingPC; + /*0x0F*/ u8 inputHandlingTaskId; + /*0x10*/ struct Pokemon loadedMon; + /*0x74*/ u8 loadGfxState; + /*0x75*/ u8 firstPage; + /*0x76*/ u8 lastPage; + /*0x77*/ u8 unk77; + /*0x78*/ u8 unk78; + /*0x79*/ u8 selectedMoveIndex; + /*0x7A*/ u8 switchMoveIndex; + /*0x7B*/ bool8 disableMoveOrderEditing; + /*0x7C*/ u16 moveToLearn; + /*0x7E*/ u8 headerTextId; // used as index into sPageHeaderTexts + /*0x7F*/ u8 headerActionTextId; // used as index into sPageHeaderTexts + /*0x80*/ u8 bgToggle; + /*0x84*/ TaskFunc unk84; +}; + +void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u8); +void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16); u8 sub_809FA30(void); u8 pokemon_ailments_get_primary(u32); u8 GetMonStatusAndPokerus(); @@ -14,4 +68,5 @@ u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level); u8 PokemonSummaryScreen_CheckOT(struct Pokemon *pokemon); bool8 CheckPartyPokerus(struct Pokemon *, u8); + #endif // GUARD_POKEMON_SUMMARY_SCREEN_H diff --git a/ld_script.txt b/ld_script.txt index 0ae208033..3a271cd83 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -132,9 +132,7 @@ SECTIONS { src/pokemon/pokemon_storage_system.o(.text); asm/pokemon_storage_system.o(.text_8098A38); src/pokemon/pokemon_icon.o(.text); - asm/pokemon_summary_screen.o(.text); src/pokemon/pokemon_summary_screen.o(.text); - asm/pokemon_summary_screen.o(.text_80A0958); src/field/script_movement.o(.text); src/field/fldeff_cut.o(.text); src/pokemon/mail_data.o(.text); @@ -172,8 +170,136 @@ SECTIONS { asm/contest_link_80C857C.o(.text); src/battle/contest_link_80C857C.o(.text); src/field/item_use.o(.text); - src/battle_anim_80CA710.o(.text); - asm/battle_anim_80CA710.o(.text); + src/battle/anim/powder.o(.text); + src/battle/anim/orbs.o(.text); + src/battle/anim/seed.o(.text); + src/battle/anim/orbit.o(.text); + src/battle/anim/leaf.o(.text); + src/battle/anim/cutter.o(.text); + src/battle/anim/tendrils.o(.text); + src/battle/anim/silhouette.o(.text); + src/battle/anim/copy_orb.o(.text); + src/battle/anim/roots.o(.text); + src/battle/anim/osmose.o(.text); + src/battle/anim/hop.o(.text); + src/battle/anim/heal.o(.text); + src/battle/anim/hop_2.o(.text); + src/battle/anim/switch.o(.text); + src/battle/anim/flying_path.o(.text); + src/battle/anim/flying_petals.o(.text); + src/battle/anim/shimmer.o(.text); + src/battle/anim/homing.o(.text); + src/battle/anim/whip.o(.text); + src/battle/anim/unused_1.o(.text); + src/battle/anim/slice.o(.text); + src/battle/anim/unused_2.o(.text); + src/battle/anim/shield.o(.text); + src/battle/anim/bottle.o(.text); + src/battle/anim/glitter.o(.text); + src/battle/anim/unused_3.o(.text); + src/battle/anim/sleep.o(.text); + src/battle/anim/scan.o(.text); + src/battle/anim/lunge_1.o(.text); + src/battle/anim/unused_4.o(.text); + src/battle/anim/lunge_2.o(.text); + src/battle/anim/slash.o(.text); + src/battle/anim/brace.o(.text); + src/battle/anim/cube.o(.text); + src/battle/anim/tile_in.o(.text); + src/battle/anim/tile_out.o(.text); + src/battle/anim/moon.o(.text); + src/battle/anim/twinkle.o(.text); + src/battle/anim/flash.o(.text); + src/battle/anim/strike.o(.text); + src/battle/anim/evasion.o(.text); + src/battle/anim/fang.o(.text); + src/battle/anim/note_wave.o(.text); + src/battle/anim/note_scatter.o(.text); + src/battle/anim/drum.o(.text); + src/battle/anim/note_scatter_2.o(.text); + src/battle/anim/thought.o(.text); + src/battle/anim/wave_finger.o(.text); + src/battle/anim/spin_finger.o(.text); + src/battle/anim/taunt_finger.o(.text); + src/battle/anim/unused_5.o(.text); + src/battle/anim/unused_6.o(.text); + src/battle/anim/unused_7.o(.text); + src/battle/anim/unused_8.o(.text); + src/battle/anim/withdraw.o(.text); + src/battle/anim/alert.o(.text); + src/battle/anim/sword.o(.text); + src/battle/anim/sonic.o(.text); + src/battle/anim/sonic_task.o(.text); + src/battle/anim/unused_9.o(.text); + src/battle/anim/money.o(.text); + src/battle/anim/bullet.o(.text); + src/battle/anim/cyclone.o(.text); + src/battle/anim/grip.o(.text); + src/battle/anim/guillotine.o(.text); + src/battle/anim/shadow_enlarge.o(.text); + src/battle/anim/shadow_minimize.o(.text); + src/battle/anim/splash.o(.text); + src/battle/anim/grow.o(.text); + src/battle/anim/breath.o(.text); + src/battle/anim/anger.o(.text); + src/battle/anim/thrashing.o(.text); + src/battle/anim/draw.o(.text); + src/battle/anim/ring.o(.text); + src/battle/anim/egg.o(.text); + src/battle/anim/espeed.o(.text); + src/battle/anim/smoke.o(.text); + src/battle/anim/glow.o(.text); + src/battle/anim/note_rain.o(.text); + src/battle/anim/heart_1.o(.text); + src/battle/anim/curtain.o(.text); + src/battle/anim/startle.o(.text); + src/battle/anim/blow_kiss.o(.text); + src/battle/anim/kiss_fountain.o(.text); + src/battle/anim/flying_hearts.o(.text); + src/battle/anim/love_bg.o(.text); + src/battle/anim/scary_face.o(.text); + src/battle/anim/orbit_fast.o(.text); + src/battle/anim/orbit_scatter.o(.text); + src/battle/anim/spit.o(.text); + src/battle/anim/perceive.o(.text); + src/battle/anim/angel.o(.text); + src/battle/anim/angel_kiss.o(.text); + asm/devil.o(.text); + asm/swipe.o(.text); + asm/struggle.o(.text); + asm/uproar.o(.text); + asm/noise.o(.text); + asm/note_spin.o(.text); + asm/guard.o(.text); + asm/fury_cutter_count.o(.text); + asm/rain.o(.text); + asm/bubble.o(.text); + asm/aurora.o(.text); + asm/liquid_ball.o(.text); + asm/water.o(.text); + asm/fire.o(.text); + asm/sunlight.o(.text); + asm/fire_2.o(.text); + asm/heated_rock.o(.text); + asm/wisp_orb.o(.text); + asm/wisp_fire.o(.text); + asm/thunder.o(.text); + asm/beta_beat_up.o(.text); + asm/shock.o(.text); + asm/current.o(.text); + asm/ice.o(.text); + asm/fight.o(.text); + asm/poison.o(.text); + asm/flying.o(.text); + asm/psychic.o(.text); + asm/bug.o(.text); + asm/rock.o(.text); + asm/ghost.o(.text); + asm/dragon.o(.text); + asm/dark.o(.text); + asm/ground.o(.text); + asm/normal.o(.text); + asm/battle_intro.o(.text); src/field/bike.o(.text); asm/easy_chat.o(.text); src/field/easy_chat.o(.text); @@ -387,7 +513,7 @@ SECTIONS { src/battle/battle_party_menu.o(.rodata); data/pokemon_storage_system.o(.rodata); src/pokemon/pokemon_icon.o(.rodata); - data/pokemon_summary_screen.o(.rodata); + src/pokemon/pokemon_summary_screen.o(.rodata); data/fldeff_cut.o(.rodata); src/field/item_menu.o(.rodata); data/battle_anim_80A7E7C.o(.rodata); diff --git a/src/battle/anim/alert.c b/src/battle/anim/alert.c new file mode 100755 index 000000000..538008be0 --- /dev/null +++ b/src/battle/anim/alert.c @@ -0,0 +1,33 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// alert (red thunder from the sides of a Pokemon, simulating more alert behavior.) +// Used in Kinesis. + +void sub_80CF610(struct Sprite* sprite) +{ + sub_8078650(sprite); + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->hFlip = 1; + if (gBattleAnimArgs[2] != 0) + sprite->vFlip = 1; + } + else + { + if (gBattleAnimArgs[2] != 0) + sprite->vFlip = 1; + } + + sprite->callback = sub_8078600; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} diff --git a/src/battle/anim/angel.c b/src/battle/anim/angel.c new file mode 100755 index 000000000..916ebfdfd --- /dev/null +++ b/src/battle/anim/angel.c @@ -0,0 +1,37 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// angel (a little angel descends from somewhere towards a position) +// Used in Sweet Kiss. + +void sub_80D2938(struct Sprite* sprite) +{ + s16 r5; + if (sprite->data[0] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + + sprite->data[0]++; + r5 = (sprite->data[0] * 10) & 0xFF; + sprite->pos2.x = Sin(r5, 0x50) >> 8; + if (sprite->data[0] <= 0x4F) + sprite->pos2.y = (sprite->data[0] / 2) + (Cos(r5, 0x50) >> 8); + + if (sprite->data[0] > 0x5A) + { + sprite->data[2]++; + sprite->pos2.x -= sprite->data[2] / 2; + } + + if (sprite->data[0] > 0x64) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/angel_kiss.c b/src/battle/anim/angel_kiss.c new file mode 100755 index 000000000..453c4d802 --- /dev/null +++ b/src/battle/anim/angel_kiss.c @@ -0,0 +1,87 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "random.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// angel_kiss (a different variation of kiss_fountain.) +// Used in Sweet Kiss. + +void sub_80D29CC(struct Sprite* sprite) +{ + sprite->data[5]++; + sprite->pos2.x = Sin(sprite->data[3], 5); + sprite->pos2.y = sprite->data[5] / 2; + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + if (sprite->data[5] > 20) + sprite->invisible = sprite->data[5] % 2; + + if (sprite->data[5] > 30) + move_anim_8072740(sprite); +} + +void sub_80D2A38(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[0]++; + } + else + { + sprite->data[4] += sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]); + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + if (sprite->data[3] > 0x46) + { + sprite->callback = sub_80D29CC; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[3] = Random() % 0xB4; + } + } +} + +// this is for the next file, but i didnt feel like deleting it from the original 80C file. +/* void sub_80D2ABC(struct Sprite* sprite) +{ + int var; + s16 var2; + int var3; + if (sprite->data[3] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, 0); + sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) - 1; + sprite->data[2] = 1; + } + + sprite->data[0] += sprite->data[2]; + var = sprite->data[0] * 4; + if (var < 0) + var += 0xFF; + + sprite->data[1] = (sprite->data[0] * 4) -(((var) >> 8) << 8); + if (sprite->data[1] < 0) + sprite->data[1] = 0; + + var3 = sprite->data[1]; + var2 = sprite->data[0]; + var2 /= 4; + sprite->pos2.x = Cos(var3, 30 - var2); + var3 = sprite->data[1]; + var2 = sprite->data[0] / 8; + sprite->pos2.x = Sin(var3, 10 - var2); + if (sprite->data[1] > 0x80 && sprite->data[2] > 0) + sprite->data[2] = 0xFFFF; +} */ diff --git a/src/battle/anim/anger.c b/src/battle/anim/anger.c new file mode 100755 index 000000000..8962e0855 --- /dev/null +++ b/src/battle/anim/anger.c @@ -0,0 +1,34 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// anger (anger emotes, usually above the Pokemon's head, indicating annoyed emotions.) +// Used in Frustration, Rage, Swagger, Torment, and Taunt. + +void sub_80D09C0(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + + if (GetBankSide(bank) == 1) + { + gBattleAnimArgs[1] *= -1; + } + + sprite->pos1.x = sub_8077ABC(bank, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[2]; + if (sprite->pos1.y <= 7) + sprite->pos1.y = 8; + + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = sub_80785E4; +} diff --git a/src/battle/anim/blow_kiss.c b/src/battle/anim/blow_kiss.c new file mode 100755 index 000000000..e63f7189d --- /dev/null +++ b/src/battle/anim/blow_kiss.c @@ -0,0 +1,39 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D1FA4(struct Sprite* sprite); + +// blow_kiss (a heart floating across the screen.) +// Used in Attract. + +void sub_80D1F58(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data[0] = 0x5F; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->callback = sub_80D1FA4; +} + +void sub_80D1FA4(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite) == 0) + { + sprite->pos2.y += Sin(sprite->data[5], 14); + sprite->data[5] = (sprite->data[5] + 4) & 0xFF; + } + else + { + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/bottle.c b/src/battle/anim/bottle.c new file mode 100755 index 000000000..ac5e51881 --- /dev/null +++ b/src/battle/anim/bottle.c @@ -0,0 +1,125 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CCF70(struct Sprite* sprite); +static void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2); + +// bottle (shows a bottle swinging back and forth.) +// Used by Milk Drink. + +void sub_80CCF04(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + 0xFFE8; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[6] = 0; + sprite->data[7] = 16; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = (sprite->data[7] << 8) | sprite->data[6]; + sprite->callback = sub_80CCF70; +} + +void sub_80CCF70(struct Sprite* sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[2] > 0) + { + sprite->data[2] = 0; + if (((++sprite->data[1]) & 1) != 0) + { + if (sprite->data[6] <= 15) + sprite->data[6]++; + } + else if (sprite->data[7] > 0) + sprite->data[7]--; + + REG_BLDALPHA = (sprite->data[7] << 8) | sprite->data[6]; + if (sprite->data[6] == 16 && sprite->data[7] == 0) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + } + break; + case 1: + if (++sprite->data[1] > 8) + { + sprite->data[1] = 0; + StartSpriteAffineAnim(sprite, 1); + sprite->data[0]++; + } + break; + case 2: + sub_80CD0CC(sprite, 16, 4); + if (++sprite->data[1] > 2) + { + sprite->data[1] = 0; + sprite->pos1.y++; + } + + if (++sprite->data[2] <= 29) + break; + + if (sprite->data[2] & 1) + { + if (sprite->data[6] > 0) + sprite->data[6]--; + } + else if (sprite->data[7] <= 15) + { + sprite->data[7]++; + } + + REG_BLDALPHA = (sprite->data[7] << 8) | sprite->data[6]; + if (sprite->data[6] == 0 && sprite->data[7] == 16) + { + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 3: + sprite->invisible = 1; + sprite->data[0]++; + break; + case 4: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + move_anim_8072740(sprite); + break; + } +} + +void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2) +{ + if (sprite->data[3] <= 11) + sprite->data[4] += 2; + + if ((u16)(sprite->data[3] - 0x12) <= 0x17) + sprite->data[4] -= 2; + + if ((sprite->data[3]) > 0x2F) + sprite->data[4] += 2; + + sprite->pos2.x = sprite->data[4] / 9; + sprite->pos2.y = sprite->data[4] / 14; + if (sprite->pos2.y < 0) + sprite->pos2.y *= -1; + + sprite->data[3]++; + if (sprite->data[3] > 0x3B) + sprite->data[3] = 0; +} diff --git a/src/battle/anim/brace.c b/src/battle/anim/brace.c new file mode 100755 index 000000000..7b084efbb --- /dev/null +++ b/src/battle/anim/brace.c @@ -0,0 +1,45 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CDF70(struct Sprite* sprite); + +// brace (the Pokemon prepares to endure a hit) +// Used in Endure. + +void sub_80CDF0C(struct Sprite* sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[2]; + } + else + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[2]; + } + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->callback = sub_80CDF70; +} + +void sub_80CDF70(struct Sprite* sprite) +{ + if (++sprite->data[0] > sprite->data[1]) + { + sprite->data[0] = 0; + sprite->pos1.y--; + } + + sprite->pos1.y -= sprite->data[0]; + if (sprite->animEnded) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/breath.c b/src/battle/anim/breath.c new file mode 100755 index 000000000..0fcc7fa08 --- /dev/null +++ b/src/battle/anim/breath.c @@ -0,0 +1,36 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// breath (a puff of smoke, usually from the mouth or nose of the Pokemon.) +// Used in Swagger and Bulk Up. + +void sub_80D0930(struct Sprite* sprite) +{ + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + StartSpriteAnim(sprite, 0); + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + 32; + sprite->data[1] = 0x40; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) - 32; + sprite->data[1] = -0x40; + } + + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->data[0] = 0x34; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; + StoreSpriteCallbackInData(sprite, move_anim_8072740); + sprite->callback = sub_8078394; +} diff --git a/src/battle/anim/bullet.c b/src/battle/anim/bullet.c new file mode 100755 index 000000000..11306873a --- /dev/null +++ b/src/battle/anim/bullet.c @@ -0,0 +1,69 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "random.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D0030(struct Sprite* sprite); +static void sub_80D00B4(struct Sprite* sprite); + +// bullet (shoot seeds as ammunition.) +// Used by Bullet Seed. + +void sub_80CFFD8(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data[0] = 20; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); + sprite->callback = sub_8078B34; + sprite->affineAnimPaused = 1; + StoreSpriteCallbackInData(sprite, sub_80D0030); +} + +void sub_80D0030(struct Sprite* sprite) +{ + int i; + u16 rand; + s16* ptr; + PlaySE12WithPanning(0xA6, sub_8076F98(0x3F)); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + ptr = &sprite->data[7]; + for (i = 0; i < 8; i++) + { + ptr[i - 7] = 0; + } + + rand = Random(); + sprite->data[6] = 0xFFF4 - (rand & 7); + rand = Random(); + sprite->data[7] = (rand % 0xA0) + 0xA0; + sprite->callback = sub_80D00B4; + sprite->affineAnimPaused = 0; +} + +void sub_80D00B4(struct Sprite* sprite) +{ + sprite->data[0] += sprite->data[7]; + sprite->pos2.x = sprite->data[0] >> 8; + if (sprite->data[7] & 1) + sprite->pos2.x = -sprite->pos2.x; + + sprite->pos2.y = Sin(sprite->data[1], sprite->data[6]); + sprite->data[1] += 8; + if (sprite->data[1] > 0x7E) + { + sprite->data[1] = 0; + sprite->data[2] /= 2; + if (++sprite->data[3] == 1) + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/copy_orb.c b/src/battle/anim/copy_orb.c new file mode 100755 index 000000000..96d2910f0 --- /dev/null +++ b/src/battle/anim/copy_orb.c @@ -0,0 +1,46 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// copy_orb +// Used in Mimic. + +void sub_80CB4CC(struct Sprite* sprite) +{ + switch (sprite->data[0]) + { + case 0: + { + if (GetBankSide(gBattleAnimBankTarget) == 0) + { + s16 a = gBattleAnimArgs[0]; + gBattleAnimArgs[0] = -a; + } + + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[1]; + sprite->invisible = 1; + sprite->data[0]++; + break; + } + case 1: + { + sprite->invisible = 0; + if (sprite->affineAnimEnded) + { + ChangeSpriteAffineAnim(sprite, 1); + sprite->data[0] = 25; + sprite->data[2] = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->callback = sub_8078CC0; + StoreSpriteCallbackInData(sprite, move_anim_8072740); + break; + } + } + } +} diff --git a/src/battle/anim/cube.c b/src/battle/anim/cube.c new file mode 100755 index 000000000..07b3ea517 --- /dev/null +++ b/src/battle/anim/cube.c @@ -0,0 +1,52 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "constants/songs.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CE000(struct Sprite* sprite); + +// cube (shows a sphere sharpening into a cube.) +// Used in Sharpen. + +void sub_80CDFB0(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) - 12; + sprite->data[0] = 0; + sprite->data[1] = 2; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[5] = sub_8076F98(-0x40); + sprite->callback = sub_80CE000; +} + +void sub_80CE000(struct Sprite* sprite) +{ + if (++sprite->data[0] >= sprite->data[1]) + { + sprite->invisible = !sprite->invisible; + if (!sprite->invisible) + { + sprite->data[4]++; + if (!(sprite->data[4] & 1)) + PlaySE12WithPanning(SE_W207B, sprite->data[5]); + } + + sprite->data[0] = 0; + if (++sprite->data[2] > 1) + { + sprite->data[2] = 0; + sprite->data[1]++; + } + } + + if (sprite->animEnded && sprite->data[1] > 16 && sprite->invisible) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/curtain.c b/src/battle/anim/curtain.c new file mode 100755 index 000000000..1f34cb173 --- /dev/null +++ b/src/battle/anim/curtain.c @@ -0,0 +1,82 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "palette.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u16 gUnknown_03004240; +extern u16 gUnknown_030042C4; + +static void sub_80D1D48(u8 taskId); +static void sub_80D1D9C(u8 taskId); + +// curtain (a sweeping blackening curtain in the BG) +// Used in Fake Out. + +void sub_80D1CD0(u8 taskId) +{ + int zero; + bool8 result = NotInBattle(); + u16 var = 0xF0; + if (result) + { + var = 0x98; + zero = 0; + } + else + { + zero = 0; + } + + gUnknown_030042C4 = var; + gUnknown_03004240 = 0xA0; + REG_WIN0H = var; + REG_WIN0V = 0xA0; + REG_WININ = 0x3F1F; + REG_WINOUT = 0x3F3F; + REG_BLDCNT = 0xC8; + REG_BLDY = 0x10; + gTasks[taskId].data[0] = zero; + gTasks[taskId].data[1] = var; + gTasks[taskId].func = sub_80D1D48; +} + +void sub_80D1D48(u8 taskId) +{ + gTasks[taskId].data[0] += 13; + gTasks[taskId].data[1] -= 13; + if (gTasks[taskId].data[0] >= gTasks[taskId].data[1]) + { + gUnknown_030042C4 = 0; + gTasks[taskId].func = sub_80D1D9C; + } + else + { + gUnknown_030042C4 = gTasks[taskId].data[1] | (gTasks[taskId].data[0] << 8); + } +} + +void sub_80D1D9C(u8 taskId) +{ + if (++gTasks[taskId].data[10] == 5) + { + gTasks[taskId].data[11] = 0x88; + RequestSpriteCopy((u8 *)(&gTasks[taskId].data[11]), (u8 *)(®_BLDCNT), 2); + BlendPalettes(sub_80791A8(1, 0, 0, 0, 0, 0, 0), 16, RGB(31, 31, 31)); + } + else if (gTasks[taskId].data[10] > 4) + { + gUnknown_030042C4 = 0; + gUnknown_03004240 = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; + REG_BLDCNT = 0; + REG_BLDY = 0; + DestroyAnimVisualTask(taskId); + } +} diff --git a/src/battle/anim/cutter.c b/src/battle/anim/cutter.c new file mode 100755 index 000000000..9859497e5 --- /dev/null +++ b/src/battle/anim/cutter.c @@ -0,0 +1,130 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CB09C(struct Sprite* sprite); +static void sub_80CB1A4(struct Sprite* sprite); + +// cutter (the cresent shaped leaf used in throwing projectiles for the listed moves.) +// Used by Razor Leaf and Magical Leaf. + +void sub_80CAFD0(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + if (GetBankSide(gBattleAnimBankAttacker)) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + + sprite->data[0] = gBattleAnimArgs[4]; + if (!(gBattleAnimArgs[6])) + { + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; + } + else + { + sub_807A3FC(gBattleAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); + sprite->data[2] += gBattleAnimArgs[2]; + sprite->data[4] += gBattleAnimArgs[3]; + } + + sprite->data[5] = gBattleAnimArgs[5]; + sub_80786EC(sprite); + if (GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget)) + { + sprite->data[0] = 1; + } + else + { + sprite->data[0] = 0; + } + + sprite->callback = sub_80CB09C; +} + +void sub_80CB09C(struct Sprite* sprite) +{ + bool8 c = FALSE; + s16 a = sprite->data[0]; + s16 b = sprite->data[7]; + s16 r0; + + sprite->data[0] = 1; + sub_8078718(sprite); + r0 = sprite->data[7]; + sprite->data[0] = a; + if (b > 0xC8 && r0 <= 0x37 && sprite->oam.affineParam == 0) + sprite->oam.affineParam++; + + if (sprite->oam.affineParam != 0 && sprite->data[0] != 0) + { + sprite->invisible ^= 1; + sprite->oam.affineParam++; + if (sprite->oam.affineParam == 0x1E) + c = TRUE; + } + + if (sprite->pos1.x + sprite->pos2.x > 0x100 + || sprite->pos1.x + sprite->pos2.x < -16 + || sprite->pos1.y + sprite->pos2.y > 0xA0 + || sprite->pos1.y + sprite->pos2.y < -16) + c = TRUE; + + if (c) + move_anim_8072740(sprite); +} + +void sub_80CB144(struct Sprite* sprite) +{ + if (!NotInBattle() && IsDoubleBattle() == TRUE) + { + sub_807A3FC(gBattleAnimBankTarget, 1, &sprite->pos1.x, &sprite->pos1.y); + } + + sprite->pos1.y += 32; + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[2]; + sprite->data[3] = gBattleAnimArgs[3]; + sprite->data[4] = gBattleAnimArgs[4]; + sprite->callback = sub_80CB1A4; +} + +void sub_80CB1A4(struct Sprite* sprite) +{ + if (sprite->data[1] == 0xFF) + { + sprite->pos1.y -= 2; + } + else if (sprite->data[1] > 0) + { + sprite->pos1.y -= 2; + sprite->data[1] -= 2; + } + + sprite->data[5] += sprite->data[2]; + if (sprite->data[0] < sprite->data[4]) + sprite->data[5] += sprite->data[2]; + + sprite->data[5] &= 0xFF; + sprite->pos2.x = Cos(sprite->data[5], sprite->data[3]); + sprite->pos2.y = Sin(sprite->data[5], 5); + if (sprite->data[5] <= 0x7F) + { + sprite->oam.priority = sub_8079ED4(gBattleAnimBankTarget) - 1; + } + else + { + sprite->oam.priority = sub_8079ED4(gBattleAnimBankTarget) + 1; + } + + sprite->data[0]--; + if (!sprite->data[0]) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/cyclone.c b/src/battle/anim/cyclone.c new file mode 100755 index 000000000..b19304f17 --- /dev/null +++ b/src/battle/anim/cyclone.c @@ -0,0 +1,28 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// cyclone (creates a circling motion like a cyclone, usually a wind sprite.) +// Used in Razor Wind. + +void sub_80D0118(struct Sprite* sprite) +{ + sub_80787B0(sprite, 0); + if (GetBankSide(gBattleAnimBankAttacker) == 0) + sprite->pos1.y += 16; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[5]; + sprite->data[3] = gBattleAnimArgs[6]; + sprite->data[4] = gBattleAnimArgs[3]; + sprite->callback = sub_8078114; + StoreSpriteCallbackInData(sprite, move_anim_8072740); + sprite->callback(sprite); +} diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c new file mode 100755 index 000000000..c075af097 --- /dev/null +++ b/src/battle/anim/draw.c @@ -0,0 +1,292 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "unknown_task.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042C0; + +static void sub_80D0D68(u8 taskId); +static void sub_80D0E8C(struct Sprite* sprite); + +// draw (draws the Pokemon into the world using a pencil.) +// Used in Sketch. + +void sub_80D0C88(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + struct UnknownTaskStruct sp; + s16 i; + task->data[0] = sub_8077FC0(gBattleAnimBankTarget) + 32; + task->data[1] = 4; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0; + task->data[5] = 0; + task->data[15] = sub_807A100(gBattleAnimBankTarget, 0); + if (GetBankIdentity_permutated(gBattleAnimBankTarget) == 1) + { + task->data[6] = gUnknown_030042C0; + sp.dest = (u16 *)REG_ADDR_BG1HOFS; + } + else + { + task->data[6] = gUnknown_03004288; + sp.dest = (u16 *)REG_ADDR_BG2HOFS; + } + + for (i = task->data[0] - 0x40; i <= task->data[0];i++) + { + if (i >= 0) + { + gUnknown_03004DE0[0][i] = task->data[6] + 0xF0; + gUnknown_03004DE0[1][i] = task->data[6] + 0xF0; + } + } + + sp.control = 0xa2600001; + sp.unk8 = 1; + sp.unk9 = 0; + sub_80895F8(sp); + task->func = sub_80D0D68; +} + +#ifdef NONMATCHING +void sub_80D0D68(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[4]) + { + case 0: + if (++task->data[5] > 20) + task->data[4]++; + break; + case 1: + if (++task->data[1] > 3) + { + task->data[1] = 0; + task->data[2] = task->data[3] & 3; + task->data[5] = task->data[0] - task->data[3]; + switch (task->data[2]) + { + case 0: + break; + case 1: + task->data[5] -= 2; + break; + case 2: + task->data[5] += 1; + break; + case 3: + task->data[5] += 1; + break; + } + + if (task->data[5] >= 0) + { + gUnknown_03004DE0[0][task->data[5]] = task->data[6]; + gUnknown_03004DE0[1][task->data[5]] = task->data[6]; + } + + if (++task->data[3] >= task->data[15]) + { + gUnknown_03004DC0.unk15 = 3; + DestroyAnimVisualTask(taskId); + } + } + break; + } +} +#else +__attribute__((naked)) +void sub_80D0D68(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + ldr r1, _080D0D88 @ =gTasks\n\ + adds r3, r0, r1\n\ + movs r1, 0x10\n\ + ldrsh r0, [r3, r1]\n\ + cmp r0, 0\n\ + beq _080D0D8C\n\ + cmp r0, 0x1\n\ + beq _080D0DA2\n\ + b _080D0E22\n\ + .align 2, 0\n\ +_080D0D88: .4byte gTasks\n\ +_080D0D8C:\n\ + ldrh r0, [r3, 0x12]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0x12]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x14\n\ + ble _080D0E22\n\ + ldrh r0, [r3, 0x10]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0x10]\n\ + b _080D0E22\n\ +_080D0DA2:\n\ + ldrh r0, [r3, 0xA]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0xA]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x3\n\ + ble _080D0E22\n\ + movs r0, 0\n\ + strh r0, [r3, 0xA]\n\ + ldrh r1, [r3, 0xE]\n\ + movs r0, 0x3\n\ + ands r0, r1\n\ + strh r0, [r3, 0xC]\n\ + ldrh r0, [r3, 0x8]\n\ + subs r0, r1\n\ + strh r0, [r3, 0x12]\n\ + movs r2, 0xC\n\ + ldrsh r1, [r3, r2]\n\ + cmp r1, 0x1\n\ + beq _080D0DD8\n\ + cmp r1, 0x1\n\ + ble _080D0DE0\n\ + cmp r1, 0x2\n\ + beq _080D0DDC\n\ + cmp r1, 0x3\n\ + beq _080D0DDC\n\ + b _080D0DE0\n\ +_080D0DD8:\n\ + subs r0, 0x2\n\ + b _080D0DDE\n\ +_080D0DDC:\n\ + adds r0, 0x1\n\ +_080D0DDE:\n\ + strh r0, [r3, 0x12]\n\ +_080D0DE0:\n\ + movs r1, 0x12\n\ + ldrsh r0, [r3, r1]\n\ + cmp r0, 0\n\ + blt _080D0E04\n\ + ldr r2, _080D0E28 @ =gUnknown_03004DE0\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r1, [r3, 0x14]\n\ + strh r1, [r0]\n\ + movs r1, 0x12\n\ + ldrsh r0, [r3, r1]\n\ + lsls r0, 1\n\ + movs r1, 0xF0\n\ + lsls r1, 3\n\ + adds r2, r1\n\ + adds r0, r2\n\ + ldrh r1, [r3, 0x14]\n\ + strh r1, [r0]\n\ +_080D0E04:\n\ + ldrh r0, [r3, 0xE]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0xE]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + movs r2, 0x26\n\ + ldrsh r1, [r3, r2]\n\ + cmp r0, r1\n\ + blt _080D0E22\n\ + ldr r1, _080D0E2C @ =gUnknown_03004DC0\n\ + movs r0, 0x3\n\ + strb r0, [r1, 0x15]\n\ + adds r0, r4, 0\n\ + bl DestroyAnimVisualTask\n\ +_080D0E22:\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080D0E28: .4byte gUnknown_03004DE0\n\ +_080D0E2C: .4byte gUnknown_03004DC0\n\ +.syntax divided\n"); +} +#endif + +void sub_80D0E30(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) - 16; + sprite->pos1.y = sub_8077FC0(gBattleAnimBankTarget) + 16; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 16; + sprite->data[4] = 0; + sprite->data[5] = sub_807A100(gBattleAnimBankTarget, 0) + 2; + sprite->data[6] = sub_8076F98(0x3F); + sprite->callback = sub_80D0E8C; +} + +void sub_80D0E8C(struct Sprite* sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[2] > 1) + { + sprite->data[2] = 0; + sprite->invisible = !sprite->invisible; + } + if (++sprite->data[1] > 16) + { + sprite->invisible = 0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] > 3 && sprite->data[2] < sprite->data[5]) + { + sprite->data[1] = 0; + sprite->pos1.y -= 1; + sprite->data[2]++; + if (sprite->data[2] % 10 == 0) + PlaySE12WithPanning(0xCD, sprite->data[6]); + } + sprite->data[4] += sprite->data[3]; + if (sprite->data[4] > 31) + { + sprite->data[4] = 0x40 - sprite->data[4]; + sprite->data[3] *= -1; + } + else if (sprite->data[4] <= -32) + { + sprite->data[4] = -0x40 - sprite->data[4]; + sprite->data[3] *= -1; + } + sprite->pos2.x = sprite->data[4]; + if (sprite->data[5] == sprite->data[2]) + { + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 2: + if (++sprite->data[2] > 1) + { + sprite->data[2] = 0; + sprite->invisible = !sprite->invisible; + } + if (++sprite->data[1] > 16) + { + sprite->invisible = 0; + move_anim_8072740(sprite); + } + break; + } +} diff --git a/src/battle/anim/drum.c b/src/battle/anim/drum.c new file mode 100755 index 000000000..60cb2acc1 --- /dev/null +++ b/src/battle/anim/drum.c @@ -0,0 +1,32 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// drum (using hands to slap the Pokemon's belly in a rhythm.) +// Used in Belly Drum. + +void sub_80CEDF0(struct Sprite* sprite) +{ + s16 a; + if (gBattleAnimArgs[0] == 1) + { + sprite->oam.matrixNum = 8; + a = 16; + } + else + { + a = -16; + } + + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + a; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + 8; + sprite->data[0] = 8; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} diff --git a/src/battle/anim/egg.c b/src/battle/anim/egg.c new file mode 100755 index 000000000..a5bcffa6d --- /dev/null +++ b/src/battle/anim/egg.c @@ -0,0 +1,122 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D13AC(struct Sprite* sprite); +static void sub_80D1424(struct Sprite* sprite); +static void sub_80D144C(struct Sprite* sprite); +static void sub_80D14C4(struct Sprite* sprite); +static void sub_80D1504(struct Sprite* sprite); +static void sub_80D154C(struct Sprite* sprite); +static void sub_80D158C(struct Sprite* sprite); + +// egg (a hatching egg) +// Used in Softboiled. + +void sub_80D1368(struct Sprite* sprite) +{ + s16 r1; + sub_80787B0(sprite, 0); + r1 = (GetBankSide(gBattleAnimBankAttacker)) ? -0xA0 : 0xA0; + sprite->data[0] = 0x380; + sprite->data[1] = r1; + sprite->data[7] = gBattleAnimArgs[2]; + sprite->callback = sub_80D13AC; +} + +void sub_80D13AC(struct Sprite* sprite) +{ + s16 add; + sprite->pos2.y -= (sprite->data[0] >> 8); + sprite->pos2.x = sprite->data[1] >> 8; + sprite->data[0] -= 32; + add = (GetBankSide(gBattleAnimBankAttacker)) ? -0xA0 : 0xA0; + sprite->data[1] += add; + if (sprite->pos2.y > 0) + { + sprite->pos1.y += sprite->pos2.y; + sprite->pos1.x += sprite->pos2.x; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 0; + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_80D1424; + } +} + +void sub_80D1424(struct Sprite* sprite) +{ + if (sprite->data[0]++ > 19) + { + StartSpriteAffineAnim(sprite, 2); + sprite->callback = sub_80D144C; + } +} + +void sub_80D144C(struct Sprite* sprite) +{ + if (sprite->affineAnimEnded) + { + StartSpriteAffineAnim(sprite, 1); + sprite->data[0] = 0; + if (sprite->data[7] == 0) + { + sprite->oam.tileNum += 16; + sprite->callback = sub_80D14C4; + } + else + { + sprite->oam.tileNum += 32; + sprite->callback = sub_80D154C; + } + } +} + +void sub_80D14C4(struct Sprite* sprite) +{ + sprite->pos2.y -= 2; + if (++sprite->data[0] == 9) + { + sprite->data[0] = 16; + sprite->data[1] = 0; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = sprite->data[0]; + sprite->callback = sub_80D1504; + } +} + +void sub_80D1504(struct Sprite* sprite) +{ + if (sprite->data[1]++ % 3 == 0) + { + sprite->data[0]--; + REG_BLDALPHA = sprite->data[0] | ((16 - sprite->data[0]) << 8); + if (sprite->data[0] == 0) + sprite->callback = sub_80D154C; + } +} + +void sub_80D154C(struct Sprite* sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->invisible = 1; + if (sprite->data[7] == 0) + sprite->callback = sub_80D158C; + else + sprite->callback = move_anim_8072740; + } +} + +void sub_80D158C(struct Sprite* sprite) +{ + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/espeed.c b/src/battle/anim/espeed.c new file mode 100755 index 000000000..621d386e1 --- /dev/null +++ b/src/battle/anim/espeed.c @@ -0,0 +1,241 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern s8 gUnknown_083D7A00[4][2]; + +extern struct AffineAnimFrameCmd gUnknown_083D79BC; +extern struct SpriteTemplate gSpriteTemplate_83D79E8; + +static void sub_80D15E0(u8 taskId); +static void sub_80D16A0(u8 taskId); +static void sub_80D1808(u8 taskId); +static void sub_80D1930(u8 taskId); + +// espeed (the Pokemon's width decreases as the sprite becomes vertically compressed) +// Used in Extremespeed. + +// apply espeed +void sub_80D15A4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBankSpriteId(0); + task->data[0] = spriteId; + sub_80798F4(task, spriteId, &gUnknown_083D79BC); + task->func = sub_80D15E0; +} + +void sub_80D15E0(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (sub_807992C(task) == 0) + { + gSprites[task->data[0]].pos2.y = 0; + gSprites[task->data[0]].invisible = 1; + DestroyAnimVisualTask(taskId); + } +} + +// espeed hit effect +void sub_80D1638(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[12] = 3; + if (GetBankSide(gBattleAnimBankTarget) == 0) + { + task->data[13] = 0xFFFF; + task->data[14] = 8; + } + else + { + task->data[13] = 1; + task->data[14] = -8; + } + + task->data[15] = GetAnimBankSpriteId(1); + task->func = sub_80D16A0; +} + +void sub_80D16A0(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + gSprites[task->data[15]].pos2.x += task->data[14]; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; + break; + case 1: + if (++task->data[1] > 1) + { + task->data[1] = 0; + task->data[2]++; + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x += 6; + else + gSprites[task->data[15]].pos2.x -= 6; + + if (++task->data[3] > 4) + { + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x -= 6; + + task->data[0]++; + } + } + break; + case 2: + if (--task->data[12] != 0) + task->data[0] = 0; + else + task->data[0]++; + break; + case 3: + gSprites[task->data[15]].pos2.x += task->data[13]; + if (gSprites[task->data[15]].pos2.x == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +// espeed poke flicker in +void sub_80D17C4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 1; + task->data[13] = 14; + task->data[14] = 2; + task->data[15] = GetAnimBankSpriteId(0); + task->func = sub_80D1808; +} + +void sub_80D1808(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (task->data[0] == 0 && ++task->data[1] > task->data[4]) + { + task->data[1] = 0; + if (++task->data[2] & 1) + gSprites[task->data[15]].invisible = 0; + else + gSprites[task->data[15]].invisible = 1; + + if (++task->data[3] >= task->data[13]) + { + if (++task->data[4] < task->data[14]) + { + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + } + else + { + gSprites[task->data[15]].invisible = 0; + DestroyAnimVisualTask(taskId); + } + } + } +} + +// espeed smoke flicker +void sub_80D18D4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 4; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0; + task->data[5] = 0; + task->data[6] = 0; + task->data[7] = 0; + task->data[8] = 0; + task->data[13] = 0; + task->data[14] = sub_8077ABC(gBattleAnimBankAttacker, 0); + task->data[15] = sub_8077ABC(gBattleAnimBankAttacker, 1); + task->func = sub_80D1930; +} + +void sub_80D1930(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[8]) + { + case 0: + if (++task->data[4] > 1) + { + task->data[4] = 0; + task->data[5] = (task->data[5] + 1) & 1; + if (++task->data[6] > 20) + { + if (task->data[7] == 0) + { + task->data[6] = 0; + task->data[8] = 1; + } + else + task->data[8] = 2; + } + } + break; + case 1: + task->data[5] = 0; + if (++task->data[4] > 20) + { + task->data[7] = 1; + task->data[8] = 0; + } + break; + case 2: + task->data[5] = 1; + break; + } + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 4) + { + u8 spriteId; + task->data[1] = 0; + spriteId = CreateSprite(&gSpriteTemplate_83D79E8, task->data[14], task->data[15], 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = 13; + gSprites[spriteId].pos2.x = gUnknown_083D7A00[task->data[2]][0]; + gSprites[spriteId].pos2.y = gUnknown_083D7A00[task->data[2]][1]; + task->data[13]++; + if (++task->data[2] > 3) + { + task->data[2] = 0; + if (++task->data[3] > 5) + task->data[0]++; + } + } + } + break; + case 1: + if (task->data[13] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} diff --git a/src/battle/anim/evasion.c b/src/battle/anim/evasion.c new file mode 100755 index 000000000..b4e81009b --- /dev/null +++ b/src/battle/anim/evasion.c @@ -0,0 +1,95 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "palette.h" +#include "blend_palette.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CE910(u8 taskId); +static void sub_80CE974(struct Sprite* sprite); + +// evasion (the shadow seen during evasion increases, mainly Double Team.) +// Used by Double Team. + +void sub_80CE7E0(u8 taskId) +{ + u16 i; + int obj; + u16 r3; + u16 r4; + struct Task* task = &gTasks[taskId]; + task->data[0] = GetAnimBankSpriteId(0); + task->data[1] = AllocSpritePalette(0x2771); + r3 = (task->data[1] * 16) + 0x100; + r4 = (gSprites[task->data[0]].oam.paletteNum + 16) << 4; + for (i = 1; i < 16; i++) + { + gPlttBufferUnfaded[r3 + i] = gPlttBufferUnfaded[r4 + i]; + } + + BlendPalette(r3, 16, 11, 0); + task->data[3] = 0; + i = 0; + while (i <= 1 && (obj = duplicate_obj_of_side_rel2move_in_transparent_mode(0)) >= 0) + { + gSprites[obj].oam.paletteNum = task->data[1]; + gSprites[obj].data[0] = 0; + gSprites[obj].data[1] = i << 7; + gSprites[obj].data[2] = taskId; + gSprites[obj].callback = sub_80CE974; + task->data[3]++; + i++; + } + + task->func = sub_80CE910; + if (GetBankIdentity_permutated(gBattleAnimBankAttacker) == 1) + { + REG_DISPCNT &= 0xFDFF; + } + else + { + REG_DISPCNT &= 0xFBFF; + } +} + +void sub_80CE910(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!task->data[3]) + { + if (GetBankIdentity_permutated(gBattleAnimBankAttacker) == 1) + REG_DISPCNT |= 0x200; + else + REG_DISPCNT |= 0x400; + + FreeSpritePaletteByTag(0x2771); + DestroyAnimVisualTask(taskId); + } +} + +void sub_80CE974(struct Sprite* sprite) +{ + if (++sprite->data[3] > 1) + { + sprite->data[3] = 0; + sprite->data[0]++; + } + + if (sprite->data[0] > 0x40) + { + gTasks[sprite->data[2]].data[3]--; + obj_delete_but_dont_free_vram(sprite); + } + else + { + sprite->data[4] = gSineTable[sprite->data[0]] / 6; + sprite->data[5] = gSineTable[sprite->data[0]] / 13; + sprite->data[1] = (sprite->data[1] + sprite->data[5]) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], sprite->data[4]); + } +} diff --git a/src/battle/anim/fang.c b/src/battle/anim/fang.c new file mode 100755 index 000000000..4df450691 --- /dev/null +++ b/src/battle/anim/fang.c @@ -0,0 +1,19 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// fang +// Used by Super Fang (and probably Hyper Fang, but the actual callbacks are not in this file.) +// (Look into this one later.) + +void sub_80CEA04(struct Sprite* sprite) +{ + StoreSpriteCallbackInData(sprite, move_anim_8072740); + sprite->callback = sub_8078600; +} diff --git a/src/battle/anim/flash.c b/src/battle/anim/flash.c new file mode 100755 index 000000000..0e087ec2d --- /dev/null +++ b/src/battle/anim/flash.c @@ -0,0 +1,123 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "palette.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FC8; +extern struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FF8; + +static void sub_80CE4D4(u8 taskId); + +// flash (a "ting!" flash effect.) +// Used in Moonlight. + +void sub_80CE3EC(u8 taskId) +{ + int a = sub_80791A8(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + int b; + int c; + int d; + + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = a; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[6] = 0; + gTasks[taskId].data[7] = 13; + gTasks[taskId].data[8] = 14; + gTasks[taskId].data[9] = 15; + b = sub_80792C0(1, 1, 1, 1); + c = a | b; + sub_8079BF4(&gTasks[taskId].data[14], &gTasks[taskId].data[15], (void*)c); + b = b | (0x10000 << IndexOfSpritePaletteTag(0x27D2)); + d = IndexOfSpritePaletteTag(0x27D3); + BeginNormalPaletteFade((0x10000 << d) | b, 0, 0, 0x10, 32699); + gTasks[taskId].func = sub_80CE4D4; + sub_80CE4D4(taskId); +} + +void sub_80CE4D4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 0) + { + u16 color; + u16 bitmask; + u16 r3; + u16 i; + u16 j; + task->data[1] = 0; + if (++task->data[2] <= 15) + { + u16 red; + u16 green; + u16 blue; + task->data[4] += task->data[7]; + task->data[5] += task->data[8]; + task->data[6] += task->data[9]; + red = task->data[4] >> 3; + green = task->data[5] >> 3; + blue = task->data[6] >> 3; + color = RGB(red, green, blue); + } + else + { + color = RGB(27, 29, 31); + task->data[0]++; + } + + bitmask = 1; + r3 = 0; + for (i = 0; i <= 15; i++) + { + if (task->data[3] & bitmask) + { + for (j = 1; j <= 15; j++) + { + gPlttBufferFaded[r3 + j] = color; + } + } + + bitmask <<= 1; + r3 += 16; + } + } + break; + case 1: + if (!gPaletteFade.active) + { + u8 spriteId; + for (spriteId = 0; spriteId < MAX_SPRITES; spriteId++) + { + if (gSprites[spriteId].template == &gBattleAnimSpriteTemplate_83D6FC8 || gSprites[spriteId].template == &gBattleAnimSpriteTemplate_83D6FF8) + gSprites[spriteId].data[0] = 1; + } + + task->data[1] = 0; + task->data[0]++; + } + break; + case 2: + if (++task->data[1] > 30) + { + BeginNormalPaletteFade((u32)sub_8079BFC(task->data[14], task->data[15]), 0, 16, 0, RGB(27, 29, 31)); + task->data[0]++; + } + break; + case 3: + if (!gPaletteFade.active) + DestroyAnimVisualTask(taskId); + break; + } +} diff --git a/src/battle/anim/flying_hearts.c b/src/battle/anim/flying_hearts.c new file mode 100755 index 000000000..5b7d31a51 --- /dev/null +++ b/src/battle/anim/flying_hearts.c @@ -0,0 +1,40 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D2094(struct Sprite* sprite); + +// flying_hearts (hearts float upward from the bottom of the screen.) +// Used in Attract. + +void sub_80D2064(struct Sprite* sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = 0xA0; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, sub_80D2094); +} + +void sub_80D2094(struct Sprite* sprite) +{ + s16 y; + sprite->data[2] += sprite->data[1]; + sprite->pos2.y = -((u16)sprite->data[2] >> 8); + sprite->pos2.x = Sin(sprite->data[3], 4); + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + y = sprite->pos1.y + sprite->pos2.y; + if (y <= 0x48) + { + sprite->invisible = sprite->data[3] % 2; + if (y <= 0x40) + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/flying_path.c b/src/battle/anim/flying_path.c new file mode 100755 index 000000000..017f89858 --- /dev/null +++ b/src/battle/anim/flying_path.c @@ -0,0 +1,296 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern struct SpriteTemplate gSpriteTemplate_83D6884; + +static void sub_80CBF5C(u8 taskId); +static s16 sub_80CC338(struct Sprite* sprite); +static void sub_80CC358(struct Task* task, u8 taskId); +static void sub_80CC408(struct Sprite* sprite); + +// flying_path (guides a sprite along a specific path.) +// Used by Leaf Blade. + +void sub_80CBDF4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[4] = sub_8079E90(gBattleAnimBankTarget) - 1; + task->data[6] = sub_8077ABC(gBattleAnimBankTarget, 2); + task->data[7] = sub_8077ABC(gBattleAnimBankTarget, 3); + task->data[10] = sub_807A100(gBattleAnimBankTarget, 1); + task->data[11] = sub_807A100(gBattleAnimBankTarget, 0); + task->data[5] = (GetBankSide(gBattleAnimBankTarget) == 1) ? 1 : -1; + task->data[9] = 0x38 - (task->data[5] * 64); + task->data[8] = task->data[7] - task->data[9] + task->data[6]; + task->data[2] = CreateSprite(&gSpriteTemplate_83D6884, task->data[8], task->data[9], task->data[4]); + if (task->data[2] == 0x40) + DestroyAnimVisualTask(taskId); + + gSprites[task->data[2]].data[0] = 10; + gSprites[task->data[2]].data[1] = task->data[8]; + gSprites[task->data[2]].data[2] = task->data[6] - (task->data[10] / 2 + 10) * task->data[5]; + gSprites[task->data[2]].data[3] = task->data[9]; + gSprites[task->data[2]].data[4] = task->data[7] + (task->data[11] / 2 + 10) * task->data[5]; + gSprites[task->data[2]].data[5] = sub_80CC338(&gSprites[task->data[2]]); + sub_80786EC(&gSprites[task->data[2]]); + task->func = sub_80CBF5C; +} + +void sub_80CBF5C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + struct Sprite* sprite = &gSprites[task->data[2]]; + int a = task->data[0]; + switch (a) + { + case 4: + sub_80CC358(task, taskId); + if (sub_8078718(sprite) == 0) + { + break; + } + else + { + task->data[15] = 5; + task->data[0] = 0xFF; + } + break; + case 8: + sub_80CC358(task, taskId); + if (sub_8078718(sprite) == 0) + { + break; + } + else + { + task->data[15] = 9; + task->data[0] = 0xFF; + } + break; + case 0: + sub_80CC358(task, taskId); + if (sub_8078718(sprite) == 0) + break; + + task->data[15] = 1; + task->data[0] = 0xFF; + break; + case 1: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7]; + sprite->data[5] = sub_80CC338(sprite); + task->data[4] += 2; + task->data[3] = a; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + case 2: + sub_80CC358(task, taskId); + if (sub_8078718(sprite) == 0) + break; + + task->data[15] = 3; + task->data[0] = 0xFF; + break; + case 3: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data[5] = sub_80CC338(sprite); + task->data[3] = 2; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + case 5: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data[5] = sub_80CC338(sprite); + task->data[4] -= 2; + task->data[3] = 3; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + case 6: + sub_80CC358(task, taskId); + if (sub_8078718(sprite) == 0) + break; + + task->data[15] = 7; + task->data[0] = 0xFF; + break; + case 7: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7]; + sprite->data[5] = sub_80CC338(sprite); + task->data[4] += 2; + task->data[3] = 4; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + case 9: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data[5] = sub_80CC338(sprite); + task->data[3] = 5; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + case 10: + sub_80CC358(task, taskId); + if (sub_8078718(sprite) == 0) + { + break; + } + else + { + task->data[15] = 11; + task->data[0] = 0xFF; + } + break; + case 11: + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[8]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[9]; + sprite->data[5] = sub_80CC338(sprite); + task->data[4] -= 2; + task->data[3] = 6; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + sub_80786EC(sprite); + task->data[0]++; + break; + } + case 12: + sub_80CC358(task, taskId); + if (sub_8078718(sprite) != 0) + { + DestroySprite(sprite); + task->data[0]++; + } + break; + case 13: + if (task->data[12] == 0) + { + DestroyAnimVisualTask(taskId); + } + break; + case 255: + task->data[1]++; + if (task->data[1] > 5) + { + task->data[1] = 0; + task->data[0] = task->data[15]; + } + break; + } +} + +s16 sub_80CC338(struct Sprite* sprite) +{ + s16 var = 8; + if (sprite->data[4] < sprite->pos1.y) + var = -var; + + return var; +} + +void sub_80CC358(struct Task* task, u8 taskId) +{ + task->data[14]++; + if (task->data[14] > 0) + { + u8 spriteId; + s16 spriteX; + s16 spriteY; + task->data[14] = 0; + spriteX = gSprites[task->data[2]].pos1.x + gSprites[task->data[2]].pos2.x; + spriteY = gSprites[task->data[2]].pos1.y + gSprites[task->data[2]].pos2.y; + spriteId = CreateSprite(&gSpriteTemplate_83D6884, spriteX, spriteY, task->data[4]); + if (spriteId != 0x40) + { + gSprites[spriteId].data[6] = taskId; + gSprites[spriteId].data[7] = 12; + gTasks[taskId].data[12]++; + gSprites[spriteId].data[0] = task->data[13] & 1; + gTasks[taskId].data[13]++; + StartSpriteAnim(&gSprites[spriteId], task->data[3]); + gSprites[spriteId].subpriority = task->data[4]; + gSprites[spriteId].callback = sub_80CC408; + } + } +} + +void sub_80CC408(struct Sprite* sprite) +{ + sprite->data[0]++; + if (sprite->data[0] > 1) + { + sprite->data[0] = 0; + sprite->invisible ^= 1; + sprite->data[1]++; + if (sprite->data[1] > 8) + { + gTasks[sprite->data[6]].data[sprite->data[7]]--; + DestroySprite(sprite); + } + } +} diff --git a/src/battle/anim/flying_petals.c b/src/battle/anim/flying_petals.c new file mode 100755 index 000000000..ed6497b7a --- /dev/null +++ b/src/battle/anim/flying_petals.c @@ -0,0 +1,83 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CC580(struct Sprite* sprite); + +// flying_petals (petals fly across the screen.) +// Used by Aromatherapy. + +void sub_80CC474(struct Sprite* sprite) +{ + u8 bank; + if (!gBattleAnimArgs[6]) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + + if (GetBankSide(bank) != 0) + { + sprite->data[4] = 0; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->pos1.x = 0xFFF0; + } + else + { + sprite->data[4] = 1; + sprite->data[2] = -gBattleAnimArgs[3]; + sprite->pos1.x = 0x100; + } + + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[3] = gBattleAnimArgs[4]; + switch (gBattleAnimArgs[5]) + { + case 0: + sprite->pos1.y = gBattleAnimArgs[0]; + sprite->oam.priority = sub_8079ED4(bank); + break; + case 1: + sprite->pos1.y = gBattleAnimArgs[0]; + sprite->oam.priority = sub_8079ED4(bank) + 1; + break; + case 2: + sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[0]; + sprite->oam.priority = sub_8079ED4(bank); + break; + case 3: + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[0]; + GetAnimBankSpriteId(1); + sprite->oam.priority = sub_8079ED4(bank) + 1; + break; + } + + sprite->callback = sub_80CC580; +} + +void sub_80CC580(struct Sprite* sprite) +{ + int a = sprite->data[7]; + sprite->data[7]++; + sprite->pos2.y = (sprite->data[1] * gSineTable[sprite->data[0]]) >> 8; + sprite->pos2.x = sprite->data[2] * a; + sprite->data[0] = (sprite->data[3] * a) & 0xFF; + if (sprite->data[4] == 0) + { + if (sprite->pos2.x + sprite->pos1.x <= 0xF7) + return; + } + else + { + if (sprite->pos2.x + sprite->pos1.x > -16) + return; + } + + move_anim_8074EE0(sprite); +} diff --git a/src/battle/anim/glitter.c b/src/battle/anim/glitter.c new file mode 100755 index 000000000..548397932 --- /dev/null +++ b/src/battle/anim/glitter.c @@ -0,0 +1,63 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// glitter (the sparkling effect seen on Pokemon, usually after healing or a beneficial effect.) +// Used by Heal Bell, Cosmic Power, and Aromatherapy. + +void sub_80CD140(struct Sprite* sprite) +{ + if (!gBattleAnimArgs[2]) + sub_8078650(sprite); + + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[5]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[4]; + StoreSpriteCallbackInData(sprite, move_anim_8072740); + sprite->callback = sub_8078394; +} + +void sub_80CD190(struct Sprite* sprite) +{ + u8 bank; + if (!gBattleAnimArgs[2]) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + + if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2)) + { + sub_807A3FC(bank, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y); + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + } + else + { + if (!gBattleAnimArgs[6]) + { + sprite->pos1.x = sub_8077ABC(bank, 0); + sprite->pos1.y = sub_8077ABC(bank, 1) + gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x = sub_8077ABC(bank, 2); + sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[1]; + } + + sub_807867C(sprite, gBattleAnimArgs[0]); + } + + sprite->data[0] = gBattleAnimArgs[5]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[4]; + StoreSpriteCallbackInData(sprite, move_anim_8072740); + sprite->callback = sub_8078394; +} diff --git a/src/battle/anim/glow.c b/src/battle/anim/glow.c new file mode 100755 index 000000000..6038825af --- /dev/null +++ b/src/battle/anim/glow.c @@ -0,0 +1,55 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "ewram.h" +#include "palette.h" +#include "decompress.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u16 gUnknown_083D7A5C[5]; + +extern struct INCBIN_U8 gBattleAnimSpritePalette_206; + +// glow (a whitening effect where the Pokemon glows white in a cycle.) +// Used in Heal Bell. + +void sub_80D1ADC(u8 taskId) +{ + int i; + u8 sp[8]; + void* src; + void* dest; + void* what; + sp[0] = IndexOfSpritePaletteTag(0x27DE); + for (i = 1; i <= 4; i++) + { + sp[i] = AllocSpritePalette(0x2710 - i); + } + + src = &gBattleAnimSpritePalette_206; + dest = (NotInBattle()) ? gSharedMem + 0x18000 - 0x3800: gSharedMem + 0x18000; + LZDecompressWram(src, dest); + for (i = 0; i <= 4; i++) + { + what = ((NotInBattle()) ? gSharedMem + 0x14800 : gSharedMem + 0x18000) + (i << 5); + LoadPalette(what, (u16)((sp[i] << 4) + 0x100), 32); + } + + DestroyAnimVisualTask(taskId); +} + +void sub_80D1B80(u8 taskId) +{ + int i; + for (i = 0; i < 5; i++) + { + FreeSpritePaletteByTag(gUnknown_083D7A5C[i]); + } + + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle/anim/grip.c b/src/battle/anim/grip.c new file mode 100755 index 000000000..93c3dba96 --- /dev/null +++ b/src/battle/anim/grip.c @@ -0,0 +1,44 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D020C(struct Sprite* sprite); + +// grip (does a slash which is capable of mirroring for the effect of "gripping".) +// Used in Vice Grip. + +void sub_80D0178(struct Sprite* sprite) +{ + s16 r7 = 32; + s16 r4 = -32; + s16 r8 = 16; + s16 r6 = -16; + if (gBattleAnimArgs[0] != 0) + { + r7 = r4; + r4 = 32; + r8 = r6; + r6 = 16; + StartSpriteAnim(sprite, 1); + } + + sprite->pos1.x += r7; + sprite->pos1.y += r4; + sprite->data[0] = 6; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + r8; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3) + r6; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, sub_80D020C); +} + +void sub_80D020C(struct Sprite* sprite) +{ + if (sprite->animEnded == 1) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/grow.c b/src/battle/anim/grow.c new file mode 100755 index 000000000..35047c8b0 --- /dev/null +++ b/src/battle/anim/grow.c @@ -0,0 +1,31 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern struct AffineAnimFrameCmd gUnknown_083D7714; + +static void sub_80D0904(u8 taskId); + +// grow (grows a Pokemon then shrinks back to normal size.) +// Used in Swagger and Bulk Up. + +void sub_80D08C8(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBankSpriteId(0); + sub_80798F4(task, spriteId, &gUnknown_083D7714); + task->func = sub_80D0904; +} + +void sub_80D0904(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!sub_807992C(task)) + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle/anim/guillotine.c b/src/battle/anim/guillotine.c new file mode 100755 index 000000000..b710f372a --- /dev/null +++ b/src/battle/anim/guillotine.c @@ -0,0 +1,90 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D02D0(struct Sprite* sprite); +static void sub_80D0344(struct Sprite* sprite); +static void sub_80D03A8(struct Sprite* sprite); + +// guillotine (does a reverse grip where the slices can reverse at a given period.) +// Used in Guillotine. + +void sub_80D0228(struct Sprite* sprite) +{ + s16 r8 = 32; + s16 r4 = -32; + s16 r9 = 16; + s16 r6 = -16; + if (gBattleAnimArgs[0] != 0) + { + r8 = r4; + r4 = 32; + r9 = r6; + r6 = 16; + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + } + + sprite->pos1.x += r8; + sprite->pos1.y += r4; + sprite->data[0] = 6; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + r9; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3) + r6; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->data[5] = gBattleAnimArgs[0]; + sprite->data[6] = sprite->data[0]; + sprite->callback = sub_80D02D0; +} + +void sub_80D02D0(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite) && sprite->animEnded == 1) + { + SeekSpriteAnim(sprite, 0); + sprite->animPaused = 1; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 2; + sprite->pos2.y = -2; + sprite->data[0] = sprite->data[6]; + sprite->data[1] ^= 1; + sprite->data[2] ^= 1; + sprite->data[4] = 0; + sprite->data[3] = 0; + sprite->callback = sub_80D0344; + } +} + +void sub_80D0344(struct Sprite* sprite) +{ + if (sprite->data[3]) + { + sprite->pos2.x = -sprite->pos2.x; + sprite->pos2.y = -sprite->pos2.y; + } + + sprite->data[3] ^= 1; + if (++sprite->data[4] == 0x33) + { + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[4] = 0; + sprite->data[3] = 0; + sprite->animPaused = 0; + StartSpriteAnim(sprite, sprite->data[5] ^ 1); + sprite->callback = sub_80D03A8; + } +} + +void sub_80D03A8(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite) != 0) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/heal.c b/src/battle/anim/heal.c new file mode 100755 index 000000000..c5950650c --- /dev/null +++ b/src/battle/anim/heal.c @@ -0,0 +1,27 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// heal (healing sparkles on a Pokemon) +// Used in Present, if the move heals instead of damages. + +void sub_80CBAA4(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sub_8078764(sprite, 0); + sprite->data[1] = gBattleAnimArgs[2]; + } + + sprite->data[0]++; + sprite->pos2.y = sprite->data[1] * sprite->data[0]; + if (sprite->animEnded) + { + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/heart_1.c b/src/battle/anim/heart_1.c new file mode 100755 index 000000000..1ab83136c --- /dev/null +++ b/src/battle/anim/heart_1.c @@ -0,0 +1,25 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// heart_1 (a floating heart in a wave pattern upward.) +// Used in Charm, Covet, and when a Pokemon is infatuated. + +void sub_80D1C80(struct Sprite* sprite) +{ + if (++sprite->data[0] == 1) + sub_80787B0(sprite, 0); + + sprite->pos2.x = Sin(sprite->data[1], 8); + sprite->pos2.y = sprite->data[2] >> 8; + sprite->data[1] = (sprite->data[1] + 7) & 0xFF; + sprite->data[2] -= 0x80; + if (sprite->data[0] == 0x3C) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/homing.c b/src/battle/anim/homing.c new file mode 100755 index 000000000..c5e372d78 --- /dev/null +++ b/src/battle/anim/homing.c @@ -0,0 +1,86 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CC7D4(struct Sprite* sprite); + +// homing (the spinning effect of sprites going inward in a static rotation.) +// Used by Needle Arm. + +void sub_80CC6CC(struct Sprite* sprite) +{ + u8 a; + u8 b; + u16 c; + u16 x; + u16 y; + + if (gBattleAnimArgs[4] == 0) + { + move_anim_8072740(sprite); + } + else + { + if (gBattleAnimArgs[0] == 0) + { + a = sub_8077ABC(gBattleAnimBankAttacker, 2); + b = sub_8077ABC(gBattleAnimBankAttacker, 3); + } + else + { + a = sub_8077ABC(gBattleAnimBankTarget, 2); + b = sub_8077ABC(gBattleAnimBankTarget, 3); + } + + sprite->data[0] = gBattleAnimArgs[4]; + if (gBattleAnimArgs[1] == 0) + { + sprite->pos1.x = gBattleAnimArgs[2] + a; + sprite->pos1.y = gBattleAnimArgs[3] + b; + sprite->data[5] = a; + sprite->data[6] = b; + } + else + { + sprite->pos1.x = a; + sprite->pos1.y = b; + sprite->data[5] = gBattleAnimArgs[2] + a; + sprite->data[6] = gBattleAnimArgs[3] + b; + } + + x = sprite->pos1.x; + sprite->data[1] = x * 16; + y = sprite->pos1.y; + sprite->data[2] = y * 16; + sprite->data[3] = (sprite->data[5] - sprite->pos1.x) * 16 / gBattleAnimArgs[4]; + sprite->data[4] = (sprite->data[6] - sprite->pos1.y) * 16 / gBattleAnimArgs[4]; + c = sub_80790F0(sprite->data[5] - x, sprite->data[6] - y); + if (NotInBattle()) + c -= 0x8000; + + sub_8078FDC(sprite, 0, 0x100, 0x100, c); + sprite->callback = sub_80CC7D4; + } +} + +void sub_80CC7D4(struct Sprite* sprite) +{ + if (sprite->data[0]) + { + sprite->data[1] += sprite->data[3]; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 4 ; + sprite->pos1.y = sprite->data[2] >> 4 ; + sprite->data[0]--; + } + else + { + move_anim_8074EE0(sprite); + } +} diff --git a/src/battle/anim/hop.c b/src/battle/anim/hop.c new file mode 100755 index 000000000..60f3b8a48 --- /dev/null +++ b/src/battle/anim/hop.c @@ -0,0 +1,160 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// hop (where a sprite "hops" across the screen) +// Used by Present, Trick, and the item knock off effect. + +void sub_80CB7EC(struct Sprite* sprite, s16 c) +{ + s32 a = (sprite->pos1.x * 256) | sprite->pos1.y; + s32 b = (sprite->data[6] * 256) | sprite->data[7]; + c *= 256; + sprite->data[5] = a; + sprite->data[6] = b; + sprite->data[7] = c; +} + +bool8 sub_80CB814(struct Sprite* sprite) +{ + u16 r10 = (u8)(sprite->data[5] >> 8); + u16 r9 = (u8)sprite->data[5]; + s32 r2 = (u8)(sprite->data[6] >> 8); + s32 r4 = (u8)sprite->data[6]; + s16 r6 = sprite->data[7] >> 8; + s16 r3 = sprite->data[7] & 0xFF; + s16 r4_2; + s16 r0; + s32 var1; + s32 var2; + + if (r2 == 0) + { + r2 = -32; + } + else if (r2 == 255) + { + r2 = 0x110; + } + + r4_2 = r4 - r9; + r0 = r2 - r10; + var1 = r0 * r3 / r6; + var2 = r4_2 * r3 / r6; + sprite->pos1.x = var1 + r10; + sprite->pos1.y = var2 + r9; + if (++r3 == r6) + return TRUE; + + sprite->data[7] = (r6 << 8) | r3; + return FALSE; +} + +void sub_80CB8B8(struct Sprite* sprite) +{ + if (sprite->data[0] == 10) + { + StartSpriteAffineAnim(sprite, 1); + } + + sprite->data[0]++; + if (sprite->data[0] > 50) + { + move_anim_8072740(sprite); + } +} + +void sub_80CB8E8(struct Sprite* sprite) +{ + sprite->data[0] += sprite->data[3] * 128 / sprite->data[4]; + if (sprite->data[0] >= 128) + { + sprite->data[1]++; + sprite->data[0] = 0; + } + + sprite->pos2.y = Sin(sprite->data[0] + 128, 30 - sprite->data[1] * 8); + if (sub_80CB814(sprite)) + { + sprite->pos2.y = 0; + sprite->data[0] = 0; + sprite->callback = sub_80CB8B8; + } +} + +void sub_80CB94C(struct Sprite* sprite) +{ + s16 e1; + s16 e2; + sub_80787B0(sprite, 0); + e1 = sub_8077ABC(gBattleAnimBankTarget, 0); + e2 = sub_8077ABC(gBattleAnimBankTarget, 1); + if ((gBattleAnimBankAttacker ^ 2) == gBattleAnimBankTarget) + { + sprite->data[6] = e1; + sprite->data[7] = e2 + 10; + sub_80CB7EC(sprite, 0x3C); + sprite->data[3] = 1; + } + else + { + sprite->data[6] = e1; + sprite->data[7] = e2 + 10; + sub_80CB7EC(sprite, 0x3C); + sprite->data[3] = 3; + } + + sprite->data[4] = 0x3C; + sprite->callback = sub_80CB8E8; +} + +void sub_80CB9C4(struct Sprite* sprite) +{ + int zero; + sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]); + zero = 0; + if (sprite->data[0] > 0x7F) + { + sprite->data[1]++; + sprite->data[0] = zero; + } + + sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8); + if (sub_80CB814(sprite)) + { + sprite->pos2.y = zero; + sprite->data[0] = zero; + move_anim_8072740(sprite); + } +} + +void sub_80CBA28(struct Sprite* sprite) +{ + s16 e = sub_8077ABC(gBattleAnimBankTarget, 1); + if (GetBankSide(gBattleAnimBankTarget) == 0) + { + sprite->data[6] = 0; + sprite->data[7] = e + 10; + sub_80CB7EC(sprite, 0x28); + sprite->data[3] = 3; + sprite->data[4] = 0x3C; + sprite->callback = sub_80CB8E8; + } + else + { + sprite->data[6] = 255; + sprite->data[7] = e + 10; + if (NotInBattle()) + sprite->data[6] = 0; + + sub_80CB7EC(sprite, 0x28); + sprite->data[3] = 3; + sprite->data[4] = 0x3C; + sprite->callback = sub_80CB9C4; + } +} diff --git a/src/battle/anim/hop_2.c b/src/battle/anim/hop_2.c new file mode 100755 index 000000000..5458c4599 --- /dev/null +++ b/src/battle/anim/hop_2.c @@ -0,0 +1,70 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern void sub_80CB7EC(struct Sprite* sprite, s16 c); +extern bool8 sub_80CB814(struct Sprite* sprite); +extern void sub_80CB8B8(struct Sprite* sprite); + +static void sub_80CBB60(struct Sprite* sprite); + +// hop_2 +// Used in item steal. + +void sub_80CBAE8(struct Sprite* sprite) +{ + s16 p1; + s16 p2; + sub_8078764(sprite, 0); + p1 = sub_8077ABC(gBattleAnimBankAttacker, 0); + p2 = sub_8077ABC(gBattleAnimBankAttacker, 1); + if ((gBattleAnimBankTarget ^ 2) == gBattleAnimBankAttacker) + { + sprite->data[6] = p1; + sprite->data[7] = p2 + 10; + sub_80CB7EC(sprite, 0x3c); + sprite->data[3] = 1; + } + else + { + sprite->data[6] = p1; + sprite->data[7] = p2 + 10; + sub_80CB7EC(sprite, 0x3c); + sprite->data[3] = 3; + } + + sprite->data[4] = 0x3C; + sprite->callback = sub_80CBB60; +} + +void sub_80CBB60(struct Sprite* sprite) +{ + int zero; + sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]); + zero = 0; + if (sprite->data[0] > 0x7F) + { + sprite->data[1]++; + sprite->data[0] = zero; + } + + sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8); + if (sprite->pos2.y == 0) + { + PlaySE12WithPanning(0x7D, sub_8076F98(0x3F)); + } + + if (sub_80CB814(sprite)) + { + sprite->pos2.y = 0; + sprite->data[0] = 0; + sprite->callback = sub_80CB8B8; + PlaySE12WithPanning(0x7D, sub_8076F98(-0x40)); + } +} diff --git a/src/battle/anim/kiss_fountain.c b/src/battle/anim/kiss_fountain.c new file mode 100755 index 000000000..2e7f64c11 --- /dev/null +++ b/src/battle/anim/kiss_fountain.c @@ -0,0 +1,38 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// kiss_fountain (a series of hearts pour out of a target Pokemon.) +// Used in Attract and Sweet Kiss. + +void sub_80D1FDC(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[0]++; + } + else + { + sprite->data[4] += sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]); + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + if (sprite->data[3] > 0x64) + { + sprite->invisible = sprite->data[3] % 2; + } + + if (sprite->data[3] > 0x78) + { + move_anim_8072740(sprite); + } + } +} diff --git a/src/battle/anim/leaf.c b/src/battle/anim/leaf.c new file mode 100755 index 000000000..13d1bc9f5 --- /dev/null +++ b/src/battle/anim/leaf.c @@ -0,0 +1,74 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CAF20(struct Sprite* sprite); +static void sub_80CAF6C(struct Sprite* sprite); + +// leaf +// Used by Razor Leaf and Twister. + +void sub_80CAED8(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[2]; + sprite->callback = sub_80CAF20; +} + +void sub_80CAF20(struct Sprite* sprite) +{ + if (!sprite->data[2]) + { + if (sprite->data[1] & 1) + { + sprite->data[0] = 0x80; + sprite->data[1] = 0; + sprite->data[2] = 0; + } + else + { + sprite->data[0] = sprite->data[1] & 1; + sprite->data[1] = sprite->data[1] & 1; + sprite->data[2] = sprite->data[1] & 1; + } + sprite->callback = sub_80CAF6C; + } + else + { + sprite->data[2]--; + sprite->pos1.x += sprite->data[0]; + sprite->pos1.y += sprite->data[1]; + } +} + +void sub_80CAF6C(struct Sprite* sprite) +{ + if (GetBankSide(gBattleAnimBankAttacker)) + { + sprite->pos2.x = -Sin(sprite->data[0], 0x19); + } + else + { + sprite->pos2.x = Sin(sprite->data[0], 0x19); + } + + sprite->data[0] = (sprite->data[0] + 2) & 0xFF; + sprite->data[1]++; + if (!(sprite->data[1] & 1)) + { + sprite->pos2.y++; + } + + if (sprite->data[1] > 0x50) + { + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/love_bg.c b/src/battle/anim/love_bg.c new file mode 100755 index 000000000..c5659463e --- /dev/null +++ b/src/battle/anim/love_bg.c @@ -0,0 +1,128 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "decompress.h" +#include "palette.h" + +struct Struct_sub_8078914 +{ + u8 *field_0; + u8 *field_4; + u8 field_8; +}; + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern struct INCBIN_U8 gAttractTilemap; +extern struct INCBIN_U8 gAttractGfx; +extern struct INCBIN_U8 gAttractPal; + +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030042C0; + +static void sub_80D21F0(u8 taskId); + +// love_bg (makes the BG a background of hearts.) +// Used in Attract. + +void sub_80D2100(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + u8* tempvar; + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x1000; + REG_BG1CNT_BITFIELD.priority = 3; + REG_BG1CNT_BITFIELD.screenSize = 0; + if (!NotInBattle()) + REG_BG1CNT_BITFIELD.charBaseBlock = 1; + + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + sub_8078914(&subStruct); + tempvar = subStruct.field_4; + DmaFill32(3, 0x0, tempvar, 0x1000); + LZDecompressVram(&gAttractTilemap, tempvar); + LZDecompressVram(&gAttractGfx, subStruct.field_0); + LoadCompressedPalette(&gAttractPal, subStruct.field_8 << 4, 32); + if (NotInBattle()) + sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); + + gTasks[taskId].func = sub_80D21F0; +} + +void sub_80D21F0(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 16) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 0x8D) + { + gTasks[taskId].data[11] = 16; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_8078914(&subStruct); + { + u8 *addr = subStruct.field_0; + u32 size = 0x2000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + } + DmaClear32(3, subStruct.field_4, 0x800); + if (!NotInBattle()) + REG_BG1CNT_BITFIELD.charBaseBlock = 0; + + gTasks[taskId].data[12]++; + // fall through + case 4: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BG1CNT_BITFIELD.priority = 1; + DestroyAnimVisualTask(taskId); + break; + } +} diff --git a/src/battle/anim/lunge_1.c b/src/battle/anim/lunge_1.c new file mode 100755 index 000000000..f1e1e35b6 --- /dev/null +++ b/src/battle/anim/lunge_1.c @@ -0,0 +1,124 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u8 gObjectBankIDs[]; + +static void sub_80CD7CC(struct Sprite* sprite); +static void sub_80CD81C(struct Sprite* sprite); +static void sub_80CD8A8(struct Sprite* sprite); +static void sub_80CD8F8(struct Sprite* sprite); +static void sub_80CD91C(struct Sprite* sprite); +static void sub_80CD9B8(struct Sprite* sprite); + +// lunge_1 (makes the pokemon sprite do a "lunge" where it leans back to attack, usually with its head or horn.) +// Used in Drill Peck, Headbutt, Horn Attack, and Horn Drill. + +void sub_80CD774(struct Sprite* sprite) +{ + sprite->invisible = 1; + sprite->data[0] = 0; + switch (gBattleAnimArgs[0]) + { + case 0: + sprite->callback = sub_80CD7CC; + break; + case 1: + sprite->callback = sub_80CD8A8; + break; + case 2: + sprite->callback = sub_80CD8F8; + break; + default: + sprite->callback = sub_80CD9B8; + break; + } +} + +void sub_80CD7CC(struct Sprite* sprite) +{ + sprite->data[0] = 6; + sprite->data[1] = (GetBankSide(gBattleAnimBankAttacker)) ? 2 : -2; + sprite->data[2] = 0; + sprite->data[3] = gObjectBankIDs[gBattleAnimBankAttacker]; + StoreSpriteCallbackInData(sprite, sub_80CD81C); + sprite->callback = sub_8078458; +} + +void sub_80CD81C(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[3] = gObjectBankIDs[gBattleAnimBankAttacker]; + sub_8078E70(sprite->data[3], 0); + sprite->data[4] = (sprite->data[6] = GetBankSide(gBattleAnimBankAttacker)) ? 0x300 : 0xFFFFFD00; + sprite->data[5] = 0; + } + + sprite->data[5] += sprite->data[4]; + obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]); + sub_8078F9C(sprite->data[3]); + if (++sprite->data[0] > 3) + { + sprite->data[0] = 0; + sprite->callback = sub_80CD9B8; + } +} + +void sub_80CD8A8(struct Sprite* sprite) +{ + sprite->data[0] = 4; + sprite->data[1] = (GetBankSide(gBattleAnimBankAttacker)) ? -3 : 3; + sprite->data[2] = 0; + sprite->data[3] = gObjectBankIDs[gBattleAnimBankAttacker]; + StoreSpriteCallbackInData(sprite, sub_80CD9B8); + sprite->callback = sub_8078458; +} + +void sub_80CD8F8(struct Sprite* sprite) +{ + if (++sprite->data[0] > 8) + { + sprite->data[0] = 0; + sprite->callback = sub_80CD91C; + } +} + +void sub_80CD91C(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[3] = gObjectBankIDs[gBattleAnimBankAttacker]; + sprite->data[6] = GetBankSide(gBattleAnimBankAttacker); + if (GetBankSide(gBattleAnimBankAttacker)) + { + sprite->data[4] = 0xFC00; + sprite->data[5] = 0xC00; + } + else + { + sprite->data[4] = 0x400; + sprite->data[5] = 0xF400; + } + } + + sprite->data[5] += sprite->data[4]; + obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]); + sub_8078F9C(sprite->data[3]); + if (++sprite->data[0] > 2) + { + sub_8078F40(sprite->data[3]); + sprite->callback = sub_80CD9B8; + } +} + +void sub_80CD9B8(struct Sprite* sprite) +{ + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/lunge_2.c b/src/battle/anim/lunge_2.c new file mode 100755 index 000000000..3972bee59 --- /dev/null +++ b/src/battle/anim/lunge_2.c @@ -0,0 +1,163 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u8 gObjectBankIDs[]; + +static void sub_80CDB60(u8 taskId); +static void sub_80CDD20(u8 taskId); + +// lunge_2 +// Drill Peck + +void sub_80CDAC8(u8 taskId) +{ + u8 a; + + gTasks[taskId].data[0] = gObjectBankIDs[gBattleAnimBankAttacker]; + a = GetBankSide(gBattleAnimBankAttacker); + gTasks[taskId].data[1] = a; + gTasks[taskId].data[2] = 0; + switch (gBattleAnimArgs[0]) + { + default: + DestroyAnimVisualTask(taskId); + break; + case 0: + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 8; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 3; + if (a == 0) + gTasks[taskId].data[5] *= -1; + + gTasks[taskId].func = sub_80CDB60; + break; + case 1: + gTasks[taskId].data[3] = 8; + gTasks[taskId].data[4] = 0x600; + gTasks[taskId].data[5] = 0xC0; + if (a == 0) + { + gTasks[taskId].data[4] = -gTasks[taskId].data[4]; + gTasks[taskId].data[5] = -gTasks[taskId].data[5]; + } + + gTasks[taskId].func = sub_80CDD20; + break; + } +} + +void sub_80CDB60(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[2]) + { + case 0: + if (task->data[3]) + { + task->data[4] += task->data[5]; + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3]--; + } + else + { + task->data[3] = 8; + task->data[4] = 0; + task->data[5] = (task->data[1] == 0) ? -0xC0 : 0xC0; + sub_8078E70(task->data[0], 0); + task->data[2]++; + } + break; + case 1: + if (task->data[3]) + { + task->data[4] += task->data[5]; + obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]); + sub_8078F9C(task->data[0]); + task->data[3]--; + } + else + { + task->data[3] = 8; + task->data[4] = gSprites[task->data[0]].pos2.x; + task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2; + task->data[6] = 1; + task->data[2]++; + } + break; + case 2: + if (task->data[3]) + { + if (task->data[6]) + { + task->data[6]--; + } + else + { + if (task->data[3] & 1) + gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5]; + else + gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5]; + + task->data[6] = 1; + task->data[3]--; + } + } + else + { + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3] = 12; + task->data[2]++; + } + break; + case 3: + if (task->data[3]) + { + task->data[3]--; + } + else + { + task->data[3] = 3; + task->data[4] = gSprites[task->data[0]].pos2.x; + task->data[5] = (task->data[1] == 0) ? 8 : -8; + task->data[2]++; + } + break; + case 4: + if (task->data[3]) + { + task->data[4] += task->data[5]; + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3]--; + } + else + { + DestroyAnimVisualTask(taskId); + } + break; + } +} + +void sub_80CDD20(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (task->data[3]) + { + task->data[4] -= task->data[5]; + obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]); + sub_8078F9C(task->data[0]); + task->data[3]--; + } + else + { + sub_8078F40(task->data[0]); + DestroyAnimVisualTask(taskId); + } +} diff --git a/src/battle/anim/money.c b/src/battle/anim/money.c new file mode 100755 index 000000000..91eaf20b1 --- /dev/null +++ b/src/battle/anim/money.c @@ -0,0 +1,62 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CFF68(struct Sprite* sprite); + +// money +// Used by Pay Day. + +void sub_80CFE9C(struct Sprite* sprite) +{ + s16 r6; + s16 r7; + u16 var; + + sub_80787B0(sprite, 1); + r6 = sub_8077ABC(gBattleAnimBankTarget, 2); + r7 = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; + if (GetBankSide(gBattleAnimBankAttacker) != 0) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + r6 += gBattleAnimArgs[2]; + var = sub_80790F0(r6 - sprite->pos1.x, r7 - sprite->pos1.y); + var += 0xC000; + sub_8078FDC(sprite, 0, 0x100, 0x100, var); + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = r6; + sprite->data[4] = r7; + sprite->callback = sub_8078C00; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} + +void sub_80CFF50(struct Sprite* sprite) +{ + sprite->data[2] = -16; + sprite->pos1.y += 8; + sprite->callback = sub_80CFF68; +} + +void sub_80CFF68(struct Sprite* sprite) +{ + sprite->data[0] += 0x80; + sprite->pos2.x = sprite->data[0] >> 8; + if (GetBankSide(gBattleAnimBankAttacker) == 0) + sprite->pos2.x = -sprite->pos2.x; + + sprite->pos2.y = Sin(sprite->data[1], sprite->data[2]); + sprite->data[1] += 5; + if (sprite->data[1] > 0x7E) + { + sprite->data[1] = 0; + sprite->data[2] /= 2; + if (++sprite->data[3] == 2) + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/moon.c b/src/battle/anim/moon.c new file mode 100755 index 000000000..e2a31d14d --- /dev/null +++ b/src/battle/anim/moon.c @@ -0,0 +1,39 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CE354(struct Sprite* sprite); + +// moon (shows a moon image.) +// Used in Moonlight. + +void sub_80CE30C(struct Sprite* sprite) +{ + if (NotInBattle()) + { + sprite->pos1.x = 0x30; + sprite->pos1.y = 0x28; + } + else + { + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + } + + sprite->oam.shape = 0; + sprite->oam.size = 3; + sprite->data[0] = 0; + sprite->callback = sub_80CE354; +} + +void sub_80CE354(struct Sprite* sprite) +{ + if (sprite->data[0]) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/note_rain.c b/src/battle/anim/note_rain.c new file mode 100755 index 000000000..fd62b7176 --- /dev/null +++ b/src/battle/anim/note_rain.c @@ -0,0 +1,37 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u16 gUnknown_083D7A5C[5]; + +// note_rain (notes rain from a source point, usually a bell.) +// Used in Heal Bell. + +void sub_80D1BA8(struct Sprite* sprite, u8 a, u8 b) +{ + u8 tile; + tile = (b & 1); + tile = ((-tile | tile) >> 31) & 32; + sprite->oam.tileNum += tile + (a << 2); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_083D7A5C[b >> 1]); +} + +void sub_80D1C08(struct Sprite* sprite) +{ + sub_80787B0(sprite, 0); + if (GetBankSide(gBattleAnimBankAttacker) != 0) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = sub_8077ABC(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[2]; + sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[3]; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); + sub_80D1BA8(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]); +} diff --git a/src/battle/anim/note_scatter.c b/src/battle/anim/note_scatter.c new file mode 100755 index 000000000..9ff49ee9d --- /dev/null +++ b/src/battle/anim/note_scatter.c @@ -0,0 +1,54 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CED78(struct Sprite* sprite); + +// note_scatter +// Used by Teeter Dance. + +void sub_80CECE8(struct Sprite* sprite) +{ + int a; + if (GetBankSide(gBattleAnimBankAttacker) == 1) + { + a = gBattleAnimArgs[1]; + (u16)gBattleAnimArgs[1] = -a; + } + + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5; + sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5; + sprite->callback = sub_80CED78; +} + +void sub_80CED78(struct Sprite* sprite) +{ + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + if (sprite->data[0] > 5 && sprite->data[3] == 0) + { + sprite->data[2] = (sprite->data[2] + 16) & 0xFF; + sprite->pos2.x = Cos(sprite->data[2], 18); + sprite->pos2.y = Sin(sprite->data[2], 18); + if (sprite->data[2] == 0) + sprite->data[3] = 1; + } + + if (++sprite->data[0] == 0x30) + move_anim_8074EE0(sprite); +} diff --git a/src/battle/anim/note_scatter_2.c b/src/battle/anim/note_scatter_2.c new file mode 100755 index 000000000..a163aa9a5 --- /dev/null +++ b/src/battle/anim/note_scatter_2.c @@ -0,0 +1,57 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u16 gUnknown_083D712C[4][6]; + +static void sub_80CEEE8(struct Sprite* sprite); + +// note_scatter_2 (slower scatter of notes.) +// Used in Belly Drum. + +void sub_80CEE60(struct Sprite* sprite) +{ + s16 a; + u8 index; + sub_8078650(sprite); + sprite->pos1.y += 8; + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[2]][0]); + if (index != 0xFF) + sprite->oam.paletteNum = index; + + a = (gBattleAnimArgs[0] == 0) ? 0xFFE0 : 0x20; + sprite->data[0] = 40; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = a + sprite->data[1]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->data[3] - 40; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->data[5] = gBattleAnimArgs[3]; + sprite->callback = sub_80CEEE8; +} + +void sub_80CEEE8(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite) == 0) + { + s16 a; + a = Sin(sprite->data[5], 8); + if (sprite->pos2.x < 0) + a = -a; + + sprite->pos2.x += a; + sprite->pos2.y += Sin(sprite->data[5], 4); + sprite->data[5] = (sprite->data[5] + 8) & 0xFF; + } + else + { + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/note_wave.c b/src/battle/anim/note_wave.c new file mode 100755 index 000000000..4dc3ceb75 --- /dev/null +++ b/src/battle/anim/note_wave.c @@ -0,0 +1,143 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "palette.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u16 gUnknown_083D712C[4][6]; + +static void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e); +static void sub_80CEC1C(struct Sprite* sprite); + +// note_wave +// Used by Grasswhistle, Belly Drum, and Sing. + +// rainbow effect for musical notes +void sub_80CEA20(u8 taskId) +{ + u16 i; + u16 j; + u16 index; + + index = IndexOfSpritePaletteTag(gUnknown_083D712C[0][0]); + if (index != 0xFF) + { + index = (index << 4) + 0x100; + for (i = 1; i < 6; i++) + { + gPlttBufferFaded[index + i] = gUnknown_083D712C[0][i]; + } + } + + for (j = 1; j < 4; j++) + { + index = AllocSpritePalette(gUnknown_083D712C[j][0]); + if (index != 0xFF) + { + index = (index << 4) + 0x100; + for (i = 1; i < 6; i++) + { + gPlttBufferFaded[index + i] = gUnknown_083D712C[j][i]; + } + } + } + DestroyAnimVisualTask(taskId); +} + +// clears the rainbow effect for musical notes. +void sub_80CEAD8(u8 taskId) +{ + u16 i; + for (i = 1; i < 4; i++) + { + FreeSpritePaletteByTag(gUnknown_083D712C[i][0]); + } + + DestroyAnimVisualTask(taskId); +} + +void sub_80CEB0C(struct Sprite* sprite) +{ + u8 index; + u8 a; + u8 b; + sub_8078650(sprite); + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + if ((index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[1]][0])) != 0xFF) + sprite->oam.paletteNum = index; + + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = 0; + sprite->data[3] = gBattleAnimArgs[2]; + if (NotInBattle()) + { + a = 0x30; + b = 0x28; + } + else + { + a = sub_8077ABC(gBattleAnimBankTarget, 2); + b = sub_8077ABC(gBattleAnimBankTarget, 3); + } + + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + sub_80CEBC4(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data[6], &sprite->data[7], 0x28); + sprite->callback = sub_80CEC1C; +} + +void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e) +{ + int f; + int g; + if (a < 0) + e = -e; + + f = a << 8; + g = f / e; + if (g == 0) + g = 1; + + *c = f / g; + *d = (b << 8) / g; +} + +void sub_80CEC1C(struct Sprite* sprite) +{ + int b; + s16 a; + int c; + u8 index; + sprite->data[0]++; + b = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8); + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + sprite->pos2.y = Sin(b, 15); + a = (u16)sprite->pos1.y; + c = (u16)sprite->pos1.x; + + if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80) + { + move_anim_8074EE0(sprite); + } + else + { + if (sprite->data[3] && ++sprite->data[2] > sprite->data[3]) + { + sprite->data[2] = 0; + if (++sprite->data[1] > 3) + sprite->data[1] = 0; + + index = IndexOfSpritePaletteTag(gUnknown_083D712C[sprite->data[1]][0]); + if (index != 0xFF) + sprite->oam.paletteNum = index; + } + } +} diff --git a/src/battle/anim/orbit.c b/src/battle/anim/orbit.c new file mode 100755 index 000000000..9b77552fa --- /dev/null +++ b/src/battle/anim/orbit.c @@ -0,0 +1,147 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CAC44(struct Sprite* sprite); +static void sub_80CADA8(struct Sprite* sprite); +static void sub_80CAE74(struct Sprite* sprite); + +// orbit (The effect of a sprite rotating around another one in a pseudo 3D effect.) +// Used by Spore, Cotton Spore, and Petal Dance. + +void sub_80CABF8(struct Sprite* sprite) +{ + sub_8078764(sprite, 1); + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + if (gBattleAnimArgs[4] == 1) + { + sprite->oam.objMode = 1; + } + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->callback = sub_80CAC44; + sub_80CAC44(sprite); +} + +void sub_80CAC44(struct Sprite* sprite) +{ + u8 var1; + + sprite->pos2.x = Sin(sprite->data[1], 32); + sprite->pos2.y = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8); + if ((u16)(sprite->data[1] - 0x40) < 0x80) + { + sprite->oam.priority = (sub_8079ED4(gBattleAnimBankTarget) & 3); + } + else + { + var1 = sub_8079ED4(gBattleAnimBankTarget) + 1; + if (var1 > 3) + { + var1 = 3; + } + + sprite->oam.priority = var1; + } + + sprite->data[1] = (sprite->data[1] + 2) & 0xFF; + sprite->data[0]--; + if (sprite->data[0] == -1) + move_anim_8072740(sprite); +} + +void sub_80CACEC(u8 taskId) +{ + if (NotInBattle() || !IsDoubleBattle()) + { + DestroyAnimVisualTask(taskId); + } + else + { + if (GetBankIdentity_permutated(gBattleAnimBankTarget) == 1) + { + REG_BG2CNT_BITFIELD.priority = 3; + } + else + { + REG_BG1CNT_BITFIELD.priority = 1; + } + + DestroyAnimVisualTask(taskId); + } +} + +void sub_80CAD54(struct Sprite* sprite) +{ + sub_80787B0(sprite, 0); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->data[5] = 0x40; + sprite->callback = sub_80CADA8; + sub_80CADA8(sprite); +} + +void sub_80CADA8(struct Sprite* sprite) +{ + if (!sub_8078B5C(sprite)) + { + sprite->pos2.x += Sin(sprite->data[5], 32); + sprite->pos2.y += Cos(sprite->data[5], -5); + if ((u16)(sprite->data[5] - 0x40) < 0x80) + { + sprite->subpriority = sub_8079E90(gBattleAnimBankAttacker) - 1; + } + else + { + sprite->subpriority = sub_8079E90(gBattleAnimBankAttacker) + 1; + } + + sprite->data[5] = (sprite->data[5] + 5) & 0xFF; + } + else + { + move_anim_8072740(sprite); + } +} + +void sub_80CAE20(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->data[5] = 0x40; + sprite->callback = sub_80CAE74; + sub_80CAE74(sprite); +} + +void sub_80CAE74(struct Sprite* sprite) +{ + if (!sub_8078B5C(sprite)) + { + sprite->pos2.x += Sin(sprite->data[5], 8); + if ((u16)(sprite->data[5] - 0x3B) < 5 || (u16)(sprite->data[5] - 0xBB) < 5) + { + sprite->oam.matrixNum ^= 8; + } + + sprite->data[5] = (sprite->data[5] + 5) & 0xFF; + } + else + { + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/orbit_fast.c b/src/battle/anim/orbit_fast.c new file mode 100755 index 000000000..30396f398 --- /dev/null +++ b/src/battle/anim/orbit_fast.c @@ -0,0 +1,62 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D2704(struct Sprite* sprite); + +// orbit_fast (a quickly moving fast circular motion of a sprite around an object.) +// Used by Hidden Power. + +void sub_80D26A4(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->affineAnimPaused = 1; + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[7] = sub_8079E90(gBattleAnimBankAttacker); + sprite->callback = sub_80D2704; + sub_80D2704(sprite); +} + +void sub_80D2704(struct Sprite* sprite) +{ + if ((u16)(sprite->data[1] - 0x40) <= 0x7F) + sprite->subpriority = sprite->data[7] + 1; + else + sprite->subpriority = sprite->data[7] - 1; + + sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8); + sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8); + sprite->data[1] = (sprite->data[1] + 9) & 0xFF; + switch (sprite->data[5]) + { + case 1: + sprite->data[2] -= 0x400; + sprite->data[3] -= 0x100; + if (++sprite->data[4] == sprite->data[0]) + { + sprite->data[5] = 2; + return; + } + break; + case 0: + sprite->data[2] += 0x400; + sprite->data[3] += 0x100; + if (++sprite->data[4] == sprite->data[0]) + { + sprite->data[4] = 0; + sprite->data[5] = 1; + } + break; + } + + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/orbit_scatter.c b/src/battle/anim/orbit_scatter.c new file mode 100755 index 000000000..6cebc9375 --- /dev/null +++ b/src/battle/anim/orbit_scatter.c @@ -0,0 +1,31 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D2834(struct Sprite* sprite); + +// orbit_scatter (scatters the objects associated with the fast orbit from the last file.) +// Used in Hidden Power. + +void sub_80D27E0(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->data[0] = Sin(gBattleAnimArgs[0], 10); + sprite->data[1] = Cos(gBattleAnimArgs[0], 7); + sprite->callback = sub_80D2834; +} + +void sub_80D2834(struct Sprite* sprite) +{ + sprite->pos2.x += sprite->data[0]; + sprite->pos2.y += sprite->data[1]; + if (sprite->pos1.x + sprite->pos2.x + 16 > 0x110u || sprite->pos1.y + sprite->pos2.y > 0xA0 || sprite->pos1.y + sprite->pos2.y < -16) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/orbs.c b/src/battle/anim/orbs.c new file mode 100755 index 000000000..22e7d3895 --- /dev/null +++ b/src/battle/anim/orbs.c @@ -0,0 +1,162 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "random.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CA8B4(struct Sprite* sprite); +static void sub_80CA9F8(struct Sprite* sprite); +static void sub_80CAACC(struct Sprite* sprite); + +extern struct SpriteTemplate gSpriteTemplate_83D631C; + +// orbs +// Used by Solar Beam, Absorb, Hyper Beam, and Leech Seed. + +void sub_80CA7B0(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); +} + +void sub_80CA800(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + StartSpriteAnim(sprite, gBattleAnimArgs[3]); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} + +void sub_80CA858(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->data[5] = gBattleAnimArgs[3]; + sprite->callback = sub_80CA8B4; + sub_80CA8B4(sprite); +} + +void sub_80CA8B4(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite)) + { + DestroySprite(sprite); + } + else + { + if (sprite->data[5] > 0x7F) + { + sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) + 1; + } + else + { + sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) + 6; + } + sprite->pos2.x += Sin(sprite->data[5], 5); + sprite->pos2.y += Cos(sprite->data[5], 14); + sprite->data[5] = (sprite->data[5] + 15) & 0xFF; + } +} + +void sub_80CA928(u8 taskId) +{ + gTasks[taskId].data[0]--; + if (gTasks[taskId].data[0] == -1) + { + gTasks[taskId].data[1]++; + gTasks[taskId].data[0] = 6; + gBattleAnimArgs[0] = 15; + gBattleAnimArgs[1] = 0; + gBattleAnimArgs[2] = 80; + gBattleAnimArgs[3] = 0; + CreateSpriteAndAnimate(&gSpriteTemplate_83D631C, 0, 0, sub_8079E90(gBattleAnimBankTarget) + 1); + } + + if (gTasks[taskId].data[1] == 15) + DestroyAnimVisualTask(taskId); +} + +void sub_80CA9A8(struct Sprite* sprite) +{ + sub_8078764(sprite, 1); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[2] = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->data[5] = gBattleAnimArgs[2]; + sub_80786EC(sprite); + sprite->callback = sub_80CA9F8; +} + +void sub_80CA9F8(struct Sprite* sprite) +{ + if (sub_8078718(sprite)) + move_anim_8072740(sprite); +} + +void sub_80CAA14(struct Sprite* sprite) +{ + u16 a = Random(); + u16 b; + + StartSpriteAnim(sprite, a & 7); + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + if (GetBankSide(gBattleAnimBankAttacker)) + { + sprite->pos1.x -= 20; + } + else + { + sprite->pos1.x += 20; + } + + b = Random(); + sprite->data[0] = (b & 31) + 64; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); + sub_8078D60(sprite); + sprite->data[5] = Random() & 0xFF; + sprite->data[6] = sprite->subpriority; + sprite->callback = sub_80CAACC; + sub_80CAACC(sprite); +} + +void sub_80CAACC(struct Sprite* sprite) +{ + if (sub_8078CE8(sprite)) + { + move_anim_8072740(sprite); + } + else + { + sprite->pos2.y += Cos(sprite->data[5], 12); + if (sprite->data[5] <= 0x7E) + { + sprite->subpriority = sprite->data[6]; + } + else + { + sprite->subpriority = sprite->data[6] + 1; + } + + sprite->data[5] = (sprite->data[5] + 24) & 0xFF; + } +} diff --git a/src/battle/anim/osmose.c b/src/battle/anim/osmose.c new file mode 100755 index 000000000..f1f1b25ff --- /dev/null +++ b/src/battle/anim/osmose.c @@ -0,0 +1,29 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// osmose (I didn't want to use "absorb" as thats confusing) +// Used by Ingrain. + +void sub_80CB768(struct Sprite* sprite) +{ + if (!sprite->data[0]) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[1]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + } + + sprite->data[0]++; + sprite->pos2.x = sprite->data[1] * sprite->data[0]; + sprite->pos2.y = Sin((sprite->data[0] * 20) & 0xFF, sprite->data[2]); + if (sprite->data[0] > sprite->data[3]) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/perceive.c b/src/battle/anim/perceive.c new file mode 100755 index 000000000..27afcbc0c --- /dev/null +++ b/src/battle/anim/perceive.c @@ -0,0 +1,24 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// perceive (shows a sparkle in a set of eyes, usually for heightened perception.) +// Used in Glare, Tickle, and Scary Face. + +void sub_80D2904(struct Sprite* sprite) +{ + if (sprite->animEnded) + move_anim_8072740(sprite); +} + +void sub_80D2920(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->callback = sub_80D2904; +} diff --git a/src/battle/anim/powder.c b/src/battle/anim/powder.c new file mode 100755 index 000000000..178a61737 --- /dev/null +++ b/src/battle/anim/powder.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; + +static void sub_80CA768(struct Sprite* sprite); + +// powder +// Used by Sleep Powder, Stun Spore, and Poison Powder. + +void sub_80CA710(struct Sprite* sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + + if (GetBankSide(gBattleAnimBankAttacker)) + { + sprite->data[3] = -gBattleAnimArgs[4]; + } + else + { + sprite->data[3] = gBattleAnimArgs[4]; + } + + sprite->data[4] = gBattleAnimArgs[5]; + sprite->callback = sub_80CA768; +} + +void sub_80CA768(struct Sprite* sprite) +{ + if (sprite->data[0] > 0) + { + sprite->data[0]--; + sprite->pos2.y = sprite->data[2] >> 8; + sprite->data[2] += sprite->data[1]; + sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]); + sprite->data[5] = (sprite->data[5] + sprite->data[4]) & 0xFF; + } + else + { + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/ring.c b/src/battle/anim/ring.c new file mode 100755 index 000000000..0a5816b23 --- /dev/null +++ b/src/battle/anim/ring.c @@ -0,0 +1,156 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "main.h" +#include "blend_palette.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u8 gObjectBankIDs[]; + +static void sub_80D1098(struct Sprite* sprite); + +// ring (a ring that stretches outward from the Pokemon.) +// Used in Aromatherapy and Heal Bell. + +void sub_80D0FD8(struct Sprite* sprite) +{ + u8 bank = 0; + u16 sp0 = 0; + u16 sp1 = 0; + u8 r4; + + if (gBattleAnimArgs[2] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + + r4 = gBattleAnimArgs[3] ^ 1; + if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2)) + { + sub_807A3FC(bank, r4, &sp0, &sp1); + if (r4 == 0) + r4 = sub_8077ABC(bank, 0); + else + r4 = sub_8077ABC(bank, 2); + + if (GetBankSide(bank) != 0) + gBattleAnimArgs[0] -= (sp0 - r4) - gBattleAnimArgs[0]; // This is weird. + else + gBattleAnimArgs[0] = sp0 - r4; + } + + sprite->callback = sub_80793C4; + sub_80793C4(sprite); +} + +void sub_80D1098(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite)) + { + FreeSpriteOamMatrix(sprite); + move_anim_8072740(sprite); + } +} + +void sub_80D10B8(struct Sprite* sprite) +{ + u16 r9 = 0; + u16 r6 = 0; + s16 sp0 = 0; + s16 sp1 = 0; + u8 sp4; + u8 bankr7; + u8 bankr8; + u8 r10; + + if (gBattleAnimArgs[5] == 0) + { + bankr7 = gBattleAnimBankAttacker; + bankr8 = gBattleAnimBankTarget; + } + else + { + bankr7 = gBattleAnimBankTarget; + bankr8 = gBattleAnimBankAttacker; + } + + if (gBattleAnimArgs[6] == 0) + { + r10 = 0; + sp4 = 1; + } + else + { + r10 = 2; + sp4 = 3; + } + + if (GetBankSide(bankr7) != 0) + { + r9 = sub_8077ABC(bankr7, r10) + gBattleAnimArgs[0]; + if (IsAnimBankSpriteVisible(bankr8 ^ 2)) + sprite->subpriority = gSprites[gObjectBankIDs[bankr8 ^ 2]].subpriority - 1; + else + sprite->subpriority = gSprites[gObjectBankIDs[bankr8]].subpriority - 1; + } + else + { + r9 = sub_8077ABC(bankr7, r10) - gBattleAnimArgs[0]; + if (gMain.inBattle && IsAnimBankSpriteVisible(bankr7 ^ 2)) + { + if (gSprites[gObjectBankIDs[bankr7]].pos1.x < gSprites[gObjectBankIDs[bankr7 ^ 2]].pos1.x) + sprite->subpriority = gSprites[gObjectBankIDs[bankr7 ^ 2]].subpriority + 1; + else + sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; + } + else + { + sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; + } + + } + + r6 = sub_8077ABC(bankr7, sp4) + gBattleAnimArgs[1]; + if (gMain.inBattle && IsAnimBankSpriteVisible(bankr8 ^ 2)) + { + sub_807A3FC(bankr8, gBattleAnimArgs[6], &sp0, &sp1); + } + else + { + sp0 = sub_8077ABC(bankr8, r10); + sp1 = sub_8077ABC(bankr8, sp4); + } + + if (GetBankSide(bankr8)) + sp0 += gBattleAnimArgs[3]; + else + sp0 -= gBattleAnimArgs[3]; + + sp1 += gBattleAnimArgs[4]; + sprite->pos1.x = sprite->data[1] = r9; + sprite->pos1.y = sprite->data[3] = r6; + sprite->data[2] = sp0; + sprite->data[4] = sp1; + sprite->data[0] = gBattleAnimArgs[0]; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->callback = sub_80D1098; + sub_80D1098(sprite); +} + +void sub_80D1318(struct Sprite* sprite) +{ + u8 index = IndexOfSpritePaletteTag(0x27DB); + if (index != 0xFF) + { + BlendPalette(((index << 20) + 0x1010000) >> 16, 15, gBattleAnimArgs[5], gBattleAnimArgs[4]); + } + + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_80793C4; + sub_80793C4(sprite); +} diff --git a/src/battle/anim/roots.c b/src/battle/anim/roots.c new file mode 100755 index 000000000..40c51808a --- /dev/null +++ b/src/battle/anim/roots.c @@ -0,0 +1,67 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern s16 gUnknown_03000728[]; + +static void sub_80CB710(struct Sprite* sprite); + +// roots +// Used by Ingrain and Frenzy Plant. + +void sub_80CB59C(struct Sprite* sprite) +{ + if (!sprite->data[0]) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1); + sprite->pos2.x = gBattleAnimArgs[0]; + sprite->pos2.y = gBattleAnimArgs[1]; + sprite->subpriority = gBattleAnimArgs[2] + 30; + StartSpriteAnim(sprite, gBattleAnimArgs[3]); + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[0]++; + if ((sprite->pos1.y + sprite->pos2.y) > 120) + { + sprite->pos1.y += -120 + (sprite->pos2.y + sprite->pos1.y); + } + } + sprite->callback = sub_80CB710; +} + +void sub_80CB620(struct Sprite *sprite) +{ + s16 p1 = sub_8077ABC(gBattleAnimBankAttacker, 2); + s16 p2 = sub_8077ABC(gBattleAnimBankAttacker, 3); + s16 e1 = sub_8077ABC(gBattleAnimBankTarget, 2); + s16 e2 = sub_8077ABC(gBattleAnimBankTarget, 3); + + e1 -= p1; + e2 -= p2; + sprite->pos1.x = p1 + e1 * gBattleAnimArgs[0] / 100; + sprite->pos1.y = p2 + e2 * gBattleAnimArgs[0] / 100; + sprite->pos2.x = gBattleAnimArgs[1]; + sprite->pos2.y = gBattleAnimArgs[2]; + sprite->subpriority = gBattleAnimArgs[3] + 30; + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + sprite->data[2] = gBattleAnimArgs[5]; + sprite->callback = sub_80CB710; + gUnknown_03000728[0] = sprite->pos1.x; + gUnknown_03000728[1] = sprite->pos1.y; + gUnknown_03000728[2] = e1; + gUnknown_03000728[3] = e2; +} + +void sub_80CB710(struct Sprite* sprite) +{ + if (++sprite->data[0] > (sprite->data[2] - 10)) + sprite->invisible = sprite->data[0] % 2; + + if (sprite->data[0] > sprite->data[2]) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/scan.c b/src/battle/anim/scan.c new file mode 100755 index 000000000..5573758c3 --- /dev/null +++ b/src/battle/anim/scan.c @@ -0,0 +1,200 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "palette.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern s8 gUnknown_083D6DDC[4][2]; + +static void sub_80CD408(struct Sprite* sprite); +static void sub_80CD4B8(struct Sprite* sprite); +static void sub_80CD4EC(struct Sprite* sprite); +static void sub_80CD5A8(struct Sprite* sprite); +static void sub_80CD654(struct Sprite* sprite); +static void sub_80CD67C(struct Sprite* sprite); + +// scan +// Used by Lock-On. + +void sub_80CD3E0(struct Sprite* sprite) +{ + sprite->pos1.x -= 32; + sprite->pos1.y -= 32; + sprite->data[0] = 20; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, sub_80CD408); +} + +void sub_80CD408(struct Sprite* sprite) +{ + switch (sprite->data[5] & 1) + { + case 0: + sprite->data[0] = 1; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, sub_80CD408); + break; + case 1: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 8; + sprite->data[2] = sprite->pos1.x + gUnknown_083D6DDC[sprite->data[5] >> 8][0]; + sprite->data[4] = sprite->pos1.y + gUnknown_083D6DDC[sprite->data[5] >> 8][1]; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, sub_80CD4B8); + sprite->data[5] += 0x100; + PlaySE12WithPanning(0xD2, sub_8076F98(0x3F)); + break; + } + + sprite->data[5] ^= 1; +} + +void sub_80CD4B8(struct Sprite* sprite) +{ + if ((sprite->data[5] >> 8) == 4) + { + sprite->data[0] = 10; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, sub_80CD4EC); + } + else + { + sprite->callback = sub_80CD408; + } +} + +void sub_80CD4EC(struct Sprite* sprite) +{ + s16 a; + s16 b; + if (sprite->oam.affineParam == 0) + { + sprite->data[0] = 3; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, sub_80CD5A8); + } + else + { + switch (sprite->oam.affineParam) + { + case 1: + a = -8; + b = -8; + break; + case 2: + a = -8; + b = 8; + break; + case 3: + a = 8; + b = -8; + break; + default: + a = 8; + b = 8; + break; + } + + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 6; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + a; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3) + b; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, sub_80CD654); + } +} + +void sub_80CD5A8(struct Sprite* sprite) +{ + if (sprite->data[2] == 0) + { + if ((sprite->data[1] += 3) > 16) + sprite->data[1] = 16; + } + else if ((sprite->data[1] -= 3) < 0) + { + sprite->data[1] = 0; + } + + BlendPalettes(sub_80791A8(1, 1, 1, 1, 1, 0, 0), sprite->data[1], 0x7FFF); + if (sprite->data[1] == 16) + { + int pal; + sprite->data[2]++; + pal = sprite->oam.paletteNum; + LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4); + PlaySE12WithPanning(0xC0, sub_8076F98(0x3F)); + } + else if (sprite->data[1] == 0) + { + sprite->callback = sub_80CD654; + } +} + +void sub_80CD654(struct Sprite* sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->data[1] = 0; + sprite->data[0] = 0; + sprite->callback = sub_80CD67C; + } +} + +void sub_80CD67C(struct Sprite* sprite) +{ + if (sprite->data[0] % 3 == 0) + { + sprite->data[1]++; + sprite->invisible ^= 1; + } + + sprite->data[0]++; + if (sprite->data[1] == 8) + move_anim_8072740(sprite); +} + +void sub_80CD6CC(struct Sprite* sprite) +{ + sprite->oam.affineParam = gBattleAnimArgs[0]; + if ((s16)sprite->oam.affineParam == 1) + { + sprite->pos1.x -= 0x18; + sprite->pos1.y -= 0x18; + } + else if ((s16)sprite->oam.affineParam == 2) + { + sprite->pos1.x -= 0x18; + sprite->pos1.y += 0x18; + sprite->oam.matrixNum = 16; + } + else if ((s16)sprite->oam.affineParam == 3) + { + sprite->pos1.x += 0x18; + sprite->pos1.y -= 0x18; + sprite->oam.matrixNum = 8; + } + else + { + sprite->pos1.x += 0x18; + sprite->pos1.y += 0x18; + sprite->oam.matrixNum = 24; + } + + sprite->oam.tileNum = (sprite->oam.tileNum + 16); + sprite->callback = sub_80CD3E0; + sub_80CD3E0(sprite); +} diff --git a/src/battle/anim/scary_face.c b/src/battle/anim/scary_face.c new file mode 100755 index 000000000..9f1dfd7d0 --- /dev/null +++ b/src/battle/anim/scary_face.c @@ -0,0 +1,136 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "decompress.h" +#include "palette.h" + +struct Struct_sub_8078914 +{ + u8 *field_0; + u8 *field_4; + u8 field_8; +}; + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFaceContest; +extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFacePlayer; +extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFaceOpponent; +extern struct INCBIN_U8 gBattleAnimBackgroundImage_ScaryFace; +extern struct INCBIN_U8 gBattleAnimBackgroundPalette_ScaryFace; + +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030042C0; + +static void sub_80D24E0(u8 taskId); + +// scary_face (darkens the screen and shows a scary face.) +// Used in Glare and Scary Face. + +void sub_80D23B4(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + u8* tempvar; + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x1000; + REG_BG1CNT_BITFIELD.priority = 1; + REG_BG1CNT_BITFIELD.screenSize = 0; + if (!NotInBattle()) + REG_BG1CNT_BITFIELD.charBaseBlock = 1; + + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + sub_8078914(&subStruct); + tempvar = subStruct.field_4; + DmaFill32(3, 0x0, tempvar, 0x1000); + if (NotInBattle()) + LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceContest, subStruct.field_4); + else if (GetBankSide(gBattleAnimBankTarget) == 1) + LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFacePlayer, subStruct.field_4); + else + LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceOpponent, subStruct.field_4); + + LZDecompressVram(&gBattleAnimBackgroundImage_ScaryFace, subStruct.field_0); + LoadCompressedPalette(&gBattleAnimBackgroundPalette_ScaryFace, subStruct.field_8 << 4, 32); + if (NotInBattle()) + sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); + + gTasks[taskId].func = sub_80D24E0; +} + +void sub_80D24E0(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 14) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 0x15) + { + gTasks[taskId].data[11] = 14; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_8078914(&subStruct); + { + u8 *addr = subStruct.field_0; + u32 size = 0x2000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + } + DmaClear32(3, subStruct.field_4, 0x800); + if (!NotInBattle()) + REG_BG1CNT_BITFIELD.charBaseBlock = 0; + + gTasks[taskId].data[12]++; + // fall through + case 4: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BG1CNT_BITFIELD.priority = 1; + DestroyAnimVisualTask(taskId); + break; + } +} diff --git a/src/battle/anim/seed.c b/src/battle/anim/seed.c new file mode 100755 index 000000000..bd072849a --- /dev/null +++ b/src/battle/anim/seed.c @@ -0,0 +1,50 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CAB88(struct Sprite* sprite); +static void sub_80CABC0(struct Sprite* sprite); + +// seed (sprouts a sapling from a seed.) +// Used by Leech Seed. + +void sub_80CAB18(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + if (GetBankSide(gBattleAnimBankAttacker)) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[2]; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[5]; + sub_80786EC(sprite); + sprite->callback = sub_80CAB88; +} + +void sub_80CAB88(struct Sprite* sprite) +{ + if (sub_8078718(sprite)) + { + sprite->invisible = 1; + sprite->data[0] = 10; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, sub_80CABC0); + } +} + +void sub_80CABC0(struct Sprite* sprite) +{ + sprite->invisible = 0; + StartSpriteAnim(sprite, 1); + sprite->data[0] = 60; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} diff --git a/src/battle/anim/shadow_enlarge.c b/src/battle/anim/shadow_enlarge.c new file mode 100755 index 000000000..bed6c7ea3 --- /dev/null +++ b/src/battle/anim/shadow_enlarge.c @@ -0,0 +1,35 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D0428(u8 taskId); + +// shadow_enlarge (the magnifying-like shadow over the Pokemon effect) +// Used in Disable. + +void sub_80D03C4(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(1); + sub_8078E70(spriteId, 1); + obj_id_set_rotscale(spriteId, 0xD0, 0xD0, 0); + sub_8079108(gSprites[spriteId].oam.paletteNum + 16, 0); + gTasks[taskId].data[0] = 0x50; + gTasks[taskId].func = sub_80D0428; +} + +void sub_80D0428(u8 taskId) +{ + if (--gTasks[taskId].data[0] == -1) + { + u8 spriteId = GetAnimBankSpriteId(1); + sub_8078F40(spriteId); + sub_8079108(gSprites[spriteId].oam.paletteNum + 16, 1); + DestroyAnimVisualTask(taskId); + } +} diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c new file mode 100755 index 000000000..22ebeab7a --- /dev/null +++ b/src/battle/anim/shadow_minimize.c @@ -0,0 +1,262 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D04E0(u8 taskId); +void sub_80D0614(struct Task* task, u8 taskId); +void sub_80D0704(struct Sprite* sprite); + +// shadow_minimize (the minimizing-like shadow over the Pokemon effect.) +// Used in Minimize. + +void sub_80D0488(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBankSpriteId(0); + task->data[0] = spriteId; + sub_8078E70(spriteId, 0); + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0x100; + task->data[5] = 0; + task->data[6] = 0; + task->data[7] = sub_8079E90(gBattleAnimBankAttacker); + task->func = sub_80D04E0; +} + +void sub_80D04E0(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[1]) + { + case 0: + if (task->data[2] == 0 || task->data[2] == 3 || task->data[2] == 6) + sub_80D0614(task, taskId); + task->data[2]++; + task->data[4] += 0x28; + obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0); + sub_8079A64(task->data[0]); + if (task->data[2] == 32) + { + task->data[5]++; + task->data[1]++; + } + break; + case 1: + if (task->data[6] == 0) + { + if (task->data[5] == 3) + { + task->data[2] = 0; + task->data[1] = 3; + } + else + { + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0x100; + obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0); + sub_8079A64(task->data[0]); + task->data[1] = 2; + } + } + break; + case 2: + task->data[1] = 0; + break; + case 3: + if (++task->data[2] > 32) + { + task->data[2] = 0; + task->data[1]++; + } + break; + case 4: + task->data[2] += 2; + task->data[4] -= 0x50; + obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0); + sub_8079A64(task->data[0]); + if (task->data[2] == 32) + { + task->data[2] = 0; + task->data[1]++; + } + break; + case 5: + sub_8078F40(task->data[0]); + gSprites[task->data[15]].pos2.y = 0; + DestroyAnimVisualTask(taskId); + break; + } +} + +#ifdef NONMATCHING +void sub_80D0614(struct Task* task, u8 taskId) +{ + s16 r8 = duplicate_obj_of_side_rel2move_in_transparent_mode(0); + if (r8 >= 0) + { + u8 r6 = AllocOamMatrix(); + if (r6 == 0xFF) + { + obj_delete_but_dont_free_vram(&gSprites[r8]); + } + else + { + gSprites[r8].oam.objMode = 1; + gSprites[r8].oam.affineMode = 3; + gSprites[r8].affineAnimPaused = 1; + gSprites[r8].oam.matrixNum = r6; + gSprites[r8].subpriority = task->data[7] - task->data[3]; + task->data[3]++; + task->data[6]++; + gSprites[r8].data[0] = 16; + gSprites[r8].data[1] = taskId; + gSprites[r8].data[2] = 6; + gSprites[r8].callback = sub_80D0704; + obj_id_set_rotscale(r8, task->data[4], task->data[4], 0); + gSprites[r8].oam.affineMode = 1; + CalcCenterToCornerVec(&gSprites[r8], gSprites[r8].oam.shape, gSprites[r8].oam.size, gSprites[r8].oam.affineMode); + } + } +} +#else +__attribute__((naked)) +void sub_80D0614(struct Task* task, u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + adds r7, r0, 0 @r7 is task\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r9, r1 @r9 is taskId\n\ + movs r0, 0\n\ + bl duplicate_obj_of_side_rel2move_in_transparent_mode\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + lsls r0, 16\n\ + asrs r4, r0, 16\n\ + cmp r4, 0\n\ + blt _080D06EE @jump to bottom\n\ + bl AllocOamMatrix\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0xFF\n\ + bne _080D0658\n\ + lsls r0, r4, 4\n\ + adds r0, r4\n\ + lsls r0, 2\n\ + ldr r1, _080D0654 @ =gSprites\n\ + adds r0, r1\n\ + bl obj_delete_but_dont_free_vram\n\ + b _080D06EE @ jump to bottom\n\ + .align 2, 0\n\ +_080D0654: .4byte gSprites\n\ +_080D0658:\n\ + ldr r5, _080D06FC @ =gSprites\n\ + lsls r3, r4, 4\n\ + adds r3, r4\n\ + lsls r3, 2\n\ + adds r4, r3, r5\n\ + ldrb r1, [r4, 0x1]\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r1\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + movs r1, 0x3\n\ + orrs r0, r1\n\ + strb r0, [r4, 0x1]\n\ + adds r2, r4, 0\n\ + adds r2, 0x2C\n\ + ldrb r0, [r2]\n\ + movs r1, 0x80\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + movs r0, 0x1F\n\ + ands r6, r0\n\ + lsls r2, r6, 1\n\ + ldrb r1, [r4, 0x3]\n\ + movs r0, 0x3F\n\ + negs r0, r0\n\ + ands r0, r1\n\ + orrs r0, r2\n\ + strb r0, [r4, 0x3]\n\ + ldrb r0, [r7, 0x16]\n\ + ldrb r1, [r7, 0xE]\n\ + subs r0, r1\n\ + adds r1, r4, 0\n\ + adds r1, 0x43\n\ + strb r0, [r1]\n\ + ldrh r0, [r7, 0xE]\n\ + adds r0, 0x1\n\ + strh r0, [r7, 0xE]\n\ + ldrh r0, [r7, 0x14]\n\ + adds r0, 0x1\n\ + strh r0, [r7, 0x14]\n\ + movs r0, 0x10\n\ + strh r0, [r4, 0x2E]\n\ + mov r0, r9\n\ + strh r0, [r4, 0x30]\n\ + movs r0, 0x6\n\ + strh r0, [r4, 0x32]\n\ + adds r5, 0x1C\n\ + adds r3, r5\n\ + ldr r0, _080D0700 @ =sub_80D0704\n\ + str r0, [r3]\n\ + mov r1, r8 @duplicate_obj_of_side_rel2move_in_transparent_mode(0)\n\ + lsls r0, r1, 24\n\ + lsrs r0, 24\n\ + movs r1, 0x10\n\ + ldrsh r2, [r7, r1]\n\ + adds r1, r2, 0\n\ + movs r3, 0\n\ + bl obj_id_set_rotscale\n\ + ldrb r0, [r4, 0x1]\n\ + movs r3, 0x4\n\ + negs r3, r3\n\ + ands r3, r0\n\ + movs r0, 0x1\n\ + orrs r3, r0\n\ + strb r3, [r4, 0x1]\n\ + lsrs r1, r3, 6\n\ + ldrb r2, [r4, 0x3]\n\ + lsrs r2, 6\n\ + lsls r3, 30\n\ + lsrs r3, 30\n\ + adds r0, r4, 0\n\ + bl CalcCenterToCornerVec\n\ +_080D06EE:\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080D06FC: .4byte gSprites\n\ +_080D0700: .4byte sub_80D0704\n\ +.syntax divided\n"); +} +#endif + +void sub_80D0704(struct Sprite* sprite) +{ + if (--sprite->data[0] == 0) + { + gTasks[sprite->data[1]].data[sprite->data[2]]--; + FreeOamMatrix(sprite->oam.matrixNum); + obj_delete_but_dont_free_vram(sprite); + } +} diff --git a/src/battle/anim/shield.c b/src/battle/anim/shield.c new file mode 100755 index 000000000..8ed4f9796 --- /dev/null +++ b/src/battle/anim/shield.c @@ -0,0 +1,81 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "palette.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CCE0C(struct Sprite* sprite); + +// shield +// Used by Protect. + +void sub_80CCD24(struct Sprite* sprite) +{ + if (NotInBattle() != 0) + { + gBattleAnimArgs[1] += 8; + } + + sprite->pos1.x = sub_8077EE4(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077EE4(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[1]; + if (GetBankSide(gBattleAnimBankAttacker) == 0 || NotInBattle()) + sprite->oam.priority = sub_8079ED4(gBattleAnimBankAttacker) + 1; + else + sprite->oam.priority = sub_8079ED4(gBattleAnimBankAttacker); + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = (IndexOfSpritePaletteTag(0x2828) << 4) + 0x100; + sprite->data[7] = 16; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = (sprite->data[7] << 8) | (16 - sprite->data[7]); + sprite->callback = sub_80CCE0C; +} + +void sub_80CCE0C(struct Sprite* sprite) +{ + int a; + int i; + sprite->data[5] += 0x60; + sprite->pos2.x = -(sprite->data[5] >> 8); + sprite->data[1]++; + if (sprite->data[1] > 1) + { + sprite->data[1] = 0; + a = gPlttBufferFaded[sprite->data[2] + 1]; + i = 0; + do + { + gPlttBufferFaded[sprite->data[2] + ++i] = gPlttBufferFaded[sprite->data[2] + i + 1]; + } while ( i <= 5 ); + + gPlttBufferFaded[sprite->data[2] + 7] = a; + } + + if (sprite->data[7] > 6 && sprite->data[0] >0 && ++sprite->data[6] > 1) + { + sprite->data[6] = 0; + sprite->data[7] -= 1; + REG_BLDALPHA = (sprite->data[7] << 8) | (16 - sprite->data[7]);; + } + + if (sprite->data[0] >0) + { + sprite->data[0] -= 1; + } + else if (++sprite->data[6] > 1) + { + sprite->data[6] = 0; + sprite->data[7]++; + REG_BLDALPHA = (sprite->data[7] << 8) | (16 - sprite->data[7]); + if (sprite->data[7] == 16) + { + sprite->invisible = 1; + sprite->callback = sub_807861C; + } + } +} diff --git a/src/battle/anim/shimmer.c b/src/battle/anim/shimmer.c new file mode 100755 index 000000000..ecb3dcdf9 --- /dev/null +++ b/src/battle/anim/shimmer.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "blend_palette.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u16 gUnknown_083D6984[]; + +// shimmer +// Used by Magical Leaf. + +void sub_80CC5F8(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + task->data[8] = IndexOfSpritePaletteTag(0x274f) * 16 + 256; + task->data[12] = IndexOfSpritePaletteTag(0x27b0) * 16 + 256; + task->data[0]++; + break; + case 1: + task->data[9]++; + if (task->data[9] >= 0) + { + task->data[9] = 0; + BlendPalette(task->data[8], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]); + BlendPalette(task->data[12], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]); + task->data[10]++; + if (task->data[10] == 17) + { + task->data[10] = 0; + task->data[11]++; + if (task->data[11] == 7) + task->data[11] = 0; + } + } + break; + } + + if (gBattleAnimArgs[7] == -1) + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle/anim/silhouette.c b/src/battle/anim/silhouette.c new file mode 100755 index 000000000..71ff3dae2 --- /dev/null +++ b/src/battle/anim/silhouette.c @@ -0,0 +1,77 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CB3A8(u8 taskId); +static void sub_80CB438(u8 taskId); + +// silhouette (the transparent shadow image used for mimic.) +// Only used by Mimic. + +void sub_80CB340(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(1); + if (gSprites[spriteId].invisible) + { + DestroyAnimVisualTask(taskId); + } + else + { + sub_8078E70(spriteId, 1); + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + gTasks[taskId].data[11] = 256; + gTasks[taskId].func = sub_80CB3A8; + } +} + +void sub_80CB3A8(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(1); + gTasks[taskId].data[10] += gTasks[taskId].data[0]; + gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8; + if (GetBankSide(gBattleAnimBankTarget)) + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + } + + gTasks[taskId].data[11] += 16; + obj_id_set_rotscale(spriteId, gTasks[taskId].data[11], gTasks[taskId].data[11], 0); + sub_8079A64(spriteId); + gTasks[taskId].data[1]--; + if (!gTasks[taskId].data[1]) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80CB438; + } +} + +void sub_80CB438(u8 taskId) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + if (gTasks[taskId].data[0] == 0) + { + u8 spriteId = GetAnimBankSpriteId(1); + sub_8078F40(spriteId); + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + gTasks[taskId].data[0]++; + return; + } + } + else + { + if (gTasks[taskId].data[0] == 0) + return; + } + + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] == 3) + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle/anim/slash.c b/src/battle/anim/slash.c new file mode 100755 index 000000000..c5869c4ab --- /dev/null +++ b/src/battle/anim/slash.c @@ -0,0 +1,83 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CDE78(struct Sprite* sprite); +static void sub_80CDEB0(struct Sprite* sprite); +static void sub_80CDEC0(struct Sprite* sprite); + +// slash (a cutting animation) +// Used in Slash and False Swipe. + +void sub_80CDD74(struct Sprite* sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; + } + else + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[2]; + } + + sprite->data[0] = 0; + sprite->data[1] = 0; + StoreSpriteCallbackInData(sprite, sub_80CDEC0); + sprite->callback = sub_8078600; +} + +void sub_80CDDDC(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + 0xFFD0; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3); + StoreSpriteCallbackInData(sprite, sub_80CDE78); + sprite->callback = sub_8078600; +} + +void sub_80CDE24(struct Sprite* sprite) +{ + sprite->pos1.x = sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + 0xFFD0 + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3); + StartSpriteAnim(sprite, 1); + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->callback = sub_80CDEC0; +} + +void sub_80CDE78(struct Sprite* sprite) +{ + if (++sprite->data[0] > 8) + { + sprite->data[0] = 12; + sprite->data[1] = 8; + sprite->data[2] = 0; + StoreSpriteCallbackInData(sprite, sub_80CDEB0); + sprite->callback = sub_8078364; + } +} + +void sub_80CDEB0(struct Sprite* sprite) +{ + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->callback = sub_80CDEC0; +} + +void sub_80CDEC0(struct Sprite* sprite) +{ + if (++sprite->data[0] > 1) + { + sprite->data[0] = 0; + sprite->invisible = !sprite->invisible; + if (++sprite->data[1] > 8) + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/sleep.c b/src/battle/anim/sleep.c new file mode 100755 index 000000000..58ecc702f --- /dev/null +++ b/src/battle/anim/sleep.c @@ -0,0 +1,44 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CD394(struct Sprite* sprite); + +// sleep (the "ZZZ" graphical effect) +// Used by Rest and the sleep turn when the Pokemon is still asleep. + +void sub_80CD328(struct Sprite* sprite) +{ + sub_8078650(sprite); + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[3] = 1; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[3] = 0xFFFF; + StartSpriteAffineAnim(sprite, 1); + } + + sprite->callback = sub_80CD394; +} + +void sub_80CD394(struct Sprite* sprite) +{ + sprite->pos2.y = -(sprite->data[0] / 0x28); + sprite->pos2.x = sprite->data[4] / 10; + sprite->data[4] += sprite->data[3] * 2; + sprite->data[0] += sprite->data[1]; + if (++sprite->data[1] > 0x3C) + move_anim_8074EE0(sprite); +} diff --git a/src/battle/anim/slice.c b/src/battle/anim/slice.c new file mode 100755 index 000000000..8e33dcb06 --- /dev/null +++ b/src/battle/anim/slice.c @@ -0,0 +1,111 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CCB00(struct Sprite* sprite); + +// slice (the cutting animation showing as a yellow line drawn diagonally) +// Used in Cut, Fury Cutter, Aerial Ace, and Air Cutter. + +void sub_80CC914(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1); + if (GetBankSide(gBattleAnimBankTarget) == 0) + sprite->pos1.y += 8; + + sprite->callback = sub_80CCB00; + if (gBattleAnimArgs[2] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->hFlip = 1; + } + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[1] -= 0x400; + sprite->data[2] += 0x400; + sprite->data[5] = gBattleAnimArgs[2]; + if (sprite->data[5] == 1) + sprite->data[1] = -sprite->data[1]; +} + +void sub_80CC9BC(struct Sprite* sprite) +{ + u8 a; + u8 b; + switch (gBattleAnimArgs[3]) + { + case 1: + a = sub_8077ABC(gBattleAnimBankTarget ^ 2, 0); + b = sub_8077ABC(gBattleAnimBankTarget ^ 2, 1); + break; + case 2: + a = sub_8077ABC(gBattleAnimBankTarget, 0); + b = sub_8077ABC(gBattleAnimBankTarget, 1); + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) + { + a = (sub_8077ABC(gBattleAnimBankTarget ^ 2, 0) + a) / 2; + b = (sub_8077ABC(gBattleAnimBankTarget ^ 2, 1) + b) / 2; + } + break; + case 0: + default: + a = sub_8077ABC(gBattleAnimBankTarget, 0); + b = sub_8077ABC(gBattleAnimBankTarget, 1); + break; + } + + sprite->pos1.x = a; + sprite->pos1.y = b; + if (GetBankSide(gBattleAnimBankTarget) == 0) + sprite->pos1.y += 8; + + sprite->callback = sub_80CCB00; + if (gBattleAnimArgs[2] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->hFlip = 1; + } + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[1] -= 0x400; + sprite->data[2] += 0x400; + sprite->data[5] = gBattleAnimArgs[2]; + if (sprite->data[5] == 1) + sprite->data[1] = -sprite->data[1]; +} + +void sub_80CCB00(struct Sprite* sprite) +{ + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + if (sprite->data[5] == 0) + sprite->data[1] += 0x18; + else + sprite->data[1] -= 0x18; + + sprite->data[2] -= 0x18; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + sprite->data[0]++; + if (sprite->data[0] == 20) + { + StoreSpriteCallbackInData(sprite, move_anim_8072740); + sprite->data[0] = 3; + sprite->callback = sub_80782D8; + } +} diff --git a/src/battle/anim/smoke.c b/src/battle/anim/smoke.c new file mode 100755 index 000000000..c6ce91b76 --- /dev/null +++ b/src/battle/anim/smoke.c @@ -0,0 +1,22 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// smoke (smoke on the ground around a sprite.) +// Used in Extremespeed. + +void sub_80D1A70(struct Sprite* sprite) +{ + sprite->invisible = gTasks[sprite->data[0]].data[5]; + if (sprite->animEnded) + { + gTasks[sprite->data[0]].data[sprite->data[1]]--; + DestroySprite(sprite); + } +} diff --git a/src/battle/anim/sonic.c b/src/battle/anim/sonic.c new file mode 100755 index 000000000..684516ba7 --- /dev/null +++ b/src/battle/anim/sonic.c @@ -0,0 +1,136 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "battle_anim_80CA710.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// sonic (shoots a projectile towards the target.) +// Used in Sonic Boom and Air Cutter. + +void sub_80CF6DC(struct Sprite* sprite) +{ + s16 a; + s16 b; + u16 c; + + if (NotInBattle()) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + else if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + + sub_80787B0(sprite, 1); + a = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + b = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; + c = sub_80790F0(a - sprite->pos1.x, b - sprite->pos1.y); + c += 0xF000; + if (NotInBattle()) + c -= 0x6000; + + sub_8078FDC(sprite, 0, 0x100, 0x100, c); + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = a; + sprite->data[4] = b; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} + +void sub_80CF7E0(struct Sprite* sprite) +{ + if (sprite->data[0]-- <= 0) + { + gTasks[sprite->data[7]].data[1]--; + DestroySprite(sprite); + } +} + +void sub_80CF814(struct Sprite* sprite) +{ + struct Task* task = &gTasks[sprite->data[7]]; + if (sprite->data[0] > task->data[5]) + { + sprite->data[5] += sprite->data[3]; + sprite->data[6] += sprite->data[4]; + } + else + { + sprite->data[5] -= sprite->data[3]; + sprite->data[6] -= sprite->data[4]; + } + + sprite->data[1] += sprite->data[5]; + sprite->data[2] += sprite->data[6]; + if (1 & task->data[7]) + sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1; + else + sprite->pos2.x = (u16)sprite->data[1] >> 8; + + if (1 & task->data[8]) + sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1; + else + sprite->pos2.y = (u16)sprite->data[2] / 256u; + + if (sprite->data[0]-- <= 0) + { + sprite->data[0] = 30; + sprite->callback = sub_80CF7E0; + } +} + +void sub_80CF8B8(struct Sprite* sprite) +{ + s16 a; + s16 b; + s16 c; + + struct Task* task = &gTasks[sprite->data[7]]; + sprite->data[1] += (-2 & task->data[7]); + sprite->data[2] += (-2 & task->data[8]); + if (1 & task->data[7]) + sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1; + else + sprite->pos2.x = (u16)sprite->data[1] >> 8; + + if (1 & task->data[8]) + sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1; + else + sprite->pos2.y = (u16)sprite->data[2] / 256u; + + if (sprite->data[0]-- <= 0) + { + sprite->data[0] = 8; + task->data[5] = 4; + a = sub_81174E0(0x1000); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + if (task->data[11] >= sprite->pos1.x) + b = (task->data[11] - sprite->pos1.x) << 8; + else + b = (sprite->pos1.x - task->data[11]) << 8; + + if (task->data[12] >= sprite->pos1.y) + c = (task->data[12] - sprite->pos1.y) << 8; + else + c = (sprite->pos1.y - task->data[12]) << 8; + + sprite->data[2] = 0; + sprite->data[1] = 0; + sprite->data[6] = 0; + sprite->data[5] = 0; + sprite->data[3] = sub_81174C4(sub_81174C4(b, a), sub_81174E0(0x1C0)); + sprite->data[4] = sub_81174C4(sub_81174C4(c, a), sub_81174E0(0x1C0)); + sprite->callback = sub_80CF814; + } +} diff --git a/src/battle/anim/sonic_task.c b/src/battle/anim/sonic_task.c new file mode 100755 index 000000000..efd13dff6 --- /dev/null +++ b/src/battle/anim/sonic_task.c @@ -0,0 +1,152 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "battle_anim_80CA710.h" +#include "battle.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u8 gBanksBySide[]; +extern u16 gBattleTypeFlags; +extern struct SpriteTemplate gSpriteTemplate_83D74BC; + +// sonic_task (the task functions for the "sonic" effect.) +// Used in Air Cutter and Sonic Boom. + +void sub_80CF9F8(u8 taskId) +{ + if (gTasks[taskId].data[1] == 0) + DestroyAnimVisualTask(taskId); +} + +void sub_80CFA20(u8 taskId) +{ + if (gTasks[taskId].data[0]-- <= 0) + { + u8 spriteId; + struct Sprite* sprite; + spriteId = CreateSprite(&gSpriteTemplate_83D74BC, gTasks[taskId].data[9], gTasks[taskId].data[10], gTasks[taskId].data[2] - gTasks[taskId].data[1]); + sprite = &gSprites[spriteId]; + switch (gTasks[taskId].data[4]) + { + case 1: + sprite->oam.matrixNum |= 24; + break; + case 2: + sprite->oam.matrixNum = 8; + break; + } + + sprite->data[0] = gTasks[taskId].data[5] - gTasks[taskId].data[6]; + sprite->data[7] = taskId; + gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId; + gTasks[taskId].data[0] = gTasks[taskId].data[3]; + gTasks[taskId].data[1]++; + PlaySE12WithPanning(0x9A, sub_8076F98(-0x3F)); + if (gTasks[taskId].data[1] > 2) + gTasks[taskId].func = sub_80CF9F8; + } +} + +void sub_80CFB04(u8 taskId) +{ + s16 r9 = 0; + s16 r6 = 0; + s16 sp1 = 0; + s16 sp2 = 0; + s16 r4; + + if (NotInBattle()) + { + gTasks[taskId].data[4] = 2; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + if (gBattleAnimArgs[2] & 1) + gBattleAnimArgs[2] &= ~1; + else + gBattleAnimArgs[2] |= 1; + } + else + { + if ((gBanksBySide[gBattleAnimBankTarget] & 1) == 0) + { + gTasks[taskId].data[4] = 1; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + if (gBattleAnimArgs[2] & 1) + gBattleAnimArgs[2] &= ~1; + else + gBattleAnimArgs[2] |= 1; + } + } + r6 = gTasks[taskId].data[9] = sub_8077ABC(gBattleAnimBankAttacker, 0); + r9 = gTasks[taskId].data[10] = sub_8077ABC(gBattleAnimBankAttacker, 1); + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) + { + sub_807A3FC(gBattleAnimBankTarget, 0, &sp1, &sp2); + } + else + { + sp1 = sub_8077ABC(gBattleAnimBankTarget, 0); + sp2 = sub_8077ABC(gBattleAnimBankTarget, 1); + } + + sp1 = gTasks[taskId].data[11] = sp1 + gBattleAnimArgs[0]; + sp2 = gTasks[taskId].data[12] = sp2 + gBattleAnimArgs[1]; + if (sp1 >= r6) + r4 = sp1 - r6; + else + r4 = r6 - sp1; + + gTasks[taskId].data[5] = sub_81174C4(r4, sub_81174E0(gBattleAnimArgs[2] & ~1)); + gTasks[taskId].data[6] = sub_81174C4(gTasks[taskId].data[5], 0x80); + gTasks[taskId].data[7] = gBattleAnimArgs[2]; + if (sp2 >= r9) + { + r4 = sp2 - r9; + gTasks[taskId].data[8] = sub_81174C4(r4, sub_81174E0(gTasks[taskId].data[5])) & ~1; + } + else + { + r4 = r9 - sp2; + gTasks[taskId].data[8] = sub_81174C4(r4, sub_81174E0(gTasks[taskId].data[5])) | 1; + } + + gTasks[taskId].data[3] = gBattleAnimArgs[3]; + if (gBattleAnimArgs[4] & 0x80) + { + gBattleAnimArgs[4] ^= 0x80; + if (gBattleAnimArgs[4] >= 64) + { + u16 var = sub_8079E90(gBattleAnimBankTarget) + (gBattleAnimArgs[4] - 64); + gTasks[taskId].data[2] = var; + } + else + { + u16 var = sub_8079E90(gBattleAnimBankTarget) - gBattleAnimArgs[4]; + gTasks[taskId].data[2] = var; + } + } + else + { + if (gBattleAnimArgs[4] >= 64) + { + u16 var = sub_8079E90(gBattleAnimBankTarget) + (gBattleAnimArgs[4] - 64); + gTasks[taskId].data[2] = var; + } + else + { + u16 var = sub_8079E90(gBattleAnimBankTarget) - gBattleAnimArgs[4]; + gTasks[taskId].data[2] = var; + } + } + + if (gTasks[taskId].data[2] < 3) + gTasks[taskId].data[2] = 3; + + gTasks[taskId].func = sub_80CFA20; +} diff --git a/src/battle/anim/spin_finger.c b/src/battle/anim/spin_finger.c new file mode 100755 index 000000000..adf41b261 --- /dev/null +++ b/src/battle/anim/spin_finger.c @@ -0,0 +1,73 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern void sub_80CF088(struct Sprite* sprite); +static void sub_80CF138(struct Sprite* sprite); +static void sub_80CF158(struct Sprite* sprite); + +// spin_finger +// Used in Follow Me. + +void sub_80CF0BC(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + + sprite->pos1.x = sub_8077ABC(bank, 0); + sprite->pos1.y = sub_807A100(bank, 2); + if (sprite->pos1.y <= 9) + sprite->pos1.y = 10; + + sprite->data[0] = 1; + sprite->data[1] = 0; + sprite->data[2] = sprite->subpriority; + sprite->data[3] = sprite->subpriority + 4; + sprite->data[4] = 0; + StoreSpriteCallbackInData(sprite, sub_80CF138); + sprite->callback = sub_80785E4; +} + +void sub_80CF138(struct Sprite* sprite) +{ + if (++sprite->data[4] > 12) + sprite->callback = sub_80CF158; +} + +void sub_80CF158(struct Sprite* sprite) +{ + s16 temp; + s16 temp2; + sprite->data[1] += 4; + if (sprite->data[1] > 0xFE) + { + if (--sprite->data[0] == 0) + { + sprite->pos2.x = 0; + sprite->callback = sub_80CF088; + return; + } + else + { + sprite->data[1] &= 0xFF; + } + } + + if (sprite->data[1] > 0x4F) + sprite->subpriority = sprite->data[3]; + + if (sprite->data[1] > 0x9F) + sprite->subpriority = sprite->data[2]; + + temp = gSineTable[sprite->data[1]]; + sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1); +} diff --git a/src/battle/anim/spit.c b/src/battle/anim/spit.c new file mode 100755 index 000000000..f9ad462ae --- /dev/null +++ b/src/battle/anim/spit.c @@ -0,0 +1,30 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// spit (hurls sprites outward from the pokemon. Similar to orbit_fast, but takes another argument.) +// Used in Spit Up. + +void sub_80D287C(struct Sprite* sprite) +{ + sprite->pos2.x += sprite->data[0]; + sprite->pos2.y += sprite->data[1]; + if (sprite->data[3]++ >= sprite->data[2]) + move_anim_8072740(sprite); +} + +void sub_80D28AC(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->data[0] = Sin(gBattleAnimArgs[0], 10); + sprite->data[1] = Cos(gBattleAnimArgs[0], 7); + sprite->data[2] = gBattleAnimArgs[1]; + sprite->callback = sub_80D287C; +} diff --git a/src/battle/anim/splash.c b/src/battle/anim/splash.c new file mode 100755 index 000000000..1b0ceba93 --- /dev/null +++ b/src/battle/anim/splash.c @@ -0,0 +1,87 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern struct AffineAnimFrameCmd gUnknown_083D76F4; + +static void sub_80D07AC(u8 taskId); + +// splash (splash effect of hopping up and down) +// Used in Splash, Mud Sport, and Sketch. + +void sub_80D074C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (gBattleAnimArgs[1] == 0) + { + DestroyAnimVisualTask(taskId); + } + else + { + u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + task->data[0] = spriteId; + task->data[1] = 0; + task->data[2] = gBattleAnimArgs[1]; + task->data[3] = 0; + task->data[4] = 0; + sub_80798F4(task, spriteId, &gUnknown_083D76F4); + task->func = sub_80D07AC; + } +} + +void sub_80D07AC(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[1]) + { + case 0: + sub_807992C(task); + task->data[4] += 3; + gSprites[task->data[0]].pos2.y += task->data[4]; + if (++task->data[3] > 7) + { + task->data[3] = 0; + task->data[1]++; + } + break; + case 1: + sub_807992C(task); + gSprites[task->data[0]].pos2.y += task->data[4]; + if (++task->data[3] > 7) + { + task->data[3] = 0; + task->data[1]++; + } + break; + case 2: + if (task->data[4] != 0) + { + gSprites[task->data[0]].pos2.y -= 2; + task->data[4] -= 2; + } + else + task->data[1]++; + break; + case 3: + if (!sub_807992C(task)) + { + if (--task->data[2] == 0) + { + gSprites[task->data[0]].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + else + { + sub_80798F4(task, task->data[0], &gUnknown_083D76F4); + task->data[1] = 0; + } + } + break; + } +} diff --git a/src/battle/anim/startle.c b/src/battle/anim/startle.c new file mode 100755 index 000000000..acbf80fec --- /dev/null +++ b/src/battle/anim/startle.c @@ -0,0 +1,56 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern struct AffineAnimFrameCmd gUnknown_083D7A98; + +// startle (the pokemon sprite shrivels upward and restores after a brief time.) +// Used in Fake Out, Trick, and Astonish. + +// opponent +void sub_80D1E38(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(1); + if (++gTasks[taskId].data[0] == 1) + { + sub_80798F4(&gTasks[taskId], GetAnimBankSpriteId(1), &gUnknown_083D7A98); + gSprites[spriteId].pos2.x = 4; + } + else + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + if (sub_807992C(&gTasks[taskId]) == 0) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +// player +void sub_80D1EC8(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(0); + if (++gTasks[taskId].data[0] == 1) + { + sub_80798F4(&gTasks[taskId], GetAnimBankSpriteId(0), &gUnknown_083D7A98); + gSprites[spriteId].pos2.x = 4; + } + else + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + if (sub_807992C(&gTasks[taskId]) == 0) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + } +} diff --git a/src/battle/anim/strike.c b/src/battle/anim/strike.c new file mode 100755 index 000000000..f2fbdb5a4 --- /dev/null +++ b/src/battle/anim/strike.c @@ -0,0 +1,77 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CE798(struct Sprite* sprite); + +// strike (A red strike towards the opponent.) +// Used in Horn Attack, Fury Attack, and Horn Drill. + +void sub_80CE670(struct Sprite* sprite) +{ + if (gBattleAnimArgs[2] <= 1) + gBattleAnimArgs[2] = 2; + + if (gBattleAnimArgs[2] > 0x7F) + gBattleAnimArgs[2] = 0x7F; + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[1]; + sprite->data[6] = sprite->pos1.x; + sprite->data[7] = sprite->pos1.y; + if (NotInBattle() != 0) + { + sprite->oam.matrixNum = 8; + sprite->pos1.x += 40; + sprite->pos1.y += 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = -0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = -0xA00 / sprite->data[1]; + } + else if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + sprite->pos1.x -= 40; + sprite->pos1.y += 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = 0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = -0xA00 / sprite->data[1]; + } + else + { + sprite->pos1.x += 40; + sprite->pos1.y -= 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = -0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = 0xA00 / sprite->data[1]; + sprite->oam.matrixNum = 24; + } + + sprite->callback = sub_80CE798; +} + +void sub_80CE798(struct Sprite* sprite) +{ + sprite->data[2] += sprite->data[3]; + sprite->data[4] += sprite->data[5]; + sprite->pos1.x = sprite->data[2] >> 7; + sprite->pos1.y = sprite->data[4] >> 7; + if (--sprite->data[1] == 1) + { + sprite->pos1.x = sprite->data[6]; + sprite->pos1.y = sprite->data[7]; + } + + if (sprite->data[1] == 0) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/switch.c b/src/battle/anim/switch.c new file mode 100755 index 000000000..a1be144df --- /dev/null +++ b/src/battle/anim/switch.c @@ -0,0 +1,128 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern s8 gUnknown_083D680C[11][3]; + +static void sub_80CBC8C(struct Sprite* sprite); +static void sub_80CBCF8(struct Sprite* sprite); +static void sub_80CBDB0(struct Sprite* sprite); + +// switch (makes an item and circles it from side to side on the field.) +// Used in Trick. + +void sub_80CBBF0(struct Sprite* sprite) +{ + int a; + int b; + + if (sprite->data[0] == 0) + { + if (!NotInBattle()) + { + sprite->data[1] = gBattleAnimArgs[1]; + sprite->pos1.x = 0x78; + } + else + { + a = gBattleAnimArgs[1] - 32; + if (a < 0) + b = gBattleAnimArgs[1] + 0xDF; + else + b = a; + + sprite->data[1] = a - ((b >> 8) << 8); + sprite->pos1.x = 0x46; + } + + sprite->pos1.y = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[0]; + sprite->data[4] = 20; + sprite->pos2.x = Cos(sprite->data[1], 0x3C); + sprite->pos2.y = Sin(sprite->data[1], 20); + sprite->callback = sub_80CBC8C; + if (sprite->data[1] > 0 && sprite->data[1] < 0xC0) + sprite->subpriority = 31; + else + sprite->subpriority = 29; + } +} + +void sub_80CBC8C(struct Sprite* sprite) +{ + switch (sprite->data[3]) + { + case 0: + if (sprite->data[2] > 0x4E) + { + sprite->data[3] = 1; + StartSpriteAffineAnim(sprite, 1); + break; + } + else + { + sprite->data[2] += sprite->data[4] / 10; + sprite->data[4] += 3; + sprite->pos1.y = sprite->data[2]; + break; + } + break; + case 1: + if (sprite->data[3] && sprite->affineAnimEnded) + { + sprite->data[0] = 0; + sprite->data[2] = 0; + sprite->callback = sub_80CBCF8; + } + break; + } +} + +void sub_80CBCF8(struct Sprite* sprite) +{ + if (sprite->data[2] == gUnknown_083D680C[sprite->data[0]][1]) + { + if (gUnknown_083D680C[sprite->data[0]][2] == 0x7F) + { + sprite->data[0] = 0; + sprite->callback = sub_80CBDB0; + } + + sprite->data[2] = 0; + sprite->data[0]++; + } + else + { + sprite->data[2]++; + sprite->data[1] = (gUnknown_083D680C[sprite->data[0]][0] * gUnknown_083D680C[sprite->data[0]][2] + sprite->data[1]) & 0xFF; + if (!NotInBattle()) + { + if ((u16)(sprite->data[1] - 1) <= 0xBE) + { + sprite->subpriority = 31; + } + else + { + sprite->subpriority = 29; + } + } + + sprite->pos2.x = Cos(sprite->data[1], 0x3C); + sprite->pos2.y = Sin(sprite->data[1], 20); + } +} + +void sub_80CBDB0(struct Sprite* sprite) +{ + if (sprite->data[0] > 20) + move_anim_8072740(sprite); + + sprite->invisible = sprite->data[0] % 2; + sprite->data[0]++; +} diff --git a/src/battle/anim/sword.c b/src/battle/anim/sword.c new file mode 100755 index 000000000..536f89b26 --- /dev/null +++ b/src/battle/anim/sword.c @@ -0,0 +1,30 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CF6B4(struct Sprite* sprite); + +// sword (sword appears and floats upward.) +// Used in Swords Dance. + +void sub_80CF690(struct Sprite* sprite) +{ + sub_80787B0(sprite, 0); + sprite->callback = sub_80785E4; + StoreSpriteCallbackInData(sprite, sub_80CF6B4); +} + +void sub_80CF6B4(struct Sprite* sprite) +{ + sprite->data[0] = 6; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y - 32; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} diff --git a/src/battle/anim/taunt_finger.c b/src/battle/anim/taunt_finger.c new file mode 100755 index 000000000..7024f85a0 --- /dev/null +++ b/src/battle/anim/taunt_finger.c @@ -0,0 +1,56 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern void sub_80CEF44(u8 bank, struct Sprite* sprite); +static void sub_80CF228(struct Sprite* sprite); +static void sub_80CF264(struct Sprite* sprite); + +// taunt_finger +// Used in Taunt. + +void sub_80CF1C8(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + + sub_80CEF44(bank, sprite); + if (GetBankSide(bank) == 0) + { + StartSpriteAnim(sprite, 0); + sprite->data[0] = 2; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->data[0] = 3; + } + + sprite->callback = sub_80CF228; +} + +void sub_80CF228(struct Sprite* sprite) +{ + if (++sprite->data[1] > 10) + { + sprite->data[1] = 0; + StartSpriteAnim(sprite, sprite->data[0]); + StoreSpriteCallbackInData(sprite, sub_80CF264); + sprite->callback = sub_8078600; + } +} + +void sub_80CF264(struct Sprite* sprite) +{ + if (++sprite->data[1] > 5) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/tendrils.c b/src/battle/anim/tendrils.c new file mode 100755 index 000000000..ba1014d2f --- /dev/null +++ b/src/battle/anim/tendrils.c @@ -0,0 +1,67 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CB298(struct Sprite* sprite); +static void sub_80CB2D4(struct Sprite* sprite); + +// tendrils +// Used by Constrict. + +void sub_80CB25C(struct Sprite* sprite) +{ + sub_8078764(sprite, 0); + sprite->affineAnimPaused = 1; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); + sprite->data[6] = gBattleAnimArgs[2]; + sprite->data[7] = gBattleAnimArgs[3]; + sprite->callback = sub_80CB298; +} + +void sub_80CB298(struct Sprite* sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->affineAnimPaused = 0; + GetAnimBankSpriteId(1); + sprite->data[0] = 0x100; + sprite->callback = sub_80CB2D4; + } +} + +void sub_80CB2D4(struct Sprite* sprite) +{ + GetAnimBankSpriteId(1); + if (!sprite->data[2]) + { + sprite->data[0] += 11; + } + else + { + sprite->data[0] -= 11; + } + sprite->data[1]++; + if (sprite->data[1] == 6) + { + sprite->data[1] = 0; + sprite->data[2] ^= 1; + } + + if (sprite->affineAnimEnded) + { + sprite->data[7]--; + if (sprite->data[7] > 0) + { + StartSpriteAffineAnim(sprite, sprite->data[6]); + } + else + { + move_anim_8072740(sprite); + } + } +}
\ No newline at end of file diff --git a/src/battle/anim/thought.c b/src/battle/anim/thought.c new file mode 100755 index 000000000..9cffafe14 --- /dev/null +++ b/src/battle/anim/thought.c @@ -0,0 +1,52 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CF008(struct Sprite* sprite); + +// thought (thought bubble) +// Used in Metronome and Taunt. + +void sub_80CEF44(u8 bank, struct Sprite* sprite) +{ + if (GetBankSide(bank) == 0) + sprite->pos1.x = sub_807A100(bank, 5) + 8; + else + sprite->pos1.x = sub_807A100(bank, 4) - 8; + + sprite->pos1.y = sub_8077ABC(bank, 3) - (s16)sub_807A100(bank, 0) / 4; +} + +void sub_80CEF9C(struct Sprite* sprite) +{ + u8 a; + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + + sub_80CEF44(bank, sprite); + a = (GetBankSide(bank) == 0) ? 0 : 1; + sprite->data[0] = gBattleAnimArgs[1]; + sprite->data[1] = a + 2; + StartSpriteAnim(sprite, a); + StoreSpriteCallbackInData(sprite, sub_80CF008); + sprite->callback = sub_8078600; +} + +void sub_80CF008(struct Sprite* sprite) +{ + if (--sprite->data[0] == 0) + { + StoreSpriteCallbackInData(sprite, move_anim_8072740); + StartSpriteAnim(sprite, sprite->data[1]); + sprite->callback = sub_8078600; + } +} diff --git a/src/battle/anim/thrashing.c b/src/battle/anim/thrashing.c new file mode 100755 index 000000000..9811c546a --- /dev/null +++ b/src/battle/anim/thrashing.c @@ -0,0 +1,111 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern struct AffineAnimFrameCmd gUnknown_083D77B0; + +static void sub_80D0A8C(u8 taskId); +static void sub_80D0B3C(u8 taskId); + +// thrashing (the movement of the Pokemon left/right repeatedly, with up/down movements below.) +// Used by Thrash. + +// left/right movements +void sub_80D0A4C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBankSpriteId(0); + task->data[0] = spriteId; + task->data[1] = 0; + sub_80798F4(task, spriteId, &gUnknown_083D77B0); + task->func = sub_80D0A8C; +} + +void sub_80D0A8C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!sub_807992C(task)) + DestroyAnimVisualTask(taskId); +} + +// up/down movements +void sub_80D0AB8(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = GetAnimBankSpriteId(0); + task->data[1] = 0; + task->data[2] = 4; + task->data[3] = 7; + task->data[4] = 3; + task->data[5] = gSprites[task->data[0]].pos1.x; + task->data[6] = gSprites[task->data[0]].pos1.y; + task->data[7] = 0; + task->data[8] = 0; + task->data[9] = 2; + if (GetBankSide(gBattleAnimBankAttacker) == 1) + task->data[2] *= -1; + + task->func = sub_80D0B3C; +} + +void sub_80D0B3C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (++task->data[7] > 2) + { + task->data[7] = 0; + task->data[8]++; + if ((task->data[8] & 1) != 0) + { + gSprites[task->data[0]].pos1.y += task->data[9]; + } + else + { + gSprites[task->data[0]].pos1.y -= task->data[9]; + } + } + switch (task->data[1]) + { + case 0: + gSprites[task->data[0]].pos1.x += task->data[2]; + if (--task->data[3] == 0) + { + task->data[3] = 14; + task->data[1] = 1; + } + break; + case 1: + gSprites[task->data[0]].pos1.x -= task->data[2]; + if (--task->data[3] == 0) + { + task->data[3] = 7; + task->data[1] = 2; + } + break; + case 2: + gSprites[task->data[0]].pos1.x += task->data[2]; + if (--task->data[3] == 0) + { + if (--task->data[4] != 0) + { + task->data[3] = 7; + task->data[1] = 0; + } + else + { + if ((task->data[8] & 1) != 0) + { + gSprites[task->data[0]].pos1.y -= task->data[9]; + } + DestroyAnimVisualTask(taskId); + } + } + break; + } +} diff --git a/src/battle/anim/tile_in.c b/src/battle/anim/tile_in.c new file mode 100755 index 000000000..5fcbadbb7 --- /dev/null +++ b/src/battle/anim/tile_in.c @@ -0,0 +1,51 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// tile_in (flips a white tile from the scene into facing the player.) +// Used in Conversion. + +void sub_80CE09C(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[1]; + if (NotInBattle()) + sprite->pos1.y += 10; + sprite->data[0]++; + } + + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + move_anim_8072740(sprite); +} + +void sub_80CE108(u8 taskId) +{ + if (gTasks[taskId].data[2] == 1) + { + gBattleAnimArgs[7] = 0xFFFF; + gTasks[taskId].data[2]++; + } + else if (gTasks[taskId].data[2] == 2) + { + DestroyAnimVisualTask(taskId); + } + else + { + if (++gTasks[taskId].data[0] == 4) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1]++; + REG_BLDALPHA = (gTasks[taskId].data[1] << 8) | (16 - gTasks[taskId].data[1]); + if (gTasks[taskId].data[1] == 16) + gTasks[taskId].data[2]++; + } + } +} diff --git a/src/battle/anim/tile_out.c b/src/battle/anim/tile_out.c new file mode 100755 index 000000000..8b710268f --- /dev/null +++ b/src/battle/anim/tile_out.c @@ -0,0 +1,81 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "battle_interface.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u8 gNoOfAllBanks; +extern u8 gHealthboxIDs[]; + +static void sub_80CE1AC(struct Sprite* sprite); + +// tile_out (makes a tile fly inward into a center point.) +// Used in Conversion 2. + +void sub_80CE17C(struct Sprite* sprite) +{ + sub_8078764(sprite, 0); + sprite->animPaused = 1; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->callback = sub_80CE1AC; +} + +void sub_80CE1AC(struct Sprite* sprite) +{ + if (sprite->data[0]) + { + sprite->data[0]--; + } + else + { + sprite->animPaused = 0; + sprite->data[0] = 30; + sprite->data[2] = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3); + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); + } +} + +void sub_80CE210(u8 taskId) +{ + if (++gTasks[taskId].data[0] == 4) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1]++; + REG_BLDALPHA = gTasks[taskId].data[1] | ((16 - gTasks[taskId].data[1]) << 8); + if (gTasks[taskId].data[1] == 16) + DestroyAnimVisualTask(taskId); + } +} + +void unref_sub_80CE260(u8 taskId) +{ + u8 i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleAnimArgs[0] == 1 && GetBankSide(i) == 0) + sub_8043DB0(gHealthboxIDs[i]); + + if (gBattleAnimArgs[1] == 1 && GetBankSide(i) == 1) + sub_8043DB0(gHealthboxIDs[i]); + } + + DestroyAnimVisualTask(taskId); +} + +void unref_sub_80CE2D4(u8 taskId) +{ + u8 i; + for (i = 0; i < gNoOfAllBanks; i++) + { + sub_8043DFC(gHealthboxIDs[i]); + } + + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle/anim/twinkle.c b/src/battle/anim/twinkle.c new file mode 100755 index 000000000..56095c29d --- /dev/null +++ b/src/battle/anim/twinkle.c @@ -0,0 +1,42 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CE3B0(struct Sprite* sprite); + +// twinkle (a tiny twinkling star appears above the Pokemon and descends toward the Pokemon.) +// Used in Moonlight. + +void sub_80CE36C(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 1; + sprite->callback = sub_80CE3B0; +} + +void sub_80CE3B0(struct Sprite* sprite) +{ + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + if (sprite->data[2] <= 0x77) + { + sprite->pos1.y++; + sprite->data[2]++; + } + } + + if (sprite->data[0]) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/unused_1.c b/src/battle/anim/unused_1.c new file mode 100755 index 000000000..fdcef0de9 --- /dev/null +++ b/src/battle/anim/unused_1.c @@ -0,0 +1,25 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// unused effect file. +// Seems to be a beta effect for Beat Up, possibly. + +void sub_80CC8C8(struct Sprite* sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + sprite->data[5] = gBattleAnimArgs[5]; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]); + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = sub_8078504; +} diff --git a/src/battle/anim/unused_2.c b/src/battle/anim/unused_2.c new file mode 100755 index 000000000..f7f5be88d --- /dev/null +++ b/src/battle/anim/unused_2.c @@ -0,0 +1,80 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CCCB4(struct Sprite* sprite); + +// unused_2 (unknown effect with music notes.) +// possibly another unused effect. Unknown usage. + +void unref_sub_80CCB6C(struct Sprite* sprite) +{ + if (sprite->data[2] > 1) + { + if (sprite->data[3] & 1) + { + sprite->invisible = 0; + gSprites[sprite->data[0]].invisible = 0; + gSprites[sprite->data[1]].invisible = 0; + } + else + { + sprite->invisible = 1; + gSprites[sprite->data[0]].invisible = 1; + gSprites[sprite->data[1]].invisible = 1; + } + + sprite->data[2] = 0; + sprite->data[3]++; + } + else + { + sprite->data[2]++; + } + + if (sprite->data[3] == 10) + { + DestroySprite(&gSprites[sprite->data[0]]); + DestroySprite(&gSprites[sprite->data[1]]); + move_anim_8072740(sprite); + } +} + +void sub_80CCC50(struct Sprite* sprite) +{ + sprite->data[0] = gBattleAnimArgs[2]; + if (GetBankSide(gBattleAnimBankAttacker) != 0) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + StartSpriteAnim(sprite, gBattleAnimArgs[5]); + sprite->data[1] = -gBattleAnimArgs[3]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[3] = gBattleAnimArgs[4]; + sprite->callback = sub_80CCCB4; + sub_80CCCB4(sprite); +} + +void sub_80CCCB4(struct Sprite* sprite) +{ + sprite->pos2.x = Cos(sprite->data[0], 100); + sprite->pos2.y = Sin(sprite->data[0], 20); + if (sprite->data[0] <= 0x7F) + sprite->subpriority = 0; + else + sprite->subpriority = 14; + + sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF; + sprite->data[5] += 0x82; + sprite->pos2.y += sprite->data[5] >> 8; + sprite->data[2]++; + if (sprite->data[2] == sprite->data[3]) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/unused_3.c b/src/battle/anim/unused_3.c new file mode 100755 index 000000000..049e0ca1b --- /dev/null +++ b/src/battle/anim/unused_3.c @@ -0,0 +1,45 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CD2D4(struct Sprite* sprite); + +// unused_3 (seems to be some sort of popping effect with a growing diamond shape) +// yet another unused effect... + +void sub_80CD274(struct Sprite* sprite) +{ + sub_8078650(sprite); + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, 1); + } + + sprite->callback = sub_80CD2D4; +} + +void sub_80CD2D4(struct Sprite* sprite) +{ + if (++sprite->data[0] > 30) + { + sprite->pos2.y = (30 - sprite->data[0]) / 3; + sprite->pos2.x = Sin(sprite->data[1] * 4, 3); + sprite->data[1]++; + } + + if (sprite->animEnded) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/unused_4.c b/src/battle/anim/unused_4.c new file mode 100755 index 000000000..72ecde05c --- /dev/null +++ b/src/battle/anim/unused_4.c @@ -0,0 +1,58 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u8 gObjectBankIDs[]; + +static void sub_80CD9D4(struct Sprite* sprite); + +// unused_4 +// Unknown usage. + +void sub_80CD9C4(struct Sprite* sprite) +{ + sprite->data[0] = 0; + sprite->callback = sub_80CD9D4; +} + +void sub_80CD9D4(struct Sprite* sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = 0; + sprite->data[2] = gObjectBankIDs[gBattleAnimBankAttacker]; + sprite->data[3] = GetBankSide(gBattleAnimBankAttacker); + sprite->data[4] = (sprite->data[3] != 0) ? 0x200 : -0x200; + sprite->data[5] = 0; + sub_8078E70(sprite->data[2], 0); + sprite->data[0]++; + case 1: + sprite->data[5] += sprite->data[4]; + obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]); + sub_8078F9C(sprite->data[2]); + if (++sprite->data[1] > 3) + { + sprite->data[1] = 0; + sprite->data[4] *= -1; + sprite->data[0]++; + } + break; + case 2: + sprite->data[5] += sprite->data[4]; + obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]); + sub_8078F9C(sprite->data[2]); + if (++sprite->data[1] > 3) + { + sub_8078F40(sprite->data[2]); + move_anim_8072740(sprite); + } + break; + } +} diff --git a/src/battle/anim/unused_5.c b/src/battle/anim/unused_5.c new file mode 100755 index 000000000..4dc2da70d --- /dev/null +++ b/src/battle/anim/unused_5.c @@ -0,0 +1,25 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// unused_5 + +void sub_80CF280(struct Sprite* sprite) +{ + sub_8078650(sprite); + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[3] = gBattleAnimArgs[5]; + sprite->data[4] = gBattleAnimArgs[3]; + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = sub_8078278; + sub_8078278(sprite); +} diff --git a/src/battle/anim/unused_6.c b/src/battle/anim/unused_6.c new file mode 100755 index 000000000..f7c87647f --- /dev/null +++ b/src/battle/anim/unused_6.c @@ -0,0 +1,49 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern void sub_80CEF44(u8 bank, struct Sprite* sprite); +static void sub_80CF310(struct Sprite* sprite); + +// unused_6 + +void sub_80CF2D0(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + + sub_80CEF44(bank, sprite); + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->callback = sub_80CF310; +} + +void sub_80CF310(struct Sprite* sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos2.y -= 3; + if (++sprite->data[1] == 6) + sprite->data[0]++; + break; + case 1: + sprite->pos2.y += 3; + if (--sprite->data[1] == 0) + sprite->data[0]++; + break; + case 2: + if (++sprite->data[1] == 0x40) + move_anim_8072740(sprite); + break; + } +} diff --git a/src/battle/anim/unused_7.c b/src/battle/anim/unused_7.c new file mode 100755 index 000000000..3a8998f1d --- /dev/null +++ b/src/battle/anim/unused_7.c @@ -0,0 +1,51 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u8 gObjectBankIDs[]; + +// unused_7 + +void sub_80CF374(struct Sprite* sprite) +{ + s16 temp; + gSprites[sprite->data[2]].pos2.x += sprite->data[1]; + temp = sprite->data[1]; + sprite->data[1] = -temp; + if (sprite->data[0] == 0) + { + gSprites[sprite->data[2]].pos2.x = 0; + move_anim_8074EE0(sprite); + } + + sprite->data[0]--; +} + +void sub_80CF3C4(struct Sprite* sprite) +{ + u8 a; + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + a = gObjectBankIDs[gBattleAnimBankTarget]; + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = a; + sprite->callback = sub_80CF374; + sprite->invisible = 1; +} diff --git a/src/battle/anim/unused_8.c b/src/battle/anim/unused_8.c new file mode 100755 index 000000000..bcebfcd2b --- /dev/null +++ b/src/battle/anim/unused_8.c @@ -0,0 +1,41 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CF490(struct Sprite* sprite); +static void sub_80CF4B8(struct Sprite* sprite); + +// unused_8 + +void sub_80CF458(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[4]; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, sub_80CF490); +} + +void sub_80CF490(struct Sprite* sprite) +{ + sprite->data[0] = sprite->data[1]; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y + 15; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, sub_80CF4B8); +} + +void sub_80CF4B8(struct Sprite* sprite) +{ + if (sprite->data[5] == 0) + move_anim_8072740(sprite); + else + sprite->data[5]--; +} diff --git a/src/battle/anim/unused_9.c b/src/battle/anim/unused_9.c new file mode 100755 index 000000000..579238fbc --- /dev/null +++ b/src/battle/anim/unused_9.c @@ -0,0 +1,113 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern struct SpriteTemplate gSpriteTemplate_83D75AC; + +static void sub_80CFE2C(struct Sprite* sprite); + +// unused_9? (Most likely an unused effect.) +// I cannot find any reference to this sprite template used to call this. + +void sub_80CFDFC(struct Sprite* sprite) +{ + sub_80787B0(sprite, 0); + sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(gSpriteTemplate_83D75AC.paletteTag) << 4); + sprite->callback = sub_80CFE2C; +} + +#ifdef NONMATCHING +void sub_80CFE2C(struct Sprite* sprite) +{ + u16 r7; + u16* r1; + u16* r2; + int i; + if (++sprite->data[1] == 2) + { + sprite->data[1] = 0; + r7 = gPlttBufferFaded[sprite->data[0] + 8]; + r2 = &gPlttBufferFaded[0x10]; + r1 = &gPlttBufferFaded[sprite->data[0] + 9]; + for (i = 7; i >= 0; i--) + { + *r2 = *r1; + r1++; + r2++; + } + + gPlttBufferFaded[sprite->data[0] + 15] = r7; + if (++sprite->data[2] == 0x18) + move_anim_8072740(sprite); + } +} +#else +__attribute__((naked)) +void sub_80CFE2C(struct Sprite* sprite) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r4, r0, 0\n\ + ldrh r0, [r4, 0x30]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x30]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x2\n\ + bne _080CFE90\n\ + movs r0, 0\n\ + strh r0, [r4, 0x30]\n\ + ldrh r5, [r4, 0x2E]\n\ + ldr r1, _080CFE98 @ =gPlttBufferFaded\n\ + adds r0, r5, 0\n\ + adds r0, 0x8\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + ldrh r7, [r0]\n\ + adds r6, r1, 0 @puts gPlttBufferFaded in r6\n\ + adds r1, r5, 0\n\ + adds r1, 0x9\n\ + lsls r0, r5, 1\n\ + adds r0, r6 \n\ + adds r2, r0, 0\n\ + adds r2, 0x10\n\ + movs r3, 0x7\n\ + lsls r1, 1\n\ + adds r1, r6 \n\ +_080CFE64:\n\ + ldrh r0, [r1]\n\ + strh r0, [r2]\n\ + adds r1, 0x2\n\ + adds r2, 0x2\n\ + subs r3, 0x1\n\ + cmp r3, 0\n\ + bge _080CFE64\n\ + adds r0, r5, 0\n\ + adds r0, 0xF\n\ + lsls r0, 1\n\ + adds r0, r6\n\ + strh r7, [r0]\n\ + ldrh r0, [r4, 0x32]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x32]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x18\n\ + bne _080CFE90\n\ + adds r0, r4, 0\n\ + bl move_anim_8072740\n\ +_080CFE90:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080CFE98: .4byte gPlttBufferFaded\n\ +.syntax divided\n"); +} +#endif diff --git a/src/battle/anim/wave_finger.c b/src/battle/anim/wave_finger.c new file mode 100755 index 000000000..58f0f8778 --- /dev/null +++ b/src/battle/anim/wave_finger.c @@ -0,0 +1,39 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern void sub_80CEF44(u8 bank, struct Sprite* sprite); +void sub_80CF088(struct Sprite* sprite); + +// wave_finger +// Used by Metronome. + +void sub_80CF040(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimBankAttacker; + else + bank = gBattleAnimBankTarget; + + sub_80CEF44(bank, sprite); + sprite->data[0] = 0; + StoreSpriteCallbackInData(sprite, sub_80CF088); + sprite->callback = sub_80785E4; +} + +void sub_80CF088(struct Sprite* sprite) +{ + if (++sprite->data[0] > 16) + { + StartSpriteAffineAnim(sprite, 1); + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = sub_80785E4; + } +} diff --git a/src/battle/anim/whip.c b/src/battle/anim/whip.c new file mode 100755 index 000000000..3aa0758a9 --- /dev/null +++ b/src/battle/anim/whip.c @@ -0,0 +1,46 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +// whip (does a hitting animation that uses a rotating sprite to invoke the sprite getting hit.) +// Used by Slam and Vine Whip. + +void sub_80CC810(struct Sprite* sprite) +{ + if (sprite->animEnded) + move_anim_8072740(sprite); +} + +// unused, beta effect for diagonal sprite movement? +void sub_80CC82C(struct Sprite* sprite) +{ + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + + sprite->callback = sub_8078600; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} + +void sub_80CC884(struct Sprite* sprite) +{ + if (GetBankSide(gBattleAnimBankAttacker) == 0) + StartSpriteAnim(sprite, 1); + + sprite->callback = sub_80CC810; + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; +} diff --git a/src/battle/anim/withdraw.c b/src/battle/anim/withdraw.c new file mode 100755 index 000000000..9abcff32d --- /dev/null +++ b/src/battle/anim/withdraw.c @@ -0,0 +1,69 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +extern u8 gObjectBankIDs[]; + +static void sub_80CF514(u8 taskId); + +// withdraw (where a Pokemon leans inward to mimic the effect of withdrawing into a shell.) +// Used in Withdraw. + +void sub_80CF4D8(u8 taskId) +{ + sub_8078E70(gObjectBankIDs[gBattleAnimBankAttacker], 0); + gTasks[taskId].func = sub_80CF514; +} + +void sub_80CF514(u8 taskId) +{ + u8 a = gObjectBankIDs[gBattleAnimBankAttacker]; + s16 b; + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + b = -gTasks[taskId].data[0]; + } + else + { + b = gTasks[taskId].data[0]; + } + + obj_id_set_rotscale(a, 0x100, 0x100, b); + if (gTasks[taskId].data[1] == 0) + { + gTasks[taskId].data[0] += 0xB0; + gSprites[a].pos2.y++; + } + else if (gTasks[taskId].data[1] == 1) + { + if (++gTasks[taskId].data[3] == 0x1E) + gTasks[taskId].data[1] = 2; + + return; + } + else + { + gTasks[taskId].data[0] -= 0xB0; + gSprites[a].pos2.y--; + } + + sub_8078F9C(a); + if (gTasks[taskId].data[0] == 0xF20 || gTasks[taskId].data[0] == 0) + { + if (gTasks[taskId].data[1] == 2) + { + sub_8078F40(a); + DestroyAnimVisualTask(taskId); + } + else + { + gTasks[taskId].data[1]++; + } + } +} diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 6821adca3..18585cebb 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -18,6 +18,7 @@ #include "sound.h" #include "task.h" #include "decompress.h" +#include "pokemon_summary_screen.h" #include "naming_screen.h" #include "ewram.h" @@ -139,7 +140,6 @@ u16 GetPokedexHeightWeight(u16 national_num, u8 heightweight); u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); void DestroyMenuCursor(void); void sub_802BC6C(void); -void sub_809D9F0(struct Pokemon *party, u8, u8, void *, u32); u8 sub_809FA30(void); bool32 IsHMMove2(u16 move); void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0); @@ -10833,7 +10833,7 @@ static void atk5A(void) case 2: if (!gPaletteFade.active) { - sub_809D9F0(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); + ShowSelectMovePokemonSummaryScreen(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); BATTLE_STRUCT->atk5A_StateTracker++; } break; diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c index 237686099..5decf8a7b 100644 --- a/src/battle/battle_party_menu.c +++ b/src/battle/battle_party_menu.c @@ -625,7 +625,7 @@ static void Task_ShowSummaryScreen(u8 taskId) { DestroyTask(taskId); EWRAM_1B000.unk262 = 1; - ShowPokemonSummaryScreen(gPlayerParty, partySelection, gPlayerPartyCount - 1, Task_809535C, 4); + ShowPokemonSummaryScreen(gPlayerParty, partySelection, gPlayerPartyCount - 1, Task_809535C, PSS_MODE_NO_MOVE_ORDER_EDIT); } } diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c deleted file mode 100755 index b3ebec9b9..000000000 --- a/src/battle_anim_80CA710.c +++ /dev/null @@ -1,6258 +0,0 @@ -#include "global.h" -#include "battle.h" -#include "battle_anim.h" -#include "battle_anim_80CA710.h" -#include "battle_interface.h" -#include "blend_palette.h" -#include "decompress.h" -#include "ewram.h" -#include "main.h" -#include "palette.h" -#include "random.h" -#include "rom_8077ABC.h" -#include "constants/songs.h" -#include "sound.h" -#include "sprite.h" -#include "task.h" -#include "trig.h" -#include "unknown_task.h" - -struct Struct_sub_8078914 -{ - u8 *field_0; - u8 *field_4; - u8 field_8; -}; - -extern u8 gBanksBySide[]; -extern s16 gBattleAnimArgs[8]; -extern u8 gBattleAnimBankAttacker; -extern u8 gBattleAnimBankTarget; -extern struct SpriteTemplate gSpriteTemplate_83D631C; -extern struct SpriteTemplate gSpriteTemplate_83D6884; -extern struct SpriteTemplate gSpriteTemplate_83D74BC; -extern struct SpriteTemplate gSpriteTemplate_83D75AC; -extern struct SpriteTemplate gSpriteTemplate_83D79E8; -extern struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FC8; -extern struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FF8; -extern struct AffineAnimFrameCmd gUnknown_083D76F4; -extern struct AffineAnimFrameCmd gUnknown_083D7714; -extern struct AffineAnimFrameCmd gUnknown_083D77B0; -extern struct AffineAnimFrameCmd gUnknown_083D79BC; -extern struct AffineAnimFrameCmd gUnknown_083D7A98; -extern struct INCBIN_U8 gBattleAnimSpritePalette_206; -extern struct INCBIN_U8 gAttractTilemap; -extern struct INCBIN_U8 gAttractGfx; -extern struct INCBIN_U8 gAttractPal; -extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFaceContest; -extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFacePlayer; -extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFaceOpponent; -extern struct INCBIN_U8 gBattleAnimBackgroundImage_ScaryFace; -extern struct INCBIN_U8 gBattleAnimBackgroundPalette_ScaryFace; -extern s16 gUnknown_03000728[]; -extern s8 gUnknown_083D680C[11][3]; -extern u16 gUnknown_083D6984[]; -extern s8 gUnknown_083D6DDC[4][2]; -extern u8 gObjectBankIDs[]; -extern u8 gNoOfAllBanks; -extern u8 gHealthboxIDs[]; -extern u16 gUnknown_083D712C[4][6]; -extern u16 gBattleTypeFlags; -extern u16 gUnknown_030042C0; -extern u16 gUnknown_03004288; -extern u16 gUnknown_030042C4; -extern u16 gUnknown_03004240; -extern u16 gUnknown_030041B4; -extern s8 gUnknown_083D7A00[4][2]; -extern u16 gUnknown_083D7A5C[5]; - -static void sub_80CA768(struct Sprite* sprite); -static void sub_80CA8B4(struct Sprite* sprite); -static void sub_80CA9F8(struct Sprite* sprite); -static void sub_80CAACC(struct Sprite* sprite); -static void sub_80CAB88(struct Sprite* sprite); -static void sub_80CABC0(struct Sprite* sprite); -static void sub_80CAC44(struct Sprite* sprite); -static void sub_80CADA8(struct Sprite* sprite); -static void sub_80CAE74(struct Sprite* sprite); -static void sub_80CAF20(struct Sprite* sprite); -static void sub_80CAF6C(struct Sprite* sprite); -static void sub_80CB09C(struct Sprite* sprite); -static void sub_80CB1A4(struct Sprite* sprite); -static void sub_80CB298(struct Sprite* sprite); -static void sub_80CB2D4(struct Sprite* sprite); -static void sub_80CB710(struct Sprite* sprite); -static void sub_80CBB60(struct Sprite* sprite); -static void sub_80CBC8C(struct Sprite* sprite); -static void sub_80CBCF8(struct Sprite* sprite); -static void sub_80CBDB0(struct Sprite* sprite); -static void sub_80CC408(struct Sprite* sprite); -static void sub_80CC580(struct Sprite* sprite); -static void sub_80CC7D4(struct Sprite* sprite); -static void sub_80CCB00(struct Sprite* sprite); -static void sub_80CCCB4(struct Sprite* sprite); -static void sub_80CCE0C(struct Sprite* sprite); -static void sub_80CCF70(struct Sprite* sprite); -static void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2); -static void sub_80CD2D4(struct Sprite* sprite); -static void sub_80CD394(struct Sprite* sprite); -static void sub_80CD408(struct Sprite* sprite); -static void sub_80CD4B8(struct Sprite* sprite); -static void sub_80CD4EC(struct Sprite* sprite); -static void sub_80CD5A8(struct Sprite* sprite); -static void sub_80CD654(struct Sprite* sprite); -static void sub_80CD67C(struct Sprite* sprite); -static void sub_80CD7CC(struct Sprite* sprite); -static void sub_80CD81C(struct Sprite* sprite); -static void sub_80CD8A8(struct Sprite* sprite); -static void sub_80CD8F8(struct Sprite* sprite); -static void sub_80CD91C(struct Sprite* sprite); -static void sub_80CD9B8(struct Sprite* sprite); -static void sub_80CD9D4(struct Sprite* sprite); -static void sub_80CDE78(struct Sprite* sprite); -static void sub_80CDEB0(struct Sprite* sprite); -static void sub_80CDEC0(struct Sprite* sprite); -static void sub_80CDF70(struct Sprite* sprite); -static void sub_80CE000(struct Sprite* sprite); -static void sub_80CE1AC(struct Sprite* sprite); -static void sub_80CE354(struct Sprite* sprite); -static void sub_80CE3B0(struct Sprite* sprite); -static void sub_80CE798(struct Sprite* sprite); -static void sub_80CE974(struct Sprite* sprite); -static void sub_80CEC1C(struct Sprite* sprite); -static void sub_80CED78(struct Sprite* sprite); -static void sub_80CEEE8(struct Sprite* sprite); -static void sub_80CF008(struct Sprite* sprite); -static void sub_80CF088(struct Sprite* sprite); -static void sub_80CF138(struct Sprite* sprite); -static void sub_80CF158(struct Sprite* sprite); -static void sub_80CF228(struct Sprite* sprite); -static void sub_80CF264(struct Sprite* sprite); -static void sub_80CF310(struct Sprite* sprite); -static void sub_80CF490(struct Sprite* sprite); -static void sub_80CF4B8(struct Sprite* sprite); -static void sub_80CF6B4(struct Sprite* sprite); -static void sub_80CFE2C(struct Sprite* sprite); -static void sub_80CFF68(struct Sprite* sprite); -static void sub_80D0030(struct Sprite* sprite); -static void sub_80D00B4(struct Sprite* sprite); -static void sub_80D020C(struct Sprite* sprite); -static void sub_80D02D0(struct Sprite* sprite); -static void sub_80D0344(struct Sprite* sprite); -static void sub_80D03A8(struct Sprite* sprite); -extern void sub_80D0704(struct Sprite* sprite); -static void sub_80D0E8C(struct Sprite* sprite); -static void sub_80D1098(struct Sprite* sprite); -static void sub_80D13AC(struct Sprite* sprite); -static void sub_80D1424(struct Sprite* sprite); -static void sub_80D144C(struct Sprite* sprite); -static void sub_80D14C4(struct Sprite* sprite); -static void sub_80D1504(struct Sprite* sprite); -static void sub_80D154C(struct Sprite* sprite); -static void sub_80D158C(struct Sprite* sprite); -static void sub_80D1FA4(struct Sprite* sprite); -static void sub_80D2094(struct Sprite* sprite); -static void sub_80D2704(struct Sprite* sprite); -static void sub_80D2834(struct Sprite* sprite); -static s16 sub_80CC338(struct Sprite* sprite); -static void sub_80CB3A8(u8 taskId); -static void sub_80CB438(u8 taskId); -static void sub_80CBF5C(u8 taskId); -static void sub_80CDB60(u8 taskId); -static void sub_80CDD20(u8 taskId); -static void sub_80CE4D4(u8 taskId); -static void sub_80CE910(u8 taskId); -static void sub_80CF514(u8 taskId); -static void sub_80D0428(u8 taskId); -static void sub_80D04E0(u8 taskId); -static void sub_80D07AC(u8 taskId); -static void sub_80D0904(u8 taskId); -static void sub_80D0A8C(u8 taskId); -static void sub_80D0B3C(u8 taskId); -static void sub_80D0D68(u8 taskId); -static void sub_80D15E0(u8 taskId); -static void sub_80D16A0(u8 taskId); -static void sub_80D1808(u8 taskId); -static void sub_80D1930(u8 taskId); -static void sub_80D1D48(u8 taskId); -static void sub_80D1D9C(u8 taskId); -static void sub_80D21F0(u8 taskId); -static void sub_80D24E0(u8 taskId); -static void sub_80CC358(struct Task* task, u8 taskId); -extern void sub_80D0614(struct Task* task, u8 taskId); -static void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e); - - -void sub_80CA710(struct Sprite* sprite) -{ - sprite->pos1.x += gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = gBattleAnimArgs[3]; - - if (GetBankSide(gBattleAnimBankAttacker)) - { - sprite->data[3] = -gBattleAnimArgs[4]; - } - else - { - sprite->data[3] = gBattleAnimArgs[4]; - } - - sprite->data[4] = gBattleAnimArgs[5]; - sprite->callback = sub_80CA768; -} - -void sub_80CA768(struct Sprite* sprite) -{ - if (sprite->data[0] > 0) - { - sprite->data[0]--; - sprite->pos2.y = sprite->data[2] >> 8; - sprite->data[2] += sprite->data[1]; - sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]); - sprite->data[5] = (sprite->data[5] + sprite->data[4]) & 0xFF; - } - else - { - move_anim_8072740(sprite); - } -} - -void sub_80CA7B0(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[2] = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3); - sprite->callback = sub_8078B34; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); -} - -void sub_80CA800(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - StartSpriteAnim(sprite, gBattleAnimArgs[3]); - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); - sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); - sprite->callback = sub_8078B34; - StoreSpriteCallbackInData(sprite, move_anim_8072740); -} - -void sub_80CA858(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); - obj_translate_based_on_private_1_2_3_4(sprite); - sprite->data[5] = gBattleAnimArgs[3]; - sprite->callback = sub_80CA8B4; - sub_80CA8B4(sprite); -} - -void sub_80CA8B4(struct Sprite* sprite) -{ - if (sub_8078B5C(sprite)) - { - DestroySprite(sprite); - } - else - { - if (sprite->data[5] > 0x7F) - { - sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) + 1; - } - else - { - sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) + 6; - } - sprite->pos2.x += Sin(sprite->data[5], 5); - sprite->pos2.y += Cos(sprite->data[5], 14); - sprite->data[5] = (sprite->data[5] + 15) & 0xFF; - } -} - -void sub_80CA928(u8 taskId) -{ - gTasks[taskId].data[0]--; - if (gTasks[taskId].data[0] == -1) - { - gTasks[taskId].data[1]++; - gTasks[taskId].data[0] = 6; - gBattleAnimArgs[0] = 15; - gBattleAnimArgs[1] = 0; - gBattleAnimArgs[2] = 80; - gBattleAnimArgs[3] = 0; - CreateSpriteAndAnimate(&gSpriteTemplate_83D631C, 0, 0, sub_8079E90(gBattleAnimBankTarget) + 1); - } - - if (gTasks[taskId].data[1] == 15) - DestroyAnimVisualTask(taskId); -} - -void sub_80CA9A8(struct Sprite* sprite) -{ - sub_8078764(sprite, 1); - sprite->data[0] = gBattleAnimArgs[3]; - sprite->data[2] = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3); - sprite->data[5] = gBattleAnimArgs[2]; - sub_80786EC(sprite); - sprite->callback = sub_80CA9F8; -} - -void sub_80CA9F8(struct Sprite* sprite) -{ - if (sub_8078718(sprite)) - move_anim_8072740(sprite); -} - -void sub_80CAA14(struct Sprite* sprite) -{ - u16 a = Random(); - u16 b; - - StartSpriteAnim(sprite, a & 7); - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); - if (GetBankSide(gBattleAnimBankAttacker)) - { - sprite->pos1.x -= 20; - } - else - { - sprite->pos1.x += 20; - } - - b = Random(); - sprite->data[0] = (b & 31) + 64; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); - sub_8078D60(sprite); - sprite->data[5] = Random() & 0xFF; - sprite->data[6] = sprite->subpriority; - sprite->callback = sub_80CAACC; - sub_80CAACC(sprite); -} - -void sub_80CAACC(struct Sprite* sprite) -{ - if (sub_8078CE8(sprite)) - { - move_anim_8072740(sprite); - } - else - { - sprite->pos2.y += Cos(sprite->data[5], 12); - if (sprite->data[5] <= 0x7E) - { - sprite->subpriority = sprite->data[6]; - } - else - { - sprite->subpriority = sprite->data[6] + 1; - } - - sprite->data[5] = (sprite->data[5] + 24) & 0xFF; - } -} - -void sub_80CAB18(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - if (GetBankSide(gBattleAnimBankAttacker)) - { - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - } - - sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[2]; - sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[3]; - sprite->data[5] = gBattleAnimArgs[5]; - sub_80786EC(sprite); - sprite->callback = sub_80CAB88; -} - -void sub_80CAB88(struct Sprite* sprite) -{ - if (sub_8078718(sprite)) - { - sprite->invisible = 1; - sprite->data[0] = 10; - sprite->callback = sub_80782D8; - StoreSpriteCallbackInData(sprite, sub_80CABC0); - } -} - -void sub_80CABC0(struct Sprite* sprite) -{ - sprite->invisible = 0; - StartSpriteAnim(sprite, 1); - sprite->data[0] = 60; - sprite->callback = sub_80782D8; - StoreSpriteCallbackInData(sprite, move_anim_8072740); -} - -void sub_80CABF8(struct Sprite* sprite) -{ - sub_8078764(sprite, 1); - StartSpriteAnim(sprite, gBattleAnimArgs[4]); - if (gBattleAnimArgs[4] == 1) - { - sprite->oam.objMode = 1; - } - - sprite->data[0] = gBattleAnimArgs[3]; - sprite->data[1] = gBattleAnimArgs[2]; - sprite->callback = sub_80CAC44; - sub_80CAC44(sprite); -} - -void sub_80CAC44(struct Sprite* sprite) -{ - u8 var1; - - sprite->pos2.x = Sin(sprite->data[1], 32); - sprite->pos2.y = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8); - if ((u16)(sprite->data[1] - 0x40) < 0x80) - { - sprite->oam.priority = (sub_8079ED4(gBattleAnimBankTarget) & 3); - } - else - { - var1 = sub_8079ED4(gBattleAnimBankTarget) + 1; - if (var1 > 3) - { - var1 = 3; - } - - sprite->oam.priority = var1; - } - - sprite->data[1] = (sprite->data[1] + 2) & 0xFF; - sprite->data[0]--; - if (sprite->data[0] == -1) - move_anim_8072740(sprite); -} - -void sub_80CACEC(u8 taskId) -{ - if (NotInBattle() || !IsDoubleBattle()) - { - DestroyAnimVisualTask(taskId); - } - else - { - if (GetBankIdentity_permutated(gBattleAnimBankTarget) == 1) - { - REG_BG2CNT_BITFIELD.priority = 3; - } - else - { - REG_BG1CNT_BITFIELD.priority = 1; - } - - DestroyAnimVisualTask(taskId); - } -} - -void sub_80CAD54(struct Sprite* sprite) -{ - sub_80787B0(sprite, 0); - sprite->data[0] = gBattleAnimArgs[3]; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = sprite->pos1.x; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; - obj_translate_based_on_private_1_2_3_4(sprite); - sprite->data[5] = 0x40; - sprite->callback = sub_80CADA8; - sub_80CADA8(sprite); -} - -void sub_80CADA8(struct Sprite* sprite) -{ - if (!sub_8078B5C(sprite)) - { - sprite->pos2.x += Sin(sprite->data[5], 32); - sprite->pos2.y += Cos(sprite->data[5], -5); - if ((u16)(sprite->data[5] - 0x40) < 0x80) - { - sprite->subpriority = sub_8079E90(gBattleAnimBankAttacker) - 1; - } - else - { - sprite->subpriority = sub_8079E90(gBattleAnimBankAttacker) + 1; - } - - sprite->data[5] = (sprite->data[5] + 5) & 0xFF; - } - else - { - move_anim_8072740(sprite); - } -} - -void sub_80CAE20(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - sprite->data[0] = gBattleAnimArgs[3]; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = sprite->pos1.x; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; - obj_translate_based_on_private_1_2_3_4(sprite); - sprite->data[5] = 0x40; - sprite->callback = sub_80CAE74; - sub_80CAE74(sprite); -} - -void sub_80CAE74(struct Sprite* sprite) -{ - if (!sub_8078B5C(sprite)) - { - sprite->pos2.x += Sin(sprite->data[5], 8); - if ((u16)(sprite->data[5] - 0x3B) < 5 || (u16)(sprite->data[5] - 0xBB) < 5) - { - sprite->oam.matrixNum ^= 8; - } - - sprite->data[5] = (sprite->data[5] + 5) & 0xFF; - } - else - { - move_anim_8072740(sprite); - } -} - -void sub_80CAED8(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); - sprite->data[0] = gBattleAnimArgs[0]; - sprite->data[1] = gBattleAnimArgs[1]; - sprite->data[2] = gBattleAnimArgs[2]; - sprite->callback = sub_80CAF20; -} - -void sub_80CAF20(struct Sprite* sprite) -{ - if (!sprite->data[2]) - { - if (sprite->data[1] & 1) - { - sprite->data[0] = 0x80; - sprite->data[1] = 0; - sprite->data[2] = 0; - } - else - { - sprite->data[0] = sprite->data[1] & 1; - sprite->data[1] = sprite->data[1] & 1; - sprite->data[2] = sprite->data[1] & 1; - } - sprite->callback = sub_80CAF6C; - } - else - { - sprite->data[2]--; - sprite->pos1.x += sprite->data[0]; - sprite->pos1.y += sprite->data[1]; - } -} - -void sub_80CAF6C(struct Sprite* sprite) -{ - if (GetBankSide(gBattleAnimBankAttacker)) - { - sprite->pos2.x = -Sin(sprite->data[0], 0x19); - } - else - { - sprite->pos2.x = Sin(sprite->data[0], 0x19); - } - - sprite->data[0] = (sprite->data[0] + 2) & 0xFF; - sprite->data[1]++; - if (!(sprite->data[1] & 1)) - { - sprite->pos2.y++; - } - - if (sprite->data[1] > 0x50) - { - move_anim_8072740(sprite); - } -} - -void sub_80CAFD0(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - if (GetBankSide(gBattleAnimBankAttacker)) - { - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - } - - sprite->data[0] = gBattleAnimArgs[4]; - if (!(gBattleAnimArgs[6])) - { - sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; - sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; - } - else - { - sub_807A3FC(gBattleAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); - sprite->data[2] += gBattleAnimArgs[2]; - sprite->data[4] += gBattleAnimArgs[3]; - } - - sprite->data[5] = gBattleAnimArgs[5]; - sub_80786EC(sprite); - if (GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget)) - { - sprite->data[0] = 1; - } - else - { - sprite->data[0] = 0; - } - - sprite->callback = sub_80CB09C; -} - -void sub_80CB09C(struct Sprite* sprite) -{ - bool8 c = FALSE; - s16 a = sprite->data[0]; - s16 b = sprite->data[7]; - s16 r0; - - sprite->data[0] = 1; - sub_8078718(sprite); - r0 = sprite->data[7]; - sprite->data[0] = a; - if (b > 0xC8 && r0 <= 0x37 && sprite->oam.affineParam == 0) - sprite->oam.affineParam++; - - if (sprite->oam.affineParam != 0 && sprite->data[0] != 0) - { - sprite->invisible ^= 1; - sprite->oam.affineParam++; - if (sprite->oam.affineParam == 0x1E) - c = TRUE; - } - - if (sprite->pos1.x + sprite->pos2.x > 0x100 - || sprite->pos1.x + sprite->pos2.x < -16 - || sprite->pos1.y + sprite->pos2.y > 0xA0 - || sprite->pos1.y + sprite->pos2.y < -16) - c = TRUE; - - if (c) - move_anim_8072740(sprite); -} - -void sub_80CB144(struct Sprite* sprite) -{ - if (!NotInBattle() && IsDoubleBattle() == TRUE) - { - sub_807A3FC(gBattleAnimBankTarget, 1, &sprite->pos1.x, &sprite->pos1.y); - } - - sprite->pos1.y += 32; - sprite->data[0] = gBattleAnimArgs[0]; - sprite->data[1] = gBattleAnimArgs[1]; - sprite->data[2] = gBattleAnimArgs[2]; - sprite->data[3] = gBattleAnimArgs[3]; - sprite->data[4] = gBattleAnimArgs[4]; - sprite->callback = sub_80CB1A4; -} - -void sub_80CB1A4(struct Sprite* sprite) -{ - if (sprite->data[1] == 0xFF) - { - sprite->pos1.y -= 2; - } - else if (sprite->data[1] > 0) - { - sprite->pos1.y -= 2; - sprite->data[1] -= 2; - } - - sprite->data[5] += sprite->data[2]; - if (sprite->data[0] < sprite->data[4]) - sprite->data[5] += sprite->data[2]; - - sprite->data[5] &= 0xFF; - sprite->pos2.x = Cos(sprite->data[5], sprite->data[3]); - sprite->pos2.y = Sin(sprite->data[5], 5); - if (sprite->data[5] <= 0x7F) - { - sprite->oam.priority = sub_8079ED4(gBattleAnimBankTarget) - 1; - } - else - { - sprite->oam.priority = sub_8079ED4(gBattleAnimBankTarget) + 1; - } - - sprite->data[0]--; - if (!sprite->data[0]) - move_anim_8072740(sprite); -} - -void sub_80CB25C(struct Sprite* sprite) -{ - sub_8078764(sprite, 0); - sprite->affineAnimPaused = 1; - StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); - sprite->data[6] = gBattleAnimArgs[2]; - sprite->data[7] = gBattleAnimArgs[3]; - sprite->callback = sub_80CB298; -} - -void sub_80CB298(struct Sprite* sprite) -{ - if ((u16)gBattleAnimArgs[7] == 0xFFFF) - { - sprite->affineAnimPaused = 0; - GetAnimBankSpriteId(1); - sprite->data[0] = 0x100; - sprite->callback = sub_80CB2D4; - } -} - -void sub_80CB2D4(struct Sprite* sprite) -{ - GetAnimBankSpriteId(1); - if (!sprite->data[2]) - { - sprite->data[0] += 11; - } - else - { - sprite->data[0] -= 11; - } - sprite->data[1]++; - if (sprite->data[1] == 6) - { - sprite->data[1] = 0; - sprite->data[2] ^= 1; - } - - if (sprite->affineAnimEnded) - { - sprite->data[7]--; - if (sprite->data[7] > 0) - { - StartSpriteAffineAnim(sprite, sprite->data[6]); - } - else - { - move_anim_8072740(sprite); - } - } -} - -void sub_80CB340(u8 taskId) -{ - u8 spriteId = GetAnimBankSpriteId(1); - if (gSprites[spriteId].invisible) - { - DestroyAnimVisualTask(taskId); - } - else - { - sub_8078E70(spriteId, 1); - gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[1] = gBattleAnimArgs[1]; - gTasks[taskId].data[11] = 256; - gTasks[taskId].func = sub_80CB3A8; - } -} - -void sub_80CB3A8(u8 taskId) -{ - u8 spriteId = GetAnimBankSpriteId(1); - gTasks[taskId].data[10] += gTasks[taskId].data[0]; - gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8; - if (GetBankSide(gBattleAnimBankTarget)) - { - gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; - } - - gTasks[taskId].data[11] += 16; - obj_id_set_rotscale(spriteId, gTasks[taskId].data[11], gTasks[taskId].data[11], 0); - sub_8079A64(spriteId); - gTasks[taskId].data[1]--; - if (!gTasks[taskId].data[1]) - { - gTasks[taskId].data[0] = 0; - gTasks[taskId].func = sub_80CB438; - } -} - -void sub_80CB438(u8 taskId) -{ - if ((u16)gBattleAnimArgs[7] == 0xFFFF) - { - if (gTasks[taskId].data[0] == 0) - { - u8 spriteId = GetAnimBankSpriteId(1); - sub_8078F40(spriteId); - gSprites[spriteId].pos2.x = 0; - gSprites[spriteId].pos2.y = 0; - gTasks[taskId].data[0]++; - return; - } - } - else - { - if (gTasks[taskId].data[0] == 0) - return; - } - - gTasks[taskId].data[0]++; - if (gTasks[taskId].data[0] == 3) - DestroyAnimVisualTask(taskId); -} - -void sub_80CB4CC(struct Sprite* sprite) -{ - switch (sprite->data[0]) - { - case 0: - { - if (GetBankSide(gBattleAnimBankTarget) == 0) - { - s16 a = gBattleAnimArgs[0]; - gBattleAnimArgs[0] = -a; - } - - sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[0]; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[1]; - sprite->invisible = 1; - sprite->data[0]++; - break; - } - case 1: - { - sprite->invisible = 0; - if (sprite->affineAnimEnded) - { - ChangeSpriteAffineAnim(sprite, 1); - sprite->data[0] = 25; - sprite->data[2] = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3); - sprite->callback = sub_8078CC0; - StoreSpriteCallbackInData(sprite, move_anim_8072740); - break; - } - } - } -} - -void sub_80CB59C(struct Sprite* sprite) -{ - if (!sprite->data[0]) - { - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1); - sprite->pos2.x = gBattleAnimArgs[0]; - sprite->pos2.y = gBattleAnimArgs[1]; - sprite->subpriority = gBattleAnimArgs[2] + 30; - StartSpriteAnim(sprite, gBattleAnimArgs[3]); - sprite->data[2] = gBattleAnimArgs[4]; - sprite->data[0]++; - if ((sprite->pos1.y + sprite->pos2.y) > 120) - { - sprite->pos1.y += -120 + (sprite->pos2.y + sprite->pos1.y); - } - } - sprite->callback = sub_80CB710; -} - -void sub_80CB620(struct Sprite *sprite) -{ - s16 p1 = sub_8077ABC(gBattleAnimBankAttacker, 2); - s16 p2 = sub_8077ABC(gBattleAnimBankAttacker, 3); - s16 e1 = sub_8077ABC(gBattleAnimBankTarget, 2); - s16 e2 = sub_8077ABC(gBattleAnimBankTarget, 3); - - e1 -= p1; - e2 -= p2; - sprite->pos1.x = p1 + e1 * gBattleAnimArgs[0] / 100; - sprite->pos1.y = p2 + e2 * gBattleAnimArgs[0] / 100; - sprite->pos2.x = gBattleAnimArgs[1]; - sprite->pos2.y = gBattleAnimArgs[2]; - sprite->subpriority = gBattleAnimArgs[3] + 30; - StartSpriteAnim(sprite, gBattleAnimArgs[4]); - sprite->data[2] = gBattleAnimArgs[5]; - sprite->callback = sub_80CB710; - gUnknown_03000728[0] = sprite->pos1.x; - gUnknown_03000728[1] = sprite->pos1.y; - gUnknown_03000728[2] = e1; - gUnknown_03000728[3] = e2; -} - -void sub_80CB710(struct Sprite* sprite) -{ - if (++sprite->data[0] > (sprite->data[2] - 10)) - sprite->invisible = sprite->data[0] % 2; - - if (sprite->data[0] > sprite->data[2]) - move_anim_8072740(sprite); -} - -void sub_80CB768(struct Sprite* sprite) -{ - if (!sprite->data[0]) - { - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[0]; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[1]; - sprite->data[1] = gBattleAnimArgs[2]; - sprite->data[2] = gBattleAnimArgs[3]; - sprite->data[3] = gBattleAnimArgs[4]; - } - - sprite->data[0]++; - sprite->pos2.x = sprite->data[1] * sprite->data[0]; - sprite->pos2.y = Sin((sprite->data[0] * 20) & 0xFF, sprite->data[2]); - if (sprite->data[0] > sprite->data[3]) - move_anim_8072740(sprite); -} - -void sub_80CB7EC(struct Sprite* sprite, s16 c) -{ - s32 a = (sprite->pos1.x * 256) | sprite->pos1.y; - s32 b = (sprite->data[6] * 256) | sprite->data[7]; - c *= 256; - sprite->data[5] = a; - sprite->data[6] = b; - sprite->data[7] = c; -} - -bool8 sub_80CB814(struct Sprite* sprite) -{ - u16 r10 = (u8)(sprite->data[5] >> 8); - u16 r9 = (u8)sprite->data[5]; - s32 r2 = (u8)(sprite->data[6] >> 8); - s32 r4 = (u8)sprite->data[6]; - s16 r6 = sprite->data[7] >> 8; - s16 r3 = sprite->data[7] & 0xFF; - s16 r4_2; - s16 r0; - s32 var1; - s32 var2; - - if (r2 == 0) - { - r2 = -32; - } - else if (r2 == 255) - { - r2 = 0x110; - } - - r4_2 = r4 - r9; - r0 = r2 - r10; - var1 = r0 * r3 / r6; - var2 = r4_2 * r3 / r6; - sprite->pos1.x = var1 + r10; - sprite->pos1.y = var2 + r9; - if (++r3 == r6) - return TRUE; - - sprite->data[7] = (r6 << 8) | r3; - return FALSE; -} - -void sub_80CB8B8(struct Sprite* sprite) -{ - if (sprite->data[0] == 10) - { - StartSpriteAffineAnim(sprite, 1); - } - - sprite->data[0]++; - if (sprite->data[0] > 50) - { - move_anim_8072740(sprite); - } -} - -void sub_80CB8E8(struct Sprite* sprite) -{ - sprite->data[0] += sprite->data[3] * 128 / sprite->data[4]; - if (sprite->data[0] >= 128) - { - sprite->data[1]++; - sprite->data[0] = 0; - } - - sprite->pos2.y = Sin(sprite->data[0] + 128, 30 - sprite->data[1] * 8); - if (sub_80CB814(sprite)) - { - sprite->pos2.y = 0; - sprite->data[0] = 0; - sprite->callback = sub_80CB8B8; - } -} - -void sub_80CB94C(struct Sprite* sprite) -{ - s16 e1; - s16 e2; - sub_80787B0(sprite, 0); - e1 = sub_8077ABC(gBattleAnimBankTarget, 0); - e2 = sub_8077ABC(gBattleAnimBankTarget, 1); - if ((gBattleAnimBankAttacker ^ 2) == gBattleAnimBankTarget) - { - sprite->data[6] = e1; - sprite->data[7] = e2 + 10; - sub_80CB7EC(sprite, 0x3C); - sprite->data[3] = 1; - } - else - { - sprite->data[6] = e1; - sprite->data[7] = e2 + 10; - sub_80CB7EC(sprite, 0x3C); - sprite->data[3] = 3; - } - - sprite->data[4] = 0x3C; - sprite->callback = sub_80CB8E8; -} - -void sub_80CB9C4(struct Sprite* sprite) -{ - int zero; - sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]); - zero = 0; - if (sprite->data[0] > 0x7F) - { - sprite->data[1]++; - sprite->data[0] = zero; - } - - sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8); - if (sub_80CB814(sprite)) - { - sprite->pos2.y = zero; - sprite->data[0] = zero; - move_anim_8072740(sprite); - } -} - -void sub_80CBA28(struct Sprite* sprite) -{ - s16 e = sub_8077ABC(gBattleAnimBankTarget, 1); - if (GetBankSide(gBattleAnimBankTarget) == 0) - { - sprite->data[6] = 0; - sprite->data[7] = e + 10; - sub_80CB7EC(sprite, 0x28); - sprite->data[3] = 3; - sprite->data[4] = 0x3C; - sprite->callback = sub_80CB8E8; - } - else - { - sprite->data[6] = 255; - sprite->data[7] = e + 10; - if (NotInBattle()) - sprite->data[6] = 0; - - sub_80CB7EC(sprite, 0x28); - sprite->data[3] = 3; - sprite->data[4] = 0x3C; - sprite->callback = sub_80CB9C4; - } -} - -void sub_80CBAA4(struct Sprite* sprite) -{ - if (sprite->data[0] == 0) - { - sub_8078764(sprite, 0); - sprite->data[1] = gBattleAnimArgs[2]; - } - - sprite->data[0]++; - sprite->pos2.y = sprite->data[1] * sprite->data[0]; - if (sprite->animEnded) - { - move_anim_8072740(sprite); - } -} - -void sub_80CBAE8(struct Sprite* sprite) -{ - s16 p1; - s16 p2; - sub_8078764(sprite, 0); - p1 = sub_8077ABC(gBattleAnimBankAttacker, 0); - p2 = sub_8077ABC(gBattleAnimBankAttacker, 1); - if ((gBattleAnimBankTarget ^ 2) == gBattleAnimBankAttacker) - { - sprite->data[6] = p1; - sprite->data[7] = p2 + 10; - sub_80CB7EC(sprite, 0x3c); - sprite->data[3] = 1; - } - else - { - sprite->data[6] = p1; - sprite->data[7] = p2 + 10; - sub_80CB7EC(sprite, 0x3c); - sprite->data[3] = 3; - } - - sprite->data[4] = 0x3C; - sprite->callback = sub_80CBB60; -} - -void sub_80CBB60(struct Sprite* sprite) -{ - int zero; - sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]); - zero = 0; - if (sprite->data[0] > 0x7F) - { - sprite->data[1]++; - sprite->data[0] = zero; - } - - sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8); - if (sprite->pos2.y == 0) - { - PlaySE12WithPanning(0x7D, sub_8076F98(0x3F)); - } - - if (sub_80CB814(sprite)) - { - sprite->pos2.y = 0; - sprite->data[0] = 0; - sprite->callback = sub_80CB8B8; - PlaySE12WithPanning(0x7D, sub_8076F98(-0x40)); - } -} - -void sub_80CBBF0(struct Sprite* sprite) -{ - int a; - int b; - - if (sprite->data[0] == 0) - { - if (!NotInBattle()) - { - sprite->data[1] = gBattleAnimArgs[1]; - sprite->pos1.x = 0x78; - } - else - { - a = gBattleAnimArgs[1] - 32; - if (a < 0) - b = gBattleAnimArgs[1] + 0xDF; - else - b = a; - - sprite->data[1] = a - ((b >> 8) << 8); - sprite->pos1.x = 0x46; - } - - sprite->pos1.y = gBattleAnimArgs[0]; - sprite->data[2] = gBattleAnimArgs[0]; - sprite->data[4] = 20; - sprite->pos2.x = Cos(sprite->data[1], 0x3C); - sprite->pos2.y = Sin(sprite->data[1], 20); - sprite->callback = sub_80CBC8C; - if (sprite->data[1] > 0 && sprite->data[1] < 0xC0) - sprite->subpriority = 31; - else - sprite->subpriority = 29; - } -} - -void sub_80CBC8C(struct Sprite* sprite) -{ - switch (sprite->data[3]) - { - case 0: - if (sprite->data[2] > 0x4E) - { - sprite->data[3] = 1; - StartSpriteAffineAnim(sprite, 1); - break; - } - else - { - sprite->data[2] += sprite->data[4] / 10; - sprite->data[4] += 3; - sprite->pos1.y = sprite->data[2]; - break; - } - break; - case 1: - if (sprite->data[3] && sprite->affineAnimEnded) - { - sprite->data[0] = 0; - sprite->data[2] = 0; - sprite->callback = sub_80CBCF8; - } - break; - } -} - - - -void sub_80CBCF8(struct Sprite* sprite) -{ - if (sprite->data[2] == gUnknown_083D680C[sprite->data[0]][1]) - { - if (gUnknown_083D680C[sprite->data[0]][2] == 0x7F) - { - sprite->data[0] = 0; - sprite->callback = sub_80CBDB0; - } - - sprite->data[2] = 0; - sprite->data[0]++; - } - else - { - sprite->data[2]++; - sprite->data[1] = (gUnknown_083D680C[sprite->data[0]][0] * gUnknown_083D680C[sprite->data[0]][2] + sprite->data[1]) & 0xFF; - if (!NotInBattle()) - { - if ((u16)(sprite->data[1] - 1) <= 0xBE) - { - sprite->subpriority = 31; - } - else - { - sprite->subpriority = 29; - } - } - - sprite->pos2.x = Cos(sprite->data[1], 0x3C); - sprite->pos2.y = Sin(sprite->data[1], 20); - } -} - -void sub_80CBDB0(struct Sprite* sprite) -{ - if (sprite->data[0] > 20) - move_anim_8072740(sprite); - - sprite->invisible = sprite->data[0] % 2; - sprite->data[0]++; -} - -void sub_80CBDF4(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - - task->data[4] = sub_8079E90(gBattleAnimBankTarget) - 1; - task->data[6] = sub_8077ABC(gBattleAnimBankTarget, 2); - task->data[7] = sub_8077ABC(gBattleAnimBankTarget, 3); - task->data[10] = sub_807A100(gBattleAnimBankTarget, 1); - task->data[11] = sub_807A100(gBattleAnimBankTarget, 0); - task->data[5] = (GetBankSide(gBattleAnimBankTarget) == 1) ? 1 : -1; - task->data[9] = 0x38 - (task->data[5] * 64); - task->data[8] = task->data[7] - task->data[9] + task->data[6]; - task->data[2] = CreateSprite(&gSpriteTemplate_83D6884, task->data[8], task->data[9], task->data[4]); - if (task->data[2] == 0x40) - DestroyAnimVisualTask(taskId); - - gSprites[task->data[2]].data[0] = 10; - gSprites[task->data[2]].data[1] = task->data[8]; - gSprites[task->data[2]].data[2] = task->data[6] - (task->data[10] / 2 + 10) * task->data[5]; - gSprites[task->data[2]].data[3] = task->data[9]; - gSprites[task->data[2]].data[4] = task->data[7] + (task->data[11] / 2 + 10) * task->data[5]; - gSprites[task->data[2]].data[5] = sub_80CC338(&gSprites[task->data[2]]); - sub_80786EC(&gSprites[task->data[2]]); - task->func = sub_80CBF5C; -} - -void sub_80CBF5C(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - struct Sprite* sprite = &gSprites[task->data[2]]; - int a = task->data[0]; - switch (a) - { - case 4: - sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) - { - break; - } - else - { - task->data[15] = 5; - task->data[0] = 0xFF; - } - break; - case 8: - sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) - { - break; - } - else - { - task->data[15] = 9; - task->data[0] = 0xFF; - } - break; - case 0: - sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) - break; - - task->data[15] = 1; - task->data[0] = 0xFF; - break; - case 1: - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data[0] = 10; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = task->data[6]; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = task->data[7]; - sprite->data[5] = sub_80CC338(sprite); - task->data[4] += 2; - task->data[3] = a; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - case 2: - sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) - break; - - task->data[15] = 3; - task->data[0] = 0xFF; - break; - case 3: - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data[0] = 10; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5]; - sprite->data[5] = sub_80CC338(sprite); - task->data[3] = 2; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - case 5: - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data[0] = 10; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5]; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; - sprite->data[5] = sub_80CC338(sprite); - task->data[4] -= 2; - task->data[3] = 3; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - case 6: - sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) - break; - - task->data[15] = 7; - task->data[0] = 0xFF; - break; - case 7: - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data[0] = 10; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = task->data[6]; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = task->data[7]; - sprite->data[5] = sub_80CC338(sprite); - task->data[4] += 2; - task->data[3] = 4; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - case 9: - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data[0] = 10; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; - sprite->data[5] = sub_80CC338(sprite); - task->data[3] = 5; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - case 10: - sub_80CC358(task, taskId); - if (sub_8078718(sprite) == 0) - { - break; - } - else - { - task->data[15] = 11; - task->data[0] = 0xFF; - } - break; - case 11: - { - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data[0] = 10; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = task->data[8]; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = task->data[9]; - sprite->data[5] = sub_80CC338(sprite); - task->data[4] -= 2; - task->data[3] = 6; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - } - case 12: - sub_80CC358(task, taskId); - if (sub_8078718(sprite) != 0) - { - DestroySprite(sprite); - task->data[0]++; - } - break; - case 13: - if (task->data[12] == 0) - { - DestroyAnimVisualTask(taskId); - } - break; - case 255: - task->data[1]++; - if (task->data[1] > 5) - { - task->data[1] = 0; - task->data[0] = task->data[15]; - } - break; - } -} - -s16 sub_80CC338(struct Sprite* sprite) -{ - s16 var = 8; - if (sprite->data[4] < sprite->pos1.y) - var = -var; - - return var; -} - -void sub_80CC358(struct Task* task, u8 taskId) -{ - task->data[14]++; - if (task->data[14] > 0) - { - u8 spriteId; - s16 spriteX; - s16 spriteY; - task->data[14] = 0; - spriteX = gSprites[task->data[2]].pos1.x + gSprites[task->data[2]].pos2.x; - spriteY = gSprites[task->data[2]].pos1.y + gSprites[task->data[2]].pos2.y; - spriteId = CreateSprite(&gSpriteTemplate_83D6884, spriteX, spriteY, task->data[4]); - if (spriteId != 0x40) - { - gSprites[spriteId].data[6] = taskId; - gSprites[spriteId].data[7] = 12; - gTasks[taskId].data[12]++; - gSprites[spriteId].data[0] = task->data[13] & 1; - gTasks[taskId].data[13]++; - StartSpriteAnim(&gSprites[spriteId], task->data[3]); - gSprites[spriteId].subpriority = task->data[4]; - gSprites[spriteId].callback = sub_80CC408; - } - } -} - -void sub_80CC408(struct Sprite* sprite) -{ - sprite->data[0]++; - if (sprite->data[0] > 1) - { - sprite->data[0] = 0; - sprite->invisible ^= 1; - sprite->data[1]++; - if (sprite->data[1] > 8) - { - gTasks[sprite->data[6]].data[sprite->data[7]]--; - DestroySprite(sprite); - } - } -} - -void sub_80CC474(struct Sprite* sprite) -{ - u8 bank; - if (!gBattleAnimArgs[6]) - bank = gBattleAnimBankAttacker; - else - bank = gBattleAnimBankTarget; - - if (GetBankSide(bank) != 0) - { - sprite->data[4] = 0; - sprite->data[2] = gBattleAnimArgs[3]; - sprite->pos1.x = 0xFFF0; - } - else - { - sprite->data[4] = 1; - sprite->data[2] = -gBattleAnimArgs[3]; - sprite->pos1.x = 0x100; - } - - sprite->data[1] = gBattleAnimArgs[1]; - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[3] = gBattleAnimArgs[4]; - switch (gBattleAnimArgs[5]) - { - case 0: - sprite->pos1.y = gBattleAnimArgs[0]; - sprite->oam.priority = sub_8079ED4(bank); - break; - case 1: - sprite->pos1.y = gBattleAnimArgs[0]; - sprite->oam.priority = sub_8079ED4(bank) + 1; - break; - case 2: - sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[0]; - sprite->oam.priority = sub_8079ED4(bank); - break; - case 3: - sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[0]; - GetAnimBankSpriteId(1); - sprite->oam.priority = sub_8079ED4(bank) + 1; - break; - } - - sprite->callback = sub_80CC580; -} - -void sub_80CC580(struct Sprite* sprite) -{ - int a = sprite->data[7]; - sprite->data[7]++; - sprite->pos2.y = (sprite->data[1] * gSineTable[sprite->data[0]]) >> 8; - sprite->pos2.x = sprite->data[2] * a; - sprite->data[0] = (sprite->data[3] * a) & 0xFF; - if (sprite->data[4] == 0) - { - if (sprite->pos2.x + sprite->pos1.x <= 0xF7) - return; - } - else - { - if (sprite->pos2.x + sprite->pos1.x > -16) - return; - } - - move_anim_8074EE0(sprite); -} - -void sub_80CC5F8(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - switch (task->data[0]) - { - case 0: - task->data[8] = IndexOfSpritePaletteTag(0x274f) * 16 + 256; - task->data[12] = IndexOfSpritePaletteTag(0x27b0) * 16 + 256; - task->data[0]++; - break; - case 1: - task->data[9]++; - if (task->data[9] >= 0) - { - task->data[9] = 0; - BlendPalette(task->data[8], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]); - BlendPalette(task->data[12], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]); - task->data[10]++; - if (task->data[10] == 17) - { - task->data[10] = 0; - task->data[11]++; - if (task->data[11] == 7) - task->data[11] = 0; - } - } - break; - } - - if (gBattleAnimArgs[7] == -1) - DestroyAnimVisualTask(taskId); -} - -void sub_80CC6CC(struct Sprite* sprite) -{ - u8 a; - u8 b; - u16 c; - u16 x; - u16 y; - - if (gBattleAnimArgs[4] == 0) - { - move_anim_8072740(sprite); - } - else - { - if (gBattleAnimArgs[0] == 0) - { - a = sub_8077ABC(gBattleAnimBankAttacker, 2); - b = sub_8077ABC(gBattleAnimBankAttacker, 3); - } - else - { - a = sub_8077ABC(gBattleAnimBankTarget, 2); - b = sub_8077ABC(gBattleAnimBankTarget, 3); - } - - sprite->data[0] = gBattleAnimArgs[4]; - if (gBattleAnimArgs[1] == 0) - { - sprite->pos1.x = gBattleAnimArgs[2] + a; - sprite->pos1.y = gBattleAnimArgs[3] + b; - sprite->data[5] = a; - sprite->data[6] = b; - } - else - { - sprite->pos1.x = a; - sprite->pos1.y = b; - sprite->data[5] = gBattleAnimArgs[2] + a; - sprite->data[6] = gBattleAnimArgs[3] + b; - } - - x = sprite->pos1.x; - sprite->data[1] = x * 16; - y = sprite->pos1.y; - sprite->data[2] = y * 16; - sprite->data[3] = (sprite->data[5] - sprite->pos1.x) * 16 / gBattleAnimArgs[4]; - sprite->data[4] = (sprite->data[6] - sprite->pos1.y) * 16 / gBattleAnimArgs[4]; - c = sub_80790F0(sprite->data[5] - x, sprite->data[6] - y); - if (NotInBattle()) - c -= 0x8000; - - sub_8078FDC(sprite, 0, 0x100, 0x100, c); - sprite->callback = sub_80CC7D4; - } -} - -void sub_80CC7D4(struct Sprite* sprite) -{ - if (sprite->data[0]) - { - sprite->data[1] += sprite->data[3]; - sprite->data[2] += sprite->data[4]; - sprite->pos1.x = sprite->data[1] >> 4 ; - sprite->pos1.y = sprite->data[2] >> 4 ; - sprite->data[0]--; - } - else - { - move_anim_8074EE0(sprite); - } -} - -void sub_80CC810(struct Sprite* sprite) -{ - if (sprite->animEnded) - move_anim_8072740(sprite); -} - -void sub_80CC82C(struct Sprite* sprite) -{ - if (GetBankSide(gBattleAnimBankAttacker) != 0) - { - sprite->pos1.x -= gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - } - else - { - sprite->pos1.x += gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - } - - sprite->callback = sub_8078600; - StoreSpriteCallbackInData(sprite, move_anim_8072740); -} - -void sub_80CC884(struct Sprite* sprite) -{ - if (GetBankSide(gBattleAnimBankAttacker) == 0) - StartSpriteAnim(sprite, 1); - - sprite->callback = sub_80CC810; - sub_807867C(sprite, gBattleAnimArgs[0]); - sprite->pos1.y += gBattleAnimArgs[1]; -} - -void sub_80CC8C8(struct Sprite* sprite) -{ - sprite->pos1.x += gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = gBattleAnimArgs[3]; - sprite->data[3] = gBattleAnimArgs[4]; - sprite->data[5] = gBattleAnimArgs[5]; - StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]); - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); - sprite->callback = sub_8078504; -} - -void sub_80CC914(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0); - sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1); - if (GetBankSide(gBattleAnimBankTarget) == 0) - sprite->pos1.y += 8; - - sprite->callback = sub_80CCB00; - if (gBattleAnimArgs[2] == 0) - { - sprite->pos1.x += gBattleAnimArgs[0]; - } - else - { - sprite->pos1.x -= gBattleAnimArgs[0]; - sprite->hFlip = 1; - } - - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data[1] -= 0x400; - sprite->data[2] += 0x400; - sprite->data[5] = gBattleAnimArgs[2]; - if (sprite->data[5] == 1) - sprite->data[1] = -sprite->data[1]; -} - -void sub_80CC9BC(struct Sprite* sprite) -{ - u8 a; - u8 b; - switch (gBattleAnimArgs[3]) - { - case 1: - a = sub_8077ABC(gBattleAnimBankTarget ^ 2, 0); - b = sub_8077ABC(gBattleAnimBankTarget ^ 2, 1); - break; - case 2: - a = sub_8077ABC(gBattleAnimBankTarget, 0); - b = sub_8077ABC(gBattleAnimBankTarget, 1); - if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) - { - a = (sub_8077ABC(gBattleAnimBankTarget ^ 2, 0) + a) / 2; - b = (sub_8077ABC(gBattleAnimBankTarget ^ 2, 1) + b) / 2; - } - break; - case 0: - default: - a = sub_8077ABC(gBattleAnimBankTarget, 0); - b = sub_8077ABC(gBattleAnimBankTarget, 1); - break; - } - - sprite->pos1.x = a; - sprite->pos1.y = b; - if (GetBankSide(gBattleAnimBankTarget) == 0) - sprite->pos1.y += 8; - - sprite->callback = sub_80CCB00; - if (gBattleAnimArgs[2] == 0) - { - sprite->pos1.x += gBattleAnimArgs[0]; - } - else - { - sprite->pos1.x -= gBattleAnimArgs[0]; - sprite->hFlip = 1; - } - - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data[1] -= 0x400; - sprite->data[2] += 0x400; - sprite->data[5] = gBattleAnimArgs[2]; - if (sprite->data[5] == 1) - sprite->data[1] = -sprite->data[1]; -} - -void sub_80CCB00(struct Sprite* sprite) -{ - sprite->data[3] += sprite->data[1]; - sprite->data[4] += sprite->data[2]; - if (sprite->data[5] == 0) - sprite->data[1] += 0x18; - else - sprite->data[1] -= 0x18; - - sprite->data[2] -= 0x18; - sprite->pos2.x = sprite->data[3] >> 8; - sprite->pos2.y = sprite->data[4] >> 8; - sprite->data[0]++; - if (sprite->data[0] == 20) - { - StoreSpriteCallbackInData(sprite, move_anim_8072740); - sprite->data[0] = 3; - sprite->callback = sub_80782D8; - } -} - -void unref_sub_80CCB6C(struct Sprite* sprite) -{ - if (sprite->data[2] > 1) - { - if (sprite->data[3] & 1) - { - sprite->invisible = 0; - gSprites[sprite->data[0]].invisible = 0; - gSprites[sprite->data[1]].invisible = 0; - } - else - { - sprite->invisible = 1; - gSprites[sprite->data[0]].invisible = 1; - gSprites[sprite->data[1]].invisible = 1; - } - - sprite->data[2] = 0; - sprite->data[3]++; - } - else - { - sprite->data[2]++; - } - - if (sprite->data[3] == 10) - { - DestroySprite(&gSprites[sprite->data[0]]); - DestroySprite(&gSprites[sprite->data[1]]); - move_anim_8072740(sprite); - } -} - -void sub_80CCC50(struct Sprite* sprite) -{ - sprite->data[0] = gBattleAnimArgs[2]; - if (GetBankSide(gBattleAnimBankAttacker) != 0) - sprite->pos1.x -= gBattleAnimArgs[0]; - else - sprite->pos1.x += gBattleAnimArgs[0]; - - StartSpriteAnim(sprite, gBattleAnimArgs[5]); - sprite->data[1] = -gBattleAnimArgs[3]; - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data[3] = gBattleAnimArgs[4]; - sprite->callback = sub_80CCCB4; - sub_80CCCB4(sprite); -} - -void sub_80CCCB4(struct Sprite* sprite) -{ - sprite->pos2.x = Cos(sprite->data[0], 100); - sprite->pos2.y = Sin(sprite->data[0], 20); - if (sprite->data[0] <= 0x7F) - sprite->subpriority = 0; - else - sprite->subpriority = 14; - - sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF; - sprite->data[5] += 0x82; - sprite->pos2.y += sprite->data[5] >> 8; - sprite->data[2]++; - if (sprite->data[2] == sprite->data[3]) - move_anim_8072740(sprite); -} - -void sub_80CCD24(struct Sprite* sprite) -{ - if (NotInBattle() != 0) - { - gBattleAnimArgs[1] += 8; - } - - sprite->pos1.x = sub_8077EE4(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[0]; - sprite->pos1.y = sub_8077EE4(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[1]; - if (GetBankSide(gBattleAnimBankAttacker) == 0 || NotInBattle()) - sprite->oam.priority = sub_8079ED4(gBattleAnimBankAttacker) + 1; - else - sprite->oam.priority = sub_8079ED4(gBattleAnimBankAttacker); - - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[2] = (IndexOfSpritePaletteTag(0x2828) << 4) + 0x100; - sprite->data[7] = 16; - REG_BLDCNT = 0x3F40; - REG_BLDALPHA = (sprite->data[7] << 8) | (16 - sprite->data[7]); - sprite->callback = sub_80CCE0C; -} - -void sub_80CCE0C(struct Sprite* sprite) -{ - int a; - int i; - sprite->data[5] += 0x60; - sprite->pos2.x = -(sprite->data[5] >> 8); - sprite->data[1]++; - if (sprite->data[1] > 1) - { - sprite->data[1] = 0; - a = gPlttBufferFaded[sprite->data[2] + 1]; - i = 0; - do - { - gPlttBufferFaded[sprite->data[2] + ++i] = gPlttBufferFaded[sprite->data[2] + i + 1]; - } while ( i <= 5 ); - - gPlttBufferFaded[sprite->data[2] + 7] = a; - } - - if (sprite->data[7] > 6 && sprite->data[0] >0 && ++sprite->data[6] > 1) - { - sprite->data[6] = 0; - sprite->data[7] -= 1; - REG_BLDALPHA = (sprite->data[7] << 8) | (16 - sprite->data[7]);; - } - - if (sprite->data[0] >0) - { - sprite->data[0] -= 1; - } - else if (++sprite->data[6] > 1) - { - sprite->data[6] = 0; - sprite->data[7]++; - REG_BLDALPHA = (sprite->data[7] << 8) | (16 - sprite->data[7]); - if (sprite->data[7] == 16) - { - sprite->invisible = 1; - sprite->callback = sub_807861C; - } - } -} - -void sub_80CCF04(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + 0xFFE8; - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->data[2] = 0; - sprite->data[3] = 0; - sprite->data[4] = 0; - sprite->data[6] = 0; - sprite->data[7] = 16; - REG_BLDCNT = 0x3F40; - REG_BLDALPHA = (sprite->data[7] << 8) | sprite->data[6]; - sprite->callback = sub_80CCF70; -} - -void sub_80CCF70(struct Sprite* sprite) -{ - switch (sprite->data[0]) - { - case 0: - if (++sprite->data[2] > 0) - { - sprite->data[2] = 0; - if (((++sprite->data[1]) & 1) != 0) - { - if (sprite->data[6] <= 15) - sprite->data[6]++; - } - else if (sprite->data[7] > 0) - sprite->data[7]--; - - REG_BLDALPHA = (sprite->data[7] << 8) | sprite->data[6]; - if (sprite->data[6] == 16 && sprite->data[7] == 0) - { - sprite->data[1] = 0; - sprite->data[0]++; - } - } - break; - case 1: - if (++sprite->data[1] > 8) - { - sprite->data[1] = 0; - StartSpriteAffineAnim(sprite, 1); - sprite->data[0]++; - } - break; - case 2: - sub_80CD0CC(sprite, 16, 4); - if (++sprite->data[1] > 2) - { - sprite->data[1] = 0; - sprite->pos1.y++; - } - - if (++sprite->data[2] <= 29) - break; - - if (sprite->data[2] & 1) - { - if (sprite->data[6] > 0) - sprite->data[6]--; - } - else if (sprite->data[7] <= 15) - { - sprite->data[7]++; - } - - REG_BLDALPHA = (sprite->data[7] << 8) | sprite->data[6]; - if (sprite->data[6] == 0 && sprite->data[7] == 16) - { - sprite->data[1] = 0; - sprite->data[2] = 0; - sprite->data[0]++; - } - break; - case 3: - sprite->invisible = 1; - sprite->data[0]++; - break; - case 4: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - move_anim_8072740(sprite); - break; - } -} - -void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2) -{ - if (sprite->data[3] <= 11) - sprite->data[4] += 2; - - if ((u16)(sprite->data[3] - 0x12) <= 0x17) - sprite->data[4] -= 2; - - if ((sprite->data[3]) > 0x2F) - sprite->data[4] += 2; - - sprite->pos2.x = sprite->data[4] / 9; - sprite->pos2.y = sprite->data[4] / 14; - if (sprite->pos2.y < 0) - sprite->pos2.y *= -1; - - sprite->data[3]++; - if (sprite->data[3] > 0x3B) - sprite->data[3] = 0; -} - -void sub_80CD140(struct Sprite* sprite) -{ - if (!gBattleAnimArgs[2]) - sub_8078650(sprite); - - sub_807867C(sprite, gBattleAnimArgs[0]); - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data[0] = gBattleAnimArgs[5]; - sprite->data[1] = gBattleAnimArgs[3]; - sprite->data[2] = gBattleAnimArgs[4]; - StoreSpriteCallbackInData(sprite, move_anim_8072740); - sprite->callback = sub_8078394; -} - -void sub_80CD190(struct Sprite* sprite) -{ - u8 bank; - if (!gBattleAnimArgs[2]) - bank = gBattleAnimBankAttacker; - else - bank = gBattleAnimBankTarget; - - if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2)) - { - sub_807A3FC(bank, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y); - sub_807867C(sprite, gBattleAnimArgs[0]); - sprite->pos1.y += gBattleAnimArgs[1]; - } - else - { - if (!gBattleAnimArgs[6]) - { - sprite->pos1.x = sub_8077ABC(bank, 0); - sprite->pos1.y = sub_8077ABC(bank, 1) + gBattleAnimArgs[1]; - } - else - { - sprite->pos1.x = sub_8077ABC(bank, 2); - sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[1]; - } - - sub_807867C(sprite, gBattleAnimArgs[0]); - } - - sprite->data[0] = gBattleAnimArgs[5]; - sprite->data[1] = gBattleAnimArgs[3]; - sprite->data[2] = gBattleAnimArgs[4]; - StoreSpriteCallbackInData(sprite, move_anim_8072740); - sprite->callback = sub_8078394; -} - -void sub_80CD274(struct Sprite* sprite) -{ - sub_8078650(sprite); - if (GetBankSide(gBattleAnimBankAttacker) == 0) - { - sprite->pos1.x += gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - } - else - { - sprite->pos1.x -= gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - StartSpriteAnim(sprite, 1); - } - - sprite->callback = sub_80CD2D4; -} - -void sub_80CD2D4(struct Sprite* sprite) -{ - if (++sprite->data[0] > 30) - { - sprite->pos2.y = (30 - sprite->data[0]) / 3; - sprite->pos2.x = Sin(sprite->data[1] * 4, 3); - sprite->data[1]++; - } - - if (sprite->animEnded) - move_anim_8072740(sprite); -} - -void sub_80CD328(struct Sprite* sprite) -{ - sub_8078650(sprite); - if (GetBankSide(gBattleAnimBankAttacker) == 0) - { - sprite->pos1.x += gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data[3] = 1; - } - else - { - sprite->pos1.x -= gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data[3] = 0xFFFF; - StartSpriteAffineAnim(sprite, 1); - } - - sprite->callback = sub_80CD394; -} - -void sub_80CD394(struct Sprite* sprite) -{ - sprite->pos2.y = -(sprite->data[0] / 0x28); - sprite->pos2.x = sprite->data[4] / 10; - sprite->data[4] += sprite->data[3] * 2; - sprite->data[0] += sprite->data[1]; - if (++sprite->data[1] > 0x3C) - move_anim_8074EE0(sprite); -} - -void sub_80CD3E0(struct Sprite* sprite) -{ - sprite->pos1.x -= 32; - sprite->pos1.y -= 32; - sprite->data[0] = 20; - sprite->callback = sub_80782D8; - StoreSpriteCallbackInData(sprite, sub_80CD408); -} - -void sub_80CD408(struct Sprite* sprite) -{ - switch (sprite->data[5] & 1) - { - case 0: - sprite->data[0] = 1; - sprite->callback = sub_80782D8; - StoreSpriteCallbackInData(sprite, sub_80CD408); - break; - case 1: - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.y = 0; - sprite->pos2.x = 0; - sprite->data[0] = 8; - sprite->data[2] = sprite->pos1.x + gUnknown_083D6DDC[sprite->data[5] >> 8][0]; - sprite->data[4] = sprite->pos1.y + gUnknown_083D6DDC[sprite->data[5] >> 8][1]; - sprite->callback = sub_8078B34; - StoreSpriteCallbackInData(sprite, sub_80CD4B8); - sprite->data[5] += 0x100; - PlaySE12WithPanning(0xD2, sub_8076F98(0x3F)); - break; - } - - sprite->data[5] ^= 1; -} - -void sub_80CD4B8(struct Sprite* sprite) -{ - if ((sprite->data[5] >> 8) == 4) - { - sprite->data[0] = 10; - sprite->callback = sub_80782D8; - StoreSpriteCallbackInData(sprite, sub_80CD4EC); - } - else - { - sprite->callback = sub_80CD408; - } -} - -void sub_80CD4EC(struct Sprite* sprite) -{ - s16 a; - s16 b; - if (sprite->oam.affineParam == 0) - { - sprite->data[0] = 3; - sprite->data[1] = 0; - sprite->data[2] = 0; - sprite->callback = sub_80782D8; - StoreSpriteCallbackInData(sprite, sub_80CD5A8); - } - else - { - switch (sprite->oam.affineParam) - { - case 1: - a = -8; - b = -8; - break; - case 2: - a = -8; - b = 8; - break; - case 3: - a = 8; - b = -8; - break; - default: - a = 8; - b = 8; - break; - } - - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.y = 0; - sprite->pos2.x = 0; - sprite->data[0] = 6; - sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + a; - sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3) + b; - sprite->callback = sub_8078B34; - StoreSpriteCallbackInData(sprite, sub_80CD654); - } -} - -void sub_80CD5A8(struct Sprite* sprite) -{ - if (sprite->data[2] == 0) - { - if ((sprite->data[1] += 3) > 16) - sprite->data[1] = 16; - } - else if ((sprite->data[1] -= 3) < 0) - { - sprite->data[1] = 0; - } - - BlendPalettes(sub_80791A8(1, 1, 1, 1, 1, 0, 0), sprite->data[1], 0x7FFF); - if (sprite->data[1] == 16) - { - int pal; - sprite->data[2]++; - pal = sprite->oam.paletteNum; - LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4); - PlaySE12WithPanning(0xC0, sub_8076F98(0x3F)); - } - else if (sprite->data[1] == 0) - { - sprite->callback = sub_80CD654; - } -} - -void sub_80CD654(struct Sprite* sprite) -{ - if ((u16)gBattleAnimArgs[7] == 0xFFFF) - { - sprite->data[1] = 0; - sprite->data[0] = 0; - sprite->callback = sub_80CD67C; - } -} - -void sub_80CD67C(struct Sprite* sprite) -{ - if (sprite->data[0] % 3 == 0) - { - sprite->data[1]++; - sprite->invisible ^= 1; - } - - sprite->data[0]++; - if (sprite->data[1] == 8) - move_anim_8072740(sprite); -} - -void sub_80CD6CC(struct Sprite* sprite) -{ - sprite->oam.affineParam = gBattleAnimArgs[0]; - if ((s16)sprite->oam.affineParam == 1) - { - sprite->pos1.x -= 0x18; - sprite->pos1.y -= 0x18; - } - else if ((s16)sprite->oam.affineParam == 2) - { - sprite->pos1.x -= 0x18; - sprite->pos1.y += 0x18; - sprite->oam.matrixNum = 16; - } - else if ((s16)sprite->oam.affineParam == 3) - { - sprite->pos1.x += 0x18; - sprite->pos1.y -= 0x18; - sprite->oam.matrixNum = 8; - } - else - { - sprite->pos1.x += 0x18; - sprite->pos1.y += 0x18; - sprite->oam.matrixNum = 24; - } - - sprite->oam.tileNum = (sprite->oam.tileNum + 16); - sprite->callback = sub_80CD3E0; - sub_80CD3E0(sprite); -} - -void sub_80CD774(struct Sprite* sprite) -{ - sprite->invisible = 1; - sprite->data[0] = 0; - switch (gBattleAnimArgs[0]) - { - case 0: - sprite->callback = sub_80CD7CC; - break; - case 1: - sprite->callback = sub_80CD8A8; - break; - case 2: - sprite->callback = sub_80CD8F8; - break; - default: - sprite->callback = sub_80CD9B8; - break; - } -} - -void sub_80CD7CC(struct Sprite* sprite) -{ - sprite->data[0] = 6; - sprite->data[1] = (GetBankSide(gBattleAnimBankAttacker)) ? 2 : -2; - sprite->data[2] = 0; - sprite->data[3] = gObjectBankIDs[gBattleAnimBankAttacker]; - StoreSpriteCallbackInData(sprite, sub_80CD81C); - sprite->callback = sub_8078458; -} - -void sub_80CD81C(struct Sprite* sprite) -{ - if (sprite->data[0] == 0) - { - sprite->data[3] = gObjectBankIDs[gBattleAnimBankAttacker]; - sub_8078E70(sprite->data[3], 0); - sprite->data[4] = (sprite->data[6] = GetBankSide(gBattleAnimBankAttacker)) ? 0x300 : 0xFFFFFD00; - sprite->data[5] = 0; - } - - sprite->data[5] += sprite->data[4]; - obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]); - sub_8078F9C(sprite->data[3]); - if (++sprite->data[0] > 3) - { - sprite->data[0] = 0; - sprite->callback = sub_80CD9B8; - } -} - -void sub_80CD8A8(struct Sprite* sprite) -{ - sprite->data[0] = 4; - sprite->data[1] = (GetBankSide(gBattleAnimBankAttacker)) ? -3 : 3; - sprite->data[2] = 0; - sprite->data[3] = gObjectBankIDs[gBattleAnimBankAttacker]; - StoreSpriteCallbackInData(sprite, sub_80CD9B8); - sprite->callback = sub_8078458; -} - -void sub_80CD8F8(struct Sprite* sprite) -{ - if (++sprite->data[0] > 8) - { - sprite->data[0] = 0; - sprite->callback = sub_80CD91C; - } -} - -void sub_80CD91C(struct Sprite* sprite) -{ - if (sprite->data[0] == 0) - { - sprite->data[3] = gObjectBankIDs[gBattleAnimBankAttacker]; - sprite->data[6] = GetBankSide(gBattleAnimBankAttacker); - if (GetBankSide(gBattleAnimBankAttacker)) - { - sprite->data[4] = 0xFC00; - sprite->data[5] = 0xC00; - } - else - { - sprite->data[4] = 0x400; - sprite->data[5] = 0xF400; - } - } - - sprite->data[5] += sprite->data[4]; - obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]); - sub_8078F9C(sprite->data[3]); - if (++sprite->data[0] > 2) - { - sub_8078F40(sprite->data[3]); - sprite->callback = sub_80CD9B8; - } -} - -void sub_80CD9B8(struct Sprite* sprite) -{ - move_anim_8072740(sprite); -} - -void sub_80CD9C4(struct Sprite* sprite) -{ - sprite->data[0] = 0; - sprite->callback = sub_80CD9D4; -} - -void sub_80CD9D4(struct Sprite* sprite) -{ - switch (sprite->data[0]) - { - case 0: - sprite->data[1] = 0; - sprite->data[2] = gObjectBankIDs[gBattleAnimBankAttacker]; - sprite->data[3] = GetBankSide(gBattleAnimBankAttacker); - sprite->data[4] = (sprite->data[3] != 0) ? 0x200 : -0x200; - sprite->data[5] = 0; - sub_8078E70(sprite->data[2], 0); - sprite->data[0]++; - case 1: - sprite->data[5] += sprite->data[4]; - obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]); - sub_8078F9C(sprite->data[2]); - if (++sprite->data[1] > 3) - { - sprite->data[1] = 0; - sprite->data[4] *= -1; - sprite->data[0]++; - } - break; - case 2: - sprite->data[5] += sprite->data[4]; - obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]); - sub_8078F9C(sprite->data[2]); - if (++sprite->data[1] > 3) - { - sub_8078F40(sprite->data[2]); - move_anim_8072740(sprite); - } - break; - } -} - -void sub_80CDAC8(u8 taskId) -{ u8 a; - gTasks[taskId].data[0] = gObjectBankIDs[gBattleAnimBankAttacker]; - a = GetBankSide(gBattleAnimBankAttacker); - gTasks[taskId].data[1] = a; - gTasks[taskId].data[2] = 0; - switch (gBattleAnimArgs[0]) - { - default: - DestroyAnimVisualTask(taskId); - break; - case 0: - gTasks[taskId].data[2] = 0; - gTasks[taskId].data[3] = 8; - gTasks[taskId].data[4] = 0; - gTasks[taskId].data[5] = 3; - if (a == 0) - gTasks[taskId].data[5] *= -1; - - gTasks[taskId].func = sub_80CDB60; - break; - case 1: - gTasks[taskId].data[3] = 8; - gTasks[taskId].data[4] = 0x600; - gTasks[taskId].data[5] = 0xC0; - if (a == 0) - { - gTasks[taskId].data[4] = -gTasks[taskId].data[4]; - gTasks[taskId].data[5] = -gTasks[taskId].data[5]; - } - - gTasks[taskId].func = sub_80CDD20; - break; - } -} - -void sub_80CDB60(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - switch (task->data[2]) - { - case 0: - if (task->data[3]) - { - task->data[4] += task->data[5]; - gSprites[task->data[0]].pos2.x = task->data[4]; - task->data[3]--; - } - else - { - task->data[3] = 8; - task->data[4] = 0; - task->data[5] = (task->data[1] == 0) ? -0xC0 : 0xC0; - sub_8078E70(task->data[0], 0); - task->data[2]++; - } - break; - case 1: - if (task->data[3]) - { - task->data[4] += task->data[5]; - obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]); - sub_8078F9C(task->data[0]); - task->data[3]--; - } - else - { - task->data[3] = 8; - task->data[4] = gSprites[task->data[0]].pos2.x; - task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2; - task->data[6] = 1; - task->data[2]++; - } - break; - case 2: - if (task->data[3]) - { - if (task->data[6]) - { - task->data[6]--; - } - else - { - if (task->data[3] & 1) - gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5]; - else - gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5]; - - task->data[6] = 1; - task->data[3]--; - } - } - else - { - gSprites[task->data[0]].pos2.x = task->data[4]; - task->data[3] = 12; - task->data[2]++; - } - break; - case 3: - if (task->data[3]) - { - task->data[3]--; - } - else - { - task->data[3] = 3; - task->data[4] = gSprites[task->data[0]].pos2.x; - task->data[5] = (task->data[1] == 0) ? 8 : -8; - task->data[2]++; - } - break; - case 4: - if (task->data[3]) - { - task->data[4] += task->data[5]; - gSprites[task->data[0]].pos2.x = task->data[4]; - task->data[3]--; - } - else - { - DestroyAnimVisualTask(taskId); - } - break; - } -} - -void sub_80CDD20(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - if (task->data[3]) - { - task->data[4] -= task->data[5]; - obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]); - sub_8078F9C(task->data[0]); - task->data[3]--; - } - else - { - sub_8078F40(task->data[0]); - DestroyAnimVisualTask(taskId); - } -} - -void sub_80CDD74(struct Sprite* sprite) -{ - if (gBattleAnimArgs[0] == 0) - { - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[1]; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; - } - else - { - sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[1]; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[2]; - } - - sprite->data[0] = 0; - sprite->data[1] = 0; - StoreSpriteCallbackInData(sprite, sub_80CDEC0); - sprite->callback = sub_8078600; -} - -void sub_80CDDDC(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + 0xFFD0; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3); - StoreSpriteCallbackInData(sprite, sub_80CDE78); - sprite->callback = sub_8078600; -} - -void sub_80CDE24(struct Sprite* sprite) -{ - sprite->pos1.x = sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + 0xFFD0 + gBattleAnimArgs[0]; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3); - StartSpriteAnim(sprite, 1); - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->callback = sub_80CDEC0; -} - -void sub_80CDE78(struct Sprite* sprite) -{ - if (++sprite->data[0] > 8) - { - sprite->data[0] = 12; - sprite->data[1] = 8; - sprite->data[2] = 0; - StoreSpriteCallbackInData(sprite, sub_80CDEB0); - sprite->callback = sub_8078364; - } -} - -void sub_80CDEB0(struct Sprite* sprite) -{ - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->callback = sub_80CDEC0; -} - -void sub_80CDEC0(struct Sprite* sprite) -{ - if (++sprite->data[0] > 1) - { - sprite->data[0] = 0; - sprite->invisible = !sprite->invisible; - if (++sprite->data[1] > 8) - move_anim_8072740(sprite); - } -} - -void sub_80CDF0C(struct Sprite* sprite) -{ - if (gBattleAnimArgs[0] == 0) - { - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[1]; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[2]; - } - else - { - sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[1]; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[2]; - } - - sprite->data[0] = 0; - sprite->data[1] = gBattleAnimArgs[3]; - sprite->callback = sub_80CDF70; -} - -void sub_80CDF70(struct Sprite* sprite) -{ - if (++sprite->data[0] > sprite->data[1]) - { - sprite->data[0] = 0; - sprite->pos1.y--; - } - - sprite->pos1.y -= sprite->data[0]; - if (sprite->animEnded) - move_anim_8072740(sprite); -} - -void sub_80CDFB0(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) - 12; - sprite->data[0] = 0; - sprite->data[1] = 2; - sprite->data[2] = 0; - sprite->data[3] = 0; - sprite->data[4] = 0; - sprite->data[5] = sub_8076F98(-0x40); - sprite->callback = sub_80CE000; -} - -void sub_80CE000(struct Sprite* sprite) -{ - if (++sprite->data[0] >= sprite->data[1]) - { - sprite->invisible = !sprite->invisible; - if (!sprite->invisible) - { - sprite->data[4]++; - if (!(sprite->data[4] & 1)) - PlaySE12WithPanning(SE_W207B, sprite->data[5]); - } - - sprite->data[0] = 0; - if (++sprite->data[2] > 1) - { - sprite->data[2] = 0; - sprite->data[1]++; - } - } - - if (sprite->animEnded && sprite->data[1] > 16 && sprite->invisible) - move_anim_8072740(sprite); -} - -void sub_80CE09C(struct Sprite* sprite) -{ - if (sprite->data[0] == 0) - { - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[0]; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[1]; - if (NotInBattle()) - sprite->pos1.y += 10; - sprite->data[0]++; - } - - if ((u16)gBattleAnimArgs[7] == 0xFFFF) - move_anim_8072740(sprite); -} - -void sub_80CE108(u8 taskId) -{ - if (gTasks[taskId].data[2] == 1) - { - gBattleAnimArgs[7] = 0xFFFF; - gTasks[taskId].data[2]++; - } - else if (gTasks[taskId].data[2] == 2) - { - DestroyAnimVisualTask(taskId); - } - else - { - if (++gTasks[taskId].data[0] == 4) - { - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1]++; - REG_BLDALPHA = (gTasks[taskId].data[1] << 8) | (16 - gTasks[taskId].data[1]); - if (gTasks[taskId].data[1] == 16) - gTasks[taskId].data[2]++; - } - } -} - -void sub_80CE17C(struct Sprite* sprite) -{ - sub_8078764(sprite, 0); - sprite->animPaused = 1; - sprite->data[0] = gBattleAnimArgs[2]; - sprite->callback = sub_80CE1AC; -} - -void sub_80CE1AC(struct Sprite* sprite) -{ - if (sprite->data[0]) - { - sprite->data[0]--; - } - else - { - sprite->animPaused = 0; - sprite->data[0] = 30; - sprite->data[2] = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 3); - sprite->callback = sub_8078B34; - StoreSpriteCallbackInData(sprite, move_anim_8072740); - } -} - -void sub_80CE210(u8 taskId) -{ - if (++gTasks[taskId].data[0] == 4) - { - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1]++; - REG_BLDALPHA = gTasks[taskId].data[1] | ((16 - gTasks[taskId].data[1]) << 8); - if (gTasks[taskId].data[1] == 16) - DestroyAnimVisualTask(taskId); - } -} - -void unref_sub_80CE260(u8 taskId) -{ - u8 i; - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gBattleAnimArgs[0] == 1 && GetBankSide(i) == 0) - sub_8043DB0(gHealthboxIDs[i]); - - if (gBattleAnimArgs[1] == 1 && GetBankSide(i) == 1) - sub_8043DB0(gHealthboxIDs[i]); - } - - DestroyAnimVisualTask(taskId); -} - -void unref_sub_80CE2D4(u8 taskId) -{ - u8 i; - for (i = 0; i < gNoOfAllBanks; i++) - { - sub_8043DFC(gHealthboxIDs[i]); - } - - DestroyAnimVisualTask(taskId); -} - -void sub_80CE30C(struct Sprite* sprite) -{ - if (NotInBattle()) - { - sprite->pos1.x = 0x30; - sprite->pos1.y = 0x28; - } - else - { - sprite->pos1.x = gBattleAnimArgs[0]; - sprite->pos1.y = gBattleAnimArgs[1]; - } - - sprite->oam.shape = 0; - sprite->oam.size = 3; - sprite->data[0] = 0; - sprite->callback = sub_80CE354; -} - -void sub_80CE354(struct Sprite* sprite) -{ - if (sprite->data[0]) - move_anim_8072740(sprite); -} - -void sub_80CE36C(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[0]; - sprite->pos1.y = gBattleAnimArgs[1]; - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->data[2] = 0; - sprite->data[3] = 0; - sprite->data[4] = 1; - sprite->callback = sub_80CE3B0; -} - -void sub_80CE3B0(struct Sprite* sprite) -{ - if (++sprite->data[1] > 1) - { - sprite->data[1] = 0; - if (sprite->data[2] <= 0x77) - { - sprite->pos1.y++; - sprite->data[2]++; - } - } - - if (sprite->data[0]) - move_anim_8072740(sprite); -} - -void sub_80CE3EC(u8 taskId) -{ - int a = sub_80791A8(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; - int b; - int c; - int d; - - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = 0; - gTasks[taskId].data[2] = 0; - gTasks[taskId].data[3] = a; - gTasks[taskId].data[4] = 0; - gTasks[taskId].data[5] = 0; - gTasks[taskId].data[6] = 0; - gTasks[taskId].data[7] = 13; - gTasks[taskId].data[8] = 14; - gTasks[taskId].data[9] = 15; - b = sub_80792C0(1, 1, 1, 1); - c = a | b; - sub_8079BF4(&gTasks[taskId].data[14], &gTasks[taskId].data[15], (void*)c); - b = b | (0x10000 << IndexOfSpritePaletteTag(0x27D2)); - d = IndexOfSpritePaletteTag(0x27D3); - BeginNormalPaletteFade((0x10000 << d) | b, 0, 0, 0x10, 32699); - gTasks[taskId].func = sub_80CE4D4; - sub_80CE4D4(taskId); -} - -void sub_80CE4D4(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - switch (task->data[0]) - { - case 0: - if (++task->data[1] > 0) - { - u16 color; - u16 bitmask; - u16 r3; - u16 i; - u16 j; - task->data[1] = 0; - if (++task->data[2] <= 15) - { - u16 red; - u16 green; - u16 blue; - task->data[4] += task->data[7]; - task->data[5] += task->data[8]; - task->data[6] += task->data[9]; - red = task->data[4] >> 3; - green = task->data[5] >> 3; - blue = task->data[6] >> 3; - color = RGB(red, green, blue); - } - else - { - color = RGB(27, 29, 31); - task->data[0]++; - } - - bitmask = 1; - r3 = 0; - for (i = 0; i <= 15; i++) - { - if (task->data[3] & bitmask) - { - for (j = 1; j <= 15; j++) - { - gPlttBufferFaded[r3 + j] = color; - } - } - - bitmask <<= 1; - r3 += 16; - } - } - break; - case 1: - if (!gPaletteFade.active) - { - u8 spriteId; - for (spriteId = 0; spriteId < MAX_SPRITES; spriteId++) - { - if (gSprites[spriteId].template == &gBattleAnimSpriteTemplate_83D6FC8 || gSprites[spriteId].template == &gBattleAnimSpriteTemplate_83D6FF8) - gSprites[spriteId].data[0] = 1; - } - - task->data[1] = 0; - task->data[0]++; - } - break; - case 2: - if (++task->data[1] > 30) - { - BeginNormalPaletteFade((u32)sub_8079BFC(task->data[14], task->data[15]), 0, 16, 0, RGB(27, 29, 31)); - task->data[0]++; - } - break; - case 3: - if (!gPaletteFade.active) - DestroyAnimVisualTask(taskId); - break; - } -} - -void sub_80CE670(struct Sprite* sprite) -{ - if (gBattleAnimArgs[2] <= 1) - gBattleAnimArgs[2] = 2; - - if (gBattleAnimArgs[2] > 0x7F) - gBattleAnimArgs[2] = 0x7F; - - sprite->data[0] = 0; - sprite->data[1] = gBattleAnimArgs[2]; - sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[0]; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[1]; - sprite->data[6] = sprite->pos1.x; - sprite->data[7] = sprite->pos1.y; - if (NotInBattle() != 0) - { - sprite->oam.matrixNum = 8; - sprite->pos1.x += 40; - sprite->pos1.y += 20; - sprite->data[2] = sprite->pos1.x << 7; - sprite->data[3] = -0x1400 / sprite->data[1]; - sprite->data[4] = sprite->pos1.y << 7; - sprite->data[5] = -0xA00 / sprite->data[1]; - } - else if (GetBankSide(gBattleAnimBankAttacker) == 0) - { - sprite->pos1.x -= 40; - sprite->pos1.y += 20; - sprite->data[2] = sprite->pos1.x << 7; - sprite->data[3] = 0x1400 / sprite->data[1]; - sprite->data[4] = sprite->pos1.y << 7; - sprite->data[5] = -0xA00 / sprite->data[1]; - } - else - { - sprite->pos1.x += 40; - sprite->pos1.y -= 20; - sprite->data[2] = sprite->pos1.x << 7; - sprite->data[3] = -0x1400 / sprite->data[1]; - sprite->data[4] = sprite->pos1.y << 7; - sprite->data[5] = 0xA00 / sprite->data[1]; - sprite->oam.matrixNum = 24; - } - - sprite->callback = sub_80CE798; -} - -void sub_80CE798(struct Sprite* sprite) -{ - sprite->data[2] += sprite->data[3]; - sprite->data[4] += sprite->data[5]; - sprite->pos1.x = sprite->data[2] >> 7; - sprite->pos1.y = sprite->data[4] >> 7; - if (--sprite->data[1] == 1) - { - sprite->pos1.x = sprite->data[6]; - sprite->pos1.y = sprite->data[7]; - } - - if (sprite->data[1] == 0) - move_anim_8072740(sprite); -} - -// double team -void sub_80CE7E0(u8 taskId) -{ - u16 i; - int obj; - u16 r3; - u16 r4; - struct Task* task = &gTasks[taskId]; - task->data[0] = GetAnimBankSpriteId(0); - task->data[1] = AllocSpritePalette(0x2771); - r3 = (task->data[1] * 16) + 0x100; - r4 = (gSprites[task->data[0]].oam.paletteNum + 16) << 4; - for (i = 1; i < 16; i++) - { - gPlttBufferUnfaded[r3 + i] = gPlttBufferUnfaded[r4 + i]; - } - - BlendPalette(r3, 16, 11, 0); - task->data[3] = 0; - i = 0; - while (i <= 1 && (obj = duplicate_obj_of_side_rel2move_in_transparent_mode(0)) >= 0) - { - gSprites[obj].oam.paletteNum = task->data[1]; - gSprites[obj].data[0] = 0; - gSprites[obj].data[1] = i << 7; - gSprites[obj].data[2] = taskId; - gSprites[obj].callback = sub_80CE974; - task->data[3]++; - i++; - } - - task->func = sub_80CE910; - if (GetBankIdentity_permutated(gBattleAnimBankAttacker) == 1) - { - REG_DISPCNT &= 0xFDFF; - } - else - { - REG_DISPCNT &= 0xFBFF; - } -} - -void sub_80CE910(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - if (!task->data[3]) - { - if (GetBankIdentity_permutated(gBattleAnimBankAttacker) == 1) - REG_DISPCNT |= 0x200; - else - REG_DISPCNT |= 0x400; - - FreeSpritePaletteByTag(0x2771); - DestroyAnimVisualTask(taskId); - } -} - -void sub_80CE974(struct Sprite* sprite) -{ - if (++sprite->data[3] > 1) - { - sprite->data[3] = 0; - sprite->data[0]++; - } - - if (sprite->data[0] > 0x40) - { - gTasks[sprite->data[2]].data[3]--; - obj_delete_but_dont_free_vram(sprite); - } - else - { - sprite->data[4] = gSineTable[sprite->data[0]] / 6; - sprite->data[5] = gSineTable[sprite->data[0]] / 13; - sprite->data[1] = (sprite->data[1] + sprite->data[5]) & 0xFF; - sprite->pos2.x = Sin(sprite->data[1], sprite->data[4]); - } -} - -void sub_80CEA04(struct Sprite* sprite) -{ - StoreSpriteCallbackInData(sprite, move_anim_8072740); - sprite->callback = sub_8078600; -} - -// grasswhistle -void sub_80CEA20(u8 taskId) -{ - u16 i; - u16 j; - u16 index; - - index = IndexOfSpritePaletteTag(gUnknown_083D712C[0][0]); - if (index != 0xFF) - { - index = (index << 4) + 0x100; - for (i = 1; i < 6; i++) - { - gPlttBufferFaded[index + i] = gUnknown_083D712C[0][i]; - } - } - - for (j = 1; j < 4; j++) - { - index = AllocSpritePalette(gUnknown_083D712C[j][0]); - if (index != 0xFF) - { - index = (index << 4) + 0x100; - for (i = 1; i < 6; i++) - { - gPlttBufferFaded[index + i] = gUnknown_083D712C[j][i]; - } - } - } - DestroyAnimVisualTask(taskId); -} - -void sub_80CEAD8(u8 taskId) -{ - u16 i; - for (i = 1; i < 4; i++) - { - FreeSpritePaletteByTag(gUnknown_083D712C[i][0]); - } - - DestroyAnimVisualTask(taskId); -} - -void sub_80CEB0C(struct Sprite* sprite) -{ - u8 index; - u8 a; - u8 b; - sub_8078650(sprite); - StartSpriteAnim(sprite, gBattleAnimArgs[0]); - if ((index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[1]][0])) != 0xFF) - sprite->oam.paletteNum = index; - - sprite->data[1] = gBattleAnimArgs[1]; - sprite->data[2] = 0; - sprite->data[3] = gBattleAnimArgs[2]; - if (NotInBattle()) - { - a = 0x30; - b = 0x28; - } - else - { - a = sub_8077ABC(gBattleAnimBankTarget, 2); - b = sub_8077ABC(gBattleAnimBankTarget, 3); - } - - sprite->data[4] = sprite->pos1.x << 4; - sprite->data[5] = sprite->pos1.y << 4; - sub_80CEBC4(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data[6], &sprite->data[7], 0x28); - sprite->callback = sub_80CEC1C; -} - -void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e) -{ - int f; - int g; - if (a < 0) - e = -e; - - f = a << 8; - g = f / e; - if (g == 0) - g = 1; - - *c = f / g; - *d = (b << 8) / g; -} - -//grasswhistle music notes -void sub_80CEC1C(struct Sprite* sprite) -{ - int b; - s16 a; - int c; - u8 index; - sprite->data[0]++; - b = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8); - sprite->data[4] += sprite->data[6]; - sprite->data[5] += sprite->data[7]; - sprite->pos1.x = sprite->data[4] >> 4; - sprite->pos1.y = sprite->data[5] >> 4; - sprite->pos2.y = Sin(b, 15); - a = (u16)sprite->pos1.y; - c = (u16)sprite->pos1.x; - - if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80) - { - move_anim_8074EE0(sprite); - } - else - { - if (sprite->data[3] && ++sprite->data[2] > sprite->data[3]) - { - sprite->data[2] = 0; - if (++sprite->data[1] > 3) - sprite->data[1] = 0; - - index = IndexOfSpritePaletteTag(gUnknown_083D712C[sprite->data[1]][0]); - if (index != 0xFF) - sprite->oam.paletteNum = index; - } - } -} - -void sub_80CECE8(struct Sprite* sprite) -{ - int a; - if (GetBankSide(gBattleAnimBankAttacker) == 1) - { - a = gBattleAnimArgs[1]; - (u16)gBattleAnimArgs[1] = -a; - } - - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[1]; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2]; - StartSpriteAnim(sprite, gBattleAnimArgs[0]); - sprite->data[2] = 0; - sprite->data[3] = 0; - sprite->data[4] = sprite->pos1.x << 4; - sprite->data[5] = sprite->pos1.y << 4; - sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5; - sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5; - sprite->callback = sub_80CED78; -} - -void sub_80CED78(struct Sprite* sprite) -{ - sprite->data[4] += sprite->data[6]; - sprite->data[5] += sprite->data[7]; - sprite->pos1.x = sprite->data[4] >> 4; - sprite->pos1.y = sprite->data[5] >> 4; - if (sprite->data[0] > 5 && sprite->data[3] == 0) - { - sprite->data[2] = (sprite->data[2] + 16) & 0xFF; - sprite->pos2.x = Cos(sprite->data[2], 18); - sprite->pos2.y = Sin(sprite->data[2], 18); - if (sprite->data[2] == 0) - sprite->data[3] = 1; - } - - if (++sprite->data[0] == 0x30) - move_anim_8074EE0(sprite); -} - -void sub_80CEDF0(struct Sprite* sprite) -{ - s16 a; - if (gBattleAnimArgs[0] == 1) - { - sprite->oam.matrixNum = 8; - a = 16; - } - else - { - a = -16; - } - - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + a; - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + 8; - sprite->data[0] = 8; - sprite->callback = sub_80782D8; - StoreSpriteCallbackInData(sprite, move_anim_8072740); -} - -void sub_80CEE60(struct Sprite* sprite) -{ - s16 a; - u8 index; - sub_8078650(sprite); - sprite->pos1.y += 8; - StartSpriteAnim(sprite, gBattleAnimArgs[1]); - index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[2]][0]); - if (index != 0xFF) - sprite->oam.paletteNum = index; - - a = (gBattleAnimArgs[0] == 0) ? 0xFFE0 : 0x20; - sprite->data[0] = 40; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = a + sprite->data[1]; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = sprite->data[3] - 40; - obj_translate_based_on_private_1_2_3_4(sprite); - sprite->data[5] = gBattleAnimArgs[3]; - sprite->callback = sub_80CEEE8; -} - -void sub_80CEEE8(struct Sprite* sprite) -{ - if (sub_8078B5C(sprite) == 0) - { - s16 a; - a = Sin(sprite->data[5], 8); - if (sprite->pos2.x < 0) - a = -a; - - sprite->pos2.x += a; - sprite->pos2.y += Sin(sprite->data[5], 4); - sprite->data[5] = (sprite->data[5] + 8) & 0xFF; - } - else - { - move_anim_8072740(sprite); - } -} - -void sub_80CEF44(u8 bank, struct Sprite* sprite) -{ - if (GetBankSide(bank) == 0) - sprite->pos1.x = sub_807A100(bank, 5) + 8; - else - sprite->pos1.x = sub_807A100(bank, 4) - 8; - - sprite->pos1.y = sub_8077ABC(bank, 3) - (s16)sub_807A100(bank, 0) / 4; -} - -void sub_80CEF9C(struct Sprite* sprite) -{ - u8 a; - u8 bank; - if (gBattleAnimArgs[0] == 0) - bank = gBattleAnimBankAttacker; - else - bank = gBattleAnimBankTarget; - - sub_80CEF44(bank, sprite); - a = (GetBankSide(bank) == 0) ? 0 : 1; - sprite->data[0] = gBattleAnimArgs[1]; - sprite->data[1] = a + 2; - StartSpriteAnim(sprite, a); - StoreSpriteCallbackInData(sprite, sub_80CF008); - sprite->callback = sub_8078600; -} - -void sub_80CF008(struct Sprite* sprite) -{ - if (--sprite->data[0] == 0) - { - StoreSpriteCallbackInData(sprite, move_anim_8072740); - StartSpriteAnim(sprite, sprite->data[1]); - sprite->callback = sub_8078600; - } -} - -void sub_80CF040(struct Sprite* sprite) -{ - u8 bank; - if (gBattleAnimArgs[0] == 0) - bank = gBattleAnimBankAttacker; - else - bank = gBattleAnimBankTarget; - - sub_80CEF44(bank, sprite); - sprite->data[0] = 0; - StoreSpriteCallbackInData(sprite, sub_80CF088); - sprite->callback = sub_80785E4; -} - -void sub_80CF088(struct Sprite* sprite) -{ - if (++sprite->data[0] > 16) - { - StartSpriteAffineAnim(sprite, 1); - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); - sprite->callback = sub_80785E4; - } -} - -void sub_80CF0BC(struct Sprite* sprite) -{ - u8 bank; - if (gBattleAnimArgs[0] == 0) - bank = gBattleAnimBankAttacker; - else - bank = gBattleAnimBankTarget; - - sprite->pos1.x = sub_8077ABC(bank, 0); - sprite->pos1.y = sub_807A100(bank, 2); - if (sprite->pos1.y <= 9) - sprite->pos1.y = 10; - - sprite->data[0] = 1; - sprite->data[1] = 0; - sprite->data[2] = sprite->subpriority; - sprite->data[3] = sprite->subpriority + 4; - sprite->data[4] = 0; - StoreSpriteCallbackInData(sprite, sub_80CF138); - sprite->callback = sub_80785E4; -} - -void sub_80CF138(struct Sprite* sprite) -{ - if (++sprite->data[4] > 12) - sprite->callback = sub_80CF158; -} - -void sub_80CF158(struct Sprite* sprite) -{ - s16 temp; - s16 temp2; - sprite->data[1] += 4; - if (sprite->data[1] > 0xFE) - { - if (--sprite->data[0] == 0) - { - sprite->pos2.x = 0; - sprite->callback = sub_80CF088; - return; - } - else - { - sprite->data[1] &= 0xFF; - } - } - - if (sprite->data[1] > 0x4F) - sprite->subpriority = sprite->data[3]; - - if (sprite->data[1] > 0x9F) - sprite->subpriority = sprite->data[2]; - - temp = gSineTable[sprite->data[1]]; - sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1); -} - -void sub_80CF1C8(struct Sprite* sprite) -{ - u8 bank; - if (gBattleAnimArgs[0] == 0) - bank = gBattleAnimBankAttacker; - else - bank = gBattleAnimBankTarget; - - sub_80CEF44(bank, sprite); - if (GetBankSide(bank) == 0) - { - StartSpriteAnim(sprite, 0); - sprite->data[0] = 2; - } - else - { - StartSpriteAnim(sprite, 1); - sprite->data[0] = 3; - } - - sprite->callback = sub_80CF228; -} - -void sub_80CF228(struct Sprite* sprite) -{ - if (++sprite->data[1] > 10) - { - sprite->data[1] = 0; - StartSpriteAnim(sprite, sprite->data[0]); - StoreSpriteCallbackInData(sprite, sub_80CF264); - sprite->callback = sub_8078600; - } -} - -void sub_80CF264(struct Sprite* sprite) -{ - if (++sprite->data[1] > 5) - move_anim_8072740(sprite); -} - -void sub_80CF280(struct Sprite* sprite) -{ - sub_8078650(sprite); - sub_807867C(sprite, gBattleAnimArgs[0]); - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data[1] = gBattleAnimArgs[2]; - sprite->data[2] = gBattleAnimArgs[4]; - sprite->data[3] = gBattleAnimArgs[5]; - sprite->data[4] = gBattleAnimArgs[3]; - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); - sprite->callback = sub_8078278; - sub_8078278(sprite); -} - -void sub_80CF2D0(struct Sprite* sprite) -{ - u8 bank; - if (gBattleAnimArgs[0] == 0) - bank = gBattleAnimBankAttacker; - else - bank = gBattleAnimBankTarget; - - sub_80CEF44(bank, sprite); - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->callback = sub_80CF310; -} - -void sub_80CF310(struct Sprite* sprite) -{ - switch (sprite->data[0]) - { - case 0: - sprite->pos2.y -= 3; - if (++sprite->data[1] == 6) - sprite->data[0]++; - break; - case 1: - sprite->pos2.y += 3; - if (--sprite->data[1] == 0) - sprite->data[0]++; - break; - case 2: - if (++sprite->data[1] == 0x40) - move_anim_8072740(sprite); - break; - } -} - -void sub_80CF374(struct Sprite* sprite) -{ - s16 temp; - gSprites[sprite->data[2]].pos2.x += sprite->data[1]; - temp = sprite->data[1]; - sprite->data[1] = -temp; - if (sprite->data[0] == 0) - { - gSprites[sprite->data[2]].pos2.x = 0; - move_anim_8074EE0(sprite); - } - - sprite->data[0]--; -} - -void sub_80CF3C4(struct Sprite* sprite) -{ - u8 a; - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); - a = gObjectBankIDs[gBattleAnimBankTarget]; - if (GetBankSide(gBattleAnimBankAttacker) != 0) - { - sprite->pos1.x -= gBattleAnimArgs[0]; - } - else - { - sprite->pos1.x += gBattleAnimArgs[0]; - } - - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = gBattleAnimArgs[3]; - sprite->data[2] = a; - sprite->callback = sub_80CF374; - sprite->invisible = 1; -} - -void sub_80CF458(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = gBattleAnimArgs[3]; - sprite->data[5] = gBattleAnimArgs[4]; - sprite->callback = sub_80782D8; - StoreSpriteCallbackInData(sprite, sub_80CF490); -} - -void sub_80CF490(struct Sprite* sprite) -{ - sprite->data[0] = sprite->data[1]; - sprite->data[2] = sprite->pos1.x; - sprite->data[4] = sprite->pos1.y + 15; - sprite->callback = sub_8078B34; - StoreSpriteCallbackInData(sprite, sub_80CF4B8); -} - -void sub_80CF4B8(struct Sprite* sprite) -{ - if (sprite->data[5] == 0) - move_anim_8072740(sprite); - else - sprite->data[5]--; -} - -void sub_80CF4D8(u8 taskId) -{ - sub_8078E70(gObjectBankIDs[gBattleAnimBankAttacker], 0); - gTasks[taskId].func = sub_80CF514; -} - -void sub_80CF514(u8 taskId) -{ - u8 a = gObjectBankIDs[gBattleAnimBankAttacker]; - s16 b; - if (GetBankSide(gBattleAnimBankAttacker) == 0) - { - b = -gTasks[taskId].data[0]; - } - else - { - b = gTasks[taskId].data[0]; - } - - obj_id_set_rotscale(a, 0x100, 0x100, b); - if (gTasks[taskId].data[1] == 0) - { - gTasks[taskId].data[0] += 0xB0; - gSprites[a].pos2.y++; - } - else if (gTasks[taskId].data[1] == 1) - { - if (++gTasks[taskId].data[3] == 0x1E) - gTasks[taskId].data[1] = 2; - - return; - } - else - { - gTasks[taskId].data[0] -= 0xB0; - gSprites[a].pos2.y--; - } - - sub_8078F9C(a); - if (gTasks[taskId].data[0] == 0xF20 || gTasks[taskId].data[0] == 0) - { - if (gTasks[taskId].data[1] == 2) - { - sub_8078F40(a); - DestroyAnimVisualTask(taskId); - } - else - { - gTasks[taskId].data[1]++; - } - } -} - -void sub_80CF610(struct Sprite* sprite) -{ - sub_8078650(sprite); - sub_807867C(sprite, gBattleAnimArgs[0]); - sprite->pos1.y += gBattleAnimArgs[1]; - if (GetBankSide(gBattleAnimBankAttacker) != 0) - { - sprite->hFlip = 1; - if (gBattleAnimArgs[2] != 0) - sprite->vFlip = 1; - } - else - { - if (gBattleAnimArgs[2] != 0) - sprite->vFlip = 1; - } - - sprite->callback = sub_8078600; - StoreSpriteCallbackInData(sprite, move_anim_8072740); -} - -void sub_80CF690(struct Sprite* sprite) -{ - sub_80787B0(sprite, 0); - sprite->callback = sub_80785E4; - StoreSpriteCallbackInData(sprite, sub_80CF6B4); -} - -void sub_80CF6B4(struct Sprite* sprite) -{ - sprite->data[0] = 6; - sprite->data[2] = sprite->pos1.x; - sprite->data[4] = sprite->pos1.y - 32; - sprite->callback = sub_8078B34; - StoreSpriteCallbackInData(sprite, move_anim_8072740); -} - -//sonic boom -void sub_80CF6DC(struct Sprite* sprite) -{ - s16 a; - s16 b; - u16 c; - - if (NotInBattle()) - { - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - } - else if (GetBankSide(gBattleAnimBankAttacker) != 0) - { - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - gBattleAnimArgs[1] = -gBattleAnimArgs[1]; - gBattleAnimArgs[3] = -gBattleAnimArgs[3]; - } - - sub_80787B0(sprite, 1); - a = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; - b = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; - c = sub_80790F0(a - sprite->pos1.x, b - sprite->pos1.y); - c += 0xF000; - if (NotInBattle()) - c -= 0x6000; - - sub_8078FDC(sprite, 0, 0x100, 0x100, c); - sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = a; - sprite->data[4] = b; - sprite->callback = sub_8078B34; - StoreSpriteCallbackInData(sprite, move_anim_8072740); -} - -void sub_80CF7E0(struct Sprite* sprite) -{ - if (sprite->data[0]-- <= 0) - { - gTasks[sprite->data[7]].data[1]--; - DestroySprite(sprite); - } -} - -void sub_80CF814(struct Sprite* sprite) -{ - struct Task* task = &gTasks[sprite->data[7]]; - if (sprite->data[0] > task->data[5]) - { - sprite->data[5] += sprite->data[3]; - sprite->data[6] += sprite->data[4]; - } - else - { - sprite->data[5] -= sprite->data[3]; - sprite->data[6] -= sprite->data[4]; - } - - sprite->data[1] += sprite->data[5]; - sprite->data[2] += sprite->data[6]; - if (1 & task->data[7]) - sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1; - else - sprite->pos2.x = (u16)sprite->data[1] >> 8; - - if (1 & task->data[8]) - sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1; - else - sprite->pos2.y = (u16)sprite->data[2] / 256u; - - if (sprite->data[0]-- <= 0) - { - sprite->data[0] = 30; - sprite->callback = sub_80CF7E0; - } -} - -//air cutter -void sub_80CF8B8(struct Sprite* sprite) -{ - s16 a; - s16 b; - s16 c; - - struct Task* task = &gTasks[sprite->data[7]]; - sprite->data[1] += (-2 & task->data[7]); - sprite->data[2] += (-2 & task->data[8]); - if (1 & task->data[7]) - sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1; - else - sprite->pos2.x = (u16)sprite->data[1] >> 8; - - if (1 & task->data[8]) - sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1; - else - sprite->pos2.y = (u16)sprite->data[2] / 256u; - - if (sprite->data[0]-- <= 0) - { - sprite->data[0] = 8; - task->data[5] = 4; - a = sub_81174E0(0x1000); - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.y = 0; - sprite->pos2.x = 0; - if (task->data[11] >= sprite->pos1.x) - b = (task->data[11] - sprite->pos1.x) << 8; - else - b = (sprite->pos1.x - task->data[11]) << 8; - - if (task->data[12] >= sprite->pos1.y) - c = (task->data[12] - sprite->pos1.y) << 8; - else - c = (sprite->pos1.y - task->data[12]) << 8; - - sprite->data[2] = 0; - sprite->data[1] = 0; - sprite->data[6] = 0; - sprite->data[5] = 0; - sprite->data[3] = sub_81174C4(sub_81174C4(b, a), sub_81174E0(0x1C0)); - sprite->data[4] = sub_81174C4(sub_81174C4(c, a), sub_81174E0(0x1C0)); - sprite->callback = sub_80CF814; - } -} - -void sub_80CF9F8(u8 taskId) -{ - if (gTasks[taskId].data[1] == 0) - DestroyAnimVisualTask(taskId); -} - -void sub_80CFA20(u8 taskId) -{ - if (gTasks[taskId].data[0]-- <= 0) - { - u8 spriteId; - struct Sprite* sprite; - spriteId = CreateSprite(&gSpriteTemplate_83D74BC, gTasks[taskId].data[9], gTasks[taskId].data[10], gTasks[taskId].data[2] - gTasks[taskId].data[1]); - sprite = &gSprites[spriteId]; - switch (gTasks[taskId].data[4]) - { - case 1: - sprite->oam.matrixNum |= 24; - break; - case 2: - sprite->oam.matrixNum = 8; - break; - } - - sprite->data[0] = gTasks[taskId].data[5] - gTasks[taskId].data[6]; - sprite->data[7] = taskId; - gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId; - gTasks[taskId].data[0] = gTasks[taskId].data[3]; - gTasks[taskId].data[1]++; - PlaySE12WithPanning(0x9A, sub_8076F98(-0x3F)); - if (gTasks[taskId].data[1] > 2) - gTasks[taskId].func = sub_80CF9F8; - } -} - -void sub_80CFB04(u8 taskId) -{ - s16 r9 = 0; - s16 r6 = 0; - s16 sp1 = 0; - s16 sp2 = 0; - s16 r4; - - if (NotInBattle()) - { - gTasks[taskId].data[4] = 2; - gBattleAnimArgs[0] = -gBattleAnimArgs[0]; - if (gBattleAnimArgs[2] & 1) - gBattleAnimArgs[2] &= ~1; - else - gBattleAnimArgs[2] |= 1; - } - else - { - if ((gBanksBySide[gBattleAnimBankTarget] & 1) == 0) - { - gTasks[taskId].data[4] = 1; - gBattleAnimArgs[0] = -gBattleAnimArgs[0]; - gBattleAnimArgs[1] = -gBattleAnimArgs[1]; - if (gBattleAnimArgs[2] & 1) - gBattleAnimArgs[2] &= ~1; - else - gBattleAnimArgs[2] |= 1; - } - } - r6 = gTasks[taskId].data[9] = sub_8077ABC(gBattleAnimBankAttacker, 0); - r9 = gTasks[taskId].data[10] = sub_8077ABC(gBattleAnimBankAttacker, 1); - if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - && IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) - { - sub_807A3FC(gBattleAnimBankTarget, 0, &sp1, &sp2); - } - else - { - sp1 = sub_8077ABC(gBattleAnimBankTarget, 0); - sp2 = sub_8077ABC(gBattleAnimBankTarget, 1); - } - - sp1 = gTasks[taskId].data[11] = sp1 + gBattleAnimArgs[0]; - sp2 = gTasks[taskId].data[12] = sp2 + gBattleAnimArgs[1]; - if (sp1 >= r6) - r4 = sp1 - r6; - else - r4 = r6 - sp1; - - gTasks[taskId].data[5] = sub_81174C4(r4, sub_81174E0(gBattleAnimArgs[2] & ~1)); - gTasks[taskId].data[6] = sub_81174C4(gTasks[taskId].data[5], 0x80); - gTasks[taskId].data[7] = gBattleAnimArgs[2]; - if (sp2 >= r9) - { - r4 = sp2 - r9; - gTasks[taskId].data[8] = sub_81174C4(r4, sub_81174E0(gTasks[taskId].data[5])) & ~1; - } - else - { - r4 = r9 - sp2; - gTasks[taskId].data[8] = sub_81174C4(r4, sub_81174E0(gTasks[taskId].data[5])) | 1; - } - - gTasks[taskId].data[3] = gBattleAnimArgs[3]; - if (gBattleAnimArgs[4] & 0x80) - { - gBattleAnimArgs[4] ^= 0x80; - if (gBattleAnimArgs[4] >= 64) - { - u16 var = sub_8079E90(gBattleAnimBankTarget) + (gBattleAnimArgs[4] - 64); - gTasks[taskId].data[2] = var; - } - else - { - u16 var = sub_8079E90(gBattleAnimBankTarget) - gBattleAnimArgs[4]; - gTasks[taskId].data[2] = var; - } - } - else - { - if (gBattleAnimArgs[4] >= 64) - { - u16 var = sub_8079E90(gBattleAnimBankTarget) + (gBattleAnimArgs[4] - 64); - gTasks[taskId].data[2] = var; - } - else - { - u16 var = sub_8079E90(gBattleAnimBankTarget) - gBattleAnimArgs[4]; - gTasks[taskId].data[2] = var; - } - } - - if (gTasks[taskId].data[2] < 3) - gTasks[taskId].data[2] = 3; - - gTasks[taskId].func = sub_80CFA20; -} - -void sub_80CFDFC(struct Sprite* sprite) -{ - sub_80787B0(sprite, 0); - sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(gSpriteTemplate_83D75AC.paletteTag) << 4); - sprite->callback = sub_80CFE2C; -} - -#ifdef NONMATCHING -void sub_80CFE2C(struct Sprite* sprite) -{ - u16 r7; - u16* r1; - u16* r2; - int i; - if (++sprite->data[1] == 2) - { - sprite->data[1] = 0; - r7 = gPlttBufferFaded[sprite->data[0] + 8]; - r2 = &gPlttBufferFaded[0x10]; - r1 = &gPlttBufferFaded[sprite->data[0] + 9]; - for (i = 7; i >= 0; i--) - { - *r2 = *r1; - r1++; - r2++; - } - - gPlttBufferFaded[sprite->data[0] + 15] = r7; - if (++sprite->data[2] == 0x18) - move_anim_8072740(sprite); - } -} -#else -__attribute__((naked)) -void sub_80CFE2C(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r4, r0, 0\n\ - ldrh r0, [r4, 0x30]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x30]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x2\n\ - bne _080CFE90\n\ - movs r0, 0\n\ - strh r0, [r4, 0x30]\n\ - ldrh r5, [r4, 0x2E]\n\ - ldr r1, _080CFE98 @ =gPlttBufferFaded\n\ - adds r0, r5, 0\n\ - adds r0, 0x8\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r7, [r0]\n\ - adds r6, r1, 0 @puts gPlttBufferFaded in r6\n\ - adds r1, r5, 0\n\ - adds r1, 0x9\n\ - lsls r0, r5, 1\n\ - adds r0, r6 \n\ - adds r2, r0, 0\n\ - adds r2, 0x10\n\ - movs r3, 0x7\n\ - lsls r1, 1\n\ - adds r1, r6 \n\ -_080CFE64:\n\ - ldrh r0, [r1]\n\ - strh r0, [r2]\n\ - adds r1, 0x2\n\ - adds r2, 0x2\n\ - subs r3, 0x1\n\ - cmp r3, 0\n\ - bge _080CFE64\n\ - adds r0, r5, 0\n\ - adds r0, 0xF\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - strh r7, [r0]\n\ - ldrh r0, [r4, 0x32]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x32]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x18\n\ - bne _080CFE90\n\ - adds r0, r4, 0\n\ - bl move_anim_8072740\n\ -_080CFE90:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080CFE98: .4byte gPlttBufferFaded\n\ -.syntax divided\n"); -} -#endif - -void sub_80CFE9C(struct Sprite* sprite) -{ - s16 r6; - s16 r7; - u16 var; - - sub_80787B0(sprite, 1); - r6 = sub_8077ABC(gBattleAnimBankTarget, 2); - r7 = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; - if (GetBankSide(gBattleAnimBankAttacker) != 0) - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - - r6 += gBattleAnimArgs[2]; - var = sub_80790F0(r6 - sprite->pos1.x, r7 - sprite->pos1.y); - var += 0xC000; - sub_8078FDC(sprite, 0, 0x100, 0x100, var); - sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = r6; - sprite->data[4] = r7; - sprite->callback = sub_8078C00; - StoreSpriteCallbackInData(sprite, move_anim_8072740); -} - -void sub_80CFF50(struct Sprite* sprite) -{ - sprite->data[2] = -16; - sprite->pos1.y += 8; - sprite->callback = sub_80CFF68; -} - -void sub_80CFF68(struct Sprite* sprite) -{ - sprite->data[0] += 0x80; - sprite->pos2.x = sprite->data[0] >> 8; - if (GetBankSide(gBattleAnimBankAttacker) == 0) - sprite->pos2.x = -sprite->pos2.x; - - sprite->pos2.y = Sin(sprite->data[1], sprite->data[2]); - sprite->data[1] += 5; - if (sprite->data[1] > 0x7E) - { - sprite->data[1] = 0; - sprite->data[2] /= 2; - if (++sprite->data[3] == 2) - move_anim_8072740(sprite); - } -} - -void sub_80CFFD8(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - sprite->data[0] = 20; - sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); - sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); - sprite->callback = sub_8078B34; - sprite->affineAnimPaused = 1; - StoreSpriteCallbackInData(sprite, sub_80D0030); -} - -void sub_80D0030(struct Sprite* sprite) -{ - int i; - u16 rand; - s16* ptr; - PlaySE12WithPanning(0xA6, sub_8076F98(0x3F)); - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.y = 0; - sprite->pos2.x = 0; - ptr = &sprite->data[7]; - for (i = 0; i < 8; i++) - { - ptr[i - 7] = 0; - } - - rand = Random(); - sprite->data[6] = 0xFFF4 - (rand & 7); - rand = Random(); - sprite->data[7] = (rand % 0xA0) + 0xA0; - sprite->callback = sub_80D00B4; - sprite->affineAnimPaused = 0; -} - -void sub_80D00B4(struct Sprite* sprite) -{ - sprite->data[0] += sprite->data[7]; - sprite->pos2.x = sprite->data[0] >> 8; - if (sprite->data[7] & 1) - sprite->pos2.x = -sprite->pos2.x; - - sprite->pos2.y = Sin(sprite->data[1], sprite->data[6]); - sprite->data[1] += 8; - if (sprite->data[1] > 0x7E) - { - sprite->data[1] = 0; - sprite->data[2] /= 2; - if (++sprite->data[3] == 1) - move_anim_8072740(sprite); - } -} - -void sub_80D0118(struct Sprite* sprite) -{ - sub_80787B0(sprite, 0); - if (GetBankSide(gBattleAnimBankAttacker) == 0) - sprite->pos1.y += 16; - - sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[1] = gBattleAnimArgs[2]; - sprite->data[2] = gBattleAnimArgs[5]; - sprite->data[3] = gBattleAnimArgs[6]; - sprite->data[4] = gBattleAnimArgs[3]; - sprite->callback = sub_8078114; - StoreSpriteCallbackInData(sprite, move_anim_8072740); - sprite->callback(sprite); -} - -void sub_80D0178(struct Sprite* sprite) -{ - s16 r7 = 32; - s16 r4 = -32; - s16 r8 = 16; - s16 r6 = -16; - if (gBattleAnimArgs[0] != 0) - { - r7 = r4; - r4 = 32; - r8 = r6; - r6 = 16; - StartSpriteAnim(sprite, 1); - } - - sprite->pos1.x += r7; - sprite->pos1.y += r4; - sprite->data[0] = 6; - sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + r8; - sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3) + r6; - sprite->callback = sub_8078B34; - StoreSpriteCallbackInData(sprite, sub_80D020C); -} - -void sub_80D020C(struct Sprite* sprite) -{ - if (sprite->animEnded == 1) - move_anim_8072740(sprite); -} - -void sub_80D0228(struct Sprite* sprite) -{ - s16 r8 = 32; - s16 r4 = -32; - s16 r9 = 16; - s16 r6 = -16; - if (gBattleAnimArgs[0] != 0) - { - r8 = r4; - r4 = 32; - r9 = r6; - r6 = 16; - StartSpriteAnim(sprite, gBattleAnimArgs[0]); - } - - sprite->pos1.x += r8; - sprite->pos1.y += r4; - sprite->data[0] = 6; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + r9; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3) + r6; - obj_translate_based_on_private_1_2_3_4(sprite); - sprite->data[5] = gBattleAnimArgs[0]; - sprite->data[6] = sprite->data[0]; - sprite->callback = sub_80D02D0; -} - -void sub_80D02D0(struct Sprite* sprite) -{ - if (sub_8078B5C(sprite) && sprite->animEnded == 1) - { - SeekSpriteAnim(sprite, 0); - sprite->animPaused = 1; - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 2; - sprite->pos2.y = -2; - sprite->data[0] = sprite->data[6]; - sprite->data[1] ^= 1; - sprite->data[2] ^= 1; - sprite->data[4] = 0; - sprite->data[3] = 0; - sprite->callback = sub_80D0344; - } -} - -void sub_80D0344(struct Sprite* sprite) -{ - if (sprite->data[3]) - { - sprite->pos2.x = -sprite->pos2.x; - sprite->pos2.y = -sprite->pos2.y; - } - - sprite->data[3] ^= 1; - if (++sprite->data[4] == 0x33) - { - sprite->pos2.y = 0; - sprite->pos2.x = 0; - sprite->data[4] = 0; - sprite->data[3] = 0; - sprite->animPaused = 0; - StartSpriteAnim(sprite, sprite->data[5] ^ 1); - sprite->callback = sub_80D03A8; - } -} - -void sub_80D03A8(struct Sprite* sprite) -{ - if (sub_8078B5C(sprite) != 0) - move_anim_8072740(sprite); -} - -void sub_80D03C4(u8 taskId) -{ - u8 spriteId = GetAnimBankSpriteId(1); - sub_8078E70(spriteId, 1); - obj_id_set_rotscale(spriteId, 0xD0, 0xD0, 0); - sub_8079108(gSprites[spriteId].oam.paletteNum + 16, 0); - gTasks[taskId].data[0] = 0x50; - gTasks[taskId].func = sub_80D0428; -} - -void sub_80D0428(u8 taskId) -{ - if (--gTasks[taskId].data[0] == -1) - { - u8 spriteId = GetAnimBankSpriteId(1); - sub_8078F40(spriteId); - sub_8079108(gSprites[spriteId].oam.paletteNum + 16, 1); - DestroyAnimVisualTask(taskId); - } -} - -void sub_80D0488(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - u8 spriteId = GetAnimBankSpriteId(0); - task->data[0] = spriteId; - sub_8078E70(spriteId, 0); - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - task->data[4] = 0x100; - task->data[5] = 0; - task->data[6] = 0; - task->data[7] = sub_8079E90(gBattleAnimBankAttacker); - task->func = sub_80D04E0; -} - -void sub_80D04E0(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - switch (task->data[1]) - { - case 0: - if (task->data[2] == 0 || task->data[2] == 3 || task->data[2] == 6) - sub_80D0614(task, taskId); - task->data[2]++; - task->data[4] += 0x28; - obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0); - sub_8079A64(task->data[0]); - if (task->data[2] == 32) - { - task->data[5]++; - task->data[1]++; - } - break; - case 1: - if (task->data[6] == 0) - { - if (task->data[5] == 3) - { - task->data[2] = 0; - task->data[1] = 3; - } - else - { - task->data[2] = 0; - task->data[3] = 0; - task->data[4] = 0x100; - obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0); - sub_8079A64(task->data[0]); - task->data[1] = 2; - } - } - break; - case 2: - task->data[1] = 0; - break; - case 3: - if (++task->data[2] > 32) - { - task->data[2] = 0; - task->data[1]++; - } - break; - case 4: - task->data[2] += 2; - task->data[4] -= 0x50; - obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0); - sub_8079A64(task->data[0]); - if (task->data[2] == 32) - { - task->data[2] = 0; - task->data[1]++; - } - break; - case 5: - sub_8078F40(task->data[0]); - gSprites[task->data[15]].pos2.y = 0; - DestroyAnimVisualTask(taskId); - break; - } -} - -#ifdef NONMATCHING -void sub_80D0614(struct Task* task, u8 taskId) -{ - s16 r8 = duplicate_obj_of_side_rel2move_in_transparent_mode(0); - if (r8 >= 0) - { - u8 r6 = AllocOamMatrix(); - if (r6 == 0xFF) - { - obj_delete_but_dont_free_vram(&gSprites[r8]); - } - else - { - gSprites[r8].oam.objMode = 1; - gSprites[r8].oam.affineMode = 3; - gSprites[r8].affineAnimPaused = 1; - gSprites[r8].oam.matrixNum = r6; - gSprites[r8].subpriority = task->data[7] - task->data[3]; - task->data[3]++; - task->data[6]++; - gSprites[r8].data[0] = 16; - gSprites[r8].data[1] = taskId; - gSprites[r8].data[2] = 6; - gSprites[r8].callback = sub_80D0704; - obj_id_set_rotscale(r8, task->data[4], task->data[4], 0); - gSprites[r8].oam.affineMode = 1; - CalcCenterToCornerVec(&gSprites[r8], gSprites[r8].oam.shape, gSprites[r8].oam.size, gSprites[r8].oam.affineMode); - } - } -} -#else -__attribute__((naked)) -void sub_80D0614(struct Task* task, u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - adds r7, r0, 0 @r7 is task\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r9, r1 @r9 is taskId\n\ - movs r0, 0\n\ - bl duplicate_obj_of_side_rel2move_in_transparent_mode\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - lsls r0, 16\n\ - asrs r4, r0, 16\n\ - cmp r4, 0\n\ - blt _080D06EE @jump to bottom\n\ - bl AllocOamMatrix\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - cmp r6, 0xFF\n\ - bne _080D0658\n\ - lsls r0, r4, 4\n\ - adds r0, r4\n\ - lsls r0, 2\n\ - ldr r1, _080D0654 @ =gSprites\n\ - adds r0, r1\n\ - bl obj_delete_but_dont_free_vram\n\ - b _080D06EE @ jump to bottom\n\ - .align 2, 0\n\ -_080D0654: .4byte gSprites\n\ -_080D0658:\n\ - ldr r5, _080D06FC @ =gSprites\n\ - lsls r3, r4, 4\n\ - adds r3, r4\n\ - lsls r3, 2\n\ - adds r4, r3, r5\n\ - ldrb r1, [r4, 0x1]\n\ - movs r0, 0xD\n\ - negs r0, r0\n\ - ands r0, r1\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - movs r1, 0x3\n\ - orrs r0, r1\n\ - strb r0, [r4, 0x1]\n\ - adds r2, r4, 0\n\ - adds r2, 0x2C\n\ - ldrb r0, [r2]\n\ - movs r1, 0x80\n\ - orrs r0, r1\n\ - strb r0, [r2]\n\ - movs r0, 0x1F\n\ - ands r6, r0\n\ - lsls r2, r6, 1\n\ - ldrb r1, [r4, 0x3]\n\ - movs r0, 0x3F\n\ - negs r0, r0\n\ - ands r0, r1\n\ - orrs r0, r2\n\ - strb r0, [r4, 0x3]\n\ - ldrb r0, [r7, 0x16]\n\ - ldrb r1, [r7, 0xE]\n\ - subs r0, r1\n\ - adds r1, r4, 0\n\ - adds r1, 0x43\n\ - strb r0, [r1]\n\ - ldrh r0, [r7, 0xE]\n\ - adds r0, 0x1\n\ - strh r0, [r7, 0xE]\n\ - ldrh r0, [r7, 0x14]\n\ - adds r0, 0x1\n\ - strh r0, [r7, 0x14]\n\ - movs r0, 0x10\n\ - strh r0, [r4, 0x2E]\n\ - mov r0, r9\n\ - strh r0, [r4, 0x30]\n\ - movs r0, 0x6\n\ - strh r0, [r4, 0x32]\n\ - adds r5, 0x1C\n\ - adds r3, r5\n\ - ldr r0, _080D0700 @ =sub_80D0704\n\ - str r0, [r3]\n\ - mov r1, r8 @duplicate_obj_of_side_rel2move_in_transparent_mode(0)\n\ - lsls r0, r1, 24\n\ - lsrs r0, 24\n\ - movs r1, 0x10\n\ - ldrsh r2, [r7, r1]\n\ - adds r1, r2, 0\n\ - movs r3, 0\n\ - bl obj_id_set_rotscale\n\ - ldrb r0, [r4, 0x1]\n\ - movs r3, 0x4\n\ - negs r3, r3\n\ - ands r3, r0\n\ - movs r0, 0x1\n\ - orrs r3, r0\n\ - strb r3, [r4, 0x1]\n\ - lsrs r1, r3, 6\n\ - ldrb r2, [r4, 0x3]\n\ - lsrs r2, 6\n\ - lsls r3, 30\n\ - lsrs r3, 30\n\ - adds r0, r4, 0\n\ - bl CalcCenterToCornerVec\n\ -_080D06EE:\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080D06FC: .4byte gSprites\n\ -_080D0700: .4byte sub_80D0704\n\ -.syntax divided\n"); -} -#endif - -void sub_80D0704(struct Sprite* sprite) -{ - if (--sprite->data[0] == 0) - { - gTasks[sprite->data[1]].data[sprite->data[2]]--; - FreeOamMatrix(sprite->oam.matrixNum); - obj_delete_but_dont_free_vram(sprite); - } -} - -void sub_80D074C(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - if (gBattleAnimArgs[1] == 0) - { - DestroyAnimVisualTask(taskId); - } - else - { - u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); - task->data[0] = spriteId; - task->data[1] = 0; - task->data[2] = gBattleAnimArgs[1]; - task->data[3] = 0; - task->data[4] = 0; - sub_80798F4(task, spriteId, &gUnknown_083D76F4); - task->func = sub_80D07AC; - } -} - -void sub_80D07AC(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - switch (task->data[1]) - { - case 0: - sub_807992C(task); - task->data[4] += 3; - gSprites[task->data[0]].pos2.y += task->data[4]; - if (++task->data[3] > 7) - { - task->data[3] = 0; - task->data[1]++; - } - break; - case 1: - sub_807992C(task); - gSprites[task->data[0]].pos2.y += task->data[4]; - if (++task->data[3] > 7) - { - task->data[3] = 0; - task->data[1]++; - } - break; - case 2: - if (task->data[4] != 0) - { - gSprites[task->data[0]].pos2.y -= 2; - task->data[4] -= 2; - } - else - task->data[1]++; - break; - case 3: - if (!sub_807992C(task)) - { - if (--task->data[2] == 0) - { - gSprites[task->data[0]].pos2.y = 0; - DestroyAnimVisualTask(taskId); - } - else - { - sub_80798F4(task, task->data[0], &gUnknown_083D76F4); - task->data[1] = 0; - } - } - break; - } -} - -void sub_80D08C8(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - u8 spriteId = GetAnimBankSpriteId(0); - sub_80798F4(task, spriteId, &gUnknown_083D7714); - task->func = sub_80D0904; -} - -void sub_80D0904(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - if (!sub_807992C(task)) - DestroyAnimVisualTask(taskId); -} - -void sub_80D0930(struct Sprite* sprite) -{ - if (GetBankSide(gBattleAnimBankAttacker) == 0) - { - StartSpriteAnim(sprite, 0); - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + 32; - sprite->data[1] = 0x40; - } - else - { - StartSpriteAnim(sprite, 1); - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) - 32; - sprite->data[1] = -0x40; - } - - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); - sprite->data[0] = 0x34; - sprite->data[2] = 0; - sprite->data[3] = 0; - sprite->data[4] = 0; - StoreSpriteCallbackInData(sprite, move_anim_8072740); - sprite->callback = sub_8078394; -} - -void sub_80D09C0(struct Sprite* sprite) -{ - u8 bank; - if (gBattleAnimArgs[0] == 0) - bank = gBattleAnimBankAttacker; - else - bank = gBattleAnimBankTarget; - - if (GetBankSide(bank) == 1) - { - gBattleAnimArgs[1] *= -1; - } - - sprite->pos1.x = sub_8077ABC(bank, 2) + gBattleAnimArgs[1]; - sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[2]; - if (sprite->pos1.y <= 7) - sprite->pos1.y = 8; - - StoreSpriteCallbackInData(sprite, move_anim_8074EE0); - sprite->callback = sub_80785E4; -} - -void sub_80D0A4C(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - u8 spriteId = GetAnimBankSpriteId(0); - task->data[0] = spriteId; - task->data[1] = 0; - sub_80798F4(task, spriteId, &gUnknown_083D77B0); - task->func = sub_80D0A8C; -} - -void sub_80D0A8C(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - if (!sub_807992C(task)) - DestroyAnimVisualTask(taskId); -} - -void sub_80D0AB8(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - task->data[0] = GetAnimBankSpriteId(0); - task->data[1] = 0; - task->data[2] = 4; - task->data[3] = 7; - task->data[4] = 3; - task->data[5] = gSprites[task->data[0]].pos1.x; - task->data[6] = gSprites[task->data[0]].pos1.y; - task->data[7] = 0; - task->data[8] = 0; - task->data[9] = 2; - if (GetBankSide(gBattleAnimBankAttacker) == 1) - task->data[2] *= -1; - - task->func = sub_80D0B3C; -} - -void sub_80D0B3C(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - if (++task->data[7] > 2) - { - task->data[7] = 0; - task->data[8]++; - if ((task->data[8] & 1) != 0) - { - gSprites[task->data[0]].pos1.y += task->data[9]; - } - else - { - gSprites[task->data[0]].pos1.y -= task->data[9]; - } - } - switch (task->data[1]) - { - case 0: - gSprites[task->data[0]].pos1.x += task->data[2]; - if (--task->data[3] == 0) - { - task->data[3] = 14; - task->data[1] = 1; - } - break; - case 1: - gSprites[task->data[0]].pos1.x -= task->data[2]; - if (--task->data[3] == 0) - { - task->data[3] = 7; - task->data[1] = 2; - } - break; - case 2: - gSprites[task->data[0]].pos1.x += task->data[2]; - if (--task->data[3] == 0) - { - if (--task->data[4] != 0) - { - task->data[3] = 7; - task->data[1] = 0; - } - else - { - if ((task->data[8] & 1) != 0) - { - gSprites[task->data[0]].pos1.y -= task->data[9]; - } - DestroyAnimVisualTask(taskId); - } - } - break; - } -} - -void sub_80D0C88(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - struct UnknownTaskStruct sp; - s16 i; - task->data[0] = sub_8077FC0(gBattleAnimBankTarget) + 32; - task->data[1] = 4; - task->data[2] = 0; - task->data[3] = 0; - task->data[4] = 0; - task->data[5] = 0; - task->data[15] = sub_807A100(gBattleAnimBankTarget, 0); - if (GetBankIdentity_permutated(gBattleAnimBankTarget) == 1) - { - task->data[6] = gUnknown_030042C0; - sp.dest = (u16 *)REG_ADDR_BG1HOFS; - } - else - { - task->data[6] = gUnknown_03004288; - sp.dest = (u16 *)REG_ADDR_BG2HOFS; - } - - for (i = task->data[0] - 0x40; i <= task->data[0];i++) - { - if (i >= 0) - { - gUnknown_03004DE0[0][i] = task->data[6] + 0xF0; - gUnknown_03004DE0[1][i] = task->data[6] + 0xF0; - } - } - - sp.control = 0xa2600001; - sp.unk8 = 1; - sp.unk9 = 0; - sub_80895F8(sp); - task->func = sub_80D0D68; -} - -#ifdef NONMATCHING -void sub_80D0D68(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - - switch (task->data[4]) - { - case 0: - if (++task->data[5] > 20) - task->data[4]++; - break; - case 1: - if (++task->data[1] > 3) - { - task->data[1] = 0; - task->data[2] = task->data[3] & 3; - task->data[5] = task->data[0] - task->data[3]; - switch (task->data[2]) - { - case 0: - break; - case 1: - task->data[5] -= 2; - break; - case 2: - task->data[5] += 1; - break; - case 3: - task->data[5] += 1; - break; - } - - if (task->data[5] >= 0) - { - gUnknown_03004DE0[0][task->data[5]] = task->data[6]; - gUnknown_03004DE0[1][task->data[5]] = task->data[6]; - } - - if (++task->data[3] >= task->data[15]) - { - gUnknown_03004DC0.unk15 = 3; - DestroyAnimVisualTask(taskId); - } - } - break; - } -} -#else -__attribute__((naked)) -void sub_80D0D68(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - ldr r1, _080D0D88 @ =gTasks\n\ - adds r3, r0, r1\n\ - movs r1, 0x10\n\ - ldrsh r0, [r3, r1]\n\ - cmp r0, 0\n\ - beq _080D0D8C\n\ - cmp r0, 0x1\n\ - beq _080D0DA2\n\ - b _080D0E22\n\ - .align 2, 0\n\ -_080D0D88: .4byte gTasks\n\ -_080D0D8C:\n\ - ldrh r0, [r3, 0x12]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x12]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x14\n\ - ble _080D0E22\n\ - ldrh r0, [r3, 0x10]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x10]\n\ - b _080D0E22\n\ -_080D0DA2:\n\ - ldrh r0, [r3, 0xA]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0xA]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x3\n\ - ble _080D0E22\n\ - movs r0, 0\n\ - strh r0, [r3, 0xA]\n\ - ldrh r1, [r3, 0xE]\n\ - movs r0, 0x3\n\ - ands r0, r1\n\ - strh r0, [r3, 0xC]\n\ - ldrh r0, [r3, 0x8]\n\ - subs r0, r1\n\ - strh r0, [r3, 0x12]\n\ - movs r2, 0xC\n\ - ldrsh r1, [r3, r2]\n\ - cmp r1, 0x1\n\ - beq _080D0DD8\n\ - cmp r1, 0x1\n\ - ble _080D0DE0\n\ - cmp r1, 0x2\n\ - beq _080D0DDC\n\ - cmp r1, 0x3\n\ - beq _080D0DDC\n\ - b _080D0DE0\n\ -_080D0DD8:\n\ - subs r0, 0x2\n\ - b _080D0DDE\n\ -_080D0DDC:\n\ - adds r0, 0x1\n\ -_080D0DDE:\n\ - strh r0, [r3, 0x12]\n\ -_080D0DE0:\n\ - movs r1, 0x12\n\ - ldrsh r0, [r3, r1]\n\ - cmp r0, 0\n\ - blt _080D0E04\n\ - ldr r2, _080D0E28 @ =gUnknown_03004DE0\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - ldrh r1, [r3, 0x14]\n\ - strh r1, [r0]\n\ - movs r1, 0x12\n\ - ldrsh r0, [r3, r1]\n\ - lsls r0, 1\n\ - movs r1, 0xF0\n\ - lsls r1, 3\n\ - adds r2, r1\n\ - adds r0, r2\n\ - ldrh r1, [r3, 0x14]\n\ - strh r1, [r0]\n\ -_080D0E04:\n\ - ldrh r0, [r3, 0xE]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0xE]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - movs r2, 0x26\n\ - ldrsh r1, [r3, r2]\n\ - cmp r0, r1\n\ - blt _080D0E22\n\ - ldr r1, _080D0E2C @ =gUnknown_03004DC0\n\ - movs r0, 0x3\n\ - strb r0, [r1, 0x15]\n\ - adds r0, r4, 0\n\ - bl DestroyAnimVisualTask\n\ -_080D0E22:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080D0E28: .4byte gUnknown_03004DE0\n\ -_080D0E2C: .4byte gUnknown_03004DC0\n\ -.syntax divided\n"); -} -#endif - -void sub_80D0E30(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) - 16; - sprite->pos1.y = sub_8077FC0(gBattleAnimBankTarget) + 16; - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->data[2] = 0; - sprite->data[3] = 16; - sprite->data[4] = 0; - sprite->data[5] = sub_807A100(gBattleAnimBankTarget, 0) + 2; - sprite->data[6] = sub_8076F98(0x3F); - sprite->callback = sub_80D0E8C; -} - -void sub_80D0E8C(struct Sprite* sprite) -{ - switch (sprite->data[0]) - { - case 0: - if (++sprite->data[2] > 1) - { - sprite->data[2] = 0; - sprite->invisible = !sprite->invisible; - } - if (++sprite->data[1] > 16) - { - sprite->invisible = 0; - sprite->data[0]++; - } - break; - case 1: - if (++sprite->data[1] > 3 && sprite->data[2] < sprite->data[5]) - { - sprite->data[1] = 0; - sprite->pos1.y -= 1; - sprite->data[2]++; - if (sprite->data[2] % 10 == 0) - PlaySE12WithPanning(0xCD, sprite->data[6]); - } - sprite->data[4] += sprite->data[3]; - if (sprite->data[4] > 31) - { - sprite->data[4] = 0x40 - sprite->data[4]; - sprite->data[3] *= -1; - } - else if (sprite->data[4] <= -32) - { - sprite->data[4] = -0x40 - sprite->data[4]; - sprite->data[3] *= -1; - } - sprite->pos2.x = sprite->data[4]; - if (sprite->data[5] == sprite->data[2]) - { - sprite->data[1] = 0; - sprite->data[2] = 0; - sprite->data[0]++; - } - break; - case 2: - if (++sprite->data[2] > 1) - { - sprite->data[2] = 0; - sprite->invisible = !sprite->invisible; - } - if (++sprite->data[1] > 16) - { - sprite->invisible = 0; - move_anim_8072740(sprite); - } - break; - } -} - -void sub_80D0FD8(struct Sprite* sprite) -{ - u8 bank = 0; - u16 sp0 = 0; - u16 sp1 = 0; - u8 r4; - - if (gBattleAnimArgs[2] == 0) - bank = gBattleAnimBankAttacker; - else - bank = gBattleAnimBankTarget; - - r4 = gBattleAnimArgs[3] ^ 1; - if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2)) - { - sub_807A3FC(bank, r4, &sp0, &sp1); - if (r4 == 0) - r4 = sub_8077ABC(bank, 0); - else - r4 = sub_8077ABC(bank, 2); - - if (GetBankSide(bank) != 0) - gBattleAnimArgs[0] -= (sp0 - r4) - gBattleAnimArgs[0]; // This is weird. - else - gBattleAnimArgs[0] = sp0 - r4; - } - - sprite->callback = sub_80793C4; - sub_80793C4(sprite); -} - -void sub_80D1098(struct Sprite* sprite) -{ - if (sub_8078B5C(sprite)) - { - FreeSpriteOamMatrix(sprite); - move_anim_8072740(sprite); - } -} - -void sub_80D10B8(struct Sprite* sprite) -{ - u16 r9 = 0; - u16 r6 = 0; - s16 sp0 = 0; - s16 sp1 = 0; - u8 sp4; - u8 bankr7; - u8 bankr8; - u8 r10; - - if (gBattleAnimArgs[5] == 0) - { - bankr7 = gBattleAnimBankAttacker; - bankr8 = gBattleAnimBankTarget; - } - else - { - bankr7 = gBattleAnimBankTarget; - bankr8 = gBattleAnimBankAttacker; - } - - if (gBattleAnimArgs[6] == 0) - { - r10 = 0; - sp4 = 1; - } - else - { - r10 = 2; - sp4 = 3; - } - - if (GetBankSide(bankr7) != 0) - { - r9 = sub_8077ABC(bankr7, r10) + gBattleAnimArgs[0]; - if (IsAnimBankSpriteVisible(bankr8 ^ 2)) - sprite->subpriority = gSprites[gObjectBankIDs[bankr8 ^ 2]].subpriority - 1; - else - sprite->subpriority = gSprites[gObjectBankIDs[bankr8]].subpriority - 1; - } - else - { - r9 = sub_8077ABC(bankr7, r10) - gBattleAnimArgs[0]; - if (gMain.inBattle && IsAnimBankSpriteVisible(bankr7 ^ 2)) - { - if (gSprites[gObjectBankIDs[bankr7]].pos1.x < gSprites[gObjectBankIDs[bankr7 ^ 2]].pos1.x) - sprite->subpriority = gSprites[gObjectBankIDs[bankr7 ^ 2]].subpriority + 1; - else - sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; - } - else - { - sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; - } - - } - - r6 = sub_8077ABC(bankr7, sp4) + gBattleAnimArgs[1]; - if (gMain.inBattle && IsAnimBankSpriteVisible(bankr8 ^ 2)) - { - sub_807A3FC(bankr8, gBattleAnimArgs[6], &sp0, &sp1); - } - else - { - sp0 = sub_8077ABC(bankr8, r10); - sp1 = sub_8077ABC(bankr8, sp4); - } - - if (GetBankSide(bankr8)) - sp0 += gBattleAnimArgs[3]; - else - sp0 -= gBattleAnimArgs[3]; - - sp1 += gBattleAnimArgs[4]; - sprite->pos1.x = sprite->data[1] = r9; - sprite->pos1.y = sprite->data[3] = r6; - sprite->data[2] = sp0; - sprite->data[4] = sp1; - sprite->data[0] = gBattleAnimArgs[0]; - obj_translate_based_on_private_1_2_3_4(sprite); - sprite->callback = sub_80D1098; - sub_80D1098(sprite); -} - -void sub_80D1318(struct Sprite* sprite) -{ - u8 index = IndexOfSpritePaletteTag(0x27DB); - if (index != 0xFF) - { - BlendPalette(((index << 20) + 0x1010000) >> 16, 15, gBattleAnimArgs[5], gBattleAnimArgs[4]); - } - - StartSpriteAffineAnim(sprite, 1); - sprite->callback = sub_80793C4; - sub_80793C4(sprite); -} - -void sub_80D1368(struct Sprite* sprite) -{ - s16 r1; - sub_80787B0(sprite, 0); - r1 = (GetBankSide(gBattleAnimBankAttacker)) ? -0xA0 : 0xA0; - sprite->data[0] = 0x380; - sprite->data[1] = r1; - sprite->data[7] = gBattleAnimArgs[2]; - sprite->callback = sub_80D13AC; -} - -void sub_80D13AC(struct Sprite* sprite) -{ - s16 add; - sprite->pos2.y -= (sprite->data[0] >> 8); - sprite->pos2.x = sprite->data[1] >> 8; - sprite->data[0] -= 32; - add = (GetBankSide(gBattleAnimBankAttacker)) ? -0xA0 : 0xA0; - sprite->data[1] += add; - if (sprite->pos2.y > 0) - { - sprite->pos1.y += sprite->pos2.y; - sprite->pos1.x += sprite->pos2.x; - sprite->pos2.y = 0; - sprite->pos2.x = 0; - sprite->data[0] = 0; - StartSpriteAffineAnim(sprite, 1); - sprite->callback = sub_80D1424; - } -} - -void sub_80D1424(struct Sprite* sprite) -{ - if (sprite->data[0]++ > 19) - { - StartSpriteAffineAnim(sprite, 2); - sprite->callback = sub_80D144C; - } -} - -void sub_80D144C(struct Sprite* sprite) -{ - if (sprite->affineAnimEnded) - { - StartSpriteAffineAnim(sprite, 1); - sprite->data[0] = 0; - if (sprite->data[7] == 0) - { - sprite->oam.tileNum += 16; - sprite->callback = sub_80D14C4; - } - else - { - sprite->oam.tileNum += 32; - sprite->callback = sub_80D154C; - } - } -} - -void sub_80D14C4(struct Sprite* sprite) -{ - sprite->pos2.y -= 2; - if (++sprite->data[0] == 9) - { - sprite->data[0] = 16; - sprite->data[1] = 0; - REG_BLDCNT = 0x3F40; - REG_BLDALPHA = sprite->data[0]; - sprite->callback = sub_80D1504; - } -} - -void sub_80D1504(struct Sprite* sprite) -{ - if (sprite->data[1]++ % 3 == 0) - { - sprite->data[0]--; - REG_BLDALPHA = sprite->data[0] | ((16 - sprite->data[0]) << 8); - if (sprite->data[0] == 0) - sprite->callback = sub_80D154C; - } -} - -void sub_80D154C(struct Sprite* sprite) -{ - if ((u16)gBattleAnimArgs[7] == 0xFFFF) - { - sprite->invisible = 1; - if (sprite->data[7] == 0) - sprite->callback = sub_80D158C; - else - sprite->callback = move_anim_8072740; - } -} - -void sub_80D158C(struct Sprite* sprite) -{ - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - move_anim_8072740(sprite); -} - -void sub_80D15A4(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - u8 spriteId = GetAnimBankSpriteId(0); - task->data[0] = spriteId; - sub_80798F4(task, spriteId, &gUnknown_083D79BC); - task->func = sub_80D15E0; -} - -void sub_80D15E0(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - if (sub_807992C(task) == 0) - { - gSprites[task->data[0]].pos2.y = 0; - gSprites[task->data[0]].invisible = 1; - DestroyAnimVisualTask(taskId); - } -} - -void sub_80D1638(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - task->data[0] = 0; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - task->data[12] = 3; - if (GetBankSide(gBattleAnimBankTarget) == 0) - { - task->data[13] = 0xFFFF; - task->data[14] = 8; - } - else - { - task->data[13] = 1; - task->data[14] = -8; - } - - task->data[15] = GetAnimBankSpriteId(1); - task->func = sub_80D16A0; -} - -void sub_80D16A0(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - - switch (task->data[0]) - { - case 0: - gSprites[task->data[15]].pos2.x += task->data[14]; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - task->data[0]++; - break; - case 1: - if (++task->data[1] > 1) - { - task->data[1] = 0; - task->data[2]++; - if (task->data[2] & 1) - gSprites[task->data[15]].pos2.x += 6; - else - gSprites[task->data[15]].pos2.x -= 6; - - if (++task->data[3] > 4) - { - if (task->data[2] & 1) - gSprites[task->data[15]].pos2.x -= 6; - - task->data[0]++; - } - } - break; - case 2: - if (--task->data[12] != 0) - task->data[0] = 0; - else - task->data[0]++; - break; - case 3: - gSprites[task->data[15]].pos2.x += task->data[13]; - if (gSprites[task->data[15]].pos2.x == 0) - DestroyAnimVisualTask(taskId); - break; - } -} - -void sub_80D17C4(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - task->data[0] = 0; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - task->data[4] = 1; - task->data[13] = 14; - task->data[14] = 2; - task->data[15] = GetAnimBankSpriteId(0); - task->func = sub_80D1808; -} - -void sub_80D1808(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - if (task->data[0] == 0 && ++task->data[1] > task->data[4]) - { - task->data[1] = 0; - if (++task->data[2] & 1) - gSprites[task->data[15]].invisible = 0; - else - gSprites[task->data[15]].invisible = 1; - - if (++task->data[3] >= task->data[13]) - { - if (++task->data[4] < task->data[14]) - { - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - } - else - { - gSprites[task->data[15]].invisible = 0; - DestroyAnimVisualTask(taskId); - } - } - } -} - -void sub_80D18D4(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - task->data[0] = 0; - task->data[1] = 4; - task->data[2] = 0; - task->data[3] = 0; - task->data[4] = 0; - task->data[5] = 0; - task->data[6] = 0; - task->data[7] = 0; - task->data[8] = 0; - task->data[13] = 0; - task->data[14] = sub_8077ABC(gBattleAnimBankAttacker, 0); - task->data[15] = sub_8077ABC(gBattleAnimBankAttacker, 1); - task->func = sub_80D1930; -} - -void sub_80D1930(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - switch (task->data[8]) - { - case 0: - if (++task->data[4] > 1) - { - task->data[4] = 0; - task->data[5] = (task->data[5] + 1) & 1; - if (++task->data[6] > 20) - { - if (task->data[7] == 0) - { - task->data[6] = 0; - task->data[8] = 1; - } - else - task->data[8] = 2; - } - } - break; - case 1: - task->data[5] = 0; - if (++task->data[4] > 20) - { - task->data[7] = 1; - task->data[8] = 0; - } - break; - case 2: - task->data[5] = 1; - break; - } - - switch (task->data[0]) - { - case 0: - if (++task->data[1] > 4) - { - u8 spriteId; - task->data[1] = 0; - spriteId = CreateSprite(&gSpriteTemplate_83D79E8, task->data[14], task->data[15], 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].data[0] = taskId; - gSprites[spriteId].data[1] = 13; - gSprites[spriteId].pos2.x = gUnknown_083D7A00[task->data[2]][0]; - gSprites[spriteId].pos2.y = gUnknown_083D7A00[task->data[2]][1]; - task->data[13]++; - if (++task->data[2] > 3) - { - task->data[2] = 0; - if (++task->data[3] > 5) - task->data[0]++; - } - } - } - break; - case 1: - if (task->data[13] == 0) - DestroyAnimVisualTask(taskId); - break; - } -} - -void sub_80D1A70(struct Sprite* sprite) -{ - sprite->invisible = gTasks[sprite->data[0]].data[5]; - if (sprite->animEnded) - { - gTasks[sprite->data[0]].data[sprite->data[1]]--; - DestroySprite(sprite); - } -} - -void sub_80D1ADC(u8 taskId) -{ - int i; - u8 sp[8]; - void* src; - void* dest; - void* what; - sp[0] = IndexOfSpritePaletteTag(0x27DE); - for (i = 1; i <= 4; i++) - { - sp[i] = AllocSpritePalette(0x2710 - i); - } - - src = &gBattleAnimSpritePalette_206; - dest = (NotInBattle()) ? gSharedMem + 0x18000 - 0x3800: gSharedMem + 0x18000; - LZDecompressWram(src, dest); - for (i = 0; i <= 4; i++) - { - what = ((NotInBattle()) ? gSharedMem + 0x14800 : gSharedMem + 0x18000) + (i << 5); - LoadPalette(what, (u16)((sp[i] << 4) + 0x100), 32); - } - - DestroyAnimVisualTask(taskId); -} - -void sub_80D1B80(u8 taskId) -{ - int i; - for (i = 0; i < 5; i++) - { - FreeSpritePaletteByTag(gUnknown_083D7A5C[i]); - } - - DestroyAnimVisualTask(taskId); -} - -void sub_80D1BA8(struct Sprite* sprite, u8 a, u8 b) -{ - u8 tile; - tile = (b & 1); - tile = ((-tile | tile) >> 31) & 32; - sprite->oam.tileNum += tile + (a << 2); - sprite->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_083D7A5C[b >> 1]); -} - -void sub_80D1C08(struct Sprite* sprite) -{ - sub_80787B0(sprite, 0); - if (GetBankSide(gBattleAnimBankAttacker) != 0) - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - - sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = sub_8077ABC(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[2]; - sprite->data[4] = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[3]; - sprite->callback = sub_8078B34; - StoreSpriteCallbackInData(sprite, move_anim_8072740); - sub_80D1BA8(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]); -} - -void sub_80D1C80(struct Sprite* sprite) -{ - if (++sprite->data[0] == 1) - sub_80787B0(sprite, 0); - - sprite->pos2.x = Sin(sprite->data[1], 8); - sprite->pos2.y = sprite->data[2] >> 8; - sprite->data[1] = (sprite->data[1] + 7) & 0xFF; - sprite->data[2] -= 0x80; - if (sprite->data[0] == 0x3C) - move_anim_8072740(sprite); -} - -void sub_80D1CD0(u8 taskId) -{ - int zero; - bool8 result = NotInBattle(); - u16 var = 0xF0; - if (result) - { - var = 0x98; - zero = 0; - } - else - { - zero = 0; - } - - gUnknown_030042C4 = var; - gUnknown_03004240 = 0xA0; - REG_WIN0H = var; - REG_WIN0V = 0xA0; - REG_WININ = 0x3F1F; - REG_WINOUT = 0x3F3F; - REG_BLDCNT = 0xC8; - REG_BLDY = 0x10; - gTasks[taskId].data[0] = zero; - gTasks[taskId].data[1] = var; - gTasks[taskId].func = sub_80D1D48; -} - -void sub_80D1D48(u8 taskId) -{ - gTasks[taskId].data[0] += 13; - gTasks[taskId].data[1] -= 13; - if (gTasks[taskId].data[0] >= gTasks[taskId].data[1]) - { - gUnknown_030042C4 = 0; - gTasks[taskId].func = sub_80D1D9C; - } - else - { - gUnknown_030042C4 = gTasks[taskId].data[1] | (gTasks[taskId].data[0] << 8); - } -} - -void sub_80D1D9C(u8 taskId) -{ - if (++gTasks[taskId].data[10] == 5) - { - gTasks[taskId].data[11] = 0x88; - RequestSpriteCopy((u8 *)(&gTasks[taskId].data[11]), (u8 *)(®_BLDCNT), 2); - BlendPalettes(sub_80791A8(1, 0, 0, 0, 0, 0, 0), 16, RGB(31, 31, 31)); - } - else if (gTasks[taskId].data[10] > 4) - { - gUnknown_030042C4 = 0; - gUnknown_03004240 = 0; - REG_WININ = 0x3F3F; - REG_WINOUT = 0x3F3F; - REG_BLDCNT = 0; - REG_BLDY = 0; - DestroyAnimVisualTask(taskId); - } -} - -void sub_80D1E38(u8 taskId) -{ - u8 spriteId = GetAnimBankSpriteId(1); - if (++gTasks[taskId].data[0] == 1) - { - sub_80798F4(&gTasks[taskId], GetAnimBankSpriteId(1), &gUnknown_083D7A98); - gSprites[spriteId].pos2.x = 4; - } - else - { - gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; - if (sub_807992C(&gTasks[taskId]) == 0) - { - gSprites[spriteId].pos2.x = 0; - gSprites[spriteId].pos2.y = 0; - DestroyAnimVisualTask(taskId); - } - } -} - -void sub_80D1EC8(u8 taskId) -{ - u8 spriteId = GetAnimBankSpriteId(0); - if (++gTasks[taskId].data[0] == 1) - { - sub_80798F4(&gTasks[taskId], GetAnimBankSpriteId(0), &gUnknown_083D7A98); - gSprites[spriteId].pos2.x = 4; - } - else - { - gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; - if (sub_807992C(&gTasks[taskId]) == 0) - { - gSprites[spriteId].pos2.x = 0; - gSprites[spriteId].pos2.y = 0; - DestroyAnimVisualTask(taskId); - } - } -} - -void sub_80D1F58(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - sprite->data[0] = 0x5F; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); - obj_translate_based_on_private_1_2_3_4(sprite); - sprite->callback = sub_80D1FA4; -} - -void sub_80D1FA4(struct Sprite* sprite) -{ - if (sub_8078B5C(sprite) == 0) - { - sprite->pos2.y += Sin(sprite->data[5], 14); - sprite->data[5] = (sprite->data[5] + 4) & 0xFF; - } - else - { - move_anim_8072740(sprite); - } -} - -void sub_80D1FDC(struct Sprite* sprite) -{ - if (sprite->data[0] == 0) - { - sprite->data[1] = gBattleAnimArgs[0]; - sprite->data[2] = gBattleAnimArgs[1]; - sprite->data[0]++; - } - else - { - sprite->data[4] += sprite->data[1]; - sprite->pos2.x = sprite->data[4] >> 8; - sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]); - sprite->data[3] = (sprite->data[3] + 3) & 0xFF; - if (sprite->data[3] > 0x64) - { - sprite->invisible = sprite->data[3] % 2; - } - - if (sprite->data[3] > 0x78) - { - move_anim_8072740(sprite); - } - } -} - -void sub_80D2064(struct Sprite* sprite) -{ - sprite->pos1.x = gBattleAnimArgs[0]; - sprite->pos1.y = 0xA0; - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = gBattleAnimArgs[1]; - sprite->callback = sub_80782D8; - StoreSpriteCallbackInData(sprite, sub_80D2094); -} - -void sub_80D2094(struct Sprite* sprite) -{ - s16 y; - sprite->data[2] += sprite->data[1]; - sprite->pos2.y = -((u16)sprite->data[2] >> 8); - sprite->pos2.x = Sin(sprite->data[3], 4); - sprite->data[3] = (sprite->data[3] + 3) & 0xFF; - y = sprite->pos1.y + sprite->pos2.y; - if (y <= 0x48) - { - sprite->invisible = sprite->data[3] % 2; - if (y <= 0x40) - move_anim_8072740(sprite); - } -} - -void sub_80D2100(u8 taskId) -{ - struct Struct_sub_8078914 subStruct; - u8* tempvar; - REG_BLDCNT = 0x3F42; - REG_BLDALPHA = 0x1000; - REG_BG1CNT_BITFIELD.priority = 3; - REG_BG1CNT_BITFIELD.screenSize = 0; - if (!NotInBattle()) - REG_BG1CNT_BITFIELD.charBaseBlock = 1; - - gUnknown_030042C0 = 0; - gUnknown_030041B4 = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - sub_8078914(&subStruct); - tempvar = subStruct.field_4; - DmaFill32(3, 0x0, tempvar, 0x1000); - LZDecompressVram(&gAttractTilemap, tempvar); - LZDecompressVram(&gAttractGfx, subStruct.field_0); - LoadCompressedPalette(&gAttractPal, subStruct.field_8 << 4, 32); - if (NotInBattle()) - sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); - - gTasks[taskId].func = sub_80D21F0; -} - -void sub_80D21F0(u8 taskId) -{ - struct Struct_sub_8078914 subStruct; - - switch (gTasks[taskId].data[12]) - { - case 0: - if (++gTasks[taskId].data[10] == 4) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[11]++; - REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); - if (gTasks[taskId].data[11] == 16) - { - gTasks[taskId].data[12]++; - gTasks[taskId].data[11] = 0; - } - } - break; - case 1: - if (++gTasks[taskId].data[11] == 0x8D) - { - gTasks[taskId].data[11] = 16; - gTasks[taskId].data[12]++; - } - break; - case 2: - if (++gTasks[taskId].data[10] == 4) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[11]--; - REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); - if (gTasks[taskId].data[11] == 0) - { - gTasks[taskId].data[12]++; - gTasks[taskId].data[11] = 0; - } - } - break; - case 3: - sub_8078914(&subStruct); - { - u8 *addr = subStruct.field_0; - u32 size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - } - DmaClear32(3, subStruct.field_4, 0x800); - if (!NotInBattle()) - REG_BG1CNT_BITFIELD.charBaseBlock = 0; - - gTasks[taskId].data[12]++; - // fall through - case 4: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BG1CNT_BITFIELD.priority = 1; - DestroyAnimVisualTask(taskId); - break; - } -} - -void sub_80D23B4(u8 taskId) -{ - struct Struct_sub_8078914 subStruct; - u8* tempvar; - REG_BLDCNT = 0x3F42; - REG_BLDALPHA = 0x1000; - REG_BG1CNT_BITFIELD.priority = 1; - REG_BG1CNT_BITFIELD.screenSize = 0; - if (!NotInBattle()) - REG_BG1CNT_BITFIELD.charBaseBlock = 1; - - gUnknown_030042C0 = 0; - gUnknown_030041B4 = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - sub_8078914(&subStruct); - tempvar = subStruct.field_4; - DmaFill32(3, 0x0, tempvar, 0x1000); - if (NotInBattle()) - LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceContest, subStruct.field_4); - else if (GetBankSide(gBattleAnimBankTarget) == 1) - LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFacePlayer, subStruct.field_4); - else - LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceOpponent, subStruct.field_4); - - LZDecompressVram(&gBattleAnimBackgroundImage_ScaryFace, subStruct.field_0); - LoadCompressedPalette(&gBattleAnimBackgroundPalette_ScaryFace, subStruct.field_8 << 4, 32); - if (NotInBattle()) - sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); - - gTasks[taskId].func = sub_80D24E0; -} - -void sub_80D24E0(u8 taskId) -{ - struct Struct_sub_8078914 subStruct; - - switch (gTasks[taskId].data[12]) - { - case 0: - if (++gTasks[taskId].data[10] == 2) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[11]++; - REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); - if (gTasks[taskId].data[11] == 14) - { - gTasks[taskId].data[12]++; - gTasks[taskId].data[11] = 0; - } - } - break; - case 1: - if (++gTasks[taskId].data[11] == 0x15) - { - gTasks[taskId].data[11] = 14; - gTasks[taskId].data[12]++; - } - break; - case 2: - if (++gTasks[taskId].data[10] == 2) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[11]--; - REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); - if (gTasks[taskId].data[11] == 0) - { - gTasks[taskId].data[12]++; - gTasks[taskId].data[11] = 0; - } - } - break; - case 3: - sub_8078914(&subStruct); - { - u8 *addr = subStruct.field_0; - u32 size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - } - DmaClear32(3, subStruct.field_4, 0x800); - if (!NotInBattle()) - REG_BG1CNT_BITFIELD.charBaseBlock = 0; - - gTasks[taskId].data[12]++; - // fall through - case 4: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BG1CNT_BITFIELD.priority = 1; - DestroyAnimVisualTask(taskId); - break; - } -} - -void sub_80D26A4(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); - sprite->affineAnimPaused = 1; - sprite->data[0] = gBattleAnimArgs[0]; - sprite->data[1] = gBattleAnimArgs[1]; - sprite->data[7] = sub_8079E90(gBattleAnimBankAttacker); - sprite->callback = sub_80D2704; - sub_80D2704(sprite); -} - -void sub_80D2704(struct Sprite* sprite) -{ - if ((u16)(sprite->data[1] - 0x40) <= 0x7F) - sprite->subpriority = sprite->data[7] + 1; - else - sprite->subpriority = sprite->data[7] - 1; - - sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8); - sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8); - sprite->data[1] = (sprite->data[1] + 9) & 0xFF; - switch (sprite->data[5]) - { - case 1: - sprite->data[2] -= 0x400; - sprite->data[3] -= 0x100; - if (++sprite->data[4] == sprite->data[0]) - { - sprite->data[5] = 2; - return; - } - break; - case 0: - sprite->data[2] += 0x400; - sprite->data[3] += 0x100; - if (++sprite->data[4] == sprite->data[0]) - { - sprite->data[4] = 0; - sprite->data[5] = 1; - } - break; - } - - if ((u16)gBattleAnimArgs[7] == 0xFFFF) - move_anim_8072740(sprite); -} - -void sub_80D27E0(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); - sprite->data[0] = Sin(gBattleAnimArgs[0], 10); - sprite->data[1] = Cos(gBattleAnimArgs[0], 7); - sprite->callback = sub_80D2834; -} - -void sub_80D2834(struct Sprite* sprite) -{ - sprite->pos2.x += sprite->data[0]; - sprite->pos2.y += sprite->data[1]; - if (sprite->pos1.x + sprite->pos2.x + 16 > 0x110u || sprite->pos1.y + sprite->pos2.y > 0xA0 || sprite->pos1.y + sprite->pos2.y < -16) - move_anim_8072740(sprite); -} - -void sub_80D287C(struct Sprite* sprite) -{ - sprite->pos2.x += sprite->data[0]; - sprite->pos2.y += sprite->data[1]; - if (sprite->data[3]++ >= sprite->data[2]) - move_anim_8072740(sprite); -} - -void sub_80D28AC(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); - sprite->data[0] = Sin(gBattleAnimArgs[0], 10); - sprite->data[1] = Cos(gBattleAnimArgs[0], 7); - sprite->data[2] = gBattleAnimArgs[1]; - sprite->callback = sub_80D287C; -} - -void sub_80D2904(struct Sprite* sprite) -{ - if (sprite->animEnded) - move_anim_8072740(sprite); -} - -void sub_80D2920(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - sprite->callback = sub_80D2904; -} - -void sub_80D2938(struct Sprite* sprite) -{ - s16 r5; - if (sprite->data[0] == 0) - { - sprite->pos1.x += gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - } - - sprite->data[0]++; - r5 = (sprite->data[0] * 10) & 0xFF; - sprite->pos2.x = Sin(r5, 0x50) >> 8; - if (sprite->data[0] <= 0x4F) - sprite->pos2.y = (sprite->data[0] / 2) + (Cos(r5, 0x50) >> 8); - - if (sprite->data[0] > 0x5A) - { - sprite->data[2]++; - sprite->pos2.x -= sprite->data[2] / 2; - } - - if (sprite->data[0] > 0x64) - move_anim_8072740(sprite); -} - -void sub_80D29CC(struct Sprite* sprite) -{ - sprite->data[5]++; - sprite->pos2.x = Sin(sprite->data[3], 5); - sprite->pos2.y = sprite->data[5] / 2; - sprite->data[3] = (sprite->data[3] + 3) & 0xFF; - if (sprite->data[5] > 20) - sprite->invisible = sprite->data[5] % 2; - - if (sprite->data[5] > 30) - move_anim_8072740(sprite); -} - -void sub_80D2A38(struct Sprite* sprite) -{ - if (sprite->data[0] == 0) - { - sprite->data[1] = gBattleAnimArgs[0]; - sprite->data[2] = gBattleAnimArgs[1]; - sprite->data[0]++; - } - else - { - sprite->data[4] += sprite->data[1]; - sprite->pos2.x = sprite->data[4] >> 8; - sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]); - sprite->data[3] = (sprite->data[3] + 3) & 0xFF; - if (sprite->data[3] > 0x46) - { - sprite->callback = sub_80D29CC; - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data[3] = Random() % 0xB4; - } - } -} - -/* void sub_80D2ABC(struct Sprite* sprite) -{ - int var; - s16 var2; - int var3; - if (sprite->data[3] == 0) - { - sprite->pos1.x += gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - StartSpriteAnim(sprite, 0); - sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) - 1; - sprite->data[2] = 1; - } - - sprite->data[0] += sprite->data[2]; - var = sprite->data[0] * 4; - if (var < 0) - var += 0xFF; - - sprite->data[1] = (sprite->data[0] * 4) -(((var) >> 8) << 8); - if (sprite->data[1] < 0) - sprite->data[1] = 0; - - var3 = sprite->data[1]; - var2 = sprite->data[0]; - var2 /= 4; - sprite->pos2.x = Cos(var3, 30 - var2); - var3 = sprite->data[1]; - var2 = sprite->data[0] / 8; - sprite->pos2.x = Sin(var3, 10 - var2); - if (sprite->data[1] > 0x80 && sprite->data[2] > 0) - sprite->data[2] = 0xFFFF; -} */
\ No newline at end of file diff --git a/src/data/text/move_descriptions_de.h b/src/data/text/move_descriptions_de.h new file mode 100644 index 000000000..854336295 --- /dev/null +++ b/src/data/text/move_descriptions_de.h @@ -0,0 +1,1771 @@ +static const u8 MoveDescription_Pound[] = _( + "Ein Hieb mit den Vorder-\n" + "beinen oder dem Schweif."); + +static const u8 MoveDescription_KarateChop[] = _( + "Gute Möglichkeit, einen\n" + "Volltreffer zu landen."); + +static const u8 MoveDescription_DoubleSlap[] = _( + "Trifft den Gegner 2 - 5-mal\n" + "hintereinander."); + +static const u8 MoveDescription_CometPunch[] = _( + "Trifft den Gegner 2 - 5-mal\n" + "hintereinander."); + +static const u8 MoveDescription_MegaPunch[] = _( + "Ein unglaublich kräftiger\n" + "Hieb."); + +static const u8 MoveDescription_PayDay[] = _( + "Wirft Münzen auf Gegner.\n" + "Geld wird erstattet."); + +static const u8 MoveDescription_FirePunch[] = _( + "Schlag, der dem Gegner evtl.\n" + "Verbrennungen zufügt."); + +static const u8 MoveDescription_IcePunch[] = _( + "Ein Schlag, der den Gegner\n" + "evtl. einfriert."); + +static const u8 MoveDescription_ThunderPunch[] = _( + "Schlag, der den Gegner evtl.\n" + "paralysiert."); + +static const u8 MoveDescription_Scratch[] = _( + "Der Gegner wird mit\n" + "scharfen Klauen zerkratzt."); + +static const u8 MoveDescription_ViceGrip[] = _( + "Umklammert den Gegner mit\n" + "großen, kräftigen Zangen."); + +static const u8 MoveDescription_Guillotine[] = _( + "Kräftige Scheren-Attacke.\n" + "Führt evtl. zum K.O."); + +static const u8 MoveDescription_RazorWind[] = _( + "Eine Attacke, die auf 2\n" + "Runden basiert."); + +static const u8 MoveDescription_SwordsDance[] = _( + "Erhöht den Angriffs-Wert\n" + "drastisch."); + +static const u8 MoveDescription_Cut[] = _( + "Trifft den Gegner mit\n" + "Klauen, Scheren o. ä."); + +static const u8 MoveDescription_Gust[] = _( + "Trifft den Gegner mit Wind-\n" + "stoß durch Flügelschlag."); + +static const u8 MoveDescription_WingAttack[] = _( + "Trifft den Gegner mit weit\n" + "gespreizten Flügeln."); + +static const u8 MoveDescription_Whirlwind[] = _( + "Weht Gegner weg und be-\n" + "endet den Kampf in Wildnis."); + +static const u8 MoveDescription_Fly[] = _( + "Steigt empor in der 1. Runde\n" + "und trifft Gegner in der 2."); + +static const u8 MoveDescription_Bind[] = _( + "Umklammert und trifft den\n" + "Gegner 2 - 5-mal."); + +static const u8 MoveDescription_Slam[] = _( + "Schlag mit einem langen\n" + "Schweif, einer Ranke o. ä."); + +static const u8 MoveDescription_VineWhip[] = _( + "Peitschenähnlicher Schlag\n" + "mit Ranken."); + +static const u8 MoveDescription_Stomp[] = _( + "Stampfen mit Fuß. Gegner\n" + "schreckt evtl. zurück."); + +static const u8 MoveDescription_DoubleKick[] = _( + "Doppeltritt. Der Gegner\n" + "wird zweimal getroffen."); + +static const u8 MoveDescription_MegaKick[] = _( + "Ein extrem heftiger Tritt."); + +static const u8 MoveDescription_JumpKick[] = _( + "Sprung-Tritt. Selbstschä-\n" + "digung bei Misserfolg."); + +static const u8 MoveDescription_RollingKick[] = _( + "Schneller Tritt aus der\n" + "Drehung."); + +static const u8 MoveDescription_SandAttack[] = _( + "Senkt Genauigkeit des Geg-\n" + "ners durch Sand."); + +static const u8 MoveDescription_Headbutt[] = _( + "Rammt den Gegner und lässt\n" + "ihn evtl. zurückschrecken."); + +static const u8 MoveDescription_HornAttack[] = _( + "Spießt den Gegner mit\n" + "spitzen Hörnern auf."); + +static const u8 MoveDescription_FuryAttack[] = _( + "Spießt den Gegner 2 - 5-mal\n" + "mit spitzen Hörnern auf."); + +static const u8 MoveDescription_HornDrill[] = _( + "K.O.-Attacke, die ein Horn\n" + "als Bohrer einsetzt."); + +static const u8 MoveDescription_Tackle[] = _( + "Trifft den Gegner mit vollem\n" + "Körpereinsatz."); + +static const u8 MoveDescription_BodySlam[] = _( + "Körper-Ramme, kann\n" + "Paralyse hervorrufen."); + +static const u8 MoveDescription_Wrap[] = _( + "Umwickelt Gegner 2 - 5-mal\n" + "mit Ranken o. ä."); + +static const u8 MoveDescription_TakeDown[] = _( + "Rücksichtslose Attacke,\n" + "mit Selbstschädigung."); + +static const u8 MoveDescription_Thrash[] = _( + "Attacke in 2 bis 3 Runden,\n" + "die Anwender verwirrt."); + +static const u8 MoveDescription_DoubleEdge[] = _( + "Lebensgefährlicher Angriff\n" + "mit Selbstschädigung."); + +static const u8 MoveDescription_TailWhip[] = _( + "Hieb mit dem Schweif, senkt\n" + "die VERT. des Gegners."); + +static const u8 MoveDescription_PoisonSting[] = _( + "Angriff mit Widerhaken,\n" + "kann Gegner vergiften."); + +static const u8 MoveDescription_Twineedle[] = _( + "Stacheln an den Vorderbei-\n" + "nen treffen Gegner 2-mal."); + +static const u8 MoveDescription_PinMissile[] = _( + "Spitze Nadeln treffen den\n" + "Gegner 2 - 5-mal."); + +static const u8 MoveDescription_Leer[] = _( + "Gegners VERT.-Wert wird\n" + "durch Blick gesenkt."); + +static const u8 MoveDescription_Bite[] = _( + "Beißt zu und lässt den Geg-\n" + "ner evtl. zurückschrecken."); + +static const u8 MoveDescription_Growl[] = _( + "Knurren, das den ANGR.-Wert\n" + "des Gegners senkt."); + +static const u8 MoveDescription_Roar[] = _( + "Verjagt den Gegner und be-\n" + "endet den Kampf in Wildnis."); + +static const u8 MoveDescription_Sing[] = _( + "Ein Lied, das den Gegner\n" + "in tiefen Schlaf versetzt."); + +static const u8 MoveDescription_Supersonic[] = _( + "Ausstoß bizarrer Schallwel-\n" + "len. Verwirrt Gegner evtl."); + +static const u8 MoveDescription_SonicBoom[] = _( + "Schockwellen. Richten immer\n" + "20 KP Schaden an."); + +static const u8 MoveDescription_Disable[] = _( + "Psycho-Attacke. Blockiert\n" + "eine Attacke des Gegners."); + +static const u8 MoveDescription_Acid[] = _( + "Versprüht ätzende Flüssig-\n" + "keit, senkt evtl. VERT."); + +static const u8 MoveDescription_Ember[] = _( + "Schwache Feuer-Attacke.\n" + "Verbrennt Gegner evtl."); + +static const u8 MoveDescription_Flamethrower[] = _( + "Starke Feuer-Attacke.\n" + "Verbrennt Gegner evtl."); + +static const u8 MoveDescription_Mist[] = _( + "Nebel, der die Änderung der\n" + "Werte verhindert."); + +static const u8 MoveDescription_WaterGun[] = _( + "Der Gegner wird mit Wasser\n" + "bespritzt."); + +static const u8 MoveDescription_HydroPump[] = _( + "Spritzt Wasser mit\n" + "Hochdruck auf den Gegner."); + +static const u8 MoveDescription_Surf[] = _( + "Eine riesige Welle bricht\n" + "über den Gegner herein."); + +static const u8 MoveDescription_IceBeam[] = _( + "Gegner wird von Eisstrahl\n" + "getroffen, friert evtl. ein."); + +static const u8 MoveDescription_Blizzard[] = _( + "Ein Schneesturm, der den\n" + "Gegner einfrieren kann."); + +static const u8 MoveDescription_Psybeam[] = _( + "Feuert einen Strahl ab, der\n" + "Gegner verwirren kann."); + +static const u8 MoveDescription_BubbleBeam[] = _( + "Versprüht Blasen, die den\n" + "INIT.-Wert evtl. senken."); + +static const u8 MoveDescription_AuroraBeam[] = _( + "Regenbogenfarbener Strahl,\n" + "senkt evtl. ANGR.-Wert."); + +static const u8 MoveDescription_HyperBeam[] = _( + "Starke Attacke. Angreifer\n" + "setzt eine Runde aus."); + +static const u8 MoveDescription_Peck[] = _( + "Greift Gegner mit dem\n" + "Schnabel an."); + +static const u8 MoveDescription_DrillPeck[] = _( + "Attacke, bei der der Schna-\n" + "bel als Bohrer dient."); + +static const u8 MoveDescription_Submission[] = _( + "Rücksichtsloser Rempler. \n" + "Schädigt auch Angreifer."); + +static const u8 MoveDescription_LowKick[] = _( + "Tritt, der massigen Gegnern\n" + "mehr Schaden zufügt."); + +static const u8 MoveDescription_Counter[] = _( + "Kontert physischen Tref-\n" + "fer mit doppelter Kraft."); + +static const u8 MoveDescription_SeismicToss[] = _( + "Richtet Schaden gemäß\n" + "Level d. Angreifers an."); + +static const u8 MoveDescription_Strength[] = _( + "Erzeugt enorme Kraft und\n" + "rammt den Gegner."); + +static const u8 MoveDescription_Absorb[] = _( + "Attacke, die die Hälfte des\n" + "Schadens absorbiert."); + +static const u8 MoveDescription_MegaDrain[] = _( + "Attacke, die die Hälfte des\n" + "Schadens absorbiert."); + +static const u8 MoveDescription_LeechSeed[] = _( + "Gegner wird bepflanzt und\n" + "verliert jede Runde KP."); + +static const u8 MoveDescription_Growth[] = _( + "Der Körper wächst und\n" + "SPEZ. ANGR. wird erhöht."); + +static const u8 MoveDescription_RazorLeaf[] = _( + "Trifft Gegner mit Blättern.\n" + "Hohe Volltrefferquote."); + +static const u8 MoveDescription_SolarBeam[] = _( + "Absorbiert Licht in der 1.\n" + "Runde, 2. Runde Angriff."); + +static const u8 MoveDescription_PoisonPowder[] = _( + "Verstreut giftigen Puder,\n" + "der Gegner vergiften kann."); + +static const u8 MoveDescription_StunSpore[] = _( + "Verstreut Puder, der den\n" + "Gegner evtl. paralysiert."); + +static const u8 MoveDescription_SleepPowder[] = _( + "Verstreut Puder, der Geg.\n" + "evtl. in Schlaf versetzt."); + +static const u8 MoveDescription_PetalDance[] = _( + "Angriff in 2-3 Runden.\n" + "Angreifer wird verwirrt."); + +static const u8 MoveDescription_StringShot[] = _( + "Umwickelt Gegner mit Faden\n" + "und senkt INIT.-Wert."); + +static const u8 MoveDescription_DragonRage[] = _( + "Stößt Schockwellen aus, die\n" + "40 KP Schaden anrichten."); + +static const u8 MoveDescription_FireSpin[] = _( + "Schließt Gegner für 2-5\n" + "Runden in Feuerkreis ein."); + +static const u8 MoveDescription_ThunderShock[] = _( + "Elektro-Attacke. Gegner\n" + "evtl. paralysiert."); + +static const u8 MoveDescription_Thunderbolt[] = _( + "Starke Elektro-Attacke,\n" + "Gegner evtl. paralysiert."); + +static const u8 MoveDescription_ThunderWave[] = _( + "Ein schwacher Stromstoß,\n" + "der den Gegner paralysiert."); + +static const u8 MoveDescription_Thunder[] = _( + "Elektro-Attacke, die den\n" + "Gegner evtl. paralysiert."); + +static const u8 MoveDescription_RockThrow[] = _( + "Wirft kleine Steine auf den\n" + "Gegner."); + +static const u8 MoveDescription_Earthquake[] = _( + "Mächtiges Beben. Ist bei\n" + "fliegenden Feinden nutzlos."); + +static const u8 MoveDescription_Fissure[] = _( + "Sofort-K.O. Wirft Gegner\n" + "in Gebirgsspalte."); + +static const u8 MoveDescription_Dig[] = _( + "Gräbt sich in der 1. Runde\n" + "ein und trifft in der 2."); + +static const u8 MoveDescription_Toxic[] = _( + "Vergiftet den Gegner mit \n" + "einem starken Toxin."); + +static const u8 MoveDescription_Confusion[] = _( + "Psycho-Attacke, die den\n" + "Gegner evtl. verwirrt."); + +static const u8 MoveDescription_Psychic[] = _( + "Starke Psycho-Attacke, die\n" + "evtl. SPEZ. VERT. senkt."); + +static const u8 MoveDescription_Hypnosis[] = _( + "Hypno-Attacke, die Gegner\n" + "evtl. in Schlaf versetzt."); + +static const u8 MoveDescription_Meditate[] = _( + "Friedliche Meditation, um\n" + "ANGR.-Wert zu steigern."); + +static const u8 MoveDescription_Agility[] = _( + "Entspannt den Körper, um\n" + "INIT.-Wert. zu steigern."); + +static const u8 MoveDescription_QuickAttack[] = _( + "Sehr schneller Angriff mit\n" + "Erstschlaggarantie."); + +static const u8 MoveDescription_Rage[] = _( + "Erhöht ANGR. des Anwenders\n" + "bei jedem gegn. Treffer."); + +static const u8 MoveDescription_Teleport[] = _( + "Psycho-Angriff, um sofort\n" + "aus einem Kampf zu fliehen."); + +static const u8 MoveDescription_NightShade[] = _( + "Richtet Schaden gemäß\n" + "Level d. Angreifers an."); + +static const u8 MoveDescription_Mimic[] = _( + "Kopiert eine zuvor ausge-\n" + "führte Attacke d. Gegners."); + +static const u8 MoveDescription_Screech[] = _( + "Stößt einen Schrei aus, um\n" + "gegn. VERT. zu senken."); + +static const u8 MoveDescription_DoubleTeam[] = _( + "Erzeugt Ebenbilder, um \n" + "Fluchtwert zu erhöhen."); + +static const u8 MoveDescription_Recover[] = _( + "Max. KP des Anwenders w.\n" + "bis zur Hälfte aufgefüllt."); + +static const u8 MoveDescription_Harden[] = _( + "Stärkt die Muskulatur und\n" + "erhöht VERT.-Wert."); + +static const u8 MoveDescription_Minimize[] = _( + "Anwender schrumpft, um\n" + "Fluchtwert zu erhöhen."); + +static const u8 MoveDescription_Smokescreen[] = _( + "Senkt Genauigkeit d. Geg-\n" + "ners mit Rauch, Tinte o. ä."); + +static const u8 MoveDescription_ConfuseRay[] = _( + "Ein fieser Strahl, der den\n" + "Gegner verwirrt."); + +static const u8 MoveDescription_Withdraw[] = _( + "Rückzug in den harten\n" + "Panzer. Erhöht VERT.-Wert."); + +static const u8 MoveDescription_DefenseCurl[] = _( + "Verbirgt Schwächen durch\n" + "Einrollen, VERT.-Wert hoch."); + +static const u8 MoveDescription_Barrier[] = _( + "Erzeugt Barriere, die den\n" + "VERT.-Wert stark erhöht."); + +static const u8 MoveDescription_LightScreen[] = _( + "Erzeugt Lichtwand u. senkt\n" + "SPEZ. ANGR.-Schaden."); + +static const u8 MoveDescription_Haze[] = _( + "Erzeugt dunklen Dunst.\n" + "Löscht alle Statusänder."); + +static const u8 MoveDescription_Reflect[] = _( + "Erzeugt Lichtwand, schützt\n" + "teilweise vor phys. Angr."); + +static const u8 MoveDescription_FocusEnergy[] = _( + "Bündelt Kraft. Volltreffer-\n" + "chance wird erhöht."); + +static const u8 MoveDescription_Bide[] = _( + "Erträgt 2 Runden Angriffe,\n" + "schlägt doppelt zurück."); + +static const u8 MoveDescription_Metronome[] = _( + "Bewegt Finger und wählt\n" + "PKMN-Attacke zufällig aus."); + +static const u8 MoveDescription_MirrorMove[] = _( + "Erwidert gegn. Angriff mit\n" + "derselben Attacke."); + +static const u8 MoveDescription_SelfDestruct[] = _( + "Richtet großen Schaden an.\n" + "Anwender wird besiegt."); + +static const u8 MoveDescription_EggBomb[] = _( + "Ein Ei wird auf den Gegner\n" + "abgefeuert."); + +static const u8 MoveDescription_Lick[] = _( + "Leck-Attacke mit Zunge.\n" + "Gegner evtl. paralysiert."); + +static const u8 MoveDescription_Smog[] = _( + "Angriff mit Gas. Gegner wird\n" + "evtl. vergiftet."); + +static const u8 MoveDescription_Sludge[] = _( + "Wirft Schlamm auf Gegner.\n" + "Evtl. Vergiftung."); + +static const u8 MoveDescription_BoneClub[] = _( + "Schlägt Gegner mit Keule\n" + "und verschreckt ihn evtl."); + +static const u8 MoveDescription_FireBlast[] = _( + "Feuersbrunst, die alles ver-\n" + "sengt. Verbrennt Geg. evtl."); + +static const u8 MoveDescription_Waterfall[] = _( + "Attacke basiert auf Tempo.\n" + "Erklimmt Wasserfälle."); + +static const u8 MoveDescription_Clamp[] = _( + "Fängt und drückt Gegner\n" + "für 2-5 Runden."); + +static const u8 MoveDescription_Swift[] = _( + "Verschießt sternförmige\n" + "Strahlen. Treffergarantie!"); + +static const u8 MoveDescription_SkullBash[] = _( + "Zieht Kopf ein und greift in\n" + "der nächsten Runde an."); + +static const u8 MoveDescription_SpikeCannon[] = _( + "Verschießt spitze Stacheln\n" + "und trifft 2 - 5-mal."); + +static const u8 MoveDescription_Constrict[] = _( + "Schmerzvoller Klammergriff.\n" + "Senkt evtl. INIT.-Wert."); + +static const u8 MoveDescription_Amnesia[] = _( + "Gedächtnisverlust, der\n" + "SPEZ. VERT. deutlich erhöht."); + +static const u8 MoveDescription_Kinesis[] = _( + "Lenkt Gegner ab und senkt\n" + "evtl. seine Genauigkeit."); + +static const u8 MoveDescription_SoftBoiled[] = _( + "Max. KP des Anwenders w.\n" + "bis zur Hälfte aufgefüllt."); + +static const u8 MoveDescription_HiJumpKick[] = _( + "Sprung-Tritt mit Knie. Miss-\n" + "erfolg verletzt Anwender."); + +static const u8 MoveDescription_Glare[] = _( + "Schüchtert Gegner ein, so\n" + "dass er paralysiert ist."); + +static const u8 MoveDescription_DreamEater[] = _( + "Schlafendem Gegner wird\n" + "halber Schaden abgezogen."); + +static const u8 MoveDescription_PoisonGas[] = _( + "Hüllt Gegner in giftiges Gas\n" + "ein, kann vergiften."); + +static const u8 MoveDescription_Barrage[] = _( + "Wirft 2 - 5-mal runde Gegen-\n" + "stände auf den Gegner."); + +static const u8 MoveDescription_LeechLife[] = _( + "Ein Angriff, der die Hälfte\n" + "des Schadens saugt."); + +static const u8 MoveDescription_LovelyKiss[] = _( + "Fordert Kuss mit bösem\n" + "Blick. Evtl. Schlaf."); + +static const u8 MoveDescription_SkyAttack[] = _( + "Sucht nach Schwächen,\n" + "Treffer nächste Runde."); + +static const u8 MoveDescription_Transform[] = _( + "Ändert die Anwenderzellen\n" + "für ein Ebenbild d. Gegners."); + +static const u8 MoveDescription_Bubble[] = _( + "Angriff mit Blasen. INIT.-\n" + "Wert wird evtl. gesenkt."); + +static const u8 MoveDescription_DizzyPunch[] = _( + "Rhythmischer Schlag, der\n" + "den Gegner verwirren kann."); + +static const u8 MoveDescription_Spore[] = _( + "Erzeugt eine Wolke aus ein-\n" + "schläfernden Sporen."); + +static const u8 MoveDescription_Flash[] = _( + "Erzeugt helles Licht, das\n" + "gegn. Genauigkeit senkt."); + +static const u8 MoveDescription_Psywave[] = _( + "Psycho-Welle mit unter-\n" + "schiedlicher Intensität."); + +static const u8 MoveDescription_Splash[] = _( + "Nur ein Platscher..., der\n" + "überhaupt nichts bewirkt."); + +static const u8 MoveDescription_AcidArmor[] = _( + "Verflüssigt Körper d. An-\n" + "wenders. Erhört VERT."); + +static const u8 MoveDescription_Crabhammer[] = _( + "Schlägt mit Schere zu.\n" + "Volltrefferchance hoch."); + +static const u8 MoveDescription_Explosion[] = _( + "Richtet großen Schaden an.\n" + "Anwender wird besiegt."); + +static const u8 MoveDescription_FurySwipes[] = _( + "Beharkt Gegner 2 - 5-mal\n" + "mit scharfen Klauen o. ä."); + +static const u8 MoveDescription_Bonemerang[] = _( + "Ein Bumerang aus Knochen,\n" + "der zweimal trifft."); + +static const u8 MoveDescription_Rest[] = _( + "Anwender schläft 2 Runden,\n" + "KP und Status erneuert."); + +static const u8 MoveDescription_RockSlide[] = _( + "Schleudert riesige Felsen.\n" + "Verschreckt evtl. Gegner."); + +static const u8 MoveDescription_HyperFang[] = _( + "Angriff mit Zähnen.\n" + "Verschreckt evtl. Gegner."); + +static const u8 MoveDescription_Sharpen[] = _( + "Reduziert Polygonzahl und\n" + "erhöht ANGR.-Wert."); + +static const u8 MoveDescription_Conversion[] = _( + "Wandelt Typ d. Anwenders in\n" + "eigenen Attacken-Typ."); + +static const u8 MoveDescription_TriAttack[] = _( + "Feuert 3 Arten von Strahlen\n" + "gleichzeitig ab."); + +static const u8 MoveDescription_SuperFang[] = _( + "Greift mit scharfen Zähnen\n" + "an. Halbiert gegnerische KP."); + +static const u8 MoveDescription_Slash[] = _( + "Hieb mit Klauen o. ä. Hohe\n" + "Volltrefferquote."); + +static const u8 MoveDescription_Substitute[] = _( + "Lockvogel, der 1/4 der max.\n" + "KP des Anwenders besitzt."); + +static const u8 MoveDescription_Struggle[] = _( + "Einsatz nur bei verbrauch-\n" + "ten AP. Selbstschädigung!"); + +static const u8 MoveDescription_Sketch[] = _( + "Kopiert stets den zuletzt\n" + "erlittenen Angriff."); + +static const u8 MoveDescription_TripleKick[] = _( + "Tritt Gegner 3-mal nach-\n" + "einander. Härte nimmt zu."); + +static const u8 MoveDescription_Thief[] = _( + "Kann das vom Gegner\n" + "gehaltene Item stehlen."); + +static const u8 MoveDescription_SpiderWeb[] = _( + "Wickelt Gegner ein. Flucht \n" + "oder Tausch unmöglich."); + +static const u8 MoveDescription_MindReader[] = _( + "Ahnt gegnerische Aktion.\n" + "Nächste Attacke trifft."); + +static const u8 MoveDescription_Nightmare[] = _( + "Bewirkt 1/4 Schaden pro\n" + "Zug bei schlafendem Gegner."); + +static const u8 MoveDescription_FlameWheel[] = _( + "Feuer-Attacke, die Gegner\n" + "evtl. verbrennt."); + +static const u8 MoveDescription_Snore[] = _( + "Laute Attacke. Kann nur im\n" + "Schlaf benutzt werden."); + +static const u8 MoveDescription_Curse[] = _( + "Ein Angriff, der bei GEIST-\n" + "PKMN anders funktioniert."); + +static const u8 MoveDescription_Flail[] = _( + "Richtet mehr Schaden an,\n" + "wenn eigene KP niedrig sind."); + +static const u8 MoveDescription_Conversion2[] = _( + "Anwender wird resistent\n" + "gegen letzten Angr.-Typ."); + +static const u8 MoveDescription_Aeroblast[] = _( + "Erzeugt ein Vakuum.\n" + "Hohe Volltrefferquote."); + +static const u8 MoveDescription_CottonSpore[] = _( + "Sporen heften sich an den\n" + "Gegner. Senkt INIT.-Wert."); + +static const u8 MoveDescription_Reversal[] = _( + "Richtet mehr Schaden an,\n" + "wenn eigene KP niedrig sind."); + +static const u8 MoveDescription_Spite[] = _( + "AP des letzten gegner.\n" + "Angriffs werden gesenkt."); + +static const u8 MoveDescription_PowderSnow[] = _( + "Schnee auf Gegner, der\n" + "evtl. eingefroren wird."); + +static const u8 MoveDescription_Protect[] = _( + "Weicht Angriff aus.\n" + "Scheitert evtl. bei Wdh."); + +static const u8 MoveDescription_MachPunch[] = _( + "Schneller Hieb, der stets\n" + "zuerst trifft."); + +static const u8 MoveDescription_ScaryFace[] = _( + "Erschreckt mit Grimasse. \n" + "INIT.-Wert sinkt deutlich."); + +static const u8 MoveDescription_FaintAttack[] = _( + "Zieht Gegner heran und\n" + "trifft mit Sicherheit."); + +static const u8 MoveDescription_SweetKiss[] = _( + "Fordert Kuss mit süßem\n" + "Blick. Verwirrt Gegner evtl."); + +static const u8 MoveDescription_BellyDrum[] = _( + "Erhöht ANGR.-Wert,\n" + "opfert jedoch KP."); + +static const u8 MoveDescription_SludgeBomb[] = _( + "Wirft Schlamm auf Gegner\n" + "und vergiftet ihn evtl."); + +static const u8 MoveDescription_MudSlap[] = _( + "Wirft Gegner Matsch ins Ge-\n" + "sicht. Genauigkeit sinkt."); + +static const u8 MoveDescription_Octazooka[] = _( + "Verschießt Tinte und senkt\n" + "dadurch Genauigkeit."); + +static const u8 MoveDescription_Spikes[] = _( + "Richtet bei Tausch Schaden\n" + "mit Stacheln an."); + +static const u8 MoveDescription_ZapCannon[] = _( + "Kräftige, ungenaue At-\n" + "tacke, die evtl. paralysiert."); + +static const u8 MoveDescription_Foresight[] = _( + "Verhindert Anstieg von\n" + "gegnerischem Fluchtwert."); + +static const u8 MoveDescription_DestinyBond[] = _( + "Wird der Angreifer besiegt,\n" + "gilt das auch für d. Gegner."); + +static const u8 MoveDescription_PerishSong[] = _( + "Wer dieses Lied hört, wird\n" + "nach 3 Runden besiegt."); + +static const u8 MoveDescription_IcyWind[] = _( + "Eis-Attacke, die den INIT.-\n" + "Wert des Gegners senkt."); + +static const u8 MoveDescription_Detect[] = _( + "Wendet Attacken ab, Erfolg\n" + "sinkt bei Wiederholung."); + +static const u8 MoveDescription_BoneRush[] = _( + "Greift Gegner 2 - 5-mal in\n" + "Folge mit einem Knochen an."); + +static const u8 MoveDescription_LockOn[] = _( + "Visiert Gegner an u. trifft\n" + "in der nächsten Runde."); + +static const u8 MoveDescription_Outrage[] = _( + "Wiederholt Angriff 2-3 Run-\n" + "den lang. Verwirrt Anwender."); + +static const u8 MoveDescription_Sandstorm[] = _( + "Erzeugt einen Sandsturm,\n" + "der mehrere Runden wütet."); + +static const u8 MoveDescription_GigaDrain[] = _( + "Absorbiert die Hälfte des\n" + "angerichteten Schadens."); + +static const u8 MoveDescription_Endure[] = _( + "Hält jeder Attacke 1 Runde\n" + "stand. 1 KP bleibt stets."); + +static const u8 MoveDescription_Charm[] = _( + "Betört den Gegner u. redu-\n" + "ziert seinen ANGR. deutlich."); + +static const u8 MoveDescription_Rollout[] = _( + "Attacke, die 5 Runden\n" + "dauert. Die Härte nimmt zu."); + +static const u8 MoveDescription_FalseSwipe[] = _( + "Ein Angriff, der dem Gegner\n" + "zumindest 1 KP lässt."); + +static const u8 MoveDescription_Swagger[] = _( + "Verwirrt den Gegner und\n" + "erhöht ANGR.-Wert deutlich."); + +static const u8 MoveDescription_MilkDrink[] = _( + "Füllt bis zur Hälfte der max.\n" + "KP des Benutzers auf."); + +static const u8 MoveDescription_Spark[] = _( + "Elektro-Hieb, der Gegner\n" + "paralysieren kann."); + +static const u8 MoveDescription_FuryCutter[] = _( + "Eine Attacke, deren Härte\n" + "bei jedem Treffer zunimmt."); + +static const u8 MoveDescription_SteelWing[] = _( + "Trifft den Gegner hart mit\n" + "ausgebreiteten Flügeln."); + +static const u8 MoveDescription_MeanLook[] = _( + "Böser Blick, der die Flucht\n" + "des Gegners vereitelt."); + +static const u8 MoveDescription_Attract[] = _( + "Angriff des anderen Ge-\n" + "schlechts unwahrscheinl."); + +static const u8 MoveDescription_SleepTalk[] = _( + "Benutzt per Zufall eine\n" + "Attacke im Schlaf."); + +static const u8 MoveDescription_HealBell[] = _( + "Läutet beruhigend, heilt\n" + "alle Status-Veränderungen."); + +static const u8 MoveDescription_Return[] = _( + "Angriff, dessen Kraft bei \n" + "Freundschaft größer wird."); + +static const u8 MoveDescription_Present[] = _( + "Eine Bombe als Geschenk. Es\n" + "kann KP wiederherstellen."); + +static const u8 MoveDescription_Frustration[] = _( + "Die Attacke ist stärker bei\n" + "verhassten TRAINERn."); + +static const u8 MoveDescription_Safeguard[] = _( + "Mystische Kraft, die alle\n" + "Statusprobleme verhindert."); + +static const u8 MoveDescription_PainSplit[] = _( + "Addiert KP v. Anwender u.\n" + "Gegner, teilt gerecht auf."); + +static const u8 MoveDescription_SacredFire[] = _( + "Mystische Feuer-Attacke, \n" + "die d. Geg. evtl. verbrennt."); + +static const u8 MoveDescription_Magnitude[] = _( + "Ein erdbebenartiger An-\n" + "griff von zufälliger Stärke."); + +static const u8 MoveDescription_DynamicPunch[] = _( + "Kräftige Attacke, die ver-\n" + "wirrt, aber ungenau ist."); + +static const u8 MoveDescription_Megahorn[] = _( + "Brutaler Frontalangriff\n" + "mit spitzen Hörnern."); + +static const u8 MoveDescription_DragonBreath[] = _( + "Fegt den Gegner mit zer-\n" + "störerisch heißem Atem weg."); + +static const u8 MoveDescription_BatonPass[] = _( + "Tauscht PKMN aus. Alle Än-\n" + "derungen bleiben bestehen."); + +static const u8 MoveDescription_Encore[] = _( + "Gegner wiederholt letzten\n" + "Angriff 2 - 6-mal."); + +static const u8 MoveDescription_Pursuit[] = _( + "Richtet großen Schaden bei\n" + "Austausch des Gegners an."); + +static const u8 MoveDescription_RapidSpin[] = _( + "Trifft den Gegner durch\n" + "Drehen mit max. Tempo."); + +static const u8 MoveDescription_SweetScent[] = _( + "Lockt Gegner an und senkt\n" + "seinen Fluchtwert."); + +static const u8 MoveDescription_IronTail[] = _( + "Att. mit hartem Schweif. \n" + "Senkt evtl. VERT.-Wert."); + +static const u8 MoveDescription_MetalClaw[] = _( + "Klauen-Attacke. Evtl. Er-\n" + "höhung d. ANGR.-Wert d. Anw."); + +static const u8 MoveDescription_VitalThrow[] = _( + "Attacke stets gleich, aber\n" + "mit Treffergarantie."); + +static const u8 MoveDescription_MorningSun[] = _( + "Füllt KP auf. Die Menge\n" + "hängt vom Wetter ab."); + +static const u8 MoveDescription_Synthesis[] = _( + "Füllt KP auf. Die Menge\n" + "hängt vom Wetter ab."); + +static const u8 MoveDescription_Moonlight[] = _( + "Füllt KP auf. Die Menge\n" + "hängt vom Wetter ab."); + +static const u8 MoveDescription_HiddenPower[] = _( + "Die Wirkung dieser Attacke\n" + "hängt vom Benutzer ab."); + +static const u8 MoveDescription_CrossChop[] = _( + "Doppelter Hieb. Hohe \n" + "Volltrefferquote."); + +static const u8 MoveDescription_Twister[] = _( + "Trifft Gegner mit\n" + "heftigem Wirbelsturm."); + +static const u8 MoveDescription_RainDance[] = _( + "Erhöht Stärke von WASSER-\n" + "Attacken 5 Runden lang."); + +static const u8 MoveDescription_SunnyDay[] = _( + "Erhöht Stärke von FEUER-\n" + "Attacken 5 Runden lang."); + +static const u8 MoveDescription_Crunch[] = _( + "Beißt mit Reißzähnen zu und\n" + "senkt evtl. SPEZ. VERT."); + +static const u8 MoveDescription_MirrorCoat[] = _( + "Kontert d. Spezial-Attacke\n" + "d. Geg. mit 2-facher Kraft."); + +static const u8 MoveDescription_PsychUp[] = _( + "Kopiert Effekte d. Gegners\n" + "u. gibt sie dem Angreifer."); + +static const u8 MoveDescription_ExtremeSpeed[] = _( + "Extrem schnelle und kraft-\n" + "volle Attacke."); + +static const u8 MoveDescription_AncientPower[] = _( + "Ein Angriff, der alle\n" + "Status-Werte erhöhen kann."); + +static const u8 MoveDescription_ShadowBall[] = _( + "Bewirft Gegner und senkt\n" + "evtl. SPEZ. VERT."); + +static const u8 MoveDescription_FutureSight[] = _( + "Stärkt innere Kraft. Trifft\n" + "2 Runden später."); + +static const u8 MoveDescription_RockSmash[] = _( + "Zertrümmernder Angriff, \n" + "der evtl. VERT.-Wert senkt."); + +static const u8 MoveDescription_Whirlpool[] = _( + "Hält Gegner 2-5 Züge in\n" + "einem Strudel gefangen."); + +static const u8 MoveDescription_BeatUp[] = _( + "Ruft POKéMON hinzu, um an\n" + "dem Angriff teilzuhaben."); + +static const u8 MoveDescription_FakeOut[] = _( + "Trifft schon mit dem ersten\n" + "Schlag. Verjagt Gegner evtl."); + +static const u8 MoveDescription_Uproar[] = _( + "Erzeugt für 2-5 Züge einen\n" + "Aufruhr. Verhindert Schlaf."); + +static const u8 MoveDescription_Stockpile[] = _( + "Lädt Kraft für bis zu 3\n" + "Runden auf."); + +static const u8 MoveDescription_SpitUp[] = _( + "Entlädt gehortete Kraft.\n" + "Je mehr, desto besser."); + +static const u8 MoveDescription_Swallow[] = _( + "Absorbiert gehortete\n" + "Kraft. Stellt KP wieder her."); + +static const u8 MoveDescription_HeatWave[] = _( + "Gegner wird von heißem Atem\n" + "getroffen. Verbrennt evtl."); + +static const u8 MoveDescription_Hail[] = _( + "Erzeugt Hagelsturm, der in\n" + "jeder Runde trifft."); + +static const u8 MoveDescription_Torment[] = _( + "Quält Gegner u. verhindert\n" + "Wdh. eines Angriffs."); + +static const u8 MoveDescription_Flatter[] = _( + "Verwirrt den Gegner, erhöht\n" + "aber dessen SPEZ. ANGR."); + +static const u8 MoveDescription_WillOWisp[] = _( + "Fügt dem Gegner \n" + "Verbrennungen zu."); + +static const u8 MoveDescription_Memento[] = _( + "Der Benutzer ist besiegt\n" + "und senkt die gegn. Werte."); + +static const u8 MoveDescription_Facade[] = _( + "Erhöht ANGR. nach Verbren-\n" + "nung, Paralyse o. Vergift."); + +static const u8 MoveDescription_FocusPunch[] = _( + "Angriff, der später trifft.\n" + "Ben. schreckt evtl. zurück."); + +static const u8 MoveDescription_SmellingSalt[] = _( + "Effektiv geg. paralysierte\n" + "Gegner. Heilt sie aber auch."); + +static const u8 MoveDescription_FollowMe[] = _( + "Zieht Aufmerksamkeit an.\n" + "Gegner greift nur Anw. an."); + +static const u8 MoveDescription_NaturePower[] = _( + "Die Elementklasse des\n" + "Angriffs hängt vom Ort ab."); + +static const u8 MoveDescription_Charge[] = _( + "Lädt Energie für den kom-\n" + "menden Elektro-Angr. auf."); + +static const u8 MoveDescription_Taunt[] = _( + "Legt den Gegner rein. Er\n" + "benutzt nur noch Angriffe."); + +static const u8 MoveDescription_HelpingHand[] = _( + "Steigert die Kraft der An-\n" + "griffe des Getroffenen."); + +static const u8 MoveDescription_Trick[] = _( + "Betrügt beim Handel\n" + "mit Gegenständen."); + +static const u8 MoveDescription_RolePlay[] = _( + "Parodiert Gegner u. kopiert\n" + "seine Spezialfähigkeiten."); + +static const u8 MoveDescription_Wish[] = _( + "Ein Wunsch, der KP auffüllt.\n" + "Die Erfüllung braucht Zeit."); + +static const u8 MoveDescription_Assist[] = _( + "Greift zufällig mit einem\n" + "Angriff d. Partners an."); + +static const u8 MoveDescription_Ingrain[] = _( + "Verwurzelung füllt KP auf.\n" + "Austausch unmöglich."); + +static const u8 MoveDescription_Superpower[] = _( + "Steigert Stärke deutlich,\n" + "senkt aber Status-Werte."); + +static const u8 MoveDescription_MagicCoat[] = _( + "Gibt Spezialeffekte zurück\n" + "an Benutzer."); + +static const u8 MoveDescription_Recycle[] = _( + "Recycling eines\n" + "verwendeten Items."); + +static const u8 MoveDescription_Revenge[] = _( + "Attacke wird stärker, wenn\n" + "Anwender Schaden nimmt."); + +static const u8 MoveDescription_BrickBreak[] = _( + "Durchbricht Barrieren und\n" + "verursacht Schaden."); + +static const u8 MoveDescription_Yawn[] = _( + "Gegner gähnt und schläft\n" + "in der nächsten Runde ein."); + +static const u8 MoveDescription_KnockOff[] = _( + "Schlägt Gegner Item weg.\n" + "Vereitelt so den Gebrauch."); + +static const u8 MoveDescription_Endeavor[] = _( + "Wird stärker, wenn Anw.-KP\n" + "geringer als Gegner-KP ist."); + +static const u8 MoveDescription_Eruption[] = _( + "Je höher KP des Benutzers,\n" + "desto mehr Schaden."); + +static const u8 MoveDescription_SkillSwap[] = _( + "Anw. tauscht Spezial-\n" + "fähigkeit mit POKéMON."); + +static const u8 MoveDescription_Imprison[] = _( + "Hindert Gegner an Atta-\n" + "cken, die d. Benutzer kennt."); + +static const u8 MoveDescription_Refresh[] = _( + "Kuriert Vergiftungen, Para-\n" + "lyse und Verbrennung."); + +static const u8 MoveDescription_Grudge[] = _( + "Wenn Anw. bes., werden AP\n" + "der Finalattacke gelöscht."); + +static const u8 MoveDescription_Snatch[] = _( + "Immunität geg. den Effekt\n" + "d. nächsten gegn. Angriffs."); + +static const u8 MoveDescription_SecretPower[] = _( + "Angriff, dessen Auswirkung\n" + "abhängig vom Ort ist."); + +static const u8 MoveDescription_Dive[] = _( + "Taucht in der 1. Runde\n" + "unter u. trifft in der 2."); + +static const u8 MoveDescription_ArmThrust[] = _( + "Schläge mit geradem Arm, die\n" + "Gegner 2 - 5-mal treffen."); + +static const u8 MoveDescription_Camouflage[] = _( + "Die Elementklasse des\n" + "POKéMON hängt vom Ort ab."); + +static const u8 MoveDescription_TailGlow[] = _( + "Ein blinkendes Licht. SPEZ.\n" + "ANGR. wird deutlich erhöht."); + +static const u8 MoveDescription_LusterPurge[] = _( + "Angriff mit grellem Licht.\n" + "Senkt evtl. SPEZ. VERT."); + +static const u8 MoveDescription_MistBall[] = _( + "Angriff m. Daunengestöber,\n" + "Senkt evtl. SPEZ. ANGR."); + +static const u8 MoveDescription_FeatherDance[] = _( + "Hüllt Gegner in Daunen und\n" + "senkt ANGR.-Wert deutlich."); + +static const u8 MoveDescription_TeeterDance[] = _( + "Verwirrt alle POKéMON im \n" + "Kampf."); + +static const u8 MoveDescription_BlazeKick[] = _( + "Hohe Volltrefferquote. Ver-\n" + "ursacht evtl. Verbrennung."); + +static const u8 MoveDescription_MudSport[] = _( + "Bedeckt Anw. mit Lehm u. er-\n" + "höht Schutz geg. Elek.-Att."); + +static const u8 MoveDescription_IceBall[] = _( + "Angriff für 5 Runden. \n" + "Stärker, wenn Treffer."); + +static const u8 MoveDescription_NeedleArm[] = _( + "Angriff mit dornigen Armen. \n" + "Geg. schreckt evtl. zurück."); + +static const u8 MoveDescription_SlackOff[] = _( + "Durch Müßiggang wird die\n" + "Hälfte d. max. KP aufgefüllt."); + +static const u8 MoveDescription_HyperVoice[] = _( + "Laute Attacke mit Schall-\n" + "wellen."); + +static const u8 MoveDescription_PoisonFang[] = _( + "Angriff mit Reißzähnen. \n" + "Gegner wird evtl. vergiftet."); + +static const u8 MoveDescription_CrushClaw[] = _( + "Angriff mit scharfen Klau-\n" + "en. Senkt evtl. VERT.-Wert."); + +static const u8 MoveDescription_BlastBurn[] = _( + "Starker Angriff. Angreifer\n" + "muss eine Runde aussetzen."); + +static const u8 MoveDescription_HydroCannon[] = _( + "Starker Angriff. Angreifer\n" + "muss eine Runde aussetzen."); + +static const u8 MoveDescription_MeteorMash[] = _( + "Ein Schlag wie ein Meteor.\n" + "Erhöht evtl. ANGR.-Wert."); + +static const u8 MoveDescription_Astonish[] = _( + "Angriff, der Gegner evtl.\n" + "zurückschrecken lässt."); + +static const u8 MoveDescription_WeatherBall[] = _( + "Elementkl. u. Stärke der At-\n" + "tacke sind wetterabhängig."); + +static const u8 MoveDescription_Aromatherapy[] = _( + "Heilt alle Status-Probleme\n" + "mit beruhigendem Duft."); + +static const u8 MoveDescription_FakeTears[] = _( + "Täuscht Weinen vor, um\n" + "gegn. SPEZ. VERT. zu senken."); + +static const u8 MoveDescription_AirCutter[] = _( + "Greift mit heftigem Wind an.\n" + "Hohe Volltrefferquote."); + +static const u8 MoveDescription_Overheat[] = _( + "Angriff mit voller Kraft.\n" + "SPEZ. ANGR. sinkt deutlich."); + +static const u8 MoveDescription_OdorSleuth[] = _( + "Hindert Gegner daran, ihren\n" + "Fluchtwert zu erhöhen."); + +static const u8 MoveDescription_RockTomb[] = _( + "Hält den Feind mit Steinen\n" + "auf u. senkt INIT.-Wert."); + +static const u8 MoveDescription_SilverWind[] = _( + "Pulver-Attacke, die evtl.\n" + "die Werte erhöht."); + +static const u8 MoveDescription_MetalSound[] = _( + "Stößt einen spitzen Schrei\n" + "aus. Senkt SPEZ. VERT."); + +static const u8 MoveDescription_GrassWhistle[] = _( + "Versetzt Gegner mit schö-\n" + "ner Melodie in den Schlaf."); + +static const u8 MoveDescription_Tickle[] = _( + "Bringt Gegner zum Lachen.\n" + "ANGR. u. VERT. sinken."); + +static const u8 MoveDescription_CosmicPower[] = _( + "Erhöht VERT. u. SPEZ. VERT.\n" + "durch mystische Kraft."); + +static const u8 MoveDescription_WaterSpout[] = _( + "Ist wirkungsvoller, wenn KP\n" + "des Benutzers hoch sind."); + +static const u8 MoveDescription_SignalBeam[] = _( + "Seltsame Strahlenattacke.\n" + "Verwirrt evtl. den Gegner."); + +static const u8 MoveDescription_ShadowPunch[] = _( + "Schattenhieb. Ausweichen\n" + "unmöglich."); + +static const u8 MoveDescription_Extrasensory[] = _( + "Besonderer Angriff. Gegner\n" + "schreckt evtl. zurück."); + +static const u8 MoveDescription_SkyUppercut[] = _( + "Kinnhaken, als würde man in\n" + "die Luft springen."); + +static const u8 MoveDescription_SandTomb[] = _( + "Gegner leidet für 2-5\n" + "Runden in Sandhose."); + +static const u8 MoveDescription_SheerCold[] = _( + "Eis-Attacke. Besiegt den\n" + "Gegner, wenn sie trifft."); + +static const u8 MoveDescription_MuddyWater[] = _( + "Greift mit Matsch an und\n" + "senkt evtl. Genauigkeit."); + +static const u8 MoveDescription_BulletSeed[] = _( + "Verschießt 2 bis 5 Samen\n" + "gleichzeitig auf Gegner."); + +static const u8 MoveDescription_AerialAce[] = _( + "Eine extrem schnelle und\n" + "unausweichbare Attacke."); + +static const u8 MoveDescription_IcicleSpear[] = _( + "Feuert 2-5 Eiszapfen auf\n" + "den Gegner."); + +static const u8 MoveDescription_IronDefense[] = _( + "Stärkt den Körper.\n" + "Erhöht VERT.-Wert deutlich."); + +static const u8 MoveDescription_Block[] = _( + "Versperrt den Fluchtweg\n" + "des Gegners."); + +static const u8 MoveDescription_Howl[] = _( + "Jault, um in sich zu gehen.\n" + "Erhöht ANGR.-Wert."); + +static const u8 MoveDescription_DragonClaw[] = _( + "Der Gegner wird mit\n" + "scharfen Klauen verletzt."); + +static const u8 MoveDescription_FrenzyPlant[] = _( + "Starker Angriff. Angreifer\n" + "muss eine Runde aussetzen."); + +static const u8 MoveDescription_BulkUp[] = _( + "Pumpt den Körper auf. ANGR.\n" + "u. VERT. werden erhöht."); + +static const u8 MoveDescription_Bounce[] = _( + "Springt hoch u. landet in\n" + "nächstem Zug. Evtl. Para."); + +static const u8 MoveDescription_MudShot[] = _( + "Bewirft den Gegner mit Lehm\n" + "und senkt INIT.-Wert."); + +static const u8 MoveDescription_PoisonTail[] = _( + "Hohe Volltrefferquote.\n" + "Gegner evtl. vergiftet."); + +static const u8 MoveDescription_Covet[] = _( + "Bittet charmant um das ge-\n" + "haltene Item des Gegners."); + +static const u8 MoveDescription_VoltTackle[] = _( + "Lebensgefährliche Attacke,\n" + "leichte Selbstschädigung."); + +static const u8 MoveDescription_MagicalLeaf[] = _( + "Magischer Blattangriff.\n" + "Ausweichen unmöglich."); + +static const u8 MoveDescription_WaterSport[] = _( + "Benutzer wird nass, so dass\n" + "er Feuer besser standhält."); + +static const u8 MoveDescription_CalmMind[] = _( + "Erhöht SPEZ. ANGR. u. SPEZ.\n" + "VERT. durch Konzentration."); + +static const u8 MoveDescription_LeafBlade[] = _( + "Hieb mit scharfkantigem\n" + "Blatt. Hohe Volltrefferqu."); + +static const u8 MoveDescription_DragonDance[] = _( + "Ein mystischer Tanz, der\n" + "ANGR.- u. INIT.-Wert erhöht."); + +static const u8 MoveDescription_RockBlast[] = _( + "Wirft 2 - 5-mal in Folge\n" + "Felsblöcke auf den Gegner."); + +static const u8 MoveDescription_ShockWave[] = _( + "Schnelle Elektro-Attacke\n" + "mit Treffergarantie."); + +static const u8 MoveDescription_WaterPulse[] = _( + "Ultraschallwellen, die den\n" + "Gegner verwirren können."); + +static const u8 MoveDescription_DoomDesire[] = _( + "Speichert Sonnenenergie.\n" + "Angriff 2 Runden später."); + +static const u8 MoveDescription_PsychoBoost[] = _( + "Angriff mit voller Kraft.\n" + "SPEZ. ANGR. sinkt deutlich."); + +const u8 * const gMoveDescriptions[] = { + MoveDescription_Pound, + MoveDescription_KarateChop, + MoveDescription_DoubleSlap, + MoveDescription_CometPunch, + MoveDescription_MegaPunch, + MoveDescription_PayDay, + MoveDescription_FirePunch, + MoveDescription_IcePunch, + MoveDescription_ThunderPunch, + MoveDescription_Scratch, + MoveDescription_ViceGrip, + MoveDescription_Guillotine, + MoveDescription_RazorWind, + MoveDescription_SwordsDance, + MoveDescription_Cut, + MoveDescription_Gust, + MoveDescription_WingAttack, + MoveDescription_Whirlwind, + MoveDescription_Fly, + MoveDescription_Bind, + MoveDescription_Slam, + MoveDescription_VineWhip, + MoveDescription_Stomp, + MoveDescription_DoubleKick, + MoveDescription_MegaKick, + MoveDescription_JumpKick, + MoveDescription_RollingKick, + MoveDescription_SandAttack, + MoveDescription_Headbutt, + MoveDescription_HornAttack, + MoveDescription_FuryAttack, + MoveDescription_HornDrill, + MoveDescription_Tackle, + MoveDescription_BodySlam, + MoveDescription_Wrap, + MoveDescription_TakeDown, + MoveDescription_Thrash, + MoveDescription_DoubleEdge, + MoveDescription_TailWhip, + MoveDescription_PoisonSting, + MoveDescription_Twineedle, + MoveDescription_PinMissile, + MoveDescription_Leer, + MoveDescription_Bite, + MoveDescription_Growl, + MoveDescription_Roar, + MoveDescription_Sing, + MoveDescription_Supersonic, + MoveDescription_SonicBoom, + MoveDescription_Disable, + MoveDescription_Acid, + MoveDescription_Ember, + MoveDescription_Flamethrower, + MoveDescription_Mist, + MoveDescription_WaterGun, + MoveDescription_HydroPump, + MoveDescription_Surf, + MoveDescription_IceBeam, + MoveDescription_Blizzard, + MoveDescription_Psybeam, + MoveDescription_BubbleBeam, + MoveDescription_AuroraBeam, + MoveDescription_HyperBeam, + MoveDescription_Peck, + MoveDescription_DrillPeck, + MoveDescription_Submission, + MoveDescription_LowKick, + MoveDescription_Counter, + MoveDescription_SeismicToss, + MoveDescription_Strength, + MoveDescription_Absorb, + MoveDescription_MegaDrain, + MoveDescription_LeechSeed, + MoveDescription_Growth, + MoveDescription_RazorLeaf, + MoveDescription_SolarBeam, + MoveDescription_PoisonPowder, + MoveDescription_StunSpore, + MoveDescription_SleepPowder, + MoveDescription_PetalDance, + MoveDescription_StringShot, + MoveDescription_DragonRage, + MoveDescription_FireSpin, + MoveDescription_ThunderShock, + MoveDescription_Thunderbolt, + MoveDescription_ThunderWave, + MoveDescription_Thunder, + MoveDescription_RockThrow, + MoveDescription_Earthquake, + MoveDescription_Fissure, + MoveDescription_Dig, + MoveDescription_Toxic, + MoveDescription_Confusion, + MoveDescription_Psychic, + MoveDescription_Hypnosis, + MoveDescription_Meditate, + MoveDescription_Agility, + MoveDescription_QuickAttack, + MoveDescription_Rage, + MoveDescription_Teleport, + MoveDescription_NightShade, + MoveDescription_Mimic, + MoveDescription_Screech, + MoveDescription_DoubleTeam, + MoveDescription_Recover, + MoveDescription_Harden, + MoveDescription_Minimize, + MoveDescription_Smokescreen, + MoveDescription_ConfuseRay, + MoveDescription_Withdraw, + MoveDescription_DefenseCurl, + MoveDescription_Barrier, + MoveDescription_LightScreen, + MoveDescription_Haze, + MoveDescription_Reflect, + MoveDescription_FocusEnergy, + MoveDescription_Bide, + MoveDescription_Metronome, + MoveDescription_MirrorMove, + MoveDescription_SelfDestruct, + MoveDescription_EggBomb, + MoveDescription_Lick, + MoveDescription_Smog, + MoveDescription_Sludge, + MoveDescription_BoneClub, + MoveDescription_FireBlast, + MoveDescription_Waterfall, + MoveDescription_Clamp, + MoveDescription_Swift, + MoveDescription_SkullBash, + MoveDescription_SpikeCannon, + MoveDescription_Constrict, + MoveDescription_Amnesia, + MoveDescription_Kinesis, + MoveDescription_SoftBoiled, + MoveDescription_HiJumpKick, + MoveDescription_Glare, + MoveDescription_DreamEater, + MoveDescription_PoisonGas, + MoveDescription_Barrage, + MoveDescription_LeechLife, + MoveDescription_LovelyKiss, + MoveDescription_SkyAttack, + MoveDescription_Transform, + MoveDescription_Bubble, + MoveDescription_DizzyPunch, + MoveDescription_Spore, + MoveDescription_Flash, + MoveDescription_Psywave, + MoveDescription_Splash, + MoveDescription_AcidArmor, + MoveDescription_Crabhammer, + MoveDescription_Explosion, + MoveDescription_FurySwipes, + MoveDescription_Bonemerang, + MoveDescription_Rest, + MoveDescription_RockSlide, + MoveDescription_HyperFang, + MoveDescription_Sharpen, + MoveDescription_Conversion, + MoveDescription_TriAttack, + MoveDescription_SuperFang, + MoveDescription_Slash, + MoveDescription_Substitute, + MoveDescription_Struggle, + MoveDescription_Sketch, + MoveDescription_TripleKick, + MoveDescription_Thief, + MoveDescription_SpiderWeb, + MoveDescription_MindReader, + MoveDescription_Nightmare, + MoveDescription_FlameWheel, + MoveDescription_Snore, + MoveDescription_Curse, + MoveDescription_Flail, + MoveDescription_Conversion2, + MoveDescription_Aeroblast, + MoveDescription_CottonSpore, + MoveDescription_Reversal, + MoveDescription_Spite, + MoveDescription_PowderSnow, + MoveDescription_Protect, + MoveDescription_MachPunch, + MoveDescription_ScaryFace, + MoveDescription_FaintAttack, + MoveDescription_SweetKiss, + MoveDescription_BellyDrum, + MoveDescription_SludgeBomb, + MoveDescription_MudSlap, + MoveDescription_Octazooka, + MoveDescription_Spikes, + MoveDescription_ZapCannon, + MoveDescription_Foresight, + MoveDescription_DestinyBond, + MoveDescription_PerishSong, + MoveDescription_IcyWind, + MoveDescription_Detect, + MoveDescription_BoneRush, + MoveDescription_LockOn, + MoveDescription_Outrage, + MoveDescription_Sandstorm, + MoveDescription_GigaDrain, + MoveDescription_Endure, + MoveDescription_Charm, + MoveDescription_Rollout, + MoveDescription_FalseSwipe, + MoveDescription_Swagger, + MoveDescription_MilkDrink, + MoveDescription_Spark, + MoveDescription_FuryCutter, + MoveDescription_SteelWing, + MoveDescription_MeanLook, + MoveDescription_Attract, + MoveDescription_SleepTalk, + MoveDescription_HealBell, + MoveDescription_Return, + MoveDescription_Present, + MoveDescription_Frustration, + MoveDescription_Safeguard, + MoveDescription_PainSplit, + MoveDescription_SacredFire, + MoveDescription_Magnitude, + MoveDescription_DynamicPunch, + MoveDescription_Megahorn, + MoveDescription_DragonBreath, + MoveDescription_BatonPass, + MoveDescription_Encore, + MoveDescription_Pursuit, + MoveDescription_RapidSpin, + MoveDescription_SweetScent, + MoveDescription_IronTail, + MoveDescription_MetalClaw, + MoveDescription_VitalThrow, + MoveDescription_MorningSun, + MoveDescription_Synthesis, + MoveDescription_Moonlight, + MoveDescription_HiddenPower, + MoveDescription_CrossChop, + MoveDescription_Twister, + MoveDescription_RainDance, + MoveDescription_SunnyDay, + MoveDescription_Crunch, + MoveDescription_MirrorCoat, + MoveDescription_PsychUp, + MoveDescription_ExtremeSpeed, + MoveDescription_AncientPower, + MoveDescription_ShadowBall, + MoveDescription_FutureSight, + MoveDescription_RockSmash, + MoveDescription_Whirlpool, + MoveDescription_BeatUp, + MoveDescription_FakeOut, + MoveDescription_Uproar, + MoveDescription_Stockpile, + MoveDescription_SpitUp, + MoveDescription_Swallow, + MoveDescription_HeatWave, + MoveDescription_Hail, + MoveDescription_Torment, + MoveDescription_Flatter, + MoveDescription_WillOWisp, + MoveDescription_Memento, + MoveDescription_Facade, + MoveDescription_FocusPunch, + MoveDescription_SmellingSalt, + MoveDescription_FollowMe, + MoveDescription_NaturePower, + MoveDescription_Charge, + MoveDescription_Taunt, + MoveDescription_HelpingHand, + MoveDescription_Trick, + MoveDescription_RolePlay, + MoveDescription_Wish, + MoveDescription_Assist, + MoveDescription_Ingrain, + MoveDescription_Superpower, + MoveDescription_MagicCoat, + MoveDescription_Recycle, + MoveDescription_Revenge, + MoveDescription_BrickBreak, + MoveDescription_Yawn, + MoveDescription_KnockOff, + MoveDescription_Endeavor, + MoveDescription_Eruption, + MoveDescription_SkillSwap, + MoveDescription_Imprison, + MoveDescription_Refresh, + MoveDescription_Grudge, + MoveDescription_Snatch, + MoveDescription_SecretPower, + MoveDescription_Dive, + MoveDescription_ArmThrust, + MoveDescription_Camouflage, + MoveDescription_TailGlow, + MoveDescription_LusterPurge, + MoveDescription_MistBall, + MoveDescription_FeatherDance, + MoveDescription_TeeterDance, + MoveDescription_BlazeKick, + MoveDescription_MudSport, + MoveDescription_IceBall, + MoveDescription_NeedleArm, + MoveDescription_SlackOff, + MoveDescription_HyperVoice, + MoveDescription_PoisonFang, + MoveDescription_CrushClaw, + MoveDescription_BlastBurn, + MoveDescription_HydroCannon, + MoveDescription_MeteorMash, + MoveDescription_Astonish, + MoveDescription_WeatherBall, + MoveDescription_Aromatherapy, + MoveDescription_FakeTears, + MoveDescription_AirCutter, + MoveDescription_Overheat, + MoveDescription_OdorSleuth, + MoveDescription_RockTomb, + MoveDescription_SilverWind, + MoveDescription_MetalSound, + MoveDescription_GrassWhistle, + MoveDescription_Tickle, + MoveDescription_CosmicPower, + MoveDescription_WaterSpout, + MoveDescription_SignalBeam, + MoveDescription_ShadowPunch, + MoveDescription_Extrasensory, + MoveDescription_SkyUppercut, + MoveDescription_SandTomb, + MoveDescription_SheerCold, + MoveDescription_MuddyWater, + MoveDescription_BulletSeed, + MoveDescription_AerialAce, + MoveDescription_IcicleSpear, + MoveDescription_IronDefense, + MoveDescription_Block, + MoveDescription_Howl, + MoveDescription_DragonClaw, + MoveDescription_FrenzyPlant, + MoveDescription_BulkUp, + MoveDescription_Bounce, + MoveDescription_MudShot, + MoveDescription_PoisonTail, + MoveDescription_Covet, + MoveDescription_VoltTackle, + MoveDescription_MagicalLeaf, + MoveDescription_WaterSport, + MoveDescription_CalmMind, + MoveDescription_LeafBlade, + MoveDescription_DragonDance, + MoveDescription_RockBlast, + MoveDescription_ShockWave, + MoveDescription_WaterPulse, + MoveDescription_DoomDesire, + MoveDescription_PsychoBoost, +}; diff --git a/src/data/text/move_descriptions_en.h b/src/data/text/move_descriptions_en.h new file mode 100644 index 000000000..3c3a961d1 --- /dev/null +++ b/src/data/text/move_descriptions_en.h @@ -0,0 +1,1772 @@ +static const u8 MoveDescription_Pound[] = _( + "Pounds the foe with\n" + "forelegs or tail."); + +static const u8 MoveDescription_KarateChop[] = _( + "A chopping attack with a\n" + "high critical-hit ratio."); + +static const u8 MoveDescription_DoubleSlap[] = _( + "Repeatedly slaps the foe\n" + "2 to 5 times."); + +static const u8 MoveDescription_CometPunch[] = _( + "Repeatedly punches the foe\n" + "2 to 5 times."); + +static const u8 MoveDescription_MegaPunch[] = _( + "A strong punch thrown with\n" + "incredible power."); + +static const u8 MoveDescription_PayDay[] = _( + "Throws coins at the foe.\n" + "Money is recovered after."); + +static const u8 MoveDescription_FirePunch[] = _( + "A fiery punch that may burn\n" + "the foe."); + +static const u8 MoveDescription_IcePunch[] = _( + "An icy punch that may\n" + "freeze the foe."); + +static const u8 MoveDescription_ThunderPunch[] = _( + "An electrified punch that\n" + "may paralyze the foe."); + +static const u8 MoveDescription_Scratch[] = _( + "Scratches the foe with\n" + "sharp claws."); + +static const u8 MoveDescription_ViceGrip[] = _( + "Grips the foe with large and\n" + "powerful pincers."); + +static const u8 MoveDescription_Guillotine[] = _( + "A powerful pincer attack\n" + "that may cause fainting."); + +static const u8 MoveDescription_RazorWind[] = _( + "A 2-turn move that strikes\n" + "the foe on the 2nd turn."); + +static const u8 MoveDescription_SwordsDance[] = _( + "A fighting dance that\n" + "sharply raises ATTACK."); + +static const u8 MoveDescription_Cut[] = _( + "Cuts the foe with sharp\n" + "scythes, claws, etc."); + +static const u8 MoveDescription_Gust[] = _( + "Strikes the foe with a gust\n" + "of wind whipped up by wings."); + +static const u8 MoveDescription_WingAttack[] = _( + "Strikes the foe with wings\n" + "spread wide."); + +static const u8 MoveDescription_Whirlwind[] = _( + "Blows away the foe with\n" + "wind and ends the battle."); + +static const u8 MoveDescription_Fly[] = _( + "Flies up on the first turn,\n" + "then strikes the next turn."); + +static const u8 MoveDescription_Bind[] = _( + "Binds and squeezes the foe\n" + "for 2 to 5 turns."); + +static const u8 MoveDescription_Slam[] = _( + "Slams the foe with a long\n" + "tail, vine, etc."); + +static const u8 MoveDescription_VineWhip[] = _( + "Strikes the foe with\n" + "slender, whiplike vines."); + +static const u8 MoveDescription_Stomp[] = _( + "Stomps the enemy with a big\n" + "foot. May cause flinching."); + +static const u8 MoveDescription_DoubleKick[] = _( + "A double-kicking attack\n" + "that strikes the foe twice."); + +static const u8 MoveDescription_MegaKick[] = _( + "An extremely powerful kick\n" + "with intense force."); + +static const u8 MoveDescription_JumpKick[] = _( + "A strong jumping kick. May\n" + "miss and hurt the kicker."); + +static const u8 MoveDescription_RollingKick[] = _( + "A fast kick delivered from\n" + "a rapid spin."); + +static const u8 MoveDescription_SandAttack[] = _( + "Reduces the foe’s accuracy\n" + "by hurling sand in its face."); + +static const u8 MoveDescription_Headbutt[] = _( + "A ramming attack that may\n" + "cause flinching."); + +static const u8 MoveDescription_HornAttack[] = _( + "Jabs the foe with sharp\n" + "horns."); + +static const u8 MoveDescription_FuryAttack[] = _( + "Jabs the foe 2 to 5 times\n" + "with sharp horns, etc."); + +static const u8 MoveDescription_HornDrill[] = _( + "A one-hit KO attack that\n" + "uses a horn like a drill."); + +static const u8 MoveDescription_Tackle[] = _( + "Charges the foe with a full-\n" + "body tackle."); + +static const u8 MoveDescription_BodySlam[] = _( + "A full-body slam that may\n" + "cause paralysis."); + +static const u8 MoveDescription_Wrap[] = _( + "Wraps and squeezes the foe\n" + "2 to 5 times with vines, etc."); + +static const u8 MoveDescription_TakeDown[] = _( + "A reckless charge attack\n" + "that also hurts the user."); + +static const u8 MoveDescription_Thrash[] = _( + "A rampage of 2 to 3 turns\n" + "that confuses the user."); + +static const u8 MoveDescription_DoubleEdge[] = _( + "A life-risking tackle that\n" + "also hurts the user."); + +static const u8 MoveDescription_TailWhip[] = _( + "Wags the tail to lower the\n" + "foe’s DEFENSE."); + +static const u8 MoveDescription_PoisonSting[] = _( + "A toxic attack with barbs,\n" + "etc., that may poison."); + +static const u8 MoveDescription_Twineedle[] = _( + "Stingers on the forelegs\n" + "jab the foe twice."); + +static const u8 MoveDescription_PinMissile[] = _( + "Sharp pins are fired to\n" + "strike 2 to 5 times."); + +static const u8 MoveDescription_Leer[] = _( + "Frightens the foe with a\n" + "leer to lower DEFENSE."); + +static const u8 MoveDescription_Bite[] = _( + "Bites with vicious fangs.\n" + "May cause flinching."); + +static const u8 MoveDescription_Growl[] = _( + "Growls cutely to reduce the\n" + "foe’s ATTACK."); + +static const u8 MoveDescription_Roar[] = _( + "Makes the foe flee to end\n" + "the battle."); + +static const u8 MoveDescription_Sing[] = _( + "A soothing song lulls the\n" + "foe into a deep slumber."); + +static const u8 MoveDescription_Supersonic[] = _( + "Emits bizarre sound waves\n" + "that may confuse the foe."); + +static const u8 MoveDescription_SonicBoom[] = _( + "Launches shock waves that\n" + "always inflict 20 HP damage."); + +static const u8 MoveDescription_Disable[] = _( + "Psychically disables one of\n" + "the foe’s moves."); + +static const u8 MoveDescription_Acid[] = _( + "Sprays a hide-melting acid.\n" + "May lower DEFENSE."); + +static const u8 MoveDescription_Ember[] = _( + "A weak fire attack that may\n" + "inflict a burn."); + +static const u8 MoveDescription_Flamethrower[] = _( + "A powerful fire attack that\n" + "may inflict a burn."); + +static const u8 MoveDescription_Mist[] = _( + "Creates a mist that stops\n" + "reduction of abilities."); + +static const u8 MoveDescription_WaterGun[] = _( + "Squirts water to attack\n" + "the foe."); + +static const u8 MoveDescription_HydroPump[] = _( + "Blasts water at high power\n" + "to strike the foe."); + +static const u8 MoveDescription_Surf[] = _( + "Creates a huge wave, then\n" + "crashes it down on the foe."); + +static const u8 MoveDescription_IceBeam[] = _( + "Blasts the foe with an icy\n" + "beam that may freeze it."); + +static const u8 MoveDescription_Blizzard[] = _( + "Hits the foe with an icy\n" + "storm that may freeze it."); + +static const u8 MoveDescription_Psybeam[] = _( + "Fires a peculiar ray that\n" + "may confuse the foe."); + +static const u8 MoveDescription_BubbleBeam[] = _( + "Forcefully sprays bubbles\n" + "that may lower SPEED."); + +static const u8 MoveDescription_AuroraBeam[] = _( + "Fires a rainbow-colored\n" + "beam that may lower ATTACK."); + +static const u8 MoveDescription_HyperBeam[] = _( + "Powerful, but leaves the\n" + "user immobile the next turn."); + +static const u8 MoveDescription_Peck[] = _( + "Attacks the foe with a\n" + "jabbing beak, etc."); + +static const u8 MoveDescription_DrillPeck[] = _( + "A corkscrewing attack with\n" + "the beak acting as a drill."); + +static const u8 MoveDescription_Submission[] = _( + "A reckless body slam that\n" + "also hurts the user."); + +static const u8 MoveDescription_LowKick[] = _( + "A kick that inflicts more\n" + "damage on heavier foes."); + +static const u8 MoveDescription_Counter[] = _( + "Retaliates any physical hit\n" + "with double the power."); + +static const u8 MoveDescription_SeismicToss[] = _( + "Inflicts damage identical\n" + "to the user’s level."); + +static const u8 MoveDescription_Strength[] = _( + "Builds enormous power,\n" + "then slams the foe."); + +static const u8 MoveDescription_Absorb[] = _( + "An attack that absorbs\n" + "half the damage inflicted."); + +static const u8 MoveDescription_MegaDrain[] = _( + "An attack that absorbs\n" + "half the damage inflicted."); + +static const u8 MoveDescription_LeechSeed[] = _( + "Plants a seed on the foe to\n" + "steal HP on every turn."); + +static const u8 MoveDescription_Growth[] = _( + "Forces the body to grow\n" + "and heightens SP. ATK."); + +static const u8 MoveDescription_RazorLeaf[] = _( + "Cuts the enemy with leaves.\n" + "High critical-hit ratio."); + +static const u8 MoveDescription_SolarBeam[] = _( + "Absorbs light in one turn,\n" + "then attacks next turn."); + +static const u8 MoveDescription_PoisonPowder[] = _( + "Scatters a toxic powder\n" + "that may poison the foe."); + +static const u8 MoveDescription_StunSpore[] = _( + "Scatters a powder that may\n" + "paralyze the foe."); + +static const u8 MoveDescription_SleepPowder[] = _( + "Scatters a powder that may\n" + "cause the foe to sleep."); + +static const u8 MoveDescription_PetalDance[] = _( + "A rampage of 2 to 3 turns\n" + "that confuses the user."); + +static const u8 MoveDescription_StringShot[] = _( + "Binds the foe with string\n" + "to reduce its SPEED."); + +static const u8 MoveDescription_DragonRage[] = _( + "Launches shock waves that\n" + "always inflict 40 HP damage."); + +static const u8 MoveDescription_FireSpin[] = _( + "Traps the foe in a ring of\n" + "fire for 2 to 5 turns."); + +static const u8 MoveDescription_ThunderShock[] = _( + "An electrical attack that\n" + "may paralyze the foe."); + +static const u8 MoveDescription_Thunderbolt[] = _( + "A strong electrical attack\n" + "that may paralyze the foe."); + +static const u8 MoveDescription_ThunderWave[] = _( + "A weak jolt of electricity\n" + "that paralyzes the foe."); + +static const u8 MoveDescription_Thunder[] = _( + "A lightning attack that may\n" + "cause paralysis."); + +static const u8 MoveDescription_RockThrow[] = _( + "Throws small rocks to\n" + "strike the foe."); + +static const u8 MoveDescription_Earthquake[] = _( + "A powerful quake, but has\n" + "no effect on flying foes."); + +static const u8 MoveDescription_Fissure[] = _( + "A one-hit KO move that\n" + "drops the foe in a fissure."); + +static const u8 MoveDescription_Dig[] = _( + "Digs underground the first\n" + "turn and strikes next turn."); + +static const u8 MoveDescription_Toxic[] = _( + "Poisons the foe with an\n" + "intensifying toxin."); + +static const u8 MoveDescription_Confusion[] = _( + "A psychic attack that may\n" + "cause confusion."); + +static const u8 MoveDescription_Psychic[] = _( + "A powerful psychic attack\n" + "that may lower SP. DEF."); + +static const u8 MoveDescription_Hypnosis[] = _( + "A hypnotizing move that\n" + "may induce sleep."); + +static const u8 MoveDescription_Meditate[] = _( + "Meditates in a peaceful\n" + "fashion to raise ATTACK."); + +static const u8 MoveDescription_Agility[] = _( + "Relaxes the body to sharply\n" + "boost SPEED."); + +static const u8 MoveDescription_QuickAttack[] = _( + "An extremely fast attack\n" + "that always strikes first."); + +static const u8 MoveDescription_Rage[] = _( + "Raises the user’s ATTACK\n" + "every time it is hit."); + +static const u8 MoveDescription_Teleport[] = _( + "A psychic move for fleeing\n" + "from battle instantly."); + +static const u8 MoveDescription_NightShade[] = _( + "Inflicts damage identical\n" + "to the user’s level."); + +static const u8 MoveDescription_Mimic[] = _( + "Copies a move used by the\n" + "foe during one battle."); + +static const u8 MoveDescription_Screech[] = _( + "Emits a screech to sharply\n" + "reduce the foe’s DEFENSE."); + +static const u8 MoveDescription_DoubleTeam[] = _( + "Creates illusory copies to\n" + "raise evasiveness."); + +static const u8 MoveDescription_Recover[] = _( + "Recovers up to half the\n" + "user’s maximum HP."); + +static const u8 MoveDescription_Harden[] = _( + "Stiffens the body’s \n" + "muscles to raise DEFENSE."); + +static const u8 MoveDescription_Minimize[] = _( + "Minimizes the user’s size\n" + "to raise evasiveness."); + +static const u8 MoveDescription_Smokescreen[] = _( + "Lowers the foe’s accuracy\n" + "using smoke, ink, etc."); + +static const u8 MoveDescription_ConfuseRay[] = _( + "A sinister ray that\n" + "confuses the foe."); + +static const u8 MoveDescription_Withdraw[] = _( + "Withdraws the body into its\n" + "hard shell to raise DEFENSE."); + +static const u8 MoveDescription_DefenseCurl[] = _( + "Curls up to conceal weak\n" + "spots and raise DEFENSE."); + +static const u8 MoveDescription_Barrier[] = _( + "Creates a barrier that\n" + "sharply raises DEFENSE."); + +static const u8 MoveDescription_LightScreen[] = _( + "Creates a wall of light that\n" + "lowers SP. ATK damage."); + +static const u8 MoveDescription_Haze[] = _( + "Creates a black haze that\n" + "eliminates all stat changes."); + +static const u8 MoveDescription_Reflect[] = _( + "Creates a wall of light that\n" + "weakens physical attacks."); + +static const u8 MoveDescription_FocusEnergy[] = _( + "Focuses power to raise the\n" + "critical-hit ratio."); + +static const u8 MoveDescription_Bide[] = _( + "Endures attack for 2\n" + "turns to retaliate double."); + +static const u8 MoveDescription_Metronome[] = _( + "Waggles a finger to use any\n" + "POKéMON move at random."); + +static const u8 MoveDescription_MirrorMove[] = _( + "Counters the foe’s attack\n" + "with the same move."); + +static const u8 MoveDescription_SelfDestruct[] = _( + "Inflicts severe damage but\n" + "makes the user faint."); + +static const u8 MoveDescription_EggBomb[] = _( + "An egg is forcibly hurled at\n" + "the foe."); + +static const u8 MoveDescription_Lick[] = _( + "Licks with a long tongue to\n" + "injure. May also paralyze."); + +static const u8 MoveDescription_Smog[] = _( + "An exhaust-gas attack\n" + "that may also poison."); + +static const u8 MoveDescription_Sludge[] = _( + "Sludge is hurled to inflict\n" + "damage. May also poison."); + +static const u8 MoveDescription_BoneClub[] = _( + "Clubs the foe with a bone.\n" + "May cause flinching."); + +static const u8 MoveDescription_FireBlast[] = _( + "A fiery blast that scorches\n" + "all. May cause a burn."); + +static const u8 MoveDescription_Waterfall[] = _( + "Charges the foe with speed\n" + "to climb waterfalls."); + +static const u8 MoveDescription_Clamp[] = _( + "Traps and squeezes the\n" + "foe for 2 to 5 turns."); + +static const u8 MoveDescription_Swift[] = _( + "Sprays star-shaped rays\n" + "that never miss."); + +static const u8 MoveDescription_SkullBash[] = _( + "Tucks in the head, then\n" + "attacks on the next turn."); + +static const u8 MoveDescription_SpikeCannon[] = _( + "Launches sharp spikes that\n" + "strike 2 to 5 times."); + +static const u8 MoveDescription_Constrict[] = _( + "Constricts to inflict pain.\n" + "May lower SPEED."); + +static const u8 MoveDescription_Amnesia[] = _( + "Forgets about something\n" + "and sharply raises SP. DEF."); + +static const u8 MoveDescription_Kinesis[] = _( + "Distracts the foe.\n" + "May lower accuracy."); + +static const u8 MoveDescription_SoftBoiled[] = _( + "Recovers up to half the\n" + "user’s maximum HP."); + +static const u8 MoveDescription_HiJumpKick[] = _( + "A jumping knee kick. If it\n" + "misses, the user is hurt."); + +static const u8 MoveDescription_Glare[] = _( + "Intimidates and frightens\n" + "the foe into paralysis."); + +static const u8 MoveDescription_DreamEater[] = _( + "Takes one half the damage\n" + "inflicted on a sleeping foe."); + +static const u8 MoveDescription_PoisonGas[] = _( + "Envelops the foe in a toxic\n" + "gas that may poison."); + +static const u8 MoveDescription_Barrage[] = _( + "Hurls round objects at the\n" + "foe 2 to 5 times."); + +static const u8 MoveDescription_LeechLife[] = _( + "An attack that steals half\n" + "the damage inflicted."); + +static const u8 MoveDescription_LovelyKiss[] = _( + "Demands a kiss with a scary\n" + "face that induces sleep."); + +static const u8 MoveDescription_SkyAttack[] = _( + "Searches out weak spots,\n" + "then strikes the next turn."); + +static const u8 MoveDescription_Transform[] = _( + "Alters the user’s cells to\n" + "become a copy of the foe."); + +static const u8 MoveDescription_Bubble[] = _( + "An attack using bubbles.\n" + "May lower the foe’s SPEED."); + +static const u8 MoveDescription_DizzyPunch[] = _( + "A rhythmic punch that may\n" + "confuse the foe."); + +static const u8 MoveDescription_Spore[] = _( + "Scatters a cloud of spores\n" + "that always induce sleep."); + +static const u8 MoveDescription_Flash[] = _( + "Looses a powerful blast of\n" + "light that cuts accuracy."); + +static const u8 MoveDescription_Psywave[] = _( + "Attacks with a psychic\n" + "wave of varying intensity."); + +static const u8 MoveDescription_Splash[] = _( + "It’s just a splash...\n" + "Has no effect whatsoever."); + +static const u8 MoveDescription_AcidArmor[] = _( + "Liquifies the user’s body\n" + "to sharply raise DEFENSE."); + +static const u8 MoveDescription_Crabhammer[] = _( + "Hammers with a pincer. Has a\n" + "high critical-hit ratio."); + +static const u8 MoveDescription_Explosion[] = _( + "Inflicts severe damage but\n" + "makes the user faint."); + +static const u8 MoveDescription_FurySwipes[] = _( + "Rakes the foe with sharp\n" + "claws, etc., 2 to 5 times."); + +static const u8 MoveDescription_Bonemerang[] = _( + "Throws a bone boomerang\n" + "that strikes twice."); + +static const u8 MoveDescription_Rest[] = _( + "The user sleeps for 2 turns,\n" + "restoring HP and status."); + +static const u8 MoveDescription_RockSlide[] = _( + "Large boulders are hurled.\n" + "May cause flinching."); + +static const u8 MoveDescription_HyperFang[] = _( + "Attacks with sharp fangs.\n" + "May cause flinching."); + +static const u8 MoveDescription_Sharpen[] = _( + "Reduces the polygon count\n" + "and raises ATTACK."); + +static const u8 MoveDescription_Conversion[] = _( + "Changes the user’s type\n" + "into an own move’s type."); + +static const u8 MoveDescription_TriAttack[] = _( + "Fires three types of beams\n" + "at the same time."); + +static const u8 MoveDescription_SuperFang[] = _( + "Attacks with sharp fangs\n" + "and cuts half the foe’s HP."); + +static const u8 MoveDescription_Slash[] = _( + "Slashes with claws, etc. Has\n" + "a high critical-hit ratio."); + +static const u8 MoveDescription_Substitute[] = _( + "Creates a decoy using 1/4\n" + "of the user’s maximum HP."); + +static const u8 MoveDescription_Struggle[] = _( + "Used only if all PP are gone.\n" + "Also hurts the user a little."); + +static const u8 MoveDescription_Sketch[] = _( + "Copies the foe’s last move\n" + "permanently."); + +static const u8 MoveDescription_TripleKick[] = _( + "Kicks the foe 3 times in a\n" + "row with rising intensity."); + +static const u8 MoveDescription_Thief[] = _( + "While attacking, it may\n" + "steal the foe’s held item."); + +static const u8 MoveDescription_SpiderWeb[] = _( + "Ensnares the foe to stop it\n" + "from fleeing or switching."); + +static const u8 MoveDescription_MindReader[] = _( + "Senses the foe’s action to\n" + "ensure the next move’s hit."); + +static const u8 MoveDescription_Nightmare[] = _( + "Inflicts 1/4 damage on a\n" + "sleeping foe every turn."); + +static const u8 MoveDescription_FlameWheel[] = _( + "A fiery charge attack that\n" + "may inflict a burn."); + +static const u8 MoveDescription_Snore[] = _( + "A loud attack that can be\n" + "used only while asleep."); + +static const u8 MoveDescription_Curse[] = _( + "A move that functions\n" + "differently for GHOSTS."); + +static const u8 MoveDescription_Flail[] = _( + "Inflicts more damage when\n" + "the user’s HP is down."); + +static const u8 MoveDescription_Conversion2[] = _( + "Makes the user resistant\n" + "to the last attack’s type."); + +static const u8 MoveDescription_Aeroblast[] = _( + "Launches a vacuumed blast.\n" + "High critical-hit ratio."); + +static const u8 MoveDescription_CottonSpore[] = _( + "Spores cling to the foe,\n" + "sharply reducing SPEED."); + +static const u8 MoveDescription_Reversal[] = _( + "Inflicts more damage when\n" + "the user’s HP is down."); + +static const u8 MoveDescription_Spite[] = _( + "Spitefully cuts the PP\n" + "of the foe’s last move."); + +static const u8 MoveDescription_PowderSnow[] = _( + "Blasts the foe with a snowy\n" + "gust. May cause freezing."); + +static const u8 MoveDescription_Protect[] = _( + "Evades attack, but may fail\n" + "if used in succession."); + +static const u8 MoveDescription_MachPunch[] = _( + "A punch is thrown at wicked\n" + "speed to strike first."); + +static const u8 MoveDescription_ScaryFace[] = _( + "Frightens with a scary face\n" + "to sharply reduce SPEED."); + +static const u8 MoveDescription_FaintAttack[] = _( + "Draws the foe close, then\n" + "strikes without fail."); + +static const u8 MoveDescription_SweetKiss[] = _( + "Demands a kiss with a cute\n" + "look. May cause confusion."); + +static const u8 MoveDescription_BellyDrum[] = _( + "Maximizes ATTACK while\n" + "sacrificing HP."); + +static const u8 MoveDescription_SludgeBomb[] = _( + "Sludge is hurled to inflict\n" + "damage. May also poison."); + +static const u8 MoveDescription_MudSlap[] = _( + "Hurls mud in the foe’s face\n" + "to reduce its accuracy."); + +static const u8 MoveDescription_Octazooka[] = _( + "Fires a lump of ink to\n" + "damage and cut accuracy."); + +static const u8 MoveDescription_Spikes[] = _( + "Sets spikes that hurt a \n" + "foe switching out."); + +static const u8 MoveDescription_ZapCannon[] = _( + "Powerful and sure to cause\n" + "paralysis, but inaccurate."); + +static const u8 MoveDescription_Foresight[] = _( + "Negates the foe’s efforts\n" + "to heighten evasiveness."); + +static const u8 MoveDescription_DestinyBond[] = _( + "If the user faints, the foe\n" + "is also made to faint."); + +static const u8 MoveDescription_PerishSong[] = _( + "Any POKéMON hearing this\n" + "song faints in 3 turns."); + +static const u8 MoveDescription_IcyWind[] = _( + "A chilling attack that\n" + "lowers the foe’s SPEED."); + +static const u8 MoveDescription_Detect[] = _( + "Evades attack, but may fail\n" + "if used in succession."); + +static const u8 MoveDescription_BoneRush[] = _( + "Strikes the foe with a bone\n" + "in hand 2 to 5 times."); + +static const u8 MoveDescription_LockOn[] = _( + "Locks on to the foe to\n" + "ensure the next move hits."); + +static const u8 MoveDescription_Outrage[] = _( + "A rampage of 2 to 3 turns\n" + "that confuses the user."); + +static const u8 MoveDescription_Sandstorm[] = _( + "Causes a sandstorm that\n" + "rages for several turns."); + +static const u8 MoveDescription_GigaDrain[] = _( + "An attack that steals half\n" + "the damage inflicted."); + +static const u8 MoveDescription_Endure[] = _( + "Endures any attack for\n" + "1 turn, leaving at least 1HP."); + +static const u8 MoveDescription_Charm[] = _( + "Charms the foe and sharply\n" + "reduces its ATTACK."); + +static const u8 MoveDescription_Rollout[] = _( + "An attack lasting 5 turns\n" + "with rising intensity."); + +static const u8 MoveDescription_FalseSwipe[] = _( + "An attack that leaves the\n" + "foe with at least 1 HP."); + +static const u8 MoveDescription_Swagger[] = _( + "Confuses the foe, but also\n" + "sharply raises ATTACK."); + +static const u8 MoveDescription_MilkDrink[] = _( + "Recovers up to half the\n" + "user’s maximum HP."); + +static const u8 MoveDescription_Spark[] = _( + "An electrified tackle that\n" + "may paralyze the foe."); + +static const u8 MoveDescription_FuryCutter[] = _( + "An attack that intensifies\n" + "on each successive hit."); + +static const u8 MoveDescription_SteelWing[] = _( + "Strikes the foe with hard\n" + "wings spread wide."); + +static const u8 MoveDescription_MeanLook[] = _( + "Fixes the foe with a mean\n" + "look that prevents escape."); + +static const u8 MoveDescription_Attract[] = _( + "Makes the opposite gender\n" + "less likely to attack."); + +static const u8 MoveDescription_SleepTalk[] = _( + "Uses an own move randomly\n" + "while asleep."); + +static const u8 MoveDescription_HealBell[] = _( + "Chimes soothingly to heal\n" + "all status abnormalities."); + +static const u8 MoveDescription_Return[] = _( + "An attack that increases\n" + "in power with friendship."); + +static const u8 MoveDescription_Present[] = _( + "A gift in the form of a\n" + "bomb. May restore HP."); + +static const u8 MoveDescription_Frustration[] = _( + "An attack that is stronger\n" + "if the TRAINER is disliked."); + +static const u8 MoveDescription_Safeguard[] = _( + "A mystical force prevents\n" + "all status problems."); + +static const u8 MoveDescription_PainSplit[] = _( + "Adds the user and foe’s HP,\n" + "then shares them equally."); + +static const u8 MoveDescription_SacredFire[] = _( + "A mystical fire attack that\n" + "may inflict a burn."); + +static const u8 MoveDescription_Magnitude[] = _( + "A ground-shaking attack\n" + "of random intensity."); + +static const u8 MoveDescription_DynamicPunch[] = _( + "Powerful and sure to cause\n" + "confusion, but inaccurate."); + +static const u8 MoveDescription_Megahorn[] = _( + "A brutal ramming attack\n" + "using out-thrust horns."); + +static const u8 MoveDescription_DragonBreath[] = _( + "Strikes the foe with an\n" + "incredible blast of breath."); + +static const u8 MoveDescription_BatonPass[] = _( + "Switches out the user while\n" + "keeping effects in play."); + +static const u8 MoveDescription_Encore[] = _( + "Makes the foe repeat its\n" + "last move over 2 to 6 turns."); + +static const u8 MoveDescription_Pursuit[] = _( + "Inflicts bad damage if used\n" + "on a foe switching out."); + +static const u8 MoveDescription_RapidSpin[] = _( + "Spins the body at high\n" + "speed to strike the foe."); + +static const u8 MoveDescription_SweetScent[] = _( + "Allures the foe to reduce\n" + "evasiveness."); + +static const u8 MoveDescription_IronTail[] = _( + "Attacks with a rock-hard\n" + "tail. May lower DEFENSE."); + +static const u8 MoveDescription_MetalClaw[] = _( + "A claw attack that may\n" + "raise the user’s ATTACK."); + +static const u8 MoveDescription_VitalThrow[] = _( + "Makes the user’s move last,\n" + "but it never misses."); + +static const u8 MoveDescription_MorningSun[] = _( + "Restores HP. The amount\n" + "varies with the weather."); + +static const u8 MoveDescription_Synthesis[] = _( + "Restores HP. The amount\n" + "varies with the weather."); + +static const u8 MoveDescription_Moonlight[] = _( + "Restores HP. The amount\n" + "varies with the weather."); + +static const u8 MoveDescription_HiddenPower[] = _( + "The effectiveness varies\n" + "with the user."); + +static const u8 MoveDescription_CrossChop[] = _( + "A double-chopping attack.\n" + "High critical-hit ratio."); + +static const u8 MoveDescription_Twister[] = _( + "Whips up a vicious twister\n" + "to tear at the foe."); + +static const u8 MoveDescription_RainDance[] = _( + "Boosts the power of WATER-\n" + "type moves for 5 turns."); + +static const u8 MoveDescription_SunnyDay[] = _( + "Boosts the power of FIRE-\n" + "type moves for 5 turns."); + +static const u8 MoveDescription_Crunch[] = _( + "Crunches with sharp fangs.\n" + "May lower SP. DEF."); + +static const u8 MoveDescription_MirrorCoat[] = _( + "Counters the foe’s special\n" + "attack at double the power."); + +static const u8 MoveDescription_PsychUp[] = _( + "Copies the foe’s effect(s)\n" + "and gives to the user."); + +static const u8 MoveDescription_ExtremeSpeed[] = _( + "An extremely fast and\n" + "powerful attack."); + +static const u8 MoveDescription_AncientPower[] = _( + "An attack that may raise\n" + "all stats."); + +static const u8 MoveDescription_ShadowBall[] = _( + "Hurls a black blob that may\n" + "lower the foe’s SP. DEF."); + +static const u8 MoveDescription_FutureSight[] = _( + "Heightens inner power to\n" + "strike 2 turns later."); + +static const u8 MoveDescription_RockSmash[] = _( + "A rock-crushing attack\n" + "that may lower DEFENSE."); + +static const u8 MoveDescription_Whirlpool[] = _( + "Traps and hurts the foe in\n" + "a whirlpool for 2 to 5 turns."); + +static const u8 MoveDescription_BeatUp[] = _( + "Summons party POKéMON to\n" + "join in the attack."); + +static const u8 MoveDescription_FakeOut[] = _( + "A 1st-turn, 1st-strike move\n" + "that causes flinching."); + +static const u8 MoveDescription_Uproar[] = _( + "Causes an uproar for 2 to 5\n" + "turns and prevents sleep."); + +static const u8 MoveDescription_Stockpile[] = _( + "Charges up power for up to\n" + "3 turns."); + +static const u8 MoveDescription_SpitUp[] = _( + "Releases stockpiled power\n" + "(the more the better)."); + +static const u8 MoveDescription_Swallow[] = _( + "Absorbs stockpiled power\n" + "and restores HP."); + +static const u8 MoveDescription_HeatWave[] = _( + "Exhales a hot breath on the\n" + "foe. May inflict a burn."); + +static const u8 MoveDescription_Hail[] = _( + "Summons a hailstorm that\n" + "strikes every turn."); + +static const u8 MoveDescription_Torment[] = _( + "Torments the foe and stops\n" + "successive use of a move."); + +static const u8 MoveDescription_Flatter[] = _( + "Confuses the foe, but\n" + "raises its SP. ATK."); + +static const u8 MoveDescription_WillOWisp[] = _( + "Inflicts a burn on the foe\n" + "with intense fire."); + +static const u8 MoveDescription_Memento[] = _( + "The user faints and lowers\n" + "the foe’s abilities."); + +static const u8 MoveDescription_Facade[] = _( + "Boosts ATTACK when burned,\n" + "paralyzed, or poisoned."); + +static const u8 MoveDescription_FocusPunch[] = _( + "A powerful loyalty attack.\n" + "The user flinches if hit."); + +static const u8 MoveDescription_SmellingSalt[] = _( + "Powerful against paralyzed\n" + "foes, but also heals them."); + +static const u8 MoveDescription_FollowMe[] = _( + "Draws attention to make\n" + "foes attack only the user."); + +static const u8 MoveDescription_NaturePower[] = _( + "The type of attack varies\n" + "depending on the location."); + +static const u8 MoveDescription_Charge[] = _( + "Charges power to boost the\n" + "electric move used next."); + +static const u8 MoveDescription_Taunt[] = _( + "Taunts the foe into only\n" + "using attack moves."); + +static const u8 MoveDescription_HelpingHand[] = _( + "Boosts the power of the\n" + "recipient’s moves."); + +static const u8 MoveDescription_Trick[] = _( + "Tricks the foe into trading\n" + "held items."); + +static const u8 MoveDescription_RolePlay[] = _( + "Mimics the target and\n" + "copies its special ability."); + +static const u8 MoveDescription_Wish[] = _( + "A wish that restores HP.\n" + "It takes time to work."); + +static const u8 MoveDescription_Assist[] = _( + "Attacks randomly with one\n" + "of the partner’s moves."); + +static const u8 MoveDescription_Ingrain[] = _( + "Lays roots that restore HP.\n" + "The user can’t switch out."); + +static const u8 MoveDescription_Superpower[] = _( + "Boosts strength sharply,\n" + "but lowers abilities."); + +static const u8 MoveDescription_MagicCoat[] = _( + "Reflects special effects\n" + "back to the attacker."); + +static const u8 MoveDescription_Recycle[] = _( + "Recycles a used item for\n" + "one more use."); + +static const u8 MoveDescription_Revenge[] = _( + "An attack that gains power\n" + "if injured by the foe."); + +static const u8 MoveDescription_BrickBreak[] = _( + "Destroys barriers such as\n" + "REFLECT and causes damage."); + +static const u8 MoveDescription_Yawn[] = _( + "Lulls the foe into yawning,\n" + "then sleeping next turn."); + +static const u8 MoveDescription_KnockOff[] = _( + "Knocks down the foe’s held\n" + "item to prevent its use."); + +static const u8 MoveDescription_Endeavor[] = _( + "Gains power if the user’s HP\n" + "is lower than the foe’s HP."); + +static const u8 MoveDescription_Eruption[] = _( + "The higher the user’s HP,\n" + "the more damage caused."); + +static const u8 MoveDescription_SkillSwap[] = _( + "The user swaps special\n" + "abilities with the target."); + +static const u8 MoveDescription_Imprison[] = _( + "Prevents foes from using\n" + "moves known by the user."); + +static const u8 MoveDescription_Refresh[] = _( + "Heals poisoning, paralysis,\n" + "or a burn."); + +static const u8 MoveDescription_Grudge[] = _( + "If the user faints, deletes\n" + "the PP of the final move."); + +static const u8 MoveDescription_Snatch[] = _( + "Steals the effects of the\n" + "move the foe uses next."); + +static const u8 MoveDescription_SecretPower[] = _( + "An attack with effects\n" + "that vary by location."); + +static const u8 MoveDescription_Dive[] = _( + "Dives underwater the first\n" + "turn and strikes next turn."); + +static const u8 MoveDescription_ArmThrust[] = _( + "Straight-arm punches that\n" + "strike the foe 2 to 5 times."); + +static const u8 MoveDescription_Camouflage[] = _( + "Alters the POKéMON’s type\n" + "depending on the location."); + +static const u8 MoveDescription_TailGlow[] = _( + "Flashes a light that sharply\n" + "raises SP. ATK."); + +static const u8 MoveDescription_LusterPurge[] = _( + "Attacks with a burst of\n" + "light. May lower SP. DEF."); + +static const u8 MoveDescription_MistBall[] = _( + "Attacks with a flurry of\n" + "down. May lower SP. ATK."); + +static const u8 MoveDescription_FeatherDance[] = _( + "Envelops the foe with down\n" + "to sharply reduce ATTACK."); + +static const u8 MoveDescription_TeeterDance[] = _( + "Confuses all POKéMON on\n" + "the scene."); + +static const u8 MoveDescription_BlazeKick[] = _( + "A kick with a high critical-\n" + "hit ratio. May cause a burn."); + +static const u8 MoveDescription_MudSport[] = _( + "Covers the user in mud to\n" + "raise electrical resistance."); + +static const u8 MoveDescription_IceBall[] = _( + "A 5-turn attack that gains\n" + "power on successive hits."); + +static const u8 MoveDescription_NeedleArm[] = _( + "Attacks with thorny arms.\n" + "May cause flinching."); + +static const u8 MoveDescription_SlackOff[] = _( + "Slacks off and restores\n" + "half the maximum HP."); + +static const u8 MoveDescription_HyperVoice[] = _( + "A loud attack that uses\n" + "sound waves to injure."); + +static const u8 MoveDescription_PoisonFang[] = _( + "A sharp-fanged attack.\n" + "May badly poison the foe."); + +static const u8 MoveDescription_CrushClaw[] = _( + "Tears at the foe with sharp\n" + "claws. May lower DEFENSE."); + +static const u8 MoveDescription_BlastBurn[] = _( + "Powerful, but leaves the\n" + "user immobile the next turn."); + +static const u8 MoveDescription_HydroCannon[] = _( + "Powerful, but leaves the\n" + "user immobile the next turn."); + +static const u8 MoveDescription_MeteorMash[] = _( + "Fires a meteor-like punch.\n" + "May raise ATTACK."); + +static const u8 MoveDescription_Astonish[] = _( + "An attack that may shock\n" + "the foe into flinching."); + +static const u8 MoveDescription_WeatherBall[] = _( + "The move’s type and power\n" + "change with the weather."); + +static const u8 MoveDescription_Aromatherapy[] = _( + "Heals all status problems\n" + "with a soothing scent."); + +static const u8 MoveDescription_FakeTears[] = _( + "Feigns crying to sharply\n" + "lower the foe’s SP. DEF."); + +static const u8 MoveDescription_AirCutter[] = _( + "Hacks with razorlike wind.\n" + "High critical-hit ratio."); + +static const u8 MoveDescription_Overheat[] = _( + "Allows a full-power attack,\n" + "but sharply lowers SP. ATK."); + +static const u8 MoveDescription_OdorSleuth[] = _( + "Negates the foe’s efforts\n" + "to heighten evasiveness."); + +static const u8 MoveDescription_RockTomb[] = _( + "Stops the foe from moving\n" + "with rocks and cuts SPEED."); + +static const u8 MoveDescription_SilverWind[] = _( + "A powdery attack that may\n" + "raise abilities."); + +static const u8 MoveDescription_MetalSound[] = _( + "Emits a horrible screech\n" + "that sharply lowers SP. DEF."); + +static const u8 MoveDescription_GrassWhistle[] = _( + "Lulls the foe into sleep\n" + "with a pleasant melody."); + +static const u8 MoveDescription_Tickle[] = _( + "Makes the foe laugh to\n" + "lower ATTACK and DEFENSE."); + +static const u8 MoveDescription_CosmicPower[] = _( + "Raises DEFENSE and SP. DEF\n" + "with a mystic power."); + +static const u8 MoveDescription_WaterSpout[] = _( + "Inflicts more damage if the\n" + "user’s HP is high."); + +static const u8 MoveDescription_SignalBeam[] = _( + "A strange beam attack that\n" + "may confuse the foe."); + +static const u8 MoveDescription_ShadowPunch[] = _( + "An unavoidable punch that\n" + "is thrown from shadows."); + +static const u8 MoveDescription_Extrasensory[] = _( + "Attacks with a peculiar\n" + "power. May cause flinching."); + +static const u8 MoveDescription_SkyUppercut[] = _( + "An uppercut thrown as if\n" + "leaping into the sky."); + +static const u8 MoveDescription_SandTomb[] = _( + "Traps and hurts the foe in\n" + "quicksand for 2 to 5 turns."); + +static const u8 MoveDescription_SheerCold[] = _( + "A chilling attack that\n" + "causes fainting if it hits."); + +static const u8 MoveDescription_MuddyWater[] = _( + "Attacks with muddy water.\n" + "May lower accuracy."); + +static const u8 MoveDescription_BulletSeed[] = _( + "Shoots 2 to 5 seeds in a row\n" + "to strike the foe."); + +static const u8 MoveDescription_AerialAce[] = _( + "An extremely speedy and\n" + "unavoidable attack."); + +static const u8 MoveDescription_IcicleSpear[] = _( + "Attacks the foe by firing\n" + "2 to 5 icicles in a row."); + +static const u8 MoveDescription_IronDefense[] = _( + "Hardens the body’s surface\n" + "to sharply raise DEFENSE."); + +static const u8 MoveDescription_Block[] = _( + "Blocks the foe’s way to\n" + "prevent escape."); + +static const u8 MoveDescription_Howl[] = _( + "Howls to raise the spirit\n" + "and boosts ATTACK."); + +static const u8 MoveDescription_DragonClaw[] = _( + "Slashes the foe with sharp\n" + "claws."); + +static const u8 MoveDescription_FrenzyPlant[] = _( + "Powerful, but leaves the\n" + "user immobile the next turn."); + +static const u8 MoveDescription_BulkUp[] = _( + "Bulks up the body to boost\n" + "both ATTACK and DEFENSE."); + +static const u8 MoveDescription_Bounce[] = _( + "Bounces up, then down the\n" + "next turn. May paralyze."); + +static const u8 MoveDescription_MudShot[] = _( + "Hurls mud at the foe and\n" + "reduces SPEED."); + +static const u8 MoveDescription_PoisonTail[] = _( + "Has a high critical-hit\n" + "ratio. May also poison."); + +static const u8 MoveDescription_Covet[] = _( + "Cutely begs to obtain an\n" + "item held by the foe."); + +static const u8 MoveDescription_VoltTackle[] = _( + "A life-risking tackle that\n" + "slightly hurts the user."); + +static const u8 MoveDescription_MagicalLeaf[] = _( + "Attacks with a strange leaf\n" + "that cannot be evaded."); + +static const u8 MoveDescription_WaterSport[] = _( + "The user becomes soaked to\n" + "raise resistance to fire."); + +static const u8 MoveDescription_CalmMind[] = _( + "Raises SP. ATK and SP. DEF\n" + "by focusing the mind."); + +static const u8 MoveDescription_LeafBlade[] = _( + "Slashes with a sharp leaf.\n" + "High critical-hit ratio."); + +static const u8 MoveDescription_DragonDance[] = _( + "A mystical dance that ups\n" + "ATTACK and SPEED."); + +static const u8 MoveDescription_RockBlast[] = _( + "Hurls boulders at the foe\n" + "2 to 5 times in a row."); + +static const u8 MoveDescription_ShockWave[] = _( + "A fast and unavoidable\n" + "electric attack."); + +static const u8 MoveDescription_WaterPulse[] = _( + "Attacks with ultrasonic\n" + "waves. May confuse the foe"); + +static const u8 MoveDescription_DoomDesire[] = _( + "Summons strong sunlight to\n" + "attack 2 turns later."); + +static const u8 MoveDescription_PsychoBoost[] = _( + "Allows a full-power attack,\n" + "but sharply lowers SP. ATK."); + +const u8 * const gMoveDescriptions[] = { + MoveDescription_Pound, + MoveDescription_KarateChop, + MoveDescription_DoubleSlap, + MoveDescription_CometPunch, + MoveDescription_MegaPunch, + MoveDescription_PayDay, + MoveDescription_FirePunch, + MoveDescription_IcePunch, + MoveDescription_ThunderPunch, + MoveDescription_Scratch, + MoveDescription_ViceGrip, + MoveDescription_Guillotine, + MoveDescription_RazorWind, + MoveDescription_SwordsDance, + MoveDescription_Cut, + MoveDescription_Gust, + MoveDescription_WingAttack, + MoveDescription_Whirlwind, + MoveDescription_Fly, + MoveDescription_Bind, + MoveDescription_Slam, + MoveDescription_VineWhip, + MoveDescription_Stomp, + MoveDescription_DoubleKick, + MoveDescription_MegaKick, + MoveDescription_JumpKick, + MoveDescription_RollingKick, + MoveDescription_SandAttack, + MoveDescription_Headbutt, + MoveDescription_HornAttack, + MoveDescription_FuryAttack, + MoveDescription_HornDrill, + MoveDescription_Tackle, + MoveDescription_BodySlam, + MoveDescription_Wrap, + MoveDescription_TakeDown, + MoveDescription_Thrash, + MoveDescription_DoubleEdge, + MoveDescription_TailWhip, + MoveDescription_PoisonSting, + MoveDescription_Twineedle, + MoveDescription_PinMissile, + MoveDescription_Leer, + MoveDescription_Bite, + MoveDescription_Growl, + MoveDescription_Roar, + MoveDescription_Sing, + MoveDescription_Supersonic, + MoveDescription_SonicBoom, + MoveDescription_Disable, + MoveDescription_Acid, + MoveDescription_Ember, + MoveDescription_Flamethrower, + MoveDescription_Mist, + MoveDescription_WaterGun, + MoveDescription_HydroPump, + MoveDescription_Surf, + MoveDescription_IceBeam, + MoveDescription_Blizzard, + MoveDescription_Psybeam, + MoveDescription_BubbleBeam, + MoveDescription_AuroraBeam, + MoveDescription_HyperBeam, + MoveDescription_Peck, + MoveDescription_DrillPeck, + MoveDescription_Submission, + MoveDescription_LowKick, + MoveDescription_Counter, + MoveDescription_SeismicToss, + MoveDescription_Strength, + MoveDescription_Absorb, + MoveDescription_MegaDrain, + MoveDescription_LeechSeed, + MoveDescription_Growth, + MoveDescription_RazorLeaf, + MoveDescription_SolarBeam, + MoveDescription_PoisonPowder, + MoveDescription_StunSpore, + MoveDescription_SleepPowder, + MoveDescription_PetalDance, + MoveDescription_StringShot, + MoveDescription_DragonRage, + MoveDescription_FireSpin, + MoveDescription_ThunderShock, + MoveDescription_Thunderbolt, + MoveDescription_ThunderWave, + MoveDescription_Thunder, + MoveDescription_RockThrow, + MoveDescription_Earthquake, + MoveDescription_Fissure, + MoveDescription_Dig, + MoveDescription_Toxic, + MoveDescription_Confusion, + MoveDescription_Psychic, + MoveDescription_Hypnosis, + MoveDescription_Meditate, + MoveDescription_Agility, + MoveDescription_QuickAttack, + MoveDescription_Rage, + MoveDescription_Teleport, + MoveDescription_NightShade, + MoveDescription_Mimic, + MoveDescription_Screech, + MoveDescription_DoubleTeam, + MoveDescription_Recover, + MoveDescription_Harden, + MoveDescription_Minimize, + MoveDescription_Smokescreen, + MoveDescription_ConfuseRay, + MoveDescription_Withdraw, + MoveDescription_DefenseCurl, + MoveDescription_Barrier, + MoveDescription_LightScreen, + MoveDescription_Haze, + MoveDescription_Reflect, + MoveDescription_FocusEnergy, + MoveDescription_Bide, + MoveDescription_Metronome, + MoveDescription_MirrorMove, + MoveDescription_SelfDestruct, + MoveDescription_EggBomb, + MoveDescription_Lick, + MoveDescription_Smog, + MoveDescription_Sludge, + MoveDescription_BoneClub, + MoveDescription_FireBlast, + MoveDescription_Waterfall, + MoveDescription_Clamp, + MoveDescription_Swift, + MoveDescription_SkullBash, + MoveDescription_SpikeCannon, + MoveDescription_Constrict, + MoveDescription_Amnesia, + MoveDescription_Kinesis, + MoveDescription_SoftBoiled, + MoveDescription_HiJumpKick, + MoveDescription_Glare, + MoveDescription_DreamEater, + MoveDescription_PoisonGas, + MoveDescription_Barrage, + MoveDescription_LeechLife, + MoveDescription_LovelyKiss, + MoveDescription_SkyAttack, + MoveDescription_Transform, + MoveDescription_Bubble, + MoveDescription_DizzyPunch, + MoveDescription_Spore, + MoveDescription_Flash, + MoveDescription_Psywave, + MoveDescription_Splash, + MoveDescription_AcidArmor, + MoveDescription_Crabhammer, + MoveDescription_Explosion, + MoveDescription_FurySwipes, + MoveDescription_Bonemerang, + MoveDescription_Rest, + MoveDescription_RockSlide, + MoveDescription_HyperFang, + MoveDescription_Sharpen, + MoveDescription_Conversion, + MoveDescription_TriAttack, + MoveDescription_SuperFang, + MoveDescription_Slash, + MoveDescription_Substitute, + MoveDescription_Struggle, + MoveDescription_Sketch, + MoveDescription_TripleKick, + MoveDescription_Thief, + MoveDescription_SpiderWeb, + MoveDescription_MindReader, + MoveDescription_Nightmare, + MoveDescription_FlameWheel, + MoveDescription_Snore, + MoveDescription_Curse, + MoveDescription_Flail, + MoveDescription_Conversion2, + MoveDescription_Aeroblast, + MoveDescription_CottonSpore, + MoveDescription_Reversal, + MoveDescription_Spite, + MoveDescription_PowderSnow, + MoveDescription_Protect, + MoveDescription_MachPunch, + MoveDescription_ScaryFace, + MoveDescription_FaintAttack, + MoveDescription_SweetKiss, + MoveDescription_BellyDrum, + MoveDescription_SludgeBomb, + MoveDescription_MudSlap, + MoveDescription_Octazooka, + MoveDescription_Spikes, + MoveDescription_ZapCannon, + MoveDescription_Foresight, + MoveDescription_DestinyBond, + MoveDescription_PerishSong, + MoveDescription_IcyWind, + MoveDescription_Detect, + MoveDescription_BoneRush, + MoveDescription_LockOn, + MoveDescription_Outrage, + MoveDescription_Sandstorm, + MoveDescription_GigaDrain, + MoveDescription_Endure, + MoveDescription_Charm, + MoveDescription_Rollout, + MoveDescription_FalseSwipe, + MoveDescription_Swagger, + MoveDescription_MilkDrink, + MoveDescription_Spark, + MoveDescription_FuryCutter, + MoveDescription_SteelWing, + MoveDescription_MeanLook, + MoveDescription_Attract, + MoveDescription_SleepTalk, + MoveDescription_HealBell, + MoveDescription_Return, + MoveDescription_Present, + MoveDescription_Frustration, + MoveDescription_Safeguard, + MoveDescription_PainSplit, + MoveDescription_SacredFire, + MoveDescription_Magnitude, + MoveDescription_DynamicPunch, + MoveDescription_Megahorn, + MoveDescription_DragonBreath, + MoveDescription_BatonPass, + MoveDescription_Encore, + MoveDescription_Pursuit, + MoveDescription_RapidSpin, + MoveDescription_SweetScent, + MoveDescription_IronTail, + MoveDescription_MetalClaw, + MoveDescription_VitalThrow, + MoveDescription_MorningSun, + MoveDescription_Synthesis, + MoveDescription_Moonlight, + MoveDescription_HiddenPower, + MoveDescription_CrossChop, + MoveDescription_Twister, + MoveDescription_RainDance, + MoveDescription_SunnyDay, + MoveDescription_Crunch, + MoveDescription_MirrorCoat, + MoveDescription_PsychUp, + MoveDescription_ExtremeSpeed, + MoveDescription_AncientPower, + MoveDescription_ShadowBall, + MoveDescription_FutureSight, + MoveDescription_RockSmash, + MoveDescription_Whirlpool, + MoveDescription_BeatUp, + MoveDescription_FakeOut, + MoveDescription_Uproar, + MoveDescription_Stockpile, + MoveDescription_SpitUp, + MoveDescription_Swallow, + MoveDescription_HeatWave, + MoveDescription_Hail, + MoveDescription_Torment, + MoveDescription_Flatter, + MoveDescription_WillOWisp, + MoveDescription_Memento, + MoveDescription_Facade, + MoveDescription_FocusPunch, + MoveDescription_SmellingSalt, + MoveDescription_FollowMe, + MoveDescription_NaturePower, + MoveDescription_Charge, + MoveDescription_Taunt, + MoveDescription_HelpingHand, + MoveDescription_Trick, + MoveDescription_RolePlay, + MoveDescription_Wish, + MoveDescription_Assist, + MoveDescription_Ingrain, + MoveDescription_Superpower, + MoveDescription_MagicCoat, + MoveDescription_Recycle, + MoveDescription_Revenge, + MoveDescription_BrickBreak, + MoveDescription_Yawn, + MoveDescription_KnockOff, + MoveDescription_Endeavor, + MoveDescription_Eruption, + MoveDescription_SkillSwap, + MoveDescription_Imprison, + MoveDescription_Refresh, + MoveDescription_Grudge, + MoveDescription_Snatch, + MoveDescription_SecretPower, + MoveDescription_Dive, + MoveDescription_ArmThrust, + MoveDescription_Camouflage, + MoveDescription_TailGlow, + MoveDescription_LusterPurge, + MoveDescription_MistBall, + MoveDescription_FeatherDance, + MoveDescription_TeeterDance, + MoveDescription_BlazeKick, + MoveDescription_MudSport, + MoveDescription_IceBall, + MoveDescription_NeedleArm, + MoveDescription_SlackOff, + MoveDescription_HyperVoice, + MoveDescription_PoisonFang, + MoveDescription_CrushClaw, + MoveDescription_BlastBurn, + MoveDescription_HydroCannon, + MoveDescription_MeteorMash, + MoveDescription_Astonish, + MoveDescription_WeatherBall, + MoveDescription_Aromatherapy, + MoveDescription_FakeTears, + MoveDescription_AirCutter, + MoveDescription_Overheat, + MoveDescription_OdorSleuth, + MoveDescription_RockTomb, + MoveDescription_SilverWind, + MoveDescription_MetalSound, + MoveDescription_GrassWhistle, + MoveDescription_Tickle, + MoveDescription_CosmicPower, + MoveDescription_WaterSpout, + MoveDescription_SignalBeam, + MoveDescription_ShadowPunch, + MoveDescription_Extrasensory, + MoveDescription_SkyUppercut, + MoveDescription_SandTomb, + MoveDescription_SheerCold, + MoveDescription_MuddyWater, + MoveDescription_BulletSeed, + MoveDescription_AerialAce, + MoveDescription_IcicleSpear, + MoveDescription_IronDefense, + MoveDescription_Block, + MoveDescription_Howl, + MoveDescription_DragonClaw, + MoveDescription_FrenzyPlant, + MoveDescription_BulkUp, + MoveDescription_Bounce, + MoveDescription_MudShot, + MoveDescription_PoisonTail, + MoveDescription_Covet, + MoveDescription_VoltTackle, + MoveDescription_MagicalLeaf, + MoveDescription_WaterSport, + MoveDescription_CalmMind, + MoveDescription_LeafBlade, + MoveDescription_DragonDance, + MoveDescription_RockBlast, + MoveDescription_ShockWave, + MoveDescription_WaterPulse, + MoveDescription_DoomDesire, + MoveDescription_PsychoBoost, +}; diff --git a/src/data/text/nature_names_de.h b/src/data/text/nature_names_de.h new file mode 100644 index 000000000..695b0b62c --- /dev/null +++ b/src/data/text/nature_names_de.h @@ -0,0 +1,53 @@ +static const u8 NatureName_Hardy[] = _("ROBUST"); +static const u8 NatureName_Lonely[] = _("SOLO"); +static const u8 NatureName_Brave[] = _("MUTIG"); +static const u8 NatureName_Adamant[] = _("HART"); +static const u8 NatureName_Naughty[] = _("FRECH"); +static const u8 NatureName_Bold[] = _("KÜHN"); +static const u8 NatureName_Docile[] = _("SANFT"); +static const u8 NatureName_Relaxed[] = _("LOCKER"); +static const u8 NatureName_Impish[] = _("PFIFFIG"); +static const u8 NatureName_Lax[] = _("LASCH"); +static const u8 NatureName_Timid[] = _("SCHEU"); +static const u8 NatureName_Hasty[] = _("HASTIG"); +static const u8 NatureName_Serious[] = _("ERNST"); +static const u8 NatureName_Jolly[] = _("FROH"); +static const u8 NatureName_Naive[] = _("NAIV"); +static const u8 NatureName_Modest[] = _("MÄSSIG"); +static const u8 NatureName_Mild[] = _("MILD"); +static const u8 NatureName_Quiet[] = _("RUHIG"); +static const u8 NatureName_Bashful[] = _("ZAGHAFT"); +static const u8 NatureName_Rash[] = _("HITZIG"); +static const u8 NatureName_Calm[] = _("STILL"); +static const u8 NatureName_Gentle[] = _("ZART"); +static const u8 NatureName_Sassy[] = _("FORSCH"); +static const u8 NatureName_Careful[] = _("SACHT"); +static const u8 NatureName_Quirky[] = _("KAUZIG"); + +const u8 * const gNatureNames[] = { + NatureName_Hardy, + NatureName_Lonely, + NatureName_Brave, + NatureName_Adamant, + NatureName_Naughty, + NatureName_Bold, + NatureName_Docile, + NatureName_Relaxed, + NatureName_Impish, + NatureName_Lax, + NatureName_Timid, + NatureName_Hasty, + NatureName_Serious, + NatureName_Jolly, + NatureName_Naive, + NatureName_Modest, + NatureName_Mild, + NatureName_Quiet, + NatureName_Bashful, + NatureName_Rash, + NatureName_Calm, + NatureName_Gentle, + NatureName_Sassy, + NatureName_Careful, + NatureName_Quirky, +}; diff --git a/src/data/text/nature_names_en.h b/src/data/text/nature_names_en.h new file mode 100644 index 000000000..305b43690 --- /dev/null +++ b/src/data/text/nature_names_en.h @@ -0,0 +1,53 @@ +static const u8 NatureName_Hardy[] = _("HARDY"); +static const u8 NatureName_Lonely[] = _("LONELY"); +static const u8 NatureName_Brave[] = _("BRAVE"); +static const u8 NatureName_Adamant[] = _("ADAMANT"); +static const u8 NatureName_Naughty[] = _("NAUGHTY"); +static const u8 NatureName_Bold[] = _("BOLD"); +static const u8 NatureName_Docile[] = _("DOCILE"); +static const u8 NatureName_Relaxed[] = _("RELAXED"); +static const u8 NatureName_Impish[] = _("IMPISH"); +static const u8 NatureName_Lax[] = _("LAX"); +static const u8 NatureName_Timid[] = _("TIMID"); +static const u8 NatureName_Hasty[] = _("HASTY"); +static const u8 NatureName_Serious[] = _("SERIOUS"); +static const u8 NatureName_Jolly[] = _("JOLLY"); +static const u8 NatureName_Naive[] = _("NAIVE"); +static const u8 NatureName_Modest[] = _("MODEST"); +static const u8 NatureName_Mild[] = _("MILD"); +static const u8 NatureName_Quiet[] = _("QUIET"); +static const u8 NatureName_Bashful[] = _("BASHFUL"); +static const u8 NatureName_Rash[] = _("RASH"); +static const u8 NatureName_Calm[] = _("CALM"); +static const u8 NatureName_Gentle[] = _("GENTLE"); +static const u8 NatureName_Sassy[] = _("SASSY"); +static const u8 NatureName_Careful[] = _("CAREFUL"); +static const u8 NatureName_Quirky[] = _("QUIRKY"); + +const u8 * const gNatureNames[] = { + NatureName_Hardy, + NatureName_Lonely, + NatureName_Brave, + NatureName_Adamant, + NatureName_Naughty, + NatureName_Bold, + NatureName_Docile, + NatureName_Relaxed, + NatureName_Impish, + NatureName_Lax, + NatureName_Timid, + NatureName_Hasty, + NatureName_Serious, + NatureName_Jolly, + NatureName_Naive, + NatureName_Modest, + NatureName_Mild, + NatureName_Quiet, + NatureName_Bashful, + NatureName_Rash, + NatureName_Calm, + NatureName_Gentle, + NatureName_Sassy, + NatureName_Careful, + NatureName_Quirky, +}; diff --git a/src/engine/trade.c b/src/engine/trade.c index dab1d3885..06a6b96c7 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -2186,11 +2186,11 @@ static void sub_804997C(void) { if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE) { - ShowPokemonSummaryScreen(gPlayerParty, gUnknown_03004824->tradeMenuCursorPosition, gUnknown_03004824->partyCounts[0] - 1, sub_80484F4, 4); + ShowPokemonSummaryScreen(gPlayerParty, gUnknown_03004824->tradeMenuCursorPosition, gUnknown_03004824->partyCounts[0] - 1, sub_80484F4, PSS_MODE_NO_MOVE_ORDER_EDIT); } else { - ShowPokemonSummaryScreen(gEnemyParty, gUnknown_03004824->tradeMenuCursorPosition - 6, gUnknown_03004824->partyCounts[1] - 1, sub_80484F4, 4); + ShowPokemonSummaryScreen(gEnemyParty, gUnknown_03004824->tradeMenuCursorPosition - 6, gUnknown_03004824->partyCounts[1] - 1, sub_80484F4, PSS_MODE_NO_MOVE_ORDER_EDIT); } } } diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 8d92719d1..d278eda4a 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -32,7 +32,6 @@ EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0}; extern u8 sub_806BD58(u8, u8); extern void PartyMenuPrintMonsLevelOrStatus(void); extern void sub_806BC3C(u8, u8); -extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int); extern u8 GetMonStatusAndPokerus(); extern void PartyMenuPrintHP(); extern bool8 sub_80F9344(void); @@ -434,7 +433,7 @@ static void sub_81225D4(u8 taskId) DestroyTask(taskId); ewram1B000.unk262 = 1; - ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_81225A4, 0); + ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_81225A4, PSS_MODE_NORMAL); } } @@ -884,7 +883,7 @@ static void sub_8123034(u8 taskId) DestroyTask(taskId); ewram1B000.unk262 = 1; - ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_8123004, 0); + ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_8123004, PSS_MODE_NORMAL); } } diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 11dd1dd90..dc817f8c9 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -4292,7 +4292,7 @@ void sub_806F3FC(u8 taskId) { if (!gPaletteFade.active) { - sub_809D9F0(gPlayerParty, ewram1C000.unk5, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8); + ShowSelectMovePokemonSummaryScreen(gPlayerParty, ewram1C000.unk5, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8); DestroyTask(taskId); } } diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c index 8cc7df9d4..8aa10254c 100644 --- a/src/pokemon/learn_move.c +++ b/src/pokemon/learn_move.c @@ -4,8 +4,10 @@ #include "main.h" #include "menu.h" #include "menu_cursor.h" +#include "learn_move.h" #include "palette.h" #include "pokemon.h" +#include "pokemon_summary_screen.h" #include "overworld.h" #include "script.h" #include "constants/songs.h" @@ -22,26 +24,11 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u8 gTileBuffer[]; -struct ContestMove -{ - u8 effect; - u8 contestCategory:3; - u8 comboStarterId; - u8 comboMoves[4]; -}; - -struct ContestEffect -{ - u8 effectType; - u8 appeal; - u8 jam; -}; - extern const struct ContestMove gContestMoves[]; extern const struct ContestEffect gContestEffects[]; extern const struct WindowConfig gWindowConfig_81E6CE4; extern const struct WindowConfig gWindowConfig_81E7240; -extern const u8 *const gUnknown_083CADD4[]; +extern const u8 *const gContestEffectStrings[]; extern const u8 *const gMoveDescriptions[]; extern const u8 gTypeNames[][7]; extern const u8 *const gUnknown_083CAF70[]; @@ -50,7 +37,6 @@ extern const u8 *const gUnknown_083CAF70[]; extern const u8 deuOtherText_ForgotAndLearned[]; #endif -extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); struct LearnMoveStruct { @@ -557,7 +543,7 @@ void LearnMoveMain(void) case 20: if (!gPaletteFade.active) { - sub_809D9F0(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]); + ShowSelectMovePokemonSummaryScreen(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]); sLearnMoveStruct->state = 28; } break; @@ -1039,7 +1025,7 @@ void sub_8133AEC(bool8 contestInfo, int unused) gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; for (i = 0; i < 3; i++) PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]); - sub_8072AB0(gUnknown_083CADD4[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1); + sub_8072AB0(gContestEffectStrings[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1); } else { diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c index d90947c76..18bbef89b 100644 --- a/src/pokemon/mon_markings.c +++ b/src/pokemon/mon_markings.c @@ -45,11 +45,11 @@ extern const union AnimCmd *const gSpriteAnimTable_83E533C[]; static EWRAM_DATA struct PokemonMarkMenu *sMenu = NULL; -void sub_80F761C(s16, s16, u16, u16); -void nullsub_65(struct Sprite *); -void sub_80F78CC(struct Sprite *); -void sub_80F7908(struct Sprite *); -struct Sprite *sub_80F7960(u16, u16, u16 *, u16); +static void sub_80F761C(s16, s16, u16, u16); +static void nullsub_65(struct Sprite *); +static void sub_80F78CC(struct Sprite *); +static void sub_80F7908(struct Sprite *); +static struct Sprite *sub_80F7960(u16, u16, const u16 *, u16); void sub_80F727C(struct PokemonMarkMenu *ptr) { @@ -335,21 +335,21 @@ void sub_80F7908(struct Sprite *sprite) sprite->pos1.y = 16 * sMenu->cursorPos + sMenu->cursorBaseY; } -struct Sprite *sub_80F7920(u16 tileTag, u16 paletteTag, u16 *palette) +struct Sprite *sub_80F7920(u16 tileTag, u16 paletteTag, const u16 *palette) { if (!palette) palette = gUnknown_083E49F4; return sub_80F7960(tileTag, paletteTag, palette, 16); } -struct Sprite *sub_80F7940(u16 tileTag, u16 paletteTag, u16 *palette) +struct Sprite *sub_80F7940(u16 tileTag, u16 paletteTag, const u16 *palette) { if (!palette) palette = gUnknown_083E49F4; return sub_80F7960(tileTag, paletteTag, palette, 1); } -struct Sprite *sub_80F7960(u16 tileTag, u16 paletteTag, u16 *palette, u16 size) +struct Sprite *sub_80F7960(u16 tileTag, u16 paletteTag, const u16 *palette, u16 size) { u8 spriteId; struct SpriteTemplate sprTemplate; diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index 9803aa071..ea33cd3e6 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -350,7 +350,7 @@ static void sub_8089F44(u8 taskID) u8 spriteID = gSprites[gTasks[taskID].data[3] >> 8].data[0]; DestroyTask(taskID); ewram1B000_alt.unk262 = 1; - ShowPokemonSummaryScreen(gPlayerParty, spriteID, gPlayerPartyCount - 1, sub_8089F14, 0); + ShowPokemonSummaryScreen(gPlayerParty, spriteID, gPlayerPartyCount - 1, sub_8089F14, PSS_MODE_NORMAL); } } diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 70b9b7d94..532f30aaa 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -1,13 +1,3348 @@ #include "global.h" -#include "pokemon_summary_screen.h" +#include "battle.h" +#include "data2.h" +#include "decompress.h" +#include "event_data.h" +#include "ewram.h" +#include "item.h" +#include "constants/items.h" +#include "learn_move.h" #include "link.h" +#include "m4a.h" +#include "main.h" #include "menu.h" +#include "menu_helpers.h" +#include "overworld.h" +#include "palette.h" +#include "party_menu.h" +#include "pokeball.h" #include "pokemon.h" +#include "pokemon_summary_screen.h" #include "region_map.h" +#include "constants/songs.h" +#include "sound.h" +#include "constants/species.h" +#include "sprite.h" #include "string_util.h" +#include "strings.h" #include "strings2.h" +#include "task.h" #include "tv.h" -#include "ewram.h" +#include "unknown_task.h" + +static void sub_809FC0C(void); +static void sub_809FEB8(void); +static void sub_809F63C(struct Pokemon *); +static void sub_809F650(struct Pokemon *); +static void sub_809F664(struct Pokemon *); +static void sub_809FE6C(struct Pokemon *); +static void sub_80A0090(struct Pokemon *); +static void sub_80A015C(struct Pokemon *); +static void sub_809DE44(void); +static void sub_809EB40(u8); +static void sub_809EBC4(void); +static void sub_809E044(void); +static void sub_80A1D84(struct Pokemon *); +static void sub_80A18C4(void); +static bool8 LoadPokemonSummaryScreenGraphics(void); +static bool8 MonKnowsMultipleMoves(struct Pokemon *); +static void PrintSummaryWindowHeaderText(void); +static void sub_80A1DCC(struct Pokemon *); +static void sub_809FE80(void); +static void sub_80A00A4(void); +static void sub_80A0390(void); +extern u8 sub_80A1808(struct Pokemon *); +static void sub_80A1F98(s32, u8, u8, u8, u8, u16, s32); +static void sub_80A0958(struct Pokemon *); +static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *, u8, u8); +static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *, u8, u8); +static void sub_80A1EF8(const u8 *, u8, u8, u16, s32); +static void sub_80A1F48(const u8 *, u8, u8, u8, u16); +static void PrintHeldItemName(u16, u8, u8); +static void PrintNumRibbons(struct Pokemon *); +static void DrawExperienceProgressBar(struct Pokemon *, u8, u8); +static void sub_809E13C(u8 taskId); +static void sub_80A1950(void); +static void sub_809DE64(void); +static void SummaryScreenHandleAButton(u8); +static void SummaryScreenHandleUpDownInput(u8, s8); +static bool8 sub_809F7D0(u8); +static void sub_809F9D0(u8, u8); +static void sub_809EAC8(u8); +static void sub_809E534(u8); +static void sub_809E83C(u8, s8); +static void sub_80A1B40(u8); +static void sub_80A2078(int); +static void sub_809E3FC(u8); +static void SummaryScreenHandleKeyInput(u8); +static void sub_80A1B1C(u8); +static void sub_80A16CC(u8); +static void sub_80A1A30(u8); +static void DrawSummaryScreenNavigationDots(void); +static void sub_80A00F4(u8); +static void sub_80A029C(struct Pokemon *); +static void sub_809FBE4(void); +static void sub_80A1500(u8); +static void sub_80A1334(u8); +extern void sub_809F43C(u8); +extern s8 sub_809F284(s8); +extern s8 sub_809F3CC(s8); +static bool8 sub_809F5F8(void); +static void sub_80A1DE8(struct Pokemon *); +static u8 sub_809F6B4(struct Pokemon *, u8 *); +static void DrawPokerusSurvivorDot(struct Pokemon *); +static void sub_80A12D0(s8); +static void sub_809FAC8(struct Pokemon *); +static void SummaryScreenHandleLeftRightInput(u8, s8); +static void sub_809E8F0(); +static void sub_80A1654(s8, u8); +static void sub_80A1488(s8, u8); +static void sub_809FC34(struct Pokemon *); +static void sub_809FF64(struct Pokemon *); +static void sub_80A1918(u8, u8); +static void sub_80A198C(u8, u8, u8, u8); +static u16 GetMonMove(struct Pokemon *, u8); +static void sub_80A04CC(u16); +static void sub_80A057C(u16); +static void sub_80A0498(u16); +static void sub_80A046C(u16); +static void sub_80A20A8(u8); +static void sub_809F678(struct Pokemon *); +static void sub_80A1BC0(struct Sprite *sprite); +static void sub_80A1888(struct Sprite *); +static void sub_80A0428(struct Pokemon *, u8 *); +static void sub_80A18E4(u8); +static u8 *sub_80A1E58(u8 *, u8); +static void sub_80A0A2C(struct Pokemon *, u8, u8); +static void sub_80A1FF8(const u8 *, u8, u8, u8); + +extern u8 ball_number_to_ball_processing_index(u16); +extern u8 StorageSystemGetNextMonIndex(struct BoxPokemon *, u8, u8, u8); + +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 gUnknown_020384F0; +extern u8 gUnknown_08208238[]; +extern u16 gUnknown_030041B8; +extern u16 gUnknown_03004280; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030041B0; +extern TaskFunc gUnknown_03005CF0; +extern struct Sprite *gUnknown_020384F4; +extern struct SpriteTemplate gUnknown_02024E8C; + +extern const u8 gStatusPal_Icons[]; +extern const u8 gStatusGfx_Icons[]; +extern const u8 gMenuSummaryPal[]; +extern const u8 gMenuSummaryGfx[]; +extern const u8 gMoveTypes_Gfx[]; +extern const u8 gMoveTypes_Pal[]; +extern const u8 gStatusScreen_Pal[]; +extern const u8 gStatusScreen_Tilemap[]; +extern const u8 gUnknown_08E74688[]; +extern const u8 gUnknown_08E74E88[]; +extern const u8 gUnknown_08E73508[]; +extern const u8 gStatusScreen_Gfx[]; +extern const u8 gFontDefaultPalette[]; +extern const u8 gUnknownPalette_81E6692[]; +extern const u8 gAbilityNames[][13]; +extern const u8 * const gAbilityDescriptions[]; +extern const u8 * const gContestEffectStrings[]; +extern const struct ContestMove gContestMoves[]; +extern const struct ContestEffect gContestEffects[]; +extern const u16 gUnknown_08E94510[]; +extern const u16 gUnknown_08E94550[]; +extern const u16 gUnknown_08E94590[]; +extern const u8 gUnknown_08E73E88[]; + +#if ENGLISH +#include "../data/text/move_descriptions_en.h" +#include "../data/text/nature_names_en.h" +#elif GERMAN +#include "../data/text/move_descriptions_de.h" +#include "../data/text/nature_names_de.h" +#endif + +static const u8 * const sPageHeaderTexts[] = { + gEmptyString_81E72B0, + OtherText_PokeInfo, + OtherText_PokeSkills, + OtherText_BattleMoves, + OtherText_ContestMoves, + OtherText_Switch, + OtherText_Info, + gOtherText_CancelNoTerminator, +}; + +static const union AffineAnimCmd sUnusedSpriteAffineAnim[] = { + AFFINEANIMCMD_FRAME(0xFF00, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sUnsuedSpriteAffineAnimTable[] = { + sUnusedSpriteAffineAnim, +}; + +static const struct OamData sOamData_83C109C = { + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_83C10A4[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C10AC[] = { + ANIMCMD_FRAME(8, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C10B4[] = { + ANIMCMD_FRAME(16, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C10BC[] = { + ANIMCMD_FRAME(24, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C10C4[] = { + ANIMCMD_FRAME(32, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C10CC[] = { + ANIMCMD_FRAME(40, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C10D4[] = { + ANIMCMD_FRAME(48, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C10DC[] = { + ANIMCMD_FRAME(56, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C10E4[] = { + ANIMCMD_FRAME(64, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C10EC[] = { + ANIMCMD_FRAME(72, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C10F4[] = { + ANIMCMD_FRAME(80, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C10FC[] = { + ANIMCMD_FRAME(88, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1104[] = { + ANIMCMD_FRAME(96, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C110C[] = { + ANIMCMD_FRAME(104, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1114[] = { + ANIMCMD_FRAME(112, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C111C[] = { + ANIMCMD_FRAME(120, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1124[] = { + ANIMCMD_FRAME(128, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C112C[] = { + ANIMCMD_FRAME(136, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1134[] = { + ANIMCMD_FRAME(144, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C113C[] = { + ANIMCMD_FRAME(152, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1144[] = { + ANIMCMD_FRAME(160, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C114C[] = { + ANIMCMD_FRAME(168, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1154[] = { + ANIMCMD_FRAME(176, 0), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSpriteAnimTable_83C115C[] = { + sSpriteAnim_83C10A4, + sSpriteAnim_83C10AC, + sSpriteAnim_83C10B4, + sSpriteAnim_83C10BC, + sSpriteAnim_83C10C4, + sSpriteAnim_83C10CC, + sSpriteAnim_83C10D4, + sSpriteAnim_83C10DC, + sSpriteAnim_83C10E4, + sSpriteAnim_83C10EC, + sSpriteAnim_83C10F4, + sSpriteAnim_83C10FC, + sSpriteAnim_83C1104, + sSpriteAnim_83C110C, + sSpriteAnim_83C1114, + sSpriteAnim_83C111C, + sSpriteAnim_83C1124, + sSpriteAnim_83C112C, + sSpriteAnim_83C1134, + sSpriteAnim_83C113C, + sSpriteAnim_83C1144, + sSpriteAnim_83C114C, + sSpriteAnim_83C1154, +}; + +static const struct CompressedSpriteSheet sUnknown_083C11B8 = { gMoveTypes_Gfx, 0x1700, 30002 }; + +static const struct SpriteTemplate sSpriteTemplate_83C11C0 = { + .tileTag = 30002, + .paletteTag = 30002, + .oam = &sOamData_83C109C, + .anims = sSpriteAnimTable_83C115C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const u8 sUnknown_PaletteNums[] = { 0xD, 0xD, 0xE, 0xE, 0xD, 0xD, 0xF, 0xE, 0xD, 0xF, 0xD, 0xE, 0xF, 0xD, 0xE, 0xE, 0xF, 0xD, 0xD, 0xE, 0xE, 0xF, 0xD }; + +static const struct OamData sOamData_83C11F0 = { + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_83C11F8[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1200[] = { + ANIMCMD_FRAME(4, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1208[] = { + ANIMCMD_FRAME(8, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1210[] = { + ANIMCMD_FRAME(12, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1218[] = { + ANIMCMD_FRAME(16, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1220[] = { + ANIMCMD_FRAME(16, 0, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1228[] = { + ANIMCMD_FRAME(20, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1230[] = { + ANIMCMD_FRAME(24, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1238[] = { + ANIMCMD_FRAME(24, 0, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C1240[] = { + ANIMCMD_FRAME(28, 0), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSpriteAnimTable_83C1248[] = { + sSpriteAnim_83C11F8, + sSpriteAnim_83C1200, + sSpriteAnim_83C1208, + sSpriteAnim_83C1210, + sSpriteAnim_83C1218, + sSpriteAnim_83C1220, + sSpriteAnim_83C1228, + sSpriteAnim_83C1230, + sSpriteAnim_83C1238, + sSpriteAnim_83C1240, +}; + +static const struct CompressedSpriteSheet sUnknown_083C1270 = { gMenuSummaryGfx, 0x400, 30000 }; +static const struct CompressedSpritePalette sUnknown_083C1278 = { gMenuSummaryPal, 30000 }; + +static const struct SpriteTemplate sSpriteTemplate_83C1280 = { + .tileTag = 30000, + .paletteTag = 30000, + .oam = &sOamData_83C11F0, + .anims = sSpriteAnimTable_83C1248, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const struct OamData sOamData_83C1298 = { + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 3, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_83C12A0[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C12A8[] = { + ANIMCMD_FRAME(4, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C12B0[] = { + ANIMCMD_FRAME(8, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C12B8[] = { + ANIMCMD_FRAME(12, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C12C0[] = { + ANIMCMD_FRAME(16, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C12C8[] = { + ANIMCMD_FRAME(20, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sSpriteAnim_83C12D0[] = { + ANIMCMD_FRAME(24, 0), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSpriteAnimTable_83C12D8[] = { + sSpriteAnim_83C12A0, + sSpriteAnim_83C12A8, + sSpriteAnim_83C12B0, + sSpriteAnim_83C12B8, + sSpriteAnim_83C12C0, + sSpriteAnim_83C12C8, + sSpriteAnim_83C12D0, +}; + +static const struct CompressedSpriteSheet sUnknown_083C12F4 = { gStatusGfx_Icons, 0x380, 30001 }; +static const struct CompressedSpritePalette sUnknown_083C12FC = { gStatusPal_Icons, 30001 }; + +static const struct SpriteTemplate sSpriteTemplate_83C1304 = { + .tileTag = 30001, + .paletteTag = 30001, + .oam = &sOamData_83C1298, + .anims = sSpriteAnimTable_83C12D8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const u16 sSummaryScreenMonMarkingsPalette[] = INCBIN_U16("graphics/summary_screen/mon_markings.gbapal"); + +#if ENGLISH +static const u16 gSummaryScreenTextTiles[] = INCBIN_U16("graphics/summary_screen/text.4bpp"); +#elif GERMAN +extern const u16 gSummaryScreenTextTiles[]; +#endif + +static const u16 sSummaryScreenButtonTiles[] = INCBIN_U16("graphics/summary_screen/buttons.4bpp"); + +static const u16 sUnknown_083C157C[] = { RGB(26, 26, 23) }; +static const u16 sUnknown_083C157E[] = { RGB(30, 30, 27) }; + +static void (*const sUnknown_083C1580[])(void) = { + sub_809FC0C, + sub_809FEB8, +}; + +static void (*const sUnknown_083C1588[])(struct Pokemon *) = { + sub_809F63C, + sub_809F650, + sub_809F664, + sub_809F664, +}; + +static void (*const sUnknown_083C1598[])(struct Pokemon *) = { + sub_809FE6C, + sub_80A0090, + sub_80A015C, + sub_80A015C, +}; + +static const u8 sDoubleBattlePartyOrder[] = { 0, 2, 3, 1, 4, 5 }; + +static const u8 sUnknown_083C15AE[] = _("{STR_VAR_1}{CLEAR_TO 64}"); +static const u8 sUnknown_083C15B4[] = _("{STR_VAR_1}{CLEAR_TO 72}"); + +asm(".align 2"); // TODO: this array is probably not correctly-typed +static const u8 sUnknown_083C15BC[] = { + 9, 1, 0, 2, + 10, 3, 0, 4, + 8, 5, 0, 6, + 11, 7, 0, 8, + 14, 9, 0, 10, + 12, 11, 0, 12, + 13, 13, 0, 14, + -1, 15, 0, 10, +}; + + +void sub_809D844(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_809D85C(void) +{ + REG_BG1HOFS = gUnknown_030042C0; + REG_BG1VOFS = gUnknown_030041B4; + REG_BG2HOFS = gUnknown_03004288; + REG_BG2VOFS = gUnknown_03004280; + REG_BG3HOFS = gUnknown_030041B0; + REG_BG3VOFS = gUnknown_030041B8; + + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void ShowPokemonSummaryScreen(struct Pokemon *party, u8 monIndex, u8 maxMonIndex, MainCallback callback, u8 mode) +{ + gPaletteFade.bufferTransferDisabled = 1; + + pssData.monList.partyMons = party; + pssData.mode = mode; + pssData.monIndex = monIndex; + pssData.maxMonIndex = maxMonIndex; + pssData.callback = callback; + pssData.loadGfxState = 0; + pssData.selectedMoveIndex = 4; + pssData.moveToLearn = 0; + pssData.bgToggle = 0; + pssData.disableMoveOrderEditing = FALSE; + + if (mode >= PSS_MODE_PC_NORMAL) + { + pssData.usingPC = TRUE; + } + else + { + pssData.usingPC = FALSE; + } + + switch (mode) + { + case PSS_MODE_NORMAL: + case PSS_MODE_PC_NORMAL: + pssData.firstPage = PSS_PAGE_INFO; + pssData.lastPage = PSS_PAGE_CONTEST_MOVES; + pssData.unk77 = 0; + pssData.unk78 = 0; + pssData.headerTextId = 1; + pssData.headerActionTextId = 7; + break; + case PSS_MODE_NO_MOVE_ORDER_EDIT: + pssData.firstPage = PSS_PAGE_INFO; + pssData.lastPage = PSS_PAGE_CONTEST_MOVES; + pssData.unk77 = 0; + pssData.unk78 = 0; + pssData.headerTextId = 1; + pssData.headerActionTextId = 7; + pssData.disableMoveOrderEditing = TRUE; + break; + case PSS_MODE_SELECT_MOVE: + pssData.firstPage = PSS_PAGE_BATTLE_MOVES; + pssData.lastPage = PSS_PAGE_CONTEST_MOVES; + pssData.unk77 = 1; + pssData.unk78 = 1; + pssData.headerTextId = 3; + pssData.headerActionTextId = 0; + pssData.selectedMoveIndex = 0; + break; + case PSS_MODE_MOVES_ONLY: + case PSS_MODE_PC_MOVES_ONLY: + pssData.firstPage = PSS_PAGE_BATTLE_MOVES; + pssData.lastPage = PSS_PAGE_CONTEST_MOVES; + pssData.unk77 = 1; + pssData.unk78 = 1; + break; + } + + pssData.page = pssData.firstPage; + SetMainCallback2(sub_809DE44); +} + +void ShowSelectMovePokemonSummaryScreen(struct Pokemon *party, u8 monIndex, u8 maxMonIndex, MainCallback callback, u16 move) +{ + ShowPokemonSummaryScreen(party, monIndex, maxMonIndex, callback, PSS_MODE_SELECT_MOVE); + pssData.moveToLearn = move; +} + +void sub_809DA1C(void) +{ + switch (pssData.mode) + { + case PSS_MODE_NORMAL: + case PSS_MODE_PC_NORMAL: + pssData.inputHandlingTaskId = CreateTask(SummaryScreenHandleKeyInput, 0); + break; + case PSS_MODE_NO_MOVE_ORDER_EDIT: + pssData.inputHandlingTaskId = CreateTask(SummaryScreenHandleKeyInput, 0); + break; + case PSS_MODE_SELECT_MOVE: + case PSS_MODE_UNKNOWN: + pssData.inputHandlingTaskId = CreateTask(sub_809EB40, 0); + break; + case PSS_MODE_MOVES_ONLY: + case PSS_MODE_PC_MOVES_ONLY: + pssData.inputHandlingTaskId = CreateTask(sub_809E3FC, 0); + break; + } +} + +bool8 sub_809DA84(void) +{ + const u16 *src; + void *dest; + + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + ResetSpriteData(); + gMain.state++; + break; + case 1: + remove_some_task(); + gMain.state++; + break; + case 2: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 3: + dest = (void *)VRAM; + DmaClearLarge(3, dest, 0x10000, 0x1000, 32); + gMain.state++; + break; + case 4: + sub_809DE64(); + gMain.state++; + break; + case 5: + SetUpWindowConfig(&gWindowConfig_81E6E6C); + gMain.state++; + break; + case 6: + MultistepInitMenuWindowBegin(&gWindowConfig_81E6E6C); + gMain.state++; + break; + case 7: + if (MultistepInitMenuWindowContinue()) + { + gMain.state++; + } + break; + case 8: + sub_809DA1C(); + gMain.state++; + break; + case 9: + src = gSummaryScreenTextTiles; + dest = (void *)VRAM + 0xD000; + DmaCopy16(3, src, dest, 320); + + src = sSummaryScreenButtonTiles; + dest = (void *)VRAM + 0xD140; + DmaCopy16(3, src, dest, 256); + + pssData.loadGfxState = 0; + gMain.state++; + break; + case 10: + if (LoadPokemonSummaryScreenGraphics()) + { + pssData.loadGfxState = 0; + gMain.state++; + } + break; + case 11: + sub_80A18C4(); + gMain.state++; + break; + case 12: + sub_809F678(&pssData.loadedMon); + if (!GetMonStatusAndPokerus(&pssData.loadedMon)) + { + sub_80A12D0(0); + } + else + { + sub_80A12D0(10); + } + + DrawPokerusSurvivorDot(&pssData.loadedMon); + gMain.state++; + break; + case 13: + sub_80A1950(); + sub_80A1D84(&pssData.loadedMon); + gMain.state++; + break; + case 14: + sub_80A1DE8(&pssData.loadedMon); + pssData.loadGfxState = 0; + gMain.state++; + break; + case 15: + if ((pssData.monSpriteId = sub_809F6B4(&pssData.loadedMon, &pssData.loadGfxState)) != 0xFF) + { + pssData.loadGfxState = 0; + gMain.state++; + } + break; + case 16: + sub_809E044(); + DrawSummaryScreenNavigationDots(); + gMain.state++; + break; + case 17: + if (pssData.page <= PSS_PAGE_SKILLS) + { + sUnknown_083C1580[pssData.page](); + } + + gMain.state++; + break; + case 18: + sub_809FAC8(&pssData.loadedMon); + gMain.state++; + break; + case 19: + sUnknown_083C1598[pssData.page](&pssData.loadedMon); + gMain.state++; + break; + case 20: + if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) + { + gUnknown_030041B0 = 256; + } + else + { + gUnknown_030041B0 = 0; + } + + gMain.state++; + break; + case 21: + sub_809EBC4(); + if (pssData.selectedMoveIndex != 0) + { + sub_80A1488(0, 0); + sub_80A1654(0, 0); + } + else + { + sub_80A1488(10, 0); + sub_80A1654(10, 0); + } + + PrintSummaryWindowHeaderText(); + gMain.state++; + break; + case 22: + if (sub_8055870() != TRUE) + { + gMain.state++; + } + break; + default: + SetVBlankCallback(sub_809D85C); + BeginHardwarePaletteFade(0xFF, 0, 16, 0, 1); + SetMainCallback2(sub_809D844); + gPaletteFade.bufferTransferDisabled = 0; + return TRUE; + break; + } + + return FALSE; +} + +static void sub_809DE44(void) +{ + while (sub_809DA84() != TRUE && sub_80F9344() != TRUE); +} + +static void sub_809DE64(void) +{ + REG_BG0CNT = 0x1E08; + REG_BG1CNT = 0x4801; + REG_BG2CNT = 0x4A02; + REG_BG3CNT = 0x5C03; + + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 0; + gUnknown_030041B8 = 0; + + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + + REG_BLDCNT = 0; + REG_DISPCNT = 0x1F40; +} + +static bool8 LoadPokemonSummaryScreenGraphics(void) +{ + switch (pssData.loadGfxState) + { + case 0: + LZDecompressVram(gStatusScreen_Gfx, (void *)VRAM + 0); + break; + case 1: + CpuSet(gUnknown_08E73508, (void *)VRAM + 0xE000, 0x400); + break; + case 2: + LZDecompressVram(gUnknown_08E74E88, (void *)VRAM + 0xE800); + break; + case 3: + LZDecompressVram(gStatusScreen_Tilemap, (void *)VRAM + 0x4800); + break; + case 4: + CpuSet(gUnknown_08E73E88, (void *)VRAM + 0x5800, 0x400); + break; + case 5: + CpuSet(gUnknown_08E74688, (void *)VRAM + 0x6800, 0x400); + break; + case 6: + LoadCompressedPalette(gStatusScreen_Pal, 0, 160); + break; + case 7: + LoadCompressedObjectPic(&sUnknown_083C11B8); + break; + case 8: + LoadCompressedObjectPic(&sUnknown_083C1270); + break; + case 9: + LoadCompressedObjectPic(&sUnknown_083C12F4); + break; + case 10: + LoadCompressedObjectPalette(&sUnknown_083C12FC); + break; + case 11: + LoadCompressedObjectPalette(&sUnknown_083C1278); + break; + case 12: + LoadCompressedPalette(gMoveTypes_Pal, 464, 96); + pssData.loadGfxState = 0; + return TRUE; + } + + pssData.loadGfxState++; + return FALSE; +} + +static void sub_809E044(void) +{ + LoadPalette(&gUnknownPalette_81E6692[28], 129, 2); + LoadPalette(&gUnknownPalette_81E6692[30], 136, 2); + LoadPalette(&gUnknownPalette_81E6692[28], 143, 2); + LoadPalette(&gUnknownPalette_81E6692[30], 137, 2); + LoadPalette(&gUnknownPalette_81E6692[12], 209, 4); + LoadPalette(&gUnknownPalette_81E6692[20], 211, 4); + LoadPalette(&gUnknownPalette_81E6692[28], 213, 4); + LoadPalette(&gUnknownPalette_81E6692[12], 215, 4); + LoadPalette(&gUnknownPalette_81E6692[8], 217, 4); + LoadPalette(&gUnknownPalette_81E6692[16], 219, 4); + LoadPalette(&gUnknownPalette_81E6692[4], 221, 2); + LoadPalette(&gUnknownPalette_81E6692[6], 222, 2); + LoadPalette(&gUnknownPalette_81E6692[2], 223, 2); + LoadPalette(gFontDefaultPalette, 240, 32); + LoadPalette(&gUnknownPalette_81E6692[6], 249, 2); +} + +static void SummaryScreenExit(u8 taskId) +{ + PlaySE(SE_SELECT); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = sub_809E13C; +} + +static void sub_809E13C(u8 taskId) +{ + if (sub_8055870() != TRUE && !gPaletteFade.active) + { + gUnknown_020384F0 = pssData.monIndex; + + ResetSpriteData(); + FreeAllSpritePalettes(); + StopCryAndClearCrySongs(); + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + SetMainCallback2(pssData.callback); + DestroyTask(taskId); + } +} + +static void SummaryScreenHandleKeyInput(u8 taskId) +{ + if (gPaletteFade.active) + return; + + if (gMain.newKeys & DPAD_UP) + { + SummaryScreenHandleUpDownInput(taskId, -1); + } + else if (gMain.newKeys & DPAD_DOWN) + { + SummaryScreenHandleUpDownInput(taskId, 1); + } + else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1) + { + SummaryScreenHandleLeftRightInput(taskId, -1); + } + else if ((gMain.newKeys & DPAD_RIGHT) || sub_80F9284() == 2) + { + SummaryScreenHandleLeftRightInput(taskId, 1); + } + else if (gMain.newKeys & A_BUTTON) + { + if (pssData.page >= PSS_PAGE_BATTLE_MOVES) + { + SummaryScreenHandleAButton(taskId); + } + + if (pssData.page == PSS_PAGE_INFO) + { + SummaryScreenExit(taskId); + } + } + else if (gMain.newKeys & B_BUTTON) + { + SummaryScreenExit(taskId); + } +} + +static void sub_809E260(u8 taskId) +{ + if (gPaletteFade.active) + return; + + if (gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[0] = 4; + sub_809E8F0(taskId, -1, &pssData.selectedMoveIndex); + } + else if (gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[0] = 4; + sub_809E8F0(taskId, 1, &pssData.selectedMoveIndex); + } + else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1) + { + if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) + { + MenuZeroFillWindowRect(0, 14, 9, 18); + } + + SummaryScreenHandleLeftRightInput(taskId, -1); + } + else if ((gMain.newKeys & DPAD_RIGHT) || sub_80F9284() == 2) + { + if (pssData.page != pssData.lastPage) + { + if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) + { + MenuZeroFillWindowRect(0, 14, 9, 18); + } + + SummaryScreenHandleLeftRightInput(taskId, 1); + } + } + else if (gMain.newKeys & A_BUTTON) + { + if (sub_809F7D0(taskId) == TRUE || pssData.selectedMoveIndex == 4) + { + pssData.switchMoveIndex = pssData.selectedMoveIndex; + gSpecialVar_0x8005 = pssData.switchMoveIndex; + SummaryScreenExit(taskId); + } + else + { + PlaySE(SE_HAZURE); + sub_809F9D0(taskId, pssData.selectedMoveIndex); + } + } + else if (gMain.newKeys & B_BUTTON) + { + pssData.switchMoveIndex = 4; + gSpecialVar_0x8005 = 4; + SummaryScreenExit(taskId); + } +} + +static void sub_809E3FC(u8 taskId) +{ + if (gPaletteFade.active) + return; + + if (gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[0] = 4; + sub_809E8F0(taskId, -1, &pssData.selectedMoveIndex); + } + else if (gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[0] = 4; + sub_809E8F0(taskId, 1, &pssData.selectedMoveIndex); + } + else if (gMain.newKeys & A_BUTTON) + { + if (pssData.selectedMoveIndex != 4 && !pssData.disableMoveOrderEditing) + { + if (!MonKnowsMultipleMoves(&pssData.loadedMon)) + { + PlaySE(SE_HAZURE); + } + else + { + PlaySE(SE_SELECT); + + pssData.switchMoveIndex = pssData.selectedMoveIndex; + sub_80A1B40(1); + sub_80A1A30(19); + + gTasks[taskId].func = sub_809E534; + } + } + else + { + PlaySE(SE_SELECT); + sub_809EAC8(taskId); + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_809EAC8(taskId); + } + +} + +static bool8 MonKnowsMultipleMoves(struct Pokemon *mon) +{ + u8 i; + + for (i = 1; i < 4; i++) + { + if (GetMonMove(mon, i)) + { + return TRUE; + } + } + + return FALSE; +} + +static void sub_809E534(u8 taskId) +{ + if (gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[0] = 3; + sub_809E8F0(taskId, -1, &pssData.switchMoveIndex); + } + else if (gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[0] = 3; + sub_809E8F0(taskId, 1, &pssData.switchMoveIndex); + } + else if (gMain.newKeys & A_BUTTON) + { + sub_809E83C(taskId, 1); + } + else if (gMain.newKeys & B_BUTTON) + { + sub_809E83C(taskId, -1); + } +} + +static void sub_809E5C4(void) +{ + struct Pokemon *party = pssData.monList.partyMons; + struct Pokemon *pkmn = &party[pssData.monIndex]; + u8 moveIndex1 = pssData.selectedMoveIndex; + u8 moveIndex2 = pssData.switchMoveIndex; + + u16 move1 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1); + u16 move2 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2); + u8 move1pp = GetMonData(pkmn, MON_DATA_PP1 + moveIndex1); + u8 move2pp = GetMonData(pkmn, MON_DATA_PP1 + moveIndex2); + u8 ppBonuses = GetMonData(pkmn, MON_DATA_PP_BONUSES); + + // Calculate PP bonuses + u8 r9 = gUnknown_08208238[moveIndex1]; + u8 r2 = (ppBonuses & r9) >> (moveIndex1 * 2); + u8 r3 = gUnknown_08208238[moveIndex2]; + u8 r1 = (ppBonuses & r3) >> (moveIndex2 * 2); + ppBonuses &= ~r9; + ppBonuses &= ~r3; + ppBonuses |= (r2 << (moveIndex2 * 2)) + (r1 << (moveIndex1 * 2)); + + // Swap the moves + SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1, &move2); + SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2, &move1); + SetMonData(pkmn, MON_DATA_PP1 + moveIndex1, &move2pp); + SetMonData(pkmn, MON_DATA_PP1 + moveIndex2, &move1pp); + SetMonData(pkmn, MON_DATA_PP_BONUSES, &ppBonuses); +} + +static void sub_809E6D8(void) +{ + struct BoxPokemon *boxMons = pssData.monList.boxMons; + struct BoxPokemon *pkmn = &boxMons[pssData.monIndex]; + u8 moveIndex1 = pssData.selectedMoveIndex; + u8 moveIndex2 = pssData.switchMoveIndex; + + u16 move1 = GetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex1); + u16 move2 = GetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex2); + u8 move1pp = GetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex1); + u8 move2pp = GetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex2); + u8 ppBonuses = GetBoxMonData(pkmn, MON_DATA_PP_BONUSES); + + // Calculate PP bonuses + u8 r9 = gUnknown_08208238[moveIndex1]; + u8 r2 = (ppBonuses & r9) >> (moveIndex1 * 2); + u8 r3 = gUnknown_08208238[moveIndex2]; + u8 r1 = (ppBonuses & r3) >> (moveIndex2 * 2); + ppBonuses &= ~r9; + ppBonuses &= ~r3; + ppBonuses |= (r2 << (moveIndex2 * 2)) + (r1 << (moveIndex1 * 2)); + + // Swap the moves + SetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex1, &move2); + SetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex2, &move1); + SetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex1, &move2pp); + SetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex2, &move1pp); + SetBoxMonData(pkmn, MON_DATA_PP_BONUSES, &ppBonuses); +} + +void sub_809E7F0(u8 taskId) +{ + if (sub_809F5F8()) + { + pssData.loadGfxState = 0; + sub_80A0428(&pssData.loadedMon, &pssData.selectedMoveIndex); + gTasks[taskId].func = sub_809E3FC; + sub_80A2078(taskId); + } +} + +static void sub_809E83C(u8 taskId, s8 b) +{ + PlaySE(SE_SELECT); + + sub_80A1B1C(19); + sub_80A1B40(0); + + if (b == 1) + { + if (pssData.selectedMoveIndex != pssData.switchMoveIndex) + { + if (pssData.usingPC == FALSE) + { + sub_809E5C4(); + } + else + { + sub_809E6D8(); + } + + pssData.selectedMoveIndex = pssData.switchMoveIndex; + sub_809F678(&pssData.loadedMon); + pssData.loadGfxState = 1; + + gTasks[taskId].func = sub_809E7F0; + return; + } + } + else + { + sub_80A0428(&pssData.loadedMon, &pssData.selectedMoveIndex); + } + + gTasks[taskId].func = sub_809E3FC; + sub_80A2078(taskId); +} + +__attribute__((naked)) +static void sub_809E8F0(/*u8 taskId, s8 direction, u8 *c*/) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + adds r4, r1, 0\n\ + mov r9, r2\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + movs r0, 0x1\n\ + str r0, [sp]\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + mov r1, r9\n\ + ldrb r6, [r1]\n\ + ldr r1, _0809E944 @ =gTasks\n\ + mov r2, r8\n\ + lsls r0, r2, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x8]\n\ + movs r2, 0\n\ + lsls r4, 24\n\ + asrs r4, 24\n\ + mov r10, r4\n\ + lsls r7, r0, 24\n\ +_0809E930:\n\ + lsls r0, r6, 24\n\ + asrs r0, 24\n\ + add r0, r10\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + asrs r1, r0, 24\n\ + cmp r0, r7\n\ + ble _0809E948\n\ + movs r6, 0\n\ + b _0809E94E\n\ + .align 2, 0\n\ +_0809E944: .4byte gTasks\n\ +_0809E948:\n\ + cmp r1, 0\n\ + bge _0809E94E\n\ + lsrs r6, r7, 24\n\ +_0809E94E:\n\ + lsls r4, r6, 24\n\ + lsrs r1, r4, 24\n\ + ldr r0, _0809EA10 @ =gSharedMem + 0x18010\n\ + str r2, [sp, 0x4]\n\ + bl GetMonMove\n\ + lsls r0, 16\n\ + adds r5, r4, 0\n\ + ldr r2, [sp, 0x4]\n\ + cmp r0, 0\n\ + bne _0809E97A\n\ + asrs r0, r5, 24\n\ + cmp r0, 0x4\n\ + beq _0809E97A\n\ + lsls r0, r2, 24\n\ + movs r3, 0x80\n\ + lsls r3, 17\n\ + adds r0, r3\n\ + lsrs r2, r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0x3\n\ + ble _0809E930\n\ +_0809E97A:\n\ + mov r1, r9\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x4\n\ + bne _0809E996\n\ + asrs r0, r5, 24\n\ + cmp r0, 0x4\n\ + beq _0809E996\n\ + ldr r0, _0809EA14 @ =gSharedMem + 0x18000\n\ + adds r0, 0x7C\n\ + ldrh r0, [r0]\n\ + mov r2, r8\n\ + lsls r7, r2, 2\n\ + cmp r0, 0\n\ + beq _0809E9AC\n\ +_0809E996:\n\ + ldr r2, _0809EA18 @ =gTasks\n\ + mov r3, r8\n\ + lsls r1, r3, 2\n\ + adds r0, r1, r3\n\ + lsls r0, 3\n\ + adds r0, r2\n\ + movs r2, 0x22\n\ + ldrsh r0, [r0, r2]\n\ + adds r7, r1, 0\n\ + cmp r0, 0x1\n\ + bne _0809E9D0\n\ +_0809E9AC:\n\ + lsrs r4, r5, 24\n\ + movs r0, 0x2\n\ + adds r1, r4, 0\n\ + bl sub_80A1488\n\ + movs r0, 0x2\n\ + adds r1, r4, 0\n\ + bl sub_80A1654\n\ + ldr r1, _0809EA18 @ =gTasks\n\ + mov r3, r8\n\ + adds r0, r7, r3\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0\n\ + strh r1, [r0, 0x22]\n\ + movs r0, 0\n\ + str r0, [sp]\n\ +_0809E9D0:\n\ + mov r1, r9\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x4\n\ + beq _0809E9FE\n\ + asrs r0, r5, 24\n\ + cmp r0, 0x4\n\ + bne _0809E9FE\n\ + ldr r0, _0809EA14 @ =gSharedMem + 0x18000\n\ + adds r0, 0x7C\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + bne _0809E9FE\n\ + movs r4, 0x2\n\ + negs r4, r4\n\ + lsrs r5, 24\n\ + adds r0, r4, 0\n\ + adds r1, r5, 0\n\ + bl sub_80A1488\n\ + adds r0, r4, 0\n\ + adds r1, r5, 0\n\ + bl sub_80A1654\n\ +_0809E9FE:\n\ + mov r2, r9\n\ + strb r6, [r2]\n\ + ldr r0, _0809EA1C @ =gSharedMem + 0x18079\n\ + cmp r9, r0\n\ + bne _0809EA20\n\ + movs r0, 0\n\ + bl sub_80A1C30\n\ + b _0809EA26\n\ + .align 2, 0\n\ +_0809EA10: .4byte gSharedMem + 0x18010\n\ +_0809EA14: .4byte gSharedMem + 0x18000\n\ +_0809EA18: .4byte gTasks\n\ +_0809EA1C: .4byte gSharedMem + 0x18079\n\ +_0809EA20:\n\ + movs r0, 0x1\n\ + bl sub_80A1C30\n\ +_0809EA26:\n\ + ldr r3, [sp]\n\ + cmp r3, 0\n\ + beq _0809EA34\n\ + ldr r0, _0809EA4C @ =gSharedMem + 0x18010\n\ + mov r1, r9\n\ + bl sub_80A0428\n\ +_0809EA34:\n\ + mov r0, r8\n\ + bl sub_80A2078\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0809EA4C: .4byte gSharedMem + 0x18010\n\ + .syntax divided\n"); +} + +static void SummaryScreenHandleAButton(u8 taskId) +{ + PlaySE(SE_SELECT); + + pssData.selectedMoveIndex = 0; + sub_80A1488(2, 0); + sub_80A1654(2, 0); + + if (!pssData.disableMoveOrderEditing) + { + pssData.headerActionTextId = 5; + PrintSummaryWindowHeaderText(); + } + + sub_80A16CC(0); + sub_80A029C(&pssData.loadedMon); + sub_80A1A30(9); + + gTasks[taskId].func = sub_809E3FC; + sub_80A2078(taskId); +} + +static void sub_809EAC8(u8 taskId) +{ + if (pssData.selectedMoveIndex != 4) + { + sub_80A1488(-2, 0); + sub_80A1654(-2, 0); + } + + sub_80A1B1C(9); + sub_80A16CC(1); + + MenuZeroFillWindowRect(15, 12, 28, 13); + MenuZeroFillWindowRect(11, 15, 28, 18); + + pssData.headerActionTextId = 6; + PrintSummaryWindowHeaderText(); + + gTasks[taskId].func = SummaryScreenHandleKeyInput; +} + +static void sub_809EB40(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 5: + sub_80A1A30(9); + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_809E260; + break; + case 0: + pssData.selectedMoveIndex = 0; + if (pssData.moveToLearn != 0) + { + sub_80A1488(10, 0); + sub_80A1654(10, pssData.selectedMoveIndex); + } + + sub_80A16CC(0); + sub_80A029C(&pssData.loadedMon); + // fall through + default: + gTasks[taskId].data[0]++; + break; + } +} + +static void sub_809EBC4(void) +{ + if (pssData.page != PSS_PAGE_INFO) + { + DrawSummaryScreenNavigationDots(); + gUnknown_030042C0 = 0x100; + + if (pssData.page == PSS_PAGE_SKILLS) + REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0x800; + + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0xA00; + + if (pssData.page == PSS_PAGE_CONTEST_MOVES) + REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0xC00; + } +} + +void sub_809EC38(u8 taskId) +{ + u8 minus2; + s16 *taskData = gTasks[taskId].data; + + switch (taskData[0]) + { + case 0: + if (pssData.bgToggle == 0) + { + if (pssData.page != PSS_PAGE_INFO) + { + gUnknown_03004288 = 0x100; + } + + if (pssData.page == PSS_PAGE_SKILLS) + { + REG_BG2CNT = (REG_BG2CNT & 0xE0FF) + 0x800; + } + + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + { + REG_BG2CNT = (REG_BG2CNT & 0xE0FF) + 0xA00; + } + } + else + { + if (pssData.page != PSS_PAGE_INFO) + { + gUnknown_030042C0 = 0x100; + } + + if (pssData.page == PSS_PAGE_SKILLS) + { + REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0x800; + } + + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + { + REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0xA00; + } + } + + taskData[0]++; + break; + case 1: + if (pssData.bgToggle == 0) + { + int var2 = gUnknown_030042C0 - 0x20; + gUnknown_030042C0 = var2; + if (var2 << 16 == 0) + { + REG_BG1CNT = (REG_BG1CNT & 0xFFFC) + 2; + REG_BG2CNT = (REG_BG2CNT & 0xFFFC) + 1; + taskData[0]++; + } + } + else + { + int var2 = gUnknown_03004288 - 0x20; + gUnknown_03004288 = var2; + if (var2 << 16 == 0) + { + REG_BG1CNT = (REG_BG1CNT & 0xFFFC) + 1; + REG_BG2CNT = (REG_BG2CNT & 0xFFFC) + 2; + taskData[0]++; + } + } + break; + case 2: + pssData.headerTextId = pssData.page + 1; + minus2 = pssData.mode - 2; + if (minus2 < 2) + { + pssData.headerActionTextId = 0; + sub_80A029C(&pssData.loadedMon); + sub_80A0428(&pssData.loadedMon, &pssData.selectedMoveIndex); + sub_80A00F4(pssData.selectedMoveIndex); + } + else + { + if (pssData.page >= PSS_PAGE_BATTLE_MOVES && (!pssData.disableMoveOrderEditing || pssData.mode == PSS_MODE_NO_MOVE_ORDER_EDIT)) + { + pssData.headerActionTextId = 6; + } + else if (pssData.page == PSS_PAGE_INFO) + { + pssData.headerActionTextId = 7; + } + else + { + pssData.headerActionTextId = 0; + } + } + + taskData[0]++; + break; + case 3: + DrawSummaryScreenNavigationDots(); + PrintSummaryWindowHeaderText(); + taskData[0]++; + break; + case 4: + sUnknown_083C1598[pssData.page](&pssData.loadedMon); + pssData.bgToggle ^= 1; + taskData[0]++; + break; + case 5: + if (sub_8055870() != TRUE) + { + gTasks[taskId].func = gUnknown_03005CF0; + } + break; + } +} + +void sub_809EE74(u8 taskId) +{ + int var1; + u8 minus2; + s16 *taskData = gTasks[taskId].data; + + switch (taskData[0]) + { + case 0: + var1 = pssData.bgToggle; + if (var1 == 0) + { + gUnknown_03004288 = pssData.bgToggle; + taskData[0]++; + } + else + { + gUnknown_030042C0 = 0; + taskData[0]++; + } + break; + case 1: + if (pssData.bgToggle == 0) + { + if (pssData.page == PSS_PAGE_SKILLS) + REG_BG2CNT = (REG_BG2CNT & 0xE0FC) + 0x801; + + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + REG_BG2CNT = (REG_BG2CNT & 0xE0FC) + 0xA01; + + if (pssData.page == PSS_PAGE_CONTEST_MOVES) + REG_BG2CNT = (REG_BG2CNT & 0xE0FC) + 0xC01; + + REG_BG1CNT = (REG_BG1CNT & 0xFFFC) + 2; + } + else + { + if (pssData.page == PSS_PAGE_SKILLS) + REG_BG1CNT = (REG_BG1CNT & 0xE0FC) + 0x801; + + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + REG_BG1CNT = (REG_BG1CNT & 0xE0FC) + 0xA01; + + if (pssData.page == PSS_PAGE_CONTEST_MOVES) + REG_BG1CNT = (REG_BG1CNT & 0xE0FC) + 0xC01; + + REG_BG2CNT = (REG_BG2CNT & 0xFFFC) + 2; + } + + taskData[0]++; + break; + case 2: + if (pssData.bgToggle == 0) + { + int var2 = gUnknown_03004288 + 0x20; + gUnknown_03004288 = var2; + if ((var2 << 16) == 0x1000000) + { + taskData[0]++; + } + } + else + { + int var2 = gUnknown_030042C0 + 0x20; + gUnknown_030042C0 = var2; + if ((var2 << 16) == 0x1000000) + { + taskData[0]++; + } + } + break; + case 3: + pssData.headerTextId = pssData.page + 1; + minus2 = pssData.mode - 2; + if (minus2 < 2) + { + pssData.headerActionTextId = 0; + sub_80A029C(&pssData.loadedMon); + sub_80A0428(&pssData.loadedMon, &pssData.selectedMoveIndex); + sub_80A00F4(pssData.selectedMoveIndex); + } + else + { + if (pssData.page >= PSS_PAGE_BATTLE_MOVES && (!pssData.disableMoveOrderEditing || pssData.mode == PSS_MODE_NO_MOVE_ORDER_EDIT)) + { + pssData.headerActionTextId = 6; + } + else if (pssData.page == PSS_PAGE_INFO) + { + pssData.headerActionTextId = 7; + } + else + { + pssData.headerActionTextId = 0; + } + } + + taskData[0]++; + break; + case 4: + DrawSummaryScreenNavigationDots(); + PrintSummaryWindowHeaderText(); + taskData[0]++; + break; + case 5: + sUnknown_083C1598[pssData.page](&pssData.loadedMon); + pssData.bgToggle ^= 1; + taskData[0]++; + break; + case 6: + if (sub_8055870() != TRUE) + { + gTasks[taskId].func = gUnknown_03005CF0; + } + break; + } +} + +void sub_809F0D0(u8 taskId, s8 direction) +{ + pssData.page += direction; + gUnknown_03005CF0 = gTasks[taskId].func; + sub_809FBE4(); + gTasks[taskId].data[0] = 0; + + if (direction == -1) + { + gTasks[taskId].func = sub_809EC38; + } + else + { + gTasks[taskId].func = sub_809EE74; + gTasks[taskId].func(taskId); + } +} + +static void SummaryScreenHandleLeftRightInput(u8 taskId, s8 direction) +{ + if (!GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) + { + if (direction == -1 && pssData.page == pssData.firstPage) return; + if (direction == 1 && pssData.page == pssData.lastPage) return; + + if (FindTaskIdByFunc(sub_80A1334) == 0xFF && FindTaskIdByFunc(sub_80A1500) == 0xFF) + { + PlaySE(SE_SELECT); + sub_809F0D0(taskId, direction); + } + } +} + +#ifdef NONMATCHING +static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction) +{ + s8 var3; + u8 var1 = direction; + + if (pssData.usingPC == TRUE) + { + if (pssData.page != PSS_PAGE_INFO) + { + var1 = (direction == 1) ? 0 : 1; + } + else + { + var1 = (direction == 1) ? 2 : 3; + } + + var3 = StorageSystemGetNextMonIndex(pssData.monList.boxMons, pssData.monIndex, pssData.maxMonIndex, var1); + } + else + { + if (sub_80F9344() == TRUE && IsLinkDoubleBattle() == TRUE) + { + var3 = sub_809F3CC(var1); + } + else + { + var3 = sub_809F284(var1); + } + } + + if (var3 != -1) + { + PlaySE(SE_SELECT); + if (GetMonStatusAndPokerus(&pssData.loadedMon)) + { + sub_80A12D0(-2); + } + + pssData.monIndex = var3; + pssData.unk84 = gTasks[taskId].func; + gTasks[taskId].func = sub_809F43C; + } +} +#else +__attribute__((naked)) +static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + lsls r1, 24\n\ + lsrs r4, r1, 24\n\ + ldr r0, _0809F1E4 @ =gSharedMem + 0x18000\n\ + ldrb r1, [r0, 0xE]\n\ + adds r2, r0, 0\n\ + cmp r1, 0x1\n\ + bne _0809F202\n\ + ldrb r0, [r2, 0xB]\n\ + cmp r0, 0\n\ + beq _0809F1E8\n\ + lsls r1, r4, 24\n\ + asrs r1, 24\n\ + movs r4, 0x1\n\ + eors r1, r4\n\ + negs r0, r1\n\ + orrs r0, r1\n\ + lsrs r4, r0, 31\n\ + b _0809F1F4\n\ + .align 2, 0\n\ +_0809F1E4: .4byte gSharedMem + 0x18000\n\ +_0809F1E8:\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + movs r4, 0x3\n\ + cmp r0, 0x1\n\ + bne _0809F1F4\n\ + movs r4, 0x2\n\ +_0809F1F4:\n\ + ldr r0, [r2]\n\ + ldrb r1, [r2, 0x9]\n\ + ldrb r2, [r2, 0xA]\n\ + adds r3, r4, 0\n\ + bl StorageSystemGetNextMonIndex\n\ + b _0809F22C\n\ +_0809F202:\n\ + bl sub_80F9344\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _0809F224\n\ + bl IsLinkDoubleBattle\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _0809F224\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + bl sub_809F3CC\n\ + b _0809F22C\n\ +_0809F224:\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + bl sub_809F284\n\ +_0809F22C:\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + beq _0809F270\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + ldr r5, _0809F278 @ =gSharedMem + 0x18010\n\ + adds r0, r5, 0\n\ + bl GetMonStatusAndPokerus\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _0809F258\n\ + movs r0, 0x2\n\ + negs r0, r0\n\ + bl sub_80A12D0\n\ +_0809F258:\n\ + adds r0, r5, 0\n\ + subs r0, 0x10\n\ + strb r4, [r0, 0x9]\n\ + ldr r1, _0809F27C @ =gTasks\n\ + lsls r0, r6, 2\n\ + adds r0, r6\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldr r1, [r0]\n\ + str r1, [r5, 0x74]\n\ + ldr r1, _0809F280 @ =sub_809F43C\n\ + str r1, [r0]\n\ +_0809F270:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0809F278: .4byte gSharedMem + 0x18010\n\ +_0809F27C: .4byte gTasks\n\ +_0809F280: .4byte sub_809F43C\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +#ifdef NONMATCHING +s8 sub_809F284(s8 a) +{ + struct Pokemon *mons = pssData.monList.partyMons; + s8 r6 = 0; + + if (pssData.page == PSS_PAGE_INFO) + { + if (a == -1 && pssData.monIndex == 0) + return -1; + if (a == 1 && pssData.monIndex >= pssData.maxMonIndex) + return -1; + return pssData.monIndex + a; + } + else + { + do + { + r6 += a; + if (pssData.monIndex + r6 < 0 || pssData.monIndex + r6 > pssData.maxMonIndex) + return -1; + } while (GetMonData(&mons[pssData.monIndex + r6], MON_DATA_IS_EGG) != 0); + return pssData.monIndex + r6; + } +} +#else +__attribute__((naked)) +s8 sub_809F284(s8 a) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + ldr r0, _0809F2C0 @ =gSharedMem + 0x18000\n\ + ldr r7, [r0]\n\ + movs r6, 0\n\ + ldrb r1, [r0, 0xB]\n\ + adds r4, r0, 0\n\ + cmp r1, 0\n\ + bne _0809F2C4\n\ + lsls r0, r3, 24\n\ + asrs r2, r0, 24\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + adds r5, r0, 0\n\ + cmp r2, r1\n\ + bne _0809F2AC\n\ + ldrb r0, [r4, 0x9]\n\ + cmp r0, 0\n\ + beq _0809F2E4\n\ +_0809F2AC:\n\ + asrs r0, r5, 24\n\ + cmp r0, 0x1\n\ + bne _0809F2BA\n\ + ldrb r0, [r4, 0x9]\n\ + ldrb r1, [r4, 0xA]\n\ + cmp r0, r1\n\ + bcs _0809F2E4\n\ +_0809F2BA:\n\ + ldrb r0, [r4, 0x9]\n\ + adds r0, r3\n\ + b _0809F304\n\ + .align 2, 0\n\ +_0809F2C0: .4byte gSharedMem + 0x18000\n\ +_0809F2C4:\n\ + lsls r5, r3, 24\n\ +_0809F2C6:\n\ + lsls r0, r6, 24\n\ + asrs r0, 24\n\ + asrs r1, r5, 24\n\ + adds r0, r1\n\ + lsls r0, 24\n\ + ldr r4, _0809F2EC @ =gSharedMem + 0x18000\n\ + lsrs r6, r0, 24\n\ + asrs r0, 24\n\ + ldrb r2, [r4, 0x9]\n\ + adds r1, r0, r2\n\ + cmp r1, 0\n\ + blt _0809F2E4\n\ + ldrb r0, [r4, 0xA]\n\ + cmp r1, r0\n\ + ble _0809F2F0\n\ +_0809F2E4:\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + b _0809F308\n\ + .align 2, 0\n\ +_0809F2EC: .4byte gSharedMem + 0x18000\n\ +_0809F2F0:\n\ + movs r0, 0x64\n\ + muls r0, r1\n\ + adds r0, r7, r0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _0809F2C6\n\ + ldrb r0, [r4, 0x9]\n\ + adds r0, r6\n\ +_0809F304:\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ +_0809F308:\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +bool8 sub_809F310(struct Pokemon *mon) +{ + if (GetMonData(mon, MON_DATA_SPECIES)) + { + if (pssData.page != PSS_PAGE_INFO || !GetMonData(mon, MON_DATA_IS_EGG)) + { + return TRUE; + } + } + + return FALSE; +} + +s8 sub_809F344(u8 partyIndex) +{ + while (1) + { + partyIndex++; + if (partyIndex == PARTY_SIZE) + { + return -1; + } + + if (sub_809F310(&gPlayerParty[sDoubleBattlePartyOrder[partyIndex]]) == TRUE) + { + return sDoubleBattlePartyOrder[partyIndex]; + } + } +} + +s8 sub_809F388(u8 partyIndex) +{ + while (1) + { + if (partyIndex == 0) + { + return -1; + } + + partyIndex--; + if (sub_809F310(&gPlayerParty[sDoubleBattlePartyOrder[partyIndex]]) == TRUE) + { + return sDoubleBattlePartyOrder[partyIndex]; + } + } +} + +s8 sub_809F3CC(s8 direction) +{ + u8 i; + u8 monIndex = 0; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (sDoubleBattlePartyOrder[i] == pssData.monIndex) + { + monIndex = i; + break; + } + } + + if ((direction == -1 && monIndex == 0) || (direction == 1 && monIndex == 5)) + { + return -1; + } + + if (direction != 1) + { + return sub_809F388(monIndex); + } + else if (monIndex != 5) + { + return sub_809F344(monIndex); + } + + return -1; +} + +void sub_809F43C(u8 taskId) +{ + switch (gMain.state) + { + case 0: + StopCryAndClearCrySongs(); + gMain.state++; + break; + case 1: + DestroySpriteAndFreeResources(&gSprites[pssData.monSpriteId]); + gMain.state++; + break; + case 2: + DestroySpriteAndFreeResources(&gSprites[pssData.ballSpriteId]); + gMain.state++; + break; + case 3: + pssData.loadGfxState = 0; + pssData.selectedMoveIndex = 0; + gMain.state++; + break; + case 4: + sub_809F678(&pssData.loadedMon); + if (GetMonStatusAndPokerus(&pssData.loadedMon)) + { + sub_80A12D0(2); + } + + DrawPokerusSurvivorDot(&pssData.loadedMon); + gMain.state++; + break; + case 5: + if ((pssData.monSpriteId = sub_809F6B4(&pssData.loadedMon, &pssData.loadGfxState)) != 0xFF) + { + pssData.loadGfxState = 0; + if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) + { + gUnknown_030041B0 = 256; + } + else + { + gUnknown_030041B0 = 0; + } + + gMain.state++; + } + break; + case 6: + sub_80A1DCC(&pssData.loadedMon); + gMain.state++; + break; + case 7: + sub_80A1DE8(&pssData.loadedMon); + gMain.state++; + break; + case 8: + if (sub_809F5F8()) + { + pssData.loadGfxState = 0; + gMain.state++; + } + break; + default: + if (sub_8055870() != TRUE) + { + gMain.state = 0; + gTasks[taskId].func = pssData.unk84; + } + break; + } +} + +static bool8 sub_809F5F8(void) +{ + if (pssData.loadGfxState == 0) + { + sub_809FAC8(&pssData.loadedMon); + pssData.loadGfxState++; + return FALSE; + } + else + { + sUnknown_083C1588[pssData.page](&pssData.loadedMon); + return TRUE; + } +} + +static void sub_809F63C(struct Pokemon *mon) +{ + sub_809FE80(); + sub_809FC34(mon); +} + +static void sub_809F650(struct Pokemon *mon) +{ + sub_80A00A4(); + sub_809FF64(mon); +} + +static void sub_809F664(struct Pokemon *mon) +{ + sub_80A0390(); + sub_80A015C(mon); +} + +static void sub_809F678(struct Pokemon *mon) +{ + if (pssData.usingPC == FALSE) + { + struct Pokemon *mons = pssData.monList.partyMons; + *mon = mons[pssData.monIndex]; + } + else + { + struct BoxPokemon *mons = pssData.monList.boxMons; + sub_803B4B4(&mons[pssData.monIndex], mon); + } +} + +static u8 sub_809F6B4(struct Pokemon *mon, u8 *b) +{ + u16 species; + u32 personality; + u32 otId; + const struct CompressedSpritePalette *palette; + + switch (*b) + { + default: + return sub_80A1808(mon); + case 0: + species = GetMonData(mon, MON_DATA_SPECIES2); + personality = GetMonData(mon, MON_DATA_PERSONALITY); + + HandleLoadSpecialPokePic( + &gMonFrontPicTable[species], + gMonFrontPicCoords[species].coords, + gMonFrontPicCoords[species].y_offset, + ewram_addr, + gUnknown_081FAF4C[1], + species, + personality); + *b += 1; + return 0xFF; + case 1: + species = GetMonData(mon, MON_DATA_SPECIES2); + personality = GetMonData(mon, MON_DATA_PERSONALITY); + otId = GetMonData(mon, MON_DATA_OT_ID); + + palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); + LoadCompressedObjectPalette(palette); + GetMonSpriteTemplate_803C56C(palette->tag, 1); + *b += 1; + return 0xFF; + } +} + +static u16 GetMonMove(struct Pokemon *mon, u8 moveId) +{ + switch (moveId) + { + case 0: + return GetMonData(mon, MON_DATA_MOVE1); + case 1: + return GetMonData(mon, MON_DATA_MOVE2); + case 2: + return GetMonData(mon, MON_DATA_MOVE3); + default: + return GetMonData(mon, MON_DATA_MOVE4); + } +} + +static u16 GetMonMovePP(struct Pokemon *mon, u8 moveId) +{ + switch (moveId) + { + case 0: + return GetMonData(mon, MON_DATA_PP1); + case 1: + return GetMonData(mon, MON_DATA_PP2); + case 2: + return GetMonData(mon, MON_DATA_PP3); + default: + return GetMonData(mon, MON_DATA_PP4); + } +} + +static bool8 sub_809F7D0(u8 taskId) +{ + struct Pokemon mon; + u16 move; + + sub_809F678(&mon); + move = GetMonMove(&mon, pssData.selectedMoveIndex); + if (IsHMMove(move) == TRUE && pssData.mode != PSS_MODE_UNKNOWN) + { + return FALSE; + } + + return TRUE; +} + +#ifdef NONMATCHING // The two "pssData.selectedMoveIndex = taskData[15];" lines have small register differences. +void sub_809F814(u8 taskId) +{ + u16 var1; + + s16 *taskData = gTasks[taskId].data; + + var1 = taskData[14]; + if (taskData[14] < 4) + { + taskData[14] = var1 + 1; + } + else if (gMain.newKeys & DPAD_UP) + { + gTasks[taskId].func = sub_809E260; + taskData[0] = 4; + taskData[13] = 1; + pssData.selectedMoveIndex = taskData[15]; + sub_809E8F0(taskId, -1); + } + else if (gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].func = sub_809E260; + taskData[0] = 4; + taskData[13] = 1; + pssData.selectedMoveIndex = taskData[15]; + sub_809E8F0(taskId, 1); + } + else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1) + { + if (pssData.page != PSS_PAGE_BATTLE_MOVES) + { + if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) + { + MenuZeroFillWindowRect(0, 14, 9, 18); + } + + gTasks[taskId].func = sub_809E260; + + SummaryScreenHandleLeftRightInput(taskId, -1); + sub_80A1488(1, taskData[15]); + sub_80A1654(1, taskData[15]); + } + } + else if ((gMain.newKeys & DPAD_RIGHT) || sub_80F9284() == 2) + { + if (pssData.page != pssData.lastPage) + { + if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) + { + MenuZeroFillWindowRect(0, 14, 9, 18); + } + + gTasks[taskId].func = sub_809E260; + + SummaryScreenHandleLeftRightInput(taskId, 1); + sub_80A1488(1, taskData[15]); + sub_80A1654(1, taskData[15]); + } + } + else if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + sub_80A1488(2, taskData[15]); + sub_80A1654(2, taskData[15]); + + gTasks[taskId].func = sub_809E260; + } +} + +#else +__attribute__((naked)) +void sub_809F814(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r6, r0, 3\n\ + ldr r0, _0809F83C @ =gTasks + 0x8\n\ + mov r8, r0\n\ + adds r4, r6, r0\n\ + ldrh r1, [r4, 0x1C]\n\ + movs r2, 0x1C\n\ + ldrsh r0, [r4, r2]\n\ + cmp r0, 0x3\n\ + bgt _0809F840\n\ + adds r0, r1, 0x1\n\ + strh r0, [r4, 0x1C]\n\ + b _0809F9C0\n\ + .align 2, 0\n\ +_0809F83C: .4byte gTasks + 0x8\n\ +_0809F840:\n\ + ldr r7, _0809F874 @ =gMain\n\ + ldrh r1, [r7, 0x2E]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0809F880\n\ + mov r0, r8\n\ + subs r0, 0x8\n\ + adds r0, r6, r0\n\ + ldr r1, _0809F878 @ =sub_809E260\n\ + str r1, [r0]\n\ + movs r0, 0x4\n\ + strh r0, [r4]\n\ + movs r0, 0x1\n\ + strh r0, [r4, 0x1A]\n\ + ldr r2, _0809F87C @ =gSharedMem + 0x18000\n\ + ldrh r0, [r4, 0x1E]\n\ + adds r2, 0x79\n\ + strb r0, [r2]\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + adds r0, r5, 0\n\ + bl sub_809E8F0\n\ + b _0809F9C0\n\ + .align 2, 0\n\ +_0809F874: .4byte gMain\n\ +_0809F878: .4byte sub_809E260\n\ +_0809F87C: .4byte gSharedMem + 0x18000\n\ +_0809F880:\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0809F8B4\n\ + mov r0, r8\n\ + subs r0, 0x8\n\ + adds r0, r6, r0\n\ + ldr r1, _0809F8AC @ =sub_809E260\n\ + str r1, [r0]\n\ + movs r0, 0x4\n\ + strh r0, [r4]\n\ + movs r0, 0x1\n\ + strh r0, [r4, 0x1A]\n\ + ldr r2, _0809F8B0 @ =gSharedMem + 0x18000\n\ + ldrh r0, [r4, 0x1E]\n\ + adds r2, 0x79\n\ + strb r0, [r2]\n\ + adds r0, r5, 0\n\ + movs r1, 0x1\n\ + bl sub_809E8F0\n\ + b _0809F9C0\n\ + .align 2, 0\n\ +_0809F8AC: .4byte sub_809E260\n\ +_0809F8B0: .4byte gSharedMem + 0x18000\n\ +_0809F8B4:\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0809F8C8\n\ + bl sub_80F9284\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _0809F918\n\ +_0809F8C8:\n\ + ldr r1, _0809F90C @ =gSharedMem + 0x18000\n\ + ldrb r0, [r1, 0xB]\n\ + cmp r0, 0x2\n\ + beq _0809F9C0\n\ + cmp r0, 0x3\n\ + bne _0809F8F4\n\ + adds r0, r1, 0\n\ + adds r0, 0x79\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x4\n\ + bne _0809F8E8\n\ + adds r0, r1, 0\n\ + adds r0, 0x7C\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _0809F8F4\n\ +_0809F8E8:\n\ + movs r0, 0\n\ + movs r1, 0xE\n\ + movs r2, 0x9\n\ + movs r3, 0x12\n\ + bl MenuZeroFillWindowRect\n\ +_0809F8F4:\n\ + ldr r1, _0809F910 @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldr r1, _0809F914 @ =sub_809E260\n\ + str r1, [r0]\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + adds r0, r5, 0\n\ + b _0809F972\n\ + .align 2, 0\n\ +_0809F90C: .4byte gSharedMem + 0x18000\n\ +_0809F910: .4byte gTasks\n\ +_0809F914: .4byte sub_809E260\n\ +_0809F918:\n\ + ldrh r1, [r7, 0x2E]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0809F92E\n\ + bl sub_80F9284\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x2\n\ + bne _0809F994\n\ +_0809F92E:\n\ + ldr r1, _0809F988 @ =gSharedMem + 0x18000\n\ + adds r2, r1, 0\n\ + adds r2, 0x76\n\ + ldrb r0, [r1, 0xB]\n\ + ldrb r2, [r2]\n\ + cmp r0, r2\n\ + beq _0809F9C0\n\ + cmp r0, 0x2\n\ + bne _0809F960\n\ + adds r0, r1, 0\n\ + adds r0, 0x79\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x4\n\ + bne _0809F954\n\ + adds r0, r1, 0\n\ + adds r0, 0x7C\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _0809F960\n\ +_0809F954:\n\ + movs r0, 0\n\ + movs r1, 0xE\n\ + movs r2, 0x9\n\ + movs r3, 0x12\n\ + bl MenuZeroFillWindowRect\n\ +_0809F960:\n\ + ldr r1, _0809F98C @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldr r1, _0809F990 @ =sub_809E260\n\ + str r1, [r0]\n\ + adds r0, r5, 0\n\ + movs r1, 0x1\n\ +_0809F972:\n\ + bl SummaryScreenHandleLeftRightInput\n\ + ldrb r1, [r4, 0x1E]\n\ + movs r0, 0x1\n\ + bl sub_80A1488\n\ + ldrb r1, [r4, 0x1E]\n\ + movs r0, 0x1\n\ + bl sub_80A1654\n\ + b _0809F9C0\n\ + .align 2, 0\n\ +_0809F988: .4byte gSharedMem + 0x18000\n\ +_0809F98C: .4byte gTasks\n\ +_0809F990: .4byte sub_809E260\n\ +_0809F994:\n\ + ldrh r1, [r7, 0x2E]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0809F9A6\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0809F9C0\n\ +_0809F9A6:\n\ + ldrb r1, [r4, 0x1E]\n\ + movs r0, 0x2\n\ + bl sub_80A1488\n\ + ldrb r1, [r4, 0x1E]\n\ + movs r0, 0x2\n\ + bl sub_80A1654\n\ + mov r0, r8\n\ + subs r0, 0x8\n\ + adds r0, r6, r0\n\ + ldr r1, _0809F9CC @ =sub_809E260\n\ + str r1, [r0]\n\ +_0809F9C0:\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0809F9CC: .4byte sub_809E260\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +static void sub_809F9D0(u8 taskId, u8 b) +{ + s16 *taskData = gTasks[taskId].data; + taskData[14] = 0; + taskData[15] = b; + + sub_80A1488(-2, 4); + sub_80A1654(-2, 4); + MenuZeroFillWindowRect(11, 15, 28, 18); + MenuPrint(gOtherText_CantForgetHMs, 11, 15); + + gTasks[taskId].func = sub_809F814; +} + +u8 sub_809FA30(void) +{ + return pssData.switchMoveIndex; +} + +// void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d) +// { +// u16 *vramAddr = (u16 *)(VRAM + 0xF000); + +// vramAddr[(d * 32) + c] = (b * 0x1000) + (a * 2) + 0x200 + 0x80; +// vramAddr[(d * 32) + c + 32] = (b * 0x1000) + (a * 2) + 0x200 + 0x81; +// } +__attribute__((naked)) +void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + lsls r0, 24\n\ + lsls r1, 24\n\ + lsls r2, 24\n\ + lsls r3, 24\n\ + lsrs r2, 23\n\ + lsrs r3, 18\n\ + ldr r4, _0809FA70 @ =0x0600f000\n\ + adds r3, r4\n\ + adds r2, r3\n\ + lsrs r1, 12\n\ + lsrs r0, 23\n\ + movs r4, 0x80\n\ + lsls r4, 2\n\ + adds r3, r4, 0\n\ + adds r0, r3\n\ + adds r1, r0\n\ + adds r0, r1, 0\n\ + adds r0, 0x80\n\ + strh r0, [r2]\n\ + adds r2, 0x40\n\ + adds r1, 0x81\n\ + strh r1, [r2]\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0809FA70: .4byte 0x0600f000\n\ + .syntax divided\n"); +} + +void GetStringCenterAlignXOffset(u8 a, u8 b, u8 c) +{ + GetStringCenterAlignXOffsetWithLetterSpacing(a, 15, b, c); +} + +bool8 sub_809FA94(struct Pokemon *mon) +{ + if (!IsShiny(mon)) + { + LoadPalette(sUnknown_083C157C, 4, 2); + return FALSE; + } + else + { + LoadPalette(sUnknown_083C157E, 4, 2); + return TRUE; + } +} + +static void sub_809FAC8(struct Pokemon *mon) +{ + bool8 shinyDexNum; + u16 dexNum; + u8 *buffer; + + if (GetMonData(mon, MON_DATA_IS_EGG)) + { + MenuZeroFillWindowRect(1, 2, 4, 3); + MenuZeroFillWindowRect(3, 16, 9, 17); + MenuZeroFillWindowRect(0, 12, 11, 15); + GetMonNickname(mon, gStringVar1); + sub_80A1FF8(gStringVar1, 13, 3, 16); + LoadPalette(sUnknown_083C157C, 4, 2); + } + else + { + shinyDexNum = sub_809FA94(mon); + dexNum = SpeciesToPokedexNum(GetMonData(mon, MON_DATA_SPECIES)); + if (dexNum != 0xFFFF) + { + if (!shinyDexNum) + { + GetStringCenterAlignXOffset(2, 1, 2); + sub_80A1F98(dexNum, 13, 3, 2, 17, 16, 1); + } + else + { + GetStringCenterAlignXOffsetWithLetterSpacing(2, 8, 1, 2); + sub_80A1F98(dexNum, 8, 3, 2, 17, 16, 1); + } + } + else + { + MenuZeroFillWindowRect(1, 2, 4, 3); + } + + buffer = gStringVar1; + buffer = sub_80A1E58(buffer, 13); + buffer = GetMonNickname(mon, buffer); + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x13; + buffer[2] = 0x3C; + buffer[3] = EOS; + MenuPrint(gStringVar1, 1, 12); + + sub_80A0958(mon); + } +} + +static void sub_809FBE4(void) +{ + u8 i; + + for (i = 0; i < 28; i++) + { + sub_80A1918(i, 1); + } + + MenuZeroFillWindowRect(11, 4, 29, 18); +} + +static void sub_809FC0C(void) +{ + MenuPrint(gOtherText_Type2, 11, 6); + GetStringCenterAlignXOffset(0, 22, 4); + GetStringCenterAlignXOffset(2, 23, 4); +} + +static void sub_809FC34(struct Pokemon *mon) +{ + u8 i; + u8 *buffer; + u16 friendship; + u8 language; + u16 species; + u8 ability; + + for (i = 0; i < 5; i++) + { + sub_80A1918(i, 1); + } + + MenuZeroFillWindowRect(11, 9, 28, 12); + if (GetMonData(mon, MON_DATA_IS_EGG)) + { + buffer = gStringVar1; + buffer = sub_80A1E58(buffer, 13); + buffer = StringCopy(buffer, gOtherText_OriginalTrainer); + buffer = StringCopy(buffer, gOtherText_FiveQuestionsAndSlash); + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x13; + buffer[2] = 0x4E; + buffer[3] = EOS; + MenuPrint(gStringVar1, 11, 4); + + sub_80A1EF8(gOtherText_FiveQuestionsAndSlash, 13, 193, 32, 1); + sub_80A198C(9, 120, 48, 0); + + friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); + if (friendship < 6) + { + MenuPrint(gOtherText_EggAbout, 11, 9); + } + else if (friendship < 11) + { + MenuPrint(gOtherText_EggSoon, 11, 9); + } + else if (friendship < 41) + { + MenuPrint(gOtherText_EggSomeTime, 11, 9); + } + else + { + MenuPrint(gOtherText_EggLongTime, 11, 9); + } + + PokemonSummaryScreen_PrintEggTrainerMemo(mon, 11, 14); + } + else + { + GetMonData(mon, MON_DATA_OT_NAME, gStringVar2); + language = GetMonData(mon, MON_DATA_LANGUAGE); + ConvertInternationalString(gStringVar2, language); + + buffer = gStringVar1; + buffer = sub_80A1E58(buffer, 13); + buffer = StringCopy(buffer, gOtherText_OriginalTrainer); + + if (GetMonData(mon, MON_DATA_OT_GENDER) == MALE) + { + buffer = sub_80A1E58(buffer, 9); + } + else + { + buffer = sub_80A1E58(buffer, 10); + } + + buffer = StringCopy(buffer, gStringVar2); + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x13; + buffer[2] = 0x4E; + buffer[3] = EOS; + MenuPrint(gStringVar1, 11, 4); + + sub_80A1F98(GetMonData(mon, MON_DATA_OT_ID) & 0xFFFF, 13, 5, 2, 193, 32, 1); + + species = GetMonData(mon, MON_DATA_SPECIES); + sub_80A198C(gBaseStats[species].type1, 120, 48, 0); + if (gBaseStats[species].type1 != gBaseStats[species].type2) + { + sub_80A198C(gBaseStats[species].type2, 160, 48, 1); + } + + ability = GetAbilityBySpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_ALT_ABILITY)); + sub_80A1FF8(gAbilityNames[ability], 13, 11, 9); + MenuPrint(gAbilityDescriptions[ability], 11, 11); + + PokemonSummaryScreen_PrintTrainerMemo(mon, 11, 14); + } +} + +static void sub_809FE6C(struct Pokemon *mon) +{ + sub_809FC0C(); + sub_809FC34(mon); +} + +static void sub_809FE80(void) +{ + MenuZeroFillWindowRect(14, 4, 18, 5); + MenuZeroFillWindowRect(25, 4, 30, 5); + MenuZeroFillWindowRect(11, 9, 28, 12); + MenuZeroFillWindowRect(11, 14, 28, 17); +} + +static void sub_809FEB8(void) +{ + sub_80A1FF8(gOtherText_ExpPoints, 13, 11, 14); + sub_80A1FF8(gOtherText_NextLv, 13, 11, 16); + MenuPrint(gOtherText_Terminator18, 21, 16); + + sub_80A1F48(gOtherText_HP, 13, 11, 7, 42); + sub_80A1F48(gOtherText_Attack, 13, 11, 9, 42); + sub_80A1F48(gOtherText_Defense, 13, 11, 11, 42); + sub_80A1F48(gOtherText_SpAtk, 13, 22, 7, 36); + sub_80A1F48(gOtherText_SpDef, 13, 22, 9, 36); + sub_80A1F48(gOtherText_Speed, 13, 22, 11, 36); +} + +static void sub_809FF64(struct Pokemon *mon) +{ + u8 i; + u16 heldItem; + u8 *buffer; + + for (i = 0; i < 5; i++) + { + sub_80A1918(i, 1); + } + + heldItem = GetMonData(mon, MON_DATA_HELD_ITEM); + PrintHeldItemName(heldItem, 11, 4); + PrintNumRibbons(mon); + + buffer = gStringVar1; + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_EXP)); + MenuPrint_RightAligned(buffer, 29, 14); + DrawExperienceProgressBar(mon, 23, 16); + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_ATK)); + sub_8072BD8(buffer, 16, 9, 50); + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_DEF)); + sub_8072BD8(buffer, 16, 11, 50); + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPATK)); + sub_8072BD8(buffer, 27, 7, 18); + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPDEF)); + sub_8072BD8(buffer, 27, 9, 18); + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPEED)); + sub_8072BD8(buffer, 27, 11, 18); + + buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_HP), 24, 1); + *buffer++ = CHAR_SLASH; + buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_MAX_HP), 48, 1); + + MenuPrint_PixelCoords(gStringVar1, 126, 56, 1); +} + +static void sub_80A0090(struct Pokemon *mon) +{ + sub_809FEB8(); + sub_809FF64(mon); +} + +static void sub_80A00A4(void) +{ + MenuZeroFillWindowRect(11, 4, 19, 5); + MenuZeroFillWindowRect(16, 7, 21, 8); + MenuZeroFillWindowRect(17, 9, 21, 12); + MenuZeroFillWindowRect(27, 7, 29, 12); + MenuZeroFillWindowRect(22, 14, 28, 15); + MenuZeroFillWindowRect(23, 16, 28, 17); +} + +static void sub_80A00F4(u8 a) +{ + if (pssData.moveToLearn != 0 || a != 4) + { + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + { + sub_80A1FF8(gOtherText_Power2, 13, 1, 15); + sub_80A1FF8(gOtherText_Accuracy2, 13, 1, 17); + } + else + { + sub_80A1FF8(gOtherText_Appeal2, 13, 1, 15); + sub_80A1FF8(gOtherText_Jam2, 13, 1, 17); + } + } +} + +static void sub_80A015C(struct Pokemon *mon) +{ + u8 i; + u16 move; + u16 curPP; + u8 ppBonuses; + u8 maxPP; + u8 *buffer; + + for (i = 0; i < 4; i++) + { + move = GetMonMove(mon, i); + curPP = GetMonMovePP(mon, i); + + if (move == 0) + { + sub_80A1918(i, 1); + sub_80A1FF8(gOtherText_OneDash, 13, 15, (2 * i) + 4); + MenuPrint(gOtherText_TwoDashes, 26, (2 * i) + 4); + } + else + { + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + { + sub_80A198C(gBattleMoves[move].type, 87, ((2 * i) + 4) * 8, i); + } + else + { + sub_80A198C(gContestMoves[move].contestCategory + 18, 87, ((2 * i) + 4) * 8, i); + } + + sub_80A1FF8(gMoveNames[move], 13, 15, (2 * i) + 4); + GetStringCenterAlignXOffset(1, 24, (2 * i) + 4); + + ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES); + maxPP = CalculatePPWithBonus(move, ppBonuses, i); + + buffer = gStringVar1; + buffer = sub_8072C14(buffer, curPP, 14, 1); + *buffer++ = CHAR_SLASH; + sub_8072C14(buffer, maxPP, 32, 1); + MenuPrint(gStringVar1, 25, (2 * i) + 4); + } + } +} + +static void sub_80A029C(struct Pokemon *mon) +{ + u8 *buffer; + u16 move; + u8 pp; + + if (pssData.moveToLearn == 0) + { + sub_80A1FF8(gOtherText_CancelNoTerminator, 13, 15, 12); + return; + } + + move = pssData.moveToLearn; + + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + sub_80A198C(gBattleMoves[move].type, 87, 96, 4); + else + sub_80A198C(gContestMoves[move].contestCategory + 18, 87, 96, 4); + + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + sub_80A1FF8(gMoveNames[move], 10, 15, 12); + else + sub_80A1FF8(gMoveNames[move], 9, 15, 12); + + GetStringCenterAlignXOffset(1, 24, 12); + + buffer = gStringVar1; + pp = gBattleMoves[move].pp; + buffer = sub_8072C14(buffer, pp, 14, 1); + *buffer++ = CHAR_SLASH; + buffer = sub_8072C14(buffer, pp, 32, 1); + MenuPrint(gStringVar1, 25, 12); +} + +static void sub_80A0390(void) +{ + u8 i; + + for (i = 0; i < MAX_MON_MOVES; i++) + { + MenuZeroFillWindowRect(15, (i * 2) + 4, 28, (i * 2) + 5); + } +} + +u16 sub_80A03BC(struct Pokemon *mon, u8 selectedMoveIndex) +{ + u16 move; + + if (selectedMoveIndex != MAX_MON_MOVES) + { + move = GetMonMove(mon, selectedMoveIndex); + } + else + { + if (pssData.moveToLearn != 0) + { + move = pssData.moveToLearn; + } + else + { + move = 0xFFFF; + } + } + + return move; +} + +void sub_80A03F0(struct Pokemon *mon, u8 *selectedMoveIndex) +{ + u16 move = sub_80A03BC(mon, *selectedMoveIndex); + + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + { + sub_80A04CC(move); + sub_80A057C(0xFFFF); + } + else + { + sub_80A057C(move); + } +} + +static void sub_80A0428(struct Pokemon *mon, u8 *selectedMoveIndex) +{ + u16 move = sub_80A03BC(mon, *selectedMoveIndex); + MenuZeroFillWindowRect(11, 15, 28, 18); + + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + { + sub_80A046C(move); + } + else + { + sub_80A0498(move); + } + + sub_80A03F0(mon, selectedMoveIndex); +} + +static void sub_80A046C(u16 move) +{ + if (move == 0xFFFF) return; + + MenuPrint(gMoveDescriptions[move - 1], 11, 15); +} + +static void sub_80A0498(u16 move) +{ + if (move == 0xFFFF) return; + + MenuPrint(gContestEffectStrings[gContestMoves[move].effect], 11, 15); +} + +static void sub_80A04CC(u16 move) +{ + u8 *buffer; + + if (move == 0xFFFF) return; + + if (gBattleMoves[move].power <= 1) + { + buffer = gStringVar1; + buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); + MenuPrint(gStringVar1, 7, 15); + } + else + { + buffer = gStringVar1; + buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1); + MenuPrint(gStringVar1, 7, 15); + } + + if (gBattleMoves[move].accuracy == 0) + { + buffer = gStringVar1; + buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); + MenuPrint(gStringVar1, 7, 17); + } + else + { + buffer = gStringVar1; + buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1); + MenuPrint(gStringVar1, 7, 17); + } +} + +#ifdef NONMATCHING // The two vramAddr lines are non-matching. +static void sub_80A057C(u16 move) +{ + u8 appeal; + u8 jam; + u8 i; + u16 *vramAddr = (u16 *)(VRAM + 0x6800); + + if (move == 0xFFFF) return; + + appeal = gContestEffects[gContestMoves[move].effect].appeal; + if (appeal != 0xFF) + { + appeal = appeal / 10; + } + + for (i = 0; i < 8; i++) + { + u16 tile = 0x1039; + int and = 3; + int offset = 0x3CC / 2; + if (appeal != 0xFF && i < appeal) + { + tile = 0x103A; + } + + *(&vramAddr[(i >> 2 << 5) + (i & and)] + offset) = tile; + } + + if (move == 0xFFFF) return; + + jam = gContestEffects[gContestMoves[move].effect].jam; + if (jam != 0xFF) + { + jam = jam / 10; + } + + for (i = 0; i < 8; i++) + { + u16 tile = 0x103D; + int and = 3; + int offset = 0x226; + if (jam != 0xFF && i < jam) + { + tile = 0x103C; + } + + *(&vramAddr[(i >> 2 << 5) + (i & and)] + offset) = tile; + } +} +#else +__attribute__((naked)) +static void sub_80A057C(u16 move) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + ldr r0, _080A0648 @ =0x06006800\n\ + mov r8, r0\n\ + ldr r0, _080A064C @ =0x0000ffff\n\ + cmp r5, r0\n\ + beq _080A063A\n\ + ldr r1, _080A0650 @ =gContestEffects\n\ + ldr r2, _080A0654 @ =gContestMoves\n\ + lsls r3, r5, 3\n\ + adds r0, r3, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r4, [r0, 0x1]\n\ + mov r10, r2\n\ + mov r9, r3\n\ + cmp r4, 0xFF\n\ + beq _080A05B8\n\ + adds r0, r4, 0\n\ + movs r1, 0xA\n\ + bl __udivsi3\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ +_080A05B8:\n\ + movs r2, 0\n\ + movs r7, 0x3\n\ + movs r6, 0xF3\n\ + lsls r6, 2\n\ +_080A05C0:\n\ + ldr r3, _080A0658 @ =0x00001039\n\ + cmp r4, 0xFF\n\ + beq _080A05CC\n\ + cmp r2, r4\n\ + bcs _080A05CC\n\ + adds r3, 0x1\n\ +_080A05CC:\n\ + lsrs r0, r2, 2\n\ + lsls r0, 5\n\ + adds r1, r2, 0\n\ + ands r1, r7\n\ + adds r1, r0\n\ + lsls r1, 1\n\ + add r1, r8\n\ + adds r1, r6\n\ + strh r3, [r1]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r2, 0x7\n\ + bls _080A05C0\n\ + ldr r0, _080A064C @ =0x0000ffff\n\ + cmp r5, r0\n\ + beq _080A063A\n\ + mov r0, r9\n\ + add r0, r10\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + ldr r1, _080A0650 @ =gContestEffects\n\ + adds r0, r1\n\ + ldrb r4, [r0, 0x2]\n\ + cmp r4, 0xFF\n\ + beq _080A060C\n\ + adds r0, r4, 0\n\ + movs r1, 0xA\n\ + bl __udivsi3\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ +_080A060C:\n\ + movs r2, 0\n\ + movs r6, 0x3\n\ + ldr r5, _080A065C @ =0x0000044c\n\ +_080A0612:\n\ + ldr r3, _080A0660 @ =0x0000103d\n\ + cmp r4, 0xFF\n\ + beq _080A061E\n\ + cmp r2, r4\n\ + bcs _080A061E\n\ + subs r3, 0x1\n\ +_080A061E:\n\ + lsrs r0, r2, 2\n\ + lsls r0, 5\n\ + adds r1, r2, 0\n\ + ands r1, r6\n\ + adds r1, r0\n\ + lsls r1, 1\n\ + add r1, r8\n\ + adds r1, r5\n\ + strh r3, [r1]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r2, 0x7\n\ + bls _080A0612\n\ +_080A063A:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080A0648: .4byte 0x06006800\n\ +_080A064C: .4byte 0x0000ffff\n\ +_080A0650: .4byte gContestEffects\n\ +_080A0654: .4byte gContestMoves\n\ +_080A0658: .4byte 0x00001039\n\ +_080A065C: .4byte 0x0000044c\n\ +_080A0660: .4byte 0x0000103d\n\ + .syntax divided\n"); +} +#endif // NONMATCHING bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon) { @@ -37,7 +3372,7 @@ bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon) return FALSE; } -void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 left, u8 top) +static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 left, u8 top) { u8 locationMet; u8 gameMet = GetMonData(mon, MON_DATA_MET_GAME); @@ -74,12 +3409,12 @@ void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 left, u8 t MenuPrint(gOtherText_EggDayCare, left, top); } -void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 top) +static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *mon, u8 left, u8 top) { u8 locationMet; u8 gameMet; u8 *ptr = gStringVar4; - u8 nature = GetNature(pokemon); + u8 nature = GetNature(mon); #if ENGLISH ptr = sub_80A1E9C(ptr, gNatureNames[nature], 14); @@ -96,11 +3431,11 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 ptr = StringCopy(ptr, gOtherText_Terminator4); #endif - if (PokemonSummaryScreen_CheckOT(pokemon) == TRUE) + if (PokemonSummaryScreen_CheckOT(mon) == TRUE) { - locationMet = GetMonData(pokemon, MON_DATA_MET_LOCATION); + locationMet = GetMonData(mon, MON_DATA_MET_LOCATION); - if (GetMonData(pokemon, MON_DATA_MET_LEVEL) == 0) + if (GetMonData(mon, MON_DATA_MET_LEVEL) == 0) { ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, 5); *ptr = CHAR_NEWLINE; @@ -119,7 +3454,7 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 } else { - u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL); + u8 levelMet = GetMonData(mon, MON_DATA_MET_LEVEL); ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet); *ptr = CHAR_NEWLINE; @@ -132,7 +3467,7 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 } else { - gameMet = GetMonData(pokemon, MON_DATA_MET_GAME); + gameMet = GetMonData(mon, MON_DATA_MET_GAME); if (!(gameMet == VERSION_RUBY || gameMet == VERSION_SAPPHIRE || gameMet == VERSION_EMERALD)) { @@ -143,10 +3478,10 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 } else { - locationMet = GetMonData(pokemon, MON_DATA_MET_LOCATION); + locationMet = GetMonData(mon, MON_DATA_MET_LOCATION); if (locationMet == 0xFF) { - u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL); + u8 levelMet = GetMonData(mon, MON_DATA_MET_LEVEL); ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet); *ptr = CHAR_NEWLINE; @@ -163,7 +3498,7 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 } else { - u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL); + u8 levelMet = GetMonData(mon, MON_DATA_MET_LEVEL); ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet); *ptr = CHAR_NEWLINE; @@ -178,3 +3513,2065 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 MenuPrint(gStringVar4, left++, top++); } + +static void sub_80A0958(struct Pokemon *mon) +{ + u16 species; + u8 *buffer; + u8 level; + + species = GetMonData(mon, MON_DATA_SPECIES); + + buffer = gStringVar1; + buffer = sub_80A1E58(buffer, 13); + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x11; + buffer[2] = 0x7; + buffer[3] = CHAR_SLASH; + buffer += 4; + buffer = StringCopy(buffer, gSpeciesNames[species]); + + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x13; + buffer[2] = 0x50; + buffer[3] = EOS; + + MenuPrint(gStringVar1, 0, 14); + MenuZeroFillWindowRect(3, 16, 9, 17); + + level = GetMonData(mon, MON_DATA_LEVEL); + + buffer = sub_80A1E58(gStringVar1, 13); + buffer[0] = 0x34; + buffer += 1; + buffer = ConvertIntToDecimalString(buffer, level); + + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x13; + buffer[2] = 0x20; + buffer[3] = EOS; + + MenuPrint(gStringVar1, 3, 16); + sub_80A0A2C(mon, 7, 16); +} + +static void sub_80A0A2C(struct Pokemon *mon, u8 left, u8 top) +{ + const u8 *genderSymbol; + u8 var1; + u8 bottom; + u16 species = GetMonData(mon, MON_DATA_SPECIES2); + + if (species != SPECIES_NIDORAN_M && species != SPECIES_NIDORAN_F) + { + u8 gender = GetMonGender(mon); + switch (gender) + { + default: + bottom = top + 1; + MenuZeroFillWindowRect(left, top, left, bottom); + return; + case MON_MALE: + genderSymbol = gOtherText_MaleSymbol2; + var1 = 11; + break; + case MON_FEMALE: + genderSymbol = gOtherText_FemaleSymbolAndLv; + var1 = 12; + break; + } + + sub_80A1FF8(genderSymbol, var1, left, top); + } +} + +u8 GetNumRibbons(struct Pokemon *mon) +{ + u8 numRibbons = GetMonData(mon, MON_DATA_COOL_RIBBON); + numRibbons += GetMonData(mon, MON_DATA_BEAUTY_RIBBON); + numRibbons += GetMonData(mon, MON_DATA_CUTE_RIBBON); + numRibbons += GetMonData(mon, MON_DATA_SMART_RIBBON); + numRibbons += GetMonData(mon, MON_DATA_TOUGH_RIBBON); + numRibbons += GetMonData(mon, MON_DATA_CHAMPION_RIBBON); + numRibbons += GetMonData(mon, MON_DATA_WINNING_RIBBON); + numRibbons += GetMonData(mon, MON_DATA_VICTORY_RIBBON); + numRibbons += GetMonData(mon, MON_DATA_ARTIST_RIBBON); + numRibbons += GetMonData(mon, MON_DATA_EFFORT_RIBBON); + numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_1); + numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_2); + numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_3); + numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_4); + numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_5); + numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_6); + numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_7); + + return numRibbons; +} + +static void PrintNumRibbons(struct Pokemon *mon) +{ + u8 numRibbons = GetNumRibbons(mon); + + if (numRibbons == 0) + { + StringCopy(gStringVar1, gOtherText_None); + } + else + { + u8 ribbonsStringLength; + u8 *text; + + StringCopy(gStringVar1, gOtherText_Ribbons00); + ribbonsStringLength = StringLength(gStringVar1); + + text = &gStringVar1[ribbonsStringLength - 2]; + + text[0] = EXT_CTRL_CODE_BEGIN; + text[1] = 0x14; + text[2] = 6; + ConvertIntToDecimalStringN(&text[3], numRibbons, 1, 2); + } + + MenuPrint(sUnknown_083C15AE, 21, 4); +} + +static void PrintHeldItemName(u16 itemId, u8 left, u8 top) +{ + if (itemId == ITEM_ENIGMA_BERRY + && sub_80F9344() == TRUE + && IsLinkDoubleBattle() == TRUE + && (pssData.monIndex == 1 || pssData.monIndex == 4 || pssData.monIndex == 5)) + { + StringCopy(gStringVar1, ItemId_GetItem(itemId)->name); + } + else if (itemId == 0) + { + StringCopy(gStringVar1, gOtherText_None); + } + else + { + CopyItemName(itemId, gStringVar1); + } + + MenuPrint(sUnknown_083C15B4, left, top); +} + +static void DrawExperienceProgressBar(struct Pokemon *mon, u8 left, u8 top) +{ + u32 curExperience; + u8 level; + u16 species; + u8 i; + u16 *vramAddr; + u32 expToNextLevel = 0; + s64 numExpProgressBarTicks = 0; + + curExperience = GetMonData(mon, MON_DATA_EXP); + level = GetMonData(mon, MON_DATA_LEVEL); + species = GetMonData(mon, MON_DATA_SPECIES); + + // The experience progress bar is shown as empty when the Pokemon is already level 100. + if (level < 100) + { + u32 nextLevelExp; + u32 expSinceLastLevel; + u32 expBetweenLevels; + u32 curLevelExperience; + + nextLevelExp = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + expToNextLevel = nextLevelExp - curExperience; + curLevelExperience = gExperienceTables[gBaseStats[species].growthRate][level]; + expBetweenLevels = (nextLevelExp - curLevelExperience); + expSinceLastLevel = curExperience - curLevelExperience; + + // Calculate the number of 1-pixel "ticks" to illuminate in the experience progress bar. + // There are 8 tiles that make up the bar, and each tile has 8 "ticks". Hence, the numerator + // is multiplied by 64. + numExpProgressBarTicks = (expSinceLastLevel * 64) / expBetweenLevels; + if (numExpProgressBarTicks == 0 && expSinceLastLevel != 0) + { + // Ensure sure some exp. gain is visible in the progress bar. + numExpProgressBarTicks = 1; + } + } + + ConvertIntToDecimalString(gStringVar1, expToNextLevel); + MenuPrint_RightAligned(gStringVar1, left + 6, top); + + + // Draw each of the 8 tiles that make up the experience progress bar. + vramAddr = (u16 *)(VRAM + 0x4CAA); + for (i = 0; i < 8; i++) + { + u16 tile; + u16 baseTile = 0x2062; + + if (numExpProgressBarTicks > 7) + { + tile = 0x206A; // full exp. bar block + } + else + { + tile = (numExpProgressBarTicks % 8) + baseTile; + } + + vramAddr[i] = tile; + + numExpProgressBarTicks -= 8; + if (numExpProgressBarTicks < 0) + { + numExpProgressBarTicks = 0; + } + } +} + +// Prints the text displayed in the top-left or top-right of the screen. +// Each of the 4 summary screens displays different text. +static void PrintSummaryWindowHeaderText(void) +{ + u8 *buffer = gStringVar1; + + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x12; + buffer[2] = 0x2; + + buffer += 3; + buffer = sub_80A1E58(buffer, 13); + buffer = StringCopy(buffer, sPageHeaderTexts[pssData.headerTextId]); + + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x13; + buffer[2] = 0x58; + buffer[3] = EOS; + + MenuPrint(gStringVar1, 0, 0); + + if (pssData.headerActionTextId != 0) + { + GetStringCenterAlignXOffset(5, 23, 0); + GetStringCenterAlignXOffset(6, 24, 0); + } + else + { + MenuZeroFillWindowRect(23, 0, 24, 1); + } + + buffer = gStringVar1; + buffer = sub_80A1E58(buffer, 13); + buffer = StringCopy(buffer, sPageHeaderTexts[pssData.headerActionTextId]); + + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x13; + buffer[2] = 0x28; + buffer[3] = EOS; + + MenuPrint(gStringVar1, 25, 0); +} + +// If the given pokemon previously had the pokerus virus, a small +// dot will be drawn in between the pokeball and the mon's level. +static void DrawPokerusSurvivorDot(struct Pokemon *mon) +{ + u16 *vram1 = (u16 *)(VRAM + 0xE444); + u16 *vram2 = (u16 *)(VRAM + 0xEC44); + + if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0)) + { + *vram1 = 0x2C; + *vram2 = 0x2C; + } + else + { + *vram1 = 0x081A; + *vram2 = 0x081A; + } +} + +// Draws the 4 small navigation circles at the top of the pokemon summary screen. +#ifdef NONMATCHING +static void DrawSummaryScreenNavigationDots(void) +{ + void *dest; + u16 arr[8]; + u8 i = 0; + struct PokemonSummaryScreenStruct *SS = (struct PokemonSummaryScreenStruct *)(gSharedMem + 0x18000); + u16 var1 = 0x4040; + u16 var2 = 0x404A; + + for (i = 0; i < 4; i++) + { + if (i < SS->unk75) + { + arr[i * 2] = var1; + arr[(i * 2) + 1] = var1 + 1; + } + else if (i > SS->unk76) + { + arr[i * 2] = var2; + arr[(i * 2) + 1] = var2 + 1; + } + else + { + if (i < SS->unkB) + { + arr[i * 2] = 0x4046; + arr[(i * 2) + 1] = 0x4046 + 1; + } + + if (i == SS->unkB) + { + if (i != SS->unk76) + { + arr[i * 2] = 0x4041; + arr[(i * 2) + 1] = 0x4041 + 1; + } + else + { + arr[i * 2] = 0x404B; + arr[(i * 2) + 1] = 0x404B + 1; + } + } + + if (i > SS->unkB) + { + if (i != SS->unk76) + { + arr[i * 2] = 0x4043; + arr[(i * 2) + 1] = 0x4043 + 1; + } + else + { + arr[i * 2] = 0x4048; + arr[(i * 2) + 1] = 0x4048 + 1; + } + } + } + } + + dest = (void *)(VRAM + 0xE016); + DmaCopy16(3, arr, dest, 16); + + for (i = 0; i < 8; i++) + { + arr[i] += 0x10; + } + + dest = (void *)(VRAM + 0xE056); + DmaCopy16(3, arr, dest, 16); +} +#else +__attribute__((naked)) +static void DrawSummaryScreenNavigationDots(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x10\n\ + movs r3, 0\n\ + ldr r6, _080A0F24 @ =gSharedMem + 0x18000\n\ + adds r5, r6, 0\n\ + ldr r1, _080A0F28 @ =0x00004040\n\ + mov r8, r1\n\ + ldr r2, _080A0F2C @ =0x0000404a\n\ + mov r10, r2\n\ +_080A0F02:\n\ + adds r0, r5, 0\n\ + adds r0, 0x75\n\ + ldrb r0, [r0]\n\ + cmp r3, r0\n\ + bcs _080A0F30\n\ + lsls r1, r3, 1\n\ + lsls r0, r3, 2\n\ + add r0, sp\n\ + mov r4, r8\n\ + strh r4, [r0]\n\ + adds r1, 0x1\n\ + lsls r1, 1\n\ + mov r7, sp\n\ + adds r0, r7, r1\n\ + strh r4, [r0]\n\ + b _080A0FE2\n\ + .align 2, 0\n\ +_080A0F24: .4byte gSharedMem + 0x18000\n\ +_080A0F28: .4byte 0x00004040\n\ +_080A0F2C: .4byte 0x0000404a\n\ +_080A0F30:\n\ + movs r0, 0x76\n\ + adds r0, r6\n\ + mov r12, r0\n\ + ldrb r1, [r0]\n\ + cmp r3, r1\n\ + bls _080A0F52\n\ + lsls r1, r3, 1\n\ + lsls r0, r3, 2\n\ + add r0, sp\n\ + mov r2, r10\n\ + strh r2, [r0]\n\ + adds r1, 0x1\n\ + lsls r1, 1\n\ + mov r4, sp\n\ + adds r0, r4, r1\n\ + strh r2, [r0]\n\ + b _080A0FE2\n\ +_080A0F52:\n\ + ldrb r4, [r5, 0xB]\n\ + cmp r3, r4\n\ + bcs _080A0F6E\n\ + lsls r1, r3, 1\n\ + lsls r0, r3, 2\n\ + mov r7, sp\n\ + adds r2, r7, r0\n\ + ldr r0, _080A0F88 @ =0x00004046\n\ + strh r0, [r2]\n\ + adds r1, 0x1\n\ + lsls r1, 1\n\ + add r1, sp\n\ + adds r0, 0x1\n\ + strh r0, [r1]\n\ +_080A0F6E:\n\ + cmp r3, r4\n\ + bne _080A0FA6\n\ + mov r0, r12\n\ + ldrb r0, [r0]\n\ + cmp r3, r0\n\ + beq _080A0F90\n\ + lsls r1, r3, 1\n\ + lsls r0, r3, 2\n\ + mov r4, sp\n\ + adds r2, r4, r0\n\ + ldr r0, _080A0F8C @ =0x00004041\n\ + b _080A0F9A\n\ + .align 2, 0\n\ +_080A0F88: .4byte 0x00004046\n\ +_080A0F8C: .4byte 0x00004041\n\ +_080A0F90:\n\ + lsls r1, r3, 1\n\ + lsls r0, r3, 2\n\ + mov r7, sp\n\ + adds r2, r7, r0\n\ + ldr r0, _080A0FC4 @ =0x0000404b\n\ +_080A0F9A:\n\ + strh r0, [r2]\n\ + adds r1, 0x1\n\ + lsls r1, 1\n\ + add r1, sp\n\ + adds r0, 0x1\n\ + strh r0, [r1]\n\ +_080A0FA6:\n\ + ldrb r0, [r5, 0xB]\n\ + cmp r3, r0\n\ + bls _080A0FE2\n\ + adds r0, r6, 0\n\ + adds r0, 0x76\n\ + ldrb r0, [r0]\n\ + cmp r3, r0\n\ + beq _080A0FCC\n\ + lsls r1, r3, 1\n\ + lsls r0, r3, 2\n\ + mov r4, sp\n\ + adds r2, r4, r0\n\ + ldr r0, _080A0FC8 @ =0x00004043\n\ + b _080A0FD6\n\ + .align 2, 0\n\ +_080A0FC4: .4byte 0x0000404b\n\ +_080A0FC8: .4byte 0x00004043\n\ +_080A0FCC:\n\ + lsls r1, r3, 1\n\ + lsls r0, r3, 2\n\ + mov r7, sp\n\ + adds r2, r7, r0\n\ + ldr r0, _080A1034 @ =0x00004048\n\ +_080A0FD6:\n\ + strh r0, [r2]\n\ + adds r1, 0x1\n\ + lsls r1, 1\n\ + add r1, sp\n\ + adds r0, 0x1\n\ + strh r0, [r1]\n\ +_080A0FE2:\n\ + adds r0, r3, 0x1\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0x3\n\ + bls _080A0F02\n\ + ldr r1, _080A1038 @ =0x0600e016\n\ + ldr r0, _080A103C @ =0x040000d4\n\ + mov r2, sp\n\ + str r2, [r0]\n\ + str r1, [r0, 0x4]\n\ + ldr r1, _080A1040 @ =0x80000008\n\ + str r1, [r0, 0x8]\n\ + ldr r0, [r0, 0x8]\n\ + movs r3, 0\n\ +_080A0FFE:\n\ + lsls r0, r3, 1\n\ + mov r4, sp\n\ + adds r1, r4, r0\n\ + ldrh r0, [r1]\n\ + adds r0, 0x10\n\ + strh r0, [r1]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0x7\n\ + bls _080A0FFE\n\ + ldr r1, _080A1044 @ =0x0600e056\n\ + ldr r0, _080A103C @ =0x040000d4\n\ + str r4, [r0]\n\ + str r1, [r0, 0x4]\n\ + ldr r1, _080A1040 @ =0x80000008\n\ + str r1, [r0, 0x8]\n\ + ldr r0, [r0, 0x8]\n\ + add sp, 0x10\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080A1034: .4byte 0x00004048\n\ +_080A1038: .4byte 0x0600e016\n\ +_080A103C: .4byte 0x040000d4\n\ +_080A1040: .4byte 0x80000008\n\ +_080A1044: .4byte 0x0600e056\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +__attribute__((naked)) +void sub_80A1048(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + lsls r0, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + ldr r1, _080A10A0 @ =gTasks + 0x8\n\ + adds r6, r0, r1\n\ + ldrh r0, [r6]\n\ + ldrh r1, [r6, 0x2]\n\ + adds r0, r1\n\ + strh r0, [r6, 0x2]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bne _080A106E\n\ + b _080A1224\n\ +_080A106E:\n\ + movs r5, 0x2\n\ + ldrsh r2, [r6, r5]\n\ + ldr r0, _080A10A4 @ =0x0000024a\n\ + subs r0, r2\n\ + lsls r0, 1\n\ + ldr r1, _080A10A8 @ =gUnknown_08E73508\n\ + adds r4, r0, r1\n\ + ldr r5, _080A10AC @ =0x0600e480\n\ + lsls r2, 1\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + adds r7, r1, 0\n\ + cmp r2, r0\n\ + bhi _080A10B4\n\ + ldr r0, _080A10B0 @ =0x040000d4\n\ + str r4, [r0]\n\ + str r5, [r0, 0x4]\n\ + lsrs r1, r2, 1\n\ + movs r2, 0x80\n\ + lsls r2, 24\n\ + orrs r1, r2\n\ + str r1, [r0, 0x8]\n\ + ldr r0, [r0, 0x8]\n\ + b _080A10E0\n\ + .align 2, 0\n\ +_080A10A0: .4byte gTasks + 0x8\n\ +_080A10A4: .4byte 0x0000024a\n\ +_080A10A8: .4byte gUnknown_08E73508\n\ +_080A10AC: .4byte 0x0600e480\n\ +_080A10B0: .4byte 0x040000d4\n\ +_080A10B4:\n\ + ldr r3, _080A110C @ =0x040000d4\n\ + str r4, [r3]\n\ + str r5, [r3, 0x4]\n\ + ldr r0, _080A1110 @ =0x80000800\n\ + str r0, [r3, 0x8]\n\ + ldr r0, [r3, 0x8]\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + adds r4, r0\n\ + adds r5, r0\n\ + ldr r1, _080A1114 @ =0xfffff000\n\ + adds r2, r1\n\ + cmp r2, r0\n\ + bhi _080A10B4\n\ + str r4, [r3]\n\ + str r5, [r3, 0x4]\n\ + lsrs r0, r2, 1\n\ + movs r1, 0x80\n\ + lsls r1, 24\n\ + orrs r0, r1\n\ + str r0, [r3, 0x8]\n\ + ldr r0, [r3, 0x8]\n\ +_080A10E0:\n\ + movs r5, 0x2\n\ + ldrsh r0, [r6, r5]\n\ + ldr r1, _080A1118 @ =0x0000026a\n\ + subs r1, r0\n\ + lsls r1, 1\n\ + adds r3, r1, r7\n\ + ldr r4, _080A111C @ =0x0600e4c0\n\ + lsls r1, r0, 1\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + cmp r1, r0\n\ + bhi _080A1120\n\ + ldr r0, _080A110C @ =0x040000d4\n\ + str r3, [r0]\n\ + str r4, [r0, 0x4]\n\ + lsrs r1, 1\n\ + movs r2, 0x80\n\ + lsls r2, 24\n\ + orrs r1, r2\n\ + str r1, [r0, 0x8]\n\ + ldr r0, [r0, 0x8]\n\ + b _080A114C\n\ + .align 2, 0\n\ +_080A110C: .4byte 0x040000d4\n\ +_080A1110: .4byte 0x80000800\n\ +_080A1114: .4byte 0xfffff000\n\ +_080A1118: .4byte 0x0000026a\n\ +_080A111C: .4byte 0x0600e4c0\n\ +_080A1120:\n\ + ldr r2, _080A1178 @ =0x040000d4\n\ + str r3, [r2]\n\ + str r4, [r2, 0x4]\n\ + ldr r0, _080A117C @ =0x80000800\n\ + str r0, [r2, 0x8]\n\ + ldr r0, [r2, 0x8]\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + adds r3, r0\n\ + adds r4, r0\n\ + ldr r5, _080A1180 @ =0xfffff000\n\ + adds r1, r5\n\ + cmp r1, r0\n\ + bhi _080A1120\n\ + str r3, [r2]\n\ + str r4, [r2, 0x4]\n\ + lsrs r0, r1, 1\n\ + movs r1, 0x80\n\ + lsls r1, 24\n\ + orrs r0, r1\n\ + str r0, [r2, 0x8]\n\ + ldr r0, [r2, 0x8]\n\ +_080A114C:\n\ + movs r1, 0x2\n\ + ldrsh r0, [r6, r1]\n\ + ldr r1, _080A1184 @ =0x0000024a\n\ + subs r1, r0\n\ + lsls r1, 1\n\ + adds r3, r1, r7\n\ + ldr r4, _080A1188 @ =0x0600ec80\n\ + lsls r1, r0, 1\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + cmp r1, r0\n\ + bhi _080A118C\n\ + ldr r0, _080A1178 @ =0x040000d4\n\ + str r3, [r0]\n\ + str r4, [r0, 0x4]\n\ + lsrs r1, 1\n\ + movs r2, 0x80\n\ + lsls r2, 24\n\ + orrs r1, r2\n\ + str r1, [r0, 0x8]\n\ + ldr r0, [r0, 0x8]\n\ + b _080A11B8\n\ + .align 2, 0\n\ +_080A1178: .4byte 0x040000d4\n\ +_080A117C: .4byte 0x80000800\n\ +_080A1180: .4byte 0xfffff000\n\ +_080A1184: .4byte 0x0000024a\n\ +_080A1188: .4byte 0x0600ec80\n\ +_080A118C:\n\ + ldr r2, _080A11E4 @ =0x040000d4\n\ + str r3, [r2]\n\ + str r4, [r2, 0x4]\n\ + ldr r0, _080A11E8 @ =0x80000800\n\ + str r0, [r2, 0x8]\n\ + ldr r0, [r2, 0x8]\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + adds r3, r0\n\ + adds r4, r0\n\ + ldr r5, _080A11EC @ =0xfffff000\n\ + adds r1, r5\n\ + cmp r1, r0\n\ + bhi _080A118C\n\ + str r3, [r2]\n\ + str r4, [r2, 0x4]\n\ + lsrs r0, r1, 1\n\ + movs r1, 0x80\n\ + lsls r1, 24\n\ + orrs r0, r1\n\ + str r0, [r2, 0x8]\n\ + ldr r0, [r2, 0x8]\n\ +_080A11B8:\n\ + movs r1, 0x2\n\ + ldrsh r0, [r6, r1]\n\ + ldr r1, _080A11F0 @ =0x0000026a\n\ + subs r1, r0\n\ + lsls r1, 1\n\ + adds r3, r1, r7\n\ + ldr r4, _080A11F4 @ =0x0600ecc0\n\ + lsls r1, r0, 1\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + cmp r1, r0\n\ + bhi _080A11F8\n\ + ldr r0, _080A11E4 @ =0x040000d4\n\ + str r3, [r0]\n\ + str r4, [r0, 0x4]\n\ + lsrs r1, 1\n\ + movs r2, 0x80\n\ + lsls r2, 24\n\ + orrs r1, r2\n\ + str r1, [r0, 0x8]\n\ + ldr r0, [r0, 0x8]\n\ + b _080A1224\n\ + .align 2, 0\n\ +_080A11E4: .4byte 0x040000d4\n\ +_080A11E8: .4byte 0x80000800\n\ +_080A11EC: .4byte 0xfffff000\n\ +_080A11F0: .4byte 0x0000026a\n\ +_080A11F4: .4byte 0x0600ecc0\n\ +_080A11F8:\n\ + ldr r2, _080A12B0 @ =0x040000d4\n\ + str r3, [r2]\n\ + str r4, [r2, 0x4]\n\ + ldr r0, _080A12B4 @ =0x80000800\n\ + str r0, [r2, 0x8]\n\ + ldr r0, [r2, 0x8]\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + adds r3, r0\n\ + adds r4, r0\n\ + ldr r5, _080A12B8 @ =0xfffff000\n\ + adds r1, r5\n\ + cmp r1, r0\n\ + bhi _080A11F8\n\ + str r3, [r2]\n\ + str r4, [r2, 0x4]\n\ + lsrs r0, r1, 1\n\ + movs r1, 0x80\n\ + lsls r1, 24\n\ + orrs r0, r1\n\ + str r0, [r2, 0x8]\n\ + ldr r0, [r2, 0x8]\n\ +_080A1224:\n\ + ldrb r4, [r6, 0x2]\n\ + ldrh r7, [r6, 0x2]\n\ + ldrh r0, [r6]\n\ + mov r12, r0\n\ + cmp r4, 0x9\n\ + bhi _080A1272\n\ + adds r3, r6, 0x4\n\ + ldr r2, _080A12B0 @ =0x040000d4\n\ + ldr r5, _080A12BC @ =0x80000001\n\ +_080A1236:\n\ + lsls r1, r4, 1\n\ + ldr r6, _080A12C0 @ =0x0600e480\n\ + adds r0, r1, r6\n\ + str r3, [r2]\n\ + str r0, [r2, 0x4]\n\ + str r5, [r2, 0x8]\n\ + ldr r0, [r2, 0x8]\n\ + adds r6, 0x40\n\ + adds r0, r1, r6\n\ + str r3, [r2]\n\ + str r0, [r2, 0x4]\n\ + str r5, [r2, 0x8]\n\ + ldr r0, [r2, 0x8]\n\ + ldr r6, _080A12C4 @ =0x0600ec80\n\ + adds r0, r1, r6\n\ + str r3, [r2]\n\ + str r0, [r2, 0x4]\n\ + str r5, [r2, 0x8]\n\ + ldr r0, [r2, 0x8]\n\ + ldr r0, _080A12C8 @ =0x0600ecc0\n\ + adds r1, r0\n\ + str r3, [r2]\n\ + str r1, [r2, 0x4]\n\ + str r5, [r2, 0x8]\n\ + ldr r0, [r2, 0x8]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0x9\n\ + bls _080A1236\n\ +_080A1272:\n\ + mov r1, r12\n\ + lsls r0, r1, 16\n\ + cmp r0, 0\n\ + beq _080A1286\n\ + lsls r0, r7, 16\n\ + asrs r0, 16\n\ + cmp r0, 0\n\ + ble _080A1286\n\ + cmp r0, 0x9\n\ + ble _080A12A4\n\ +_080A1286:\n\ + lsls r0, r7, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x9\n\ + ble _080A129A\n\ + ldr r0, _080A12CC @ =gOtherText_Status\n\ + movs r1, 0xD\n\ + movs r2, 0x1\n\ + movs r3, 0x12\n\ + bl sub_80A1FF8\n\ +_080A129A:\n\ + bl sub_80A1D18\n\ + mov r0, r8\n\ + bl DestroyTask\n\ +_080A12A4:\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080A12B0: .4byte 0x040000d4\n\ +_080A12B4: .4byte 0x80000800\n\ +_080A12B8: .4byte 0xfffff000\n\ +_080A12BC: .4byte 0x80000001\n\ +_080A12C0: .4byte 0x0600e480\n\ +_080A12C4: .4byte 0x0600ec80\n\ +_080A12C8: .4byte 0x0600ecc0\n\ +_080A12CC: .4byte gOtherText_Status\n\ + .syntax divided\n"); +} + +static void sub_80A12D0(s8 a) +{ + u8 newTaskId; + + MenuZeroFillWindowRect(1, 18, 5, 19); + sub_80A18E4(29); + + newTaskId = CreateTask(sub_80A1048, 0); + gTasks[newTaskId].data[0] = a; + + if (a < 0) + { + gTasks[newTaskId].data[1] = 10; + } + else + { + gTasks[newTaskId].data[1] = 0; + } + + gTasks[newTaskId].data[2] = 1; +} + +// void sub_80A1334(u8 taskId) +// { +// u8 i; +// s16 var1; + +// gTasks[taskId].data[1] += gTasks[taskId].data[0]; + +// var1 = 0; +// if (gTasks[taskId].data[1] >= 0) +// { +// var1 = 10; +// if (gTasks[taskId].data[1] < 10) +// { +// var1 = gTasks[taskId].data[1]; +// } +// } + +// if (var1 > 0) +// { +// u8 *vramAddr = (u8 *)(VRAM + 0x5B40); +// for (i = 0; i < 7; i++) +// { +// CpuSet(&gUnknown_08E73E88[(i + 13) * 64], vramAddr, var1 & 0x1FFFFF); +// vramAddr += 64; +// } +// } + +// if (var1 <= 9) +// { +// u8 *vramAddr = (u8 *)(VRAM + 0x5B40); +// for (i = 0; i < 64; i++) +// { +// u16 val = gTasks[taskId].data[2]; +// CpuSet(&val, vramAddr, ((10 - var1) & 0x1FFFFF) | 0x800000); +// } +// } +// else +// { +// MenuZeroFillWindowRect(0, 19, 9, 19); +// } + +// if (gTasks[taskId].data[0] == 0 || gTasks[taskId].data[1] < 0) +// { +// if (pssData.page == PSS_PAGE_BATTLE_MOVES) +// { +// MenuZeroFillWindowRect(0, 14, 9, 18); +// sub_80A0958(pssData.loadedMon); + +// if (GetMonStatusAndPokerus(pssData.loadedMon)) +// { +// sub_80A1FF8(gOtherText_Status, 13, 1, 18); +// } + +// DestroyTask(taskId); +// } +// } + +// if (gTasks[taskId].data[1] > 9) +// { +// if (pssData.page == PSS_PAGE_BATTLE_MOVES) +// { +// sub_80A00F4(gTasks[taskId].data[3]); +// } + +// sub_80A0428(pssData.loadedMon, &gTasks[taskId].data[3]); +// DestroyTask(taskId); +// } +// } +__attribute__((naked)) +static void sub_80A1334(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + lsls r0, 2\n\ + add r0, r10\n\ + lsls r0, 3\n\ + ldr r1, _080A13E4 @ =gTasks + 0x8\n\ + adds r7, r0, r1\n\ + ldrh r0, [r7]\n\ + ldrh r1, [r7, 0x2]\n\ + adds r0, r1\n\ + strh r0, [r7, 0x2]\n\ + lsls r0, 16\n\ + asrs r1, r0, 16\n\ + movs r0, 0\n\ + cmp r1, 0\n\ + blt _080A136A\n\ + movs r0, 0xA\n\ + cmp r1, 0xA\n\ + bgt _080A136A\n\ + ldrh r0, [r7, 0x2]\n\ +_080A136A:\n\ + lsls r0, 16\n\ + asrs r2, r0, 16\n\ + mov r9, r0\n\ + cmp r2, 0\n\ + ble _080A13A6\n\ + movs r0, 0xA\n\ + subs r0, r2\n\ + lsls r0, 1\n\ + ldr r1, _080A13E8 @ =0x06005b40\n\ + adds r4, r0, r1\n\ + movs r5, 0\n\ + adds r6, r2, 0\n\ + ldr r0, _080A13EC @ =0x001fffff\n\ + mov r8, r0\n\ +_080A1386:\n\ + adds r0, r5, 0\n\ + adds r0, 0xD\n\ + lsls r0, 6\n\ + ldr r1, _080A13F0 @ =gUnknown_08E73E88\n\ + adds r0, r1\n\ + adds r1, r4, 0\n\ + mov r2, r8\n\ + ands r2, r6\n\ + bl CpuSet\n\ + adds r4, 0x40\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x6\n\ + bls _080A1386\n\ +_080A13A6:\n\ + mov r1, r9\n\ + asrs r2, r1, 16\n\ + cmp r2, 0x9\n\ + bgt _080A13F4\n\ + ldr r4, _080A13E8 @ =0x06005b40\n\ + movs r5, 0\n\ + mov r8, sp\n\ + movs r0, 0xA\n\ + subs r6, r0, r2\n\ + ldr r0, _080A13EC @ =0x001fffff\n\ + ands r6, r0\n\ + movs r0, 0x80\n\ + lsls r0, 17\n\ + mov r9, r0\n\ +_080A13C2:\n\ + ldrh r0, [r7, 0x4]\n\ + mov r1, r8\n\ + strh r0, [r1]\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + mov r2, r9\n\ + orrs r2, r6\n\ + bl CpuSet\n\ + adds r4, 0x40\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x6\n\ + bls _080A13C2\n\ + b _080A1400\n\ + .align 2, 0\n\ +_080A13E4: .4byte gTasks + 0x8\n\ +_080A13E8: .4byte 0x06005b40\n\ +_080A13EC: .4byte 0x001fffff\n\ +_080A13F0: .4byte gUnknown_08E73E88\n\ +_080A13F4:\n\ + movs r0, 0\n\ + movs r1, 0x13\n\ + movs r2, 0x9\n\ + movs r3, 0x13\n\ + bl MenuZeroFillWindowRect\n\ +_080A1400:\n\ + movs r1, 0\n\ + ldrsh r0, [r7, r1]\n\ + cmp r0, 0\n\ + beq _080A1410\n\ + movs r1, 0x2\n\ + ldrsh r0, [r7, r1]\n\ + cmp r0, 0\n\ + bge _080A144A\n\ +_080A1410:\n\ + ldr r4, _080A1480 @ =gSharedMem + 0x18000\n\ + ldrb r0, [r4, 0xB]\n\ + cmp r0, 0x2\n\ + bne _080A1444\n\ + movs r0, 0\n\ + movs r1, 0xE\n\ + movs r2, 0x9\n\ + movs r3, 0x12\n\ + bl MenuZeroFillWindowRect\n\ + adds r4, 0x10\n\ + adds r0, r4, 0\n\ + bl sub_80A0958\n\ + adds r0, r4, 0\n\ + bl GetMonStatusAndPokerus\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080A1444\n\ + ldr r0, _080A1484 @ =gOtherText_Status\n\ + movs r1, 0xD\n\ + movs r2, 0x1\n\ + movs r3, 0x12\n\ + bl sub_80A1FF8\n\ +_080A1444:\n\ + mov r0, r10\n\ + bl DestroyTask\n\ +_080A144A:\n\ + movs r1, 0x2\n\ + ldrsh r0, [r7, r1]\n\ + cmp r0, 0x9\n\ + ble _080A1470\n\ + ldr r4, _080A1480 @ =gSharedMem + 0x18000\n\ + ldrb r0, [r4, 0xB]\n\ + cmp r0, 0x2\n\ + bne _080A1460\n\ + ldrb r0, [r7, 0x6]\n\ + bl sub_80A00F4\n\ +_080A1460:\n\ + adds r0, r4, 0\n\ + adds r0, 0x10\n\ + adds r1, r7, 0x6\n\ + bl sub_80A0428\n\ + mov r0, r10\n\ + bl DestroyTask\n\ +_080A1470:\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080A1480: .4byte gSharedMem + 0x18000\n\ +_080A1484: .4byte gOtherText_Status\n\ + .syntax divided\n"); +} + +// Related to re-drawing the summary area underneath the pokemon's picture +// in all of the summary screen tabs. +static void sub_80A1488(s8 a, u8 b) +{ + u8 taskId; + + if (pssData.page == PSS_PAGE_BATTLE_MOVES) + { + MenuZeroFillWindowRect(0, 14, 9, 19); + } + + taskId = FindTaskIdByFunc(sub_80A1334); + if (taskId == 0xFF) + { + taskId = CreateTask(sub_80A1334, 0); + } + + gTasks[taskId].data[0] = (s8)a; + + if ((s8)a < 0) + { + gTasks[taskId].data[1] = 10; + } + else + { + gTasks[taskId].data[1] = 0; + } + + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = b; +} + +__attribute__((naked)) +static void sub_80A1500(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + lsls r0, 2\n\ + add r0, r10\n\ + lsls r0, 3\n\ + ldr r1, _080A15B0 @ =gTasks + 0x8\n\ + adds r7, r0, r1\n\ + ldrh r0, [r7]\n\ + ldrh r1, [r7, 0x2]\n\ + adds r0, r1\n\ + strh r0, [r7, 0x2]\n\ + lsls r0, 16\n\ + asrs r1, r0, 16\n\ + movs r0, 0\n\ + cmp r1, 0\n\ + blt _080A1536\n\ + movs r0, 0xA\n\ + cmp r1, 0xA\n\ + bgt _080A1536\n\ + ldrh r0, [r7, 0x2]\n\ +_080A1536:\n\ + lsls r0, 16\n\ + asrs r2, r0, 16\n\ + mov r9, r0\n\ + cmp r2, 0\n\ + ble _080A1572\n\ + movs r0, 0xA\n\ + subs r0, r2\n\ + lsls r0, 1\n\ + ldr r1, _080A15B4 @ =0x06006b40\n\ + adds r4, r0, r1\n\ + movs r5, 0\n\ + adds r6, r2, 0\n\ + ldr r0, _080A15B8 @ =0x001fffff\n\ + mov r8, r0\n\ +_080A1552:\n\ + adds r0, r5, 0\n\ + adds r0, 0xD\n\ + lsls r0, 6\n\ + ldr r1, _080A15BC @ =gUnknown_08E74688\n\ + adds r0, r1\n\ + adds r1, r4, 0\n\ + mov r2, r8\n\ + ands r2, r6\n\ + bl CpuSet\n\ + adds r4, 0x40\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x6\n\ + bls _080A1552\n\ +_080A1572:\n\ + mov r1, r9\n\ + asrs r2, r1, 16\n\ + cmp r2, 0x9\n\ + bgt _080A15C0\n\ + ldr r4, _080A15B4 @ =0x06006b40\n\ + movs r5, 0\n\ + mov r8, sp\n\ + movs r0, 0xA\n\ + subs r6, r0, r2\n\ + ldr r0, _080A15B8 @ =0x001fffff\n\ + ands r6, r0\n\ + movs r0, 0x80\n\ + lsls r0, 17\n\ + mov r9, r0\n\ +_080A158E:\n\ + ldrh r0, [r7, 0x4]\n\ + mov r1, r8\n\ + strh r0, [r1]\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + mov r2, r9\n\ + orrs r2, r6\n\ + bl CpuSet\n\ + adds r4, 0x40\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x6\n\ + bls _080A158E\n\ + b _080A15CC\n\ + .align 2, 0\n\ +_080A15B0: .4byte gTasks + 0x8\n\ +_080A15B4: .4byte 0x06006b40\n\ +_080A15B8: .4byte 0x001fffff\n\ +_080A15BC: .4byte gUnknown_08E74688\n\ +_080A15C0:\n\ + movs r0, 0\n\ + movs r1, 0x13\n\ + movs r2, 0x9\n\ + movs r3, 0x13\n\ + bl MenuZeroFillWindowRect\n\ +_080A15CC:\n\ + movs r1, 0\n\ + ldrsh r0, [r7, r1]\n\ + cmp r0, 0\n\ + beq _080A15DC\n\ + movs r1, 0x2\n\ + ldrsh r0, [r7, r1]\n\ + cmp r0, 0\n\ + bge _080A1616\n\ +_080A15DC:\n\ + ldr r4, _080A164C @ =gSharedMem + 0x18000\n\ + ldrb r0, [r4, 0xB]\n\ + cmp r0, 0x3\n\ + bne _080A1610\n\ + movs r0, 0\n\ + movs r1, 0xE\n\ + movs r2, 0x9\n\ + movs r3, 0x12\n\ + bl MenuZeroFillWindowRect\n\ + adds r4, 0x10\n\ + adds r0, r4, 0\n\ + bl sub_80A0958\n\ + adds r0, r4, 0\n\ + bl GetMonStatusAndPokerus\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080A1610\n\ + ldr r0, _080A1650 @ =gOtherText_Status\n\ + movs r1, 0xD\n\ + movs r2, 0x1\n\ + movs r3, 0x12\n\ + bl sub_80A1FF8\n\ +_080A1610:\n\ + mov r0, r10\n\ + bl DestroyTask\n\ +_080A1616:\n\ + movs r1, 0x2\n\ + ldrsh r0, [r7, r1]\n\ + cmp r0, 0x9\n\ + ble _080A163C\n\ + ldr r4, _080A164C @ =gSharedMem + 0x18000\n\ + ldrb r0, [r4, 0xB]\n\ + cmp r0, 0x3\n\ + bne _080A162C\n\ + ldrb r0, [r7, 0x6]\n\ + bl sub_80A00F4\n\ +_080A162C:\n\ + adds r0, r4, 0\n\ + adds r0, 0x10\n\ + adds r1, r7, 0x6\n\ + bl sub_80A0428\n\ + mov r0, r10\n\ + bl DestroyTask\n\ +_080A163C:\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080A164C: .4byte gSharedMem + 0x18000\n\ +_080A1650: .4byte gOtherText_Status\n\ + .syntax divided\n"); +} + +static void sub_80A1654(s8 a, u8 b) +{ + u8 taskId; + + if (pssData.page == PSS_PAGE_CONTEST_MOVES) + { + MenuZeroFillWindowRect(0, 14, 9, 19); + } + + taskId = FindTaskIdByFunc(sub_80A1500); + if (taskId == 0xFF) + { + taskId = CreateTask(sub_80A1500, 0); + } + + gTasks[taskId].data[0] = (s8)a; + + if ((s8)a < 0) + { + gTasks[taskId].data[1] = 10; + } + else + { + gTasks[taskId].data[1] = 0; + } + + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = b; +} + +#ifdef NONMATCHING +static void sub_80A16CC(u8 a) +{ + u8 i; + u16 *vramAddr = (u16 *)(VRAM + 0x6AD4); + + if (a == 0) + { + for (i = 0; i < 20; i++) + { + vramAddr[i] = gUnknown_08E94510[i] + 0x1000; + vramAddr[i + 0x20] = gUnknown_08E94510[i] + 0x1000; + vramAddr[i + 0x40] = gUnknown_08E94550[i] + 0x1000; + } + } + else + { + i = 0; + for (i = 0; i < 20; i++) + { + vramAddr[i] = gUnknown_08E94550[i] + 0x1000; + vramAddr[i + 0x20] = gUnknown_08E94590[i] + 0x1000; + vramAddr[i + 0x40] = gUnknown_08E94590[i] + 0x1000; + } + } + + vramAddr = (u16 *)(VRAM + 0x5AD4); + + if (a == 0) + { + for (i = 0; i < 20; i++) + { + vramAddr[i] = gUnknown_08E94510[i] + 0x3000; + vramAddr[i + 0x20] = gUnknown_08E94510[i] + 0x3000; + vramAddr[i + 0x40] = gUnknown_08E94550[i] + 0x3000; + } + } + else + { + for (i = 0; i < 20; i++) + { + vramAddr[i] = gUnknown_08E94550[i] + 0x3000; + vramAddr[i + 0x20] = gUnknown_08E94590[i] + 0x3000; + vramAddr[i + 0x40] = gUnknown_08E94590[i] + 0x3000; + } + } +} +#else +__attribute__((naked)) +static void sub_80A16CC(u8 a) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + ldr r0, _080A1724 @ =0x06006ad4\n\ + mov r12, r0\n\ + mov r1, r9\n\ + cmp r1, 0\n\ + bne _080A172C\n\ + movs r5, 0\n\ + ldr r7, _080A1728 @ =gUnknown_08E94510\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + adds r6, r0, 0\n\ + movs r1, 0x40\n\ + adds r1, r7\n\ + mov r8, r1\n\ +_080A16F4:\n\ + lsls r2, r5, 1\n\ + mov r0, r12\n\ + adds r3, r2, r0\n\ + adds r4, r2, r7\n\ + ldrh r1, [r4]\n\ + adds r0, r6, r1\n\ + strh r0, [r3]\n\ + adds r1, r3, 0\n\ + adds r1, 0x40\n\ + ldrh r4, [r4]\n\ + adds r0, r6, r4\n\ + strh r0, [r1]\n\ + adds r3, 0x80\n\ + add r2, r8\n\ + ldrh r2, [r2]\n\ + adds r0, r6, r2\n\ + strh r0, [r3]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x13\n\ + bls _080A16F4\n\ + b _080A1768\n\ + .align 2, 0\n\ +_080A1724: .4byte 0x06006ad4\n\ +_080A1728: .4byte gUnknown_08E94510\n\ +_080A172C:\n\ + movs r5, 0\n\ + ldr r6, _080A17B0 @ =gUnknown_08E94550\n\ + movs r7, 0x80\n\ + lsls r7, 5\n\ + adds r4, r7, 0\n\ + movs r0, 0x40\n\ + adds r0, r6\n\ + mov r8, r0\n\ +_080A173C:\n\ + lsls r1, r5, 1\n\ + mov r7, r12\n\ + adds r2, r1, r7\n\ + adds r0, r1, r6\n\ + ldrh r0, [r0]\n\ + adds r0, r4, r0\n\ + strh r0, [r2]\n\ + adds r3, r2, 0\n\ + adds r3, 0x40\n\ + add r1, r8\n\ + ldrh r7, [r1]\n\ + adds r0, r4, r7\n\ + strh r0, [r3]\n\ + adds r2, 0x80\n\ + ldrh r1, [r1]\n\ + adds r0, r4, r1\n\ + strh r0, [r2]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x13\n\ + bls _080A173C\n\ +_080A1768:\n\ + ldr r0, _080A17B4 @ =0x06005ad4\n\ + mov r12, r0\n\ + mov r1, r9\n\ + cmp r1, 0\n\ + bne _080A17BC\n\ + movs r5, 0\n\ + ldr r7, _080A17B8 @ =gUnknown_08E94510\n\ + movs r0, 0xC0\n\ + lsls r0, 6\n\ + adds r6, r0, 0\n\ + movs r1, 0x40\n\ + adds r1, r7\n\ + mov r8, r1\n\ +_080A1782:\n\ + lsls r2, r5, 1\n\ + mov r0, r12\n\ + adds r3, r2, r0\n\ + adds r4, r2, r7\n\ + ldrh r1, [r4]\n\ + adds r0, r6, r1\n\ + strh r0, [r3]\n\ + adds r1, r3, 0\n\ + adds r1, 0x40\n\ + ldrh r4, [r4]\n\ + adds r0, r6, r4\n\ + strh r0, [r1]\n\ + adds r3, 0x80\n\ + add r2, r8\n\ + ldrh r2, [r2]\n\ + adds r0, r6, r2\n\ + strh r0, [r3]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x13\n\ + bls _080A1782\n\ + b _080A17F8\n\ + .align 2, 0\n\ +_080A17B0: .4byte gUnknown_08E94550\n\ +_080A17B4: .4byte 0x06005ad4\n\ +_080A17B8: .4byte gUnknown_08E94510\n\ +_080A17BC:\n\ + movs r5, 0\n\ + ldr r6, _080A1804 @ =gUnknown_08E94550\n\ + movs r7, 0xC0\n\ + lsls r7, 6\n\ + adds r4, r7, 0\n\ + movs r0, 0x40\n\ + adds r0, r6\n\ + mov r8, r0\n\ +_080A17CC:\n\ + lsls r1, r5, 1\n\ + mov r7, r12\n\ + adds r2, r1, r7\n\ + adds r0, r1, r6\n\ + ldrh r0, [r0]\n\ + adds r0, r4, r0\n\ + strh r0, [r2]\n\ + adds r3, r2, 0\n\ + adds r3, 0x40\n\ + add r1, r8\n\ + ldrh r7, [r1]\n\ + adds r0, r4, r7\n\ + strh r0, [r3]\n\ + adds r2, 0x80\n\ + ldrh r1, [r1]\n\ + adds r0, r4, r1\n\ + strh r0, [r2]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x13\n\ + bls _080A17CC\n\ +_080A17F8:\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080A1804: .4byte gUnknown_08E94550\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +u8 sub_80A1808(struct Pokemon *mon) +{ + u16 species; + u8 spriteId; + + species = GetMonData(mon, MON_DATA_SPECIES2); + spriteId = CreateSprite(&gUnknown_02024E8C, 40, 64, 5); + + FreeSpriteOamMatrix(&gSprites[spriteId]); + + gSprites[spriteId].data[0] = species; + gSprites[spriteId].callback = sub_80A1888; + + if (!IsPokeSpriteNotFlipped(species)) + { + gSprites[spriteId].hFlip = 1; + } + else + { + gSprites[spriteId].hFlip = 0; + } + + return spriteId; +} + +static void sub_80A1888(struct Sprite *sprite) +{ + if (!gPaletteFade.active) + { + sprite->callback = SpriteCallbackDummy; + + if (!GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) + { + PlayCry1(sprite->data[0], 0); + } + } +} + +static void sub_80A18C4(void) +{ + u8 i; + + for (i = 0; i < 30; i++) + { + ewram1A000[i] = 0xFF; + } +} + +static void sub_80A18E4(u8 a) +{ + if (ewram1A000[a] != 0xFF) + { + DestroySprite(&gSprites[ewram1A000[a]]); + ewram1A000[a] = 0xFF; + } +} + +static void sub_80A1918(u8 a, u8 invisible) +{ + gSprites[ewram1A000[a]].invisible = invisible; +} + +static void sub_80A1950(void) +{ + u8 i; + + for (i = 0; i < 5; i++) + { + if (ewram1A000[i] == 0xFF) + { + ewram1A000[i] = CreateSprite(&sSpriteTemplate_83C11C0, 0, 0, 2); + } + + sub_80A1918(i, 1); + } +} + +static void sub_80A198C(u8 animNum, u8 x, u8 y, u8 d) +{ + StartSpriteAnim(&gSprites[ewram1A000[d]], animNum); + + gSprites[ewram1A000[d]].oam.paletteNum = sUnknown_PaletteNums[animNum]; + gSprites[ewram1A000[d]].pos1.x = x + 16; + gSprites[ewram1A000[d]].pos1.y = y + 8; + + sub_80A1918(d, 0); +} + +static void sub_80A1A30(u8 a) +{ + u8 i; + s16 x; + u8 subPriority = 0; + + if (pssData.page >= PSS_PAGE_BATTLE_MOVES) + { + if (a == 9) + { + subPriority = 1; + } + + for (i = 0; i < 10; i++) + { + x = (i * 16) + 0x58; + ewram1A000[a + i] = CreateSprite(&sSpriteTemplate_83C1280, x, 40, subPriority); + + if (i == 0) + { + StartSpriteAnim(&gSprites[ewram1A000[a]], 4); + } + else if (i == 9) + { + StartSpriteAnim(&gSprites[ewram1A000[a + i]], 5); + } + else + { + StartSpriteAnim(&gSprites[ewram1A000[a + i]], 6); + } + + gSprites[ewram1A000[a + i]].callback = sub_80A1BC0; + gSprites[ewram1A000[a + i]].data[0] = a; + gSprites[ewram1A000[a + i]].data[1] = 0; + } + } +} + +static void sub_80A1B1C(u8 a) +{ + u8 i; + + for (i = 0; i < 10; i++) + { + sub_80A18E4(a + i); + } +} + +static void sub_80A1B40(u8 a) +{ + u8 i; + a *= 3; + + StartSpriteAnim(&gSprites[ewram1A000[9]], a + 4); + + for (i = 0; i < 8; i++) + { + StartSpriteAnim(&gSprites[ewram1A000[10 + i]], a + 6); + } + + StartSpriteAnim(&gSprites[ewram1A000[18]], a + 5); +} + +static void sub_80A1BC0(struct Sprite *sprite) +{ + u8 animNum = sprite->animNum - 4; + if (animNum < 3) + { + sprite->data[1] = (sprite->data[1] + 1) & 0x1F; + + if (sprite->data[1] > 24) + { + sprite->invisible = 1; + } + else + { + sprite->invisible = 0; + } + } + else + { + sprite->data[1] = 0; + sprite->invisible = 0; + } + + if (sprite->data[0] == 9) + { + sprite->pos2.y = pssData.selectedMoveIndex * 16; + } + else + { + sprite->pos2.y = pssData.switchMoveIndex * 16; + } +} + +__attribute__((naked)) +void sub_80A1C30(u8 a) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 25\n\ + lsrs r3, r0, 24\n\ + adds r4, r3, 0\n\ + adds r0, r3, 0\n\ + adds r0, 0xA\n\ + cmp r3, r0\n\ + bge _080A1C82\n\ + ldr r5, _080A1C88 @ =gSprites\n\ + movs r7, 0x5\n\ + negs r7, r7\n\ + ldr r6, _080A1C8C @ =gSharedMem + 0x1A009\n\ +_080A1C50:\n\ + adds r2, r3, r6\n\ + ldrb r1, [r2]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r5\n\ + movs r1, 0\n\ + strh r1, [r0, 0x30]\n\ + ldrb r0, [r2]\n\ + lsls r1, r0, 4\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r5\n\ + adds r1, 0x3E\n\ + ldrb r2, [r1]\n\ + adds r0, r7, 0\n\ + ands r0, r2\n\ + strb r0, [r1]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + adds r0, r4, 0\n\ + adds r0, 0xA\n\ + cmp r3, r0\n\ + blt _080A1C50\n\ +_080A1C82:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080A1C88: .4byte gSprites\n\ +_080A1C8C: .4byte gSharedMem + 0x1A009\n\ + .syntax divided\n"); +} + +u8 pokemon_ailments_get_primary(u32 status) +{ + if (status & 0x88) + return 1; + if (status & 0x40) + return 2; + if (status & 0x7) + return 3; + if (status & 0x20) + return 4; + if (status & 0x10) + return 5; + + return 0; +} + +u8 GetMonStatusAndPokerus(struct Pokemon *mon) +{ + u8 statusAilment; + + if (GetMonData(mon, MON_DATA_HP) == 0) + { + return 7; + } + + statusAilment = pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)); + if (statusAilment == 0) + { + if (!CheckPartyPokerus(mon, 0)) + { + return 0; + } + else + { + return 6; + } + } + + return statusAilment; +} + +#ifdef NONMATCHING +void sub_80A1D18(void) +{ + struct Pokemon mon; + u8 statusAndPkrs; + u8 statusAndPkrs2; + + sub_809F678(&mon); + statusAndPkrs = GetMonStatusAndPokerus(&mon); + + if (statusAndPkrs) + { + statusAndPkrs2 = statusAndPkrs - 1; + + if (ewram1A000[29] == 0xFF) + { + ewram1A000[29] = CreateSprite(&sSpriteTemplate_83C1304, 64, 152, 0); + } + } + else + { + sub_80A18E4(29); + return; + } + + StartSpriteAnim(&gSprites[ewram1A000[29]], statusAndPkrs2); +} +#else +__attribute__((naked)) +void sub_80A1D18(void) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + sub sp, 0x64\n\ + mov r0, sp\n\ + bl sub_809F678\n\ + mov r0, sp\n\ + bl GetMonStatusAndPokerus\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0\n\ + beq _080A1D58\n\ + subs r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r4, _080A1D50 @ =gSharedMem + 0x1A01D\n\ + ldrb r0, [r4]\n\ + cmp r0, 0xFF\n\ + bne _080A1D60\n\ + ldr r0, _080A1D54 @ =sSpriteTemplate_83C1304\n\ + movs r1, 0x40\n\ + movs r2, 0x98\n\ + movs r3, 0\n\ + bl CreateSprite\n\ + strb r0, [r4]\n\ + b _080A1D60\n\ + .align 2, 0\n\ +_080A1D50: .4byte gSharedMem + 0x1A01D\n\ +_080A1D54: .4byte sSpriteTemplate_83C1304\n\ +_080A1D58:\n\ + movs r0, 0x1D\n\ + bl sub_80A18E4\n\ + b _080A1D74\n\ +_080A1D60:\n\ + ldr r0, _080A1D7C @ =gSharedMem + 0x1A01D\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + ldr r1, _080A1D80 @ =gSprites\n\ + adds r0, r1\n\ + adds r1, r5, 0\n\ + bl StartSpriteAnim\n\ +_080A1D74:\n\ + add sp, 0x64\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080A1D7C: .4byte gSharedMem + 0x1A01D\n\ +_080A1D80: .4byte gSprites\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +static void sub_80A1D84(struct Pokemon *mon) +{ + struct Sprite *sprite; + + sprite = sub_80F7920(0x7533, 0x7533, sSummaryScreenMonMarkingsPalette); + gUnknown_020384F4 = sprite; + + if (sprite != NULL) + { + u8 markings = GetMonData(mon, MON_DATA_MARKINGS); + StartSpriteAnim(sprite, markings); + + gUnknown_020384F4->pos1.x = 60; + gUnknown_020384F4->pos1.y = 26; + } +} + +static void sub_80A1DCC(struct Pokemon *mon) +{ + DestroySprite(gUnknown_020384F4); + sub_80A1D84(mon); +} + +static void sub_80A1DE8(struct Pokemon *mon) +{ + u8 ball = ball_number_to_ball_processing_index(GetMonData(mon, MON_DATA_POKEBALL)); + sub_80478DC(ball); + + pssData.ballSpriteId = CreateSprite(&gBallSpriteTemplates[ball], 6, 136, 0); + gSprites[pssData.ballSpriteId].callback = SpriteCallbackDummy; + gSprites[pssData.ballSpriteId].oam.priority = 3; +} + +static u8 *sub_80A1E58(u8 *text, u8 id) +{ + if (id != 0xFF) + { + const u8 *ptr = sUnknown_083C15BC; + while (*ptr != 0xFF && *ptr != id) + { + ptr += 4; + } + + text[0] = EXT_CTRL_CODE_BEGIN; + text[1] = 4; + text[2] = ptr[1]; + text[3] = ptr[2]; + text[4] = ptr[3]; + + text += 5; + } + + return text; +} + +u8 *sub_80A1E9C(u8 *dest, const u8 *src, u8 id) +{ + u8 arr[3]; + + sub_8072CD4(&arr[0], &arr[1], &arr[2]); + + dest = sub_80A1E58(dest, id); + dest = StringCopy(dest, src); + + if (id != 0xFF) + { + dest[0] = EXT_CTRL_CODE_BEGIN; + dest[1] = 4; + dest[2] = arr[0]; + dest[3] = arr[1]; + dest[4] = arr[2]; + dest[5] = 0xFF; + + dest += 5; + } + + return dest; +} + +static void sub_80A1EF8(const u8 *text, u8 id, u8 left, u16 top, s32 e) +{ + sub_80A1E9C(gStringVar4, text, id); + MenuPrint_PixelCoords(gStringVar4, left, top, (bool8)e); +} + +static void sub_80A1F48(const u8 *text, u8 id, u8 c, u8 d, u16 e) +{ + sub_80A1E9C(gStringVar4, text, id); + sub_8072BD8(gStringVar4, c, d, e); +} + +static void sub_80A1F98(s32 value, u8 id, u8 n, u8 mode, u8 left, u16 top, s32 e) +{ + ConvertIntToDecimalStringN(gStringVar1, value, mode, n); + sub_80A1EF8(gStringVar1, id, left, top, e); +} + +static void sub_80A1FF8(const u8 *text, u8 id, u8 left, u8 top) +{ + sub_80A1E9C(gStringVar4, text, id); + MenuPrint(gStringVar4, left, top); +} + +u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level) +{ + u8 buffer[12]; + + dest[0] = 0x34; + dest++; + + if (level == 0) + { + level = 5; + } + + ConvertIntToDecimalString(buffer, level); + dest = sub_80A1E9C(dest, buffer, 14); + dest = StringCopy(dest, gOtherText_Comma); + + return dest; +} + +static void sub_80A2078(int taskId) +{ + gUnknown_03005CF0 = gTasks[taskId].func; + gTasks[taskId].func = sub_80A20A8; + gTasks[taskId].func((u8)taskId); +} + +static void sub_80A20A8(u8 taskId) +{ + if (sub_8055870() != TRUE) + { + gTasks[taskId].func = gUnknown_03005CF0; + } +} diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index f5612f86b..e0b42e1c7 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -817,7 +817,7 @@ static void Task_EvolutionScene(u8 taskID) case 5: if (!gPaletteFade.active) { - sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID, + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID, gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics, gMoveToLearn); gTasks[taskID].tLearnMoveState++; @@ -1137,7 +1137,7 @@ static void Task_TradeEvolutionScene(u8 taskID) case 5: if (!gPaletteFade.active) { - sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID, + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID, gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics, gMoveToLearn); gTasks[taskID].tLearnMoveState++; diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c index 95555d167..aed11bb7e 100644 --- a/src/script_pokemon_util_80F99CC.c +++ b/src/script_pokemon_util_80F99CC.c @@ -272,7 +272,7 @@ void HandleMoveTutorPartyMenu(u8 var) void sub_80F9EEC(void) { - sub_809D9F0(&gPlayerParty[0], gSpecialVar_0x8004, gPlayerPartyCount - 1, c2_exit_to_overworld_2_switch, 0); + ShowSelectMovePokemonSummaryScreen(&gPlayerParty[0], gSpecialVar_0x8004, gPlayerPartyCount - 1, c2_exit_to_overworld_2_switch, 0); UNK_2018000_STRUCT.unk8 = 3; gFieldCallback = sub_8080990; } diff --git a/src/strings.c b/src/strings.c index 6c8dce9d6..06bbadb8f 100644 --- a/src/strings.c +++ b/src/strings.c @@ -409,7 +409,7 @@ const u8 OtherText_Switch[] = _("SWITCH"); const u8 OtherText_PokeInfo[] = _("POKéMON INFO"); const u8 OtherText_PokeSkills[] = _("POKéMON SKILLS"); const u8 OtherText_BattleMoves[] = _("BATTLE MOVES"); -const u8 OtherText_ContestMoves[] = _("C0NTEST MOVES"); // why the l33t 0, that's stupid +const u8 OtherText_ContestMoves[] = _("C0NTEST MOVES"); // The "O" in "CONTEST" is actually a 0. const u8 OtherText_Info[] = _("INFO"); const u8 gOtherText_EggLongTime[] = _("It looks like this EGG will\ntake a long time to hatch."); |