.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_80BA7F8 sub_80BA7F8: @ 80BA7F8 push {r4-r6,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r4, _080BA838 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r4, r1] bl sub_80B9A14 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_8075CB8 orrs r6, r0 adds r0, r5, 0 adds r1, r6, 0 bl sub_80BAA4C pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080BA838: .4byte gBattleAnimArgs thumb_func_end sub_80BA7F8 thumb_func_start sub_80BA83C sub_80BA83C: @ 80BA83C 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_80B9A14 adds r5, r0, 0 ldr r0, _080BA868 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0x7 bhi _080BA8E6 lsls r0, 2 ldr r1, _080BA86C @ =_080BA870 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080BA868: .4byte gBattleAnimArgs _080BA86C: .4byte _080BA870 .align 2, 0 _080BA870: .4byte _080BA892 .4byte _080BA89E .4byte _080BA890 .4byte _080BA89C .4byte _080BA8AC .4byte _080BA8C4 .4byte _080BA8CC .4byte _080BA8D8 _080BA890: movs r5, 0 _080BA892: mov r0, sp ldr r1, _080BA898 @ =gBattleAnimAttacker b _080BA8A2 .align 2, 0 _080BA898: .4byte gBattleAnimAttacker _080BA89C: movs r5, 0 _080BA89E: mov r0, sp ldr r1, _080BA8A8 @ =gBattleAnimTarget _080BA8A2: ldrb r1, [r1] strb r1, [r0] b _080BA8E6 .align 2, 0 _080BA8A8: .4byte gBattleAnimTarget _080BA8AC: mov r1, sp ldr r0, _080BA8BC @ =gBattleAnimAttacker ldrb r0, [r0] strb r0, [r1] ldr r0, _080BA8C0 @ =gBattleAnimTarget ldrb r0, [r0] strb r0, [r1, 0x1] b _080BA8E6 .align 2, 0 _080BA8BC: .4byte gBattleAnimAttacker _080BA8C0: .4byte gBattleAnimTarget _080BA8C4: mov r1, sp movs r0, 0xFF strb r0, [r1] b _080BA8E6 _080BA8CC: movs r5, 0 mov r2, sp ldr r0, _080BA8D4 @ =gBattleAnimAttacker b _080BA8DE .align 2, 0 _080BA8D4: .4byte gBattleAnimAttacker _080BA8D8: movs r5, 0 mov r2, sp ldr r0, _080BA930 @ =gBattleAnimTarget _080BA8DE: ldrb r0, [r0] movs r1, 0x2 eors r0, r1 strb r0, [r2] _080BA8E6: movs r4, 0 mov r6, sp _080BA8EA: ldrb r0, [r6] cmp r4, r0 beq _080BA914 ldrb r0, [r6, 0x1] cmp r4, r0 beq _080BA914 adds r0, r4, 0 bl sub_8072DF0 lsls r0, 24 cmp r0, 0 beq _080BA914 adds r0, r4, 0 bl sub_8075D80 lsls r0, 24 lsrs r0, 24 movs r1, 0x80 lsls r1, 9 lsls r1, r0 orrs r5, r1 _080BA914: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x3 bls _080BA8EA adds r0, r7, 0 adds r1, r5, 0 bl sub_80BAA4C add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080BA930: .4byte gBattleAnimTarget thumb_func_end sub_80BA83C thumb_func_start sub_80BA934 sub_80BA934: @ 80BA934 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080BA958 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] bl sub_80B9A14 adds r2, r0, 0 ldr r0, _080BA95C @ =gUnknown_2022B50 ldrb r0, [r0] cmp r0, 0x9 bhi _080BAA0A lsls r0, 2 ldr r1, _080BA960 @ =_080BA964 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080BA958: .4byte gBattleAnimArgs _080BA95C: .4byte gUnknown_2022B50 _080BA960: .4byte _080BA964 .align 2, 0 _080BA964: .4byte _080BA98C .4byte _080BA99C .4byte _080BA9A8 .4byte _080BA9B8 .4byte _080BA9C4 .4byte _080BA9D4 .4byte _080BA9E4 .4byte _080BA9F4 .4byte _080BAA04 .4byte _080BAA04 _080BA98C: ldr r1, _080BA994 @ =gBattleAnimArgs ldr r0, _080BA998 @ =0x00000b0c b _080BAA08 .align 2, 0 _080BA994: .4byte gBattleAnimArgs _080BA998: .4byte 0x00000b0c _080BA99C: ldr r1, _080BA9A4 @ =gBattleAnimArgs movs r0, 0x9E lsls r0, 4 b _080BAA08 .align 2, 0 _080BA9A4: .4byte gBattleAnimArgs _080BA9A8: ldr r1, _080BA9B0 @ =gBattleAnimArgs ldr r0, _080BA9B4 @ =0x00002f1e b _080BAA08 .align 2, 0 _080BA9B0: .4byte gBattleAnimArgs _080BA9B4: .4byte 0x00002f1e _080BA9B8: ldr r1, _080BA9C0 @ =gBattleAnimArgs movs r0, 0x90 lsls r0, 7 b _080BAA08 .align 2, 0 _080BA9C0: .4byte gBattleAnimArgs _080BA9C4: ldr r1, _080BA9CC @ =gBattleAnimArgs ldr r0, _080BA9D0 @ =0x00007ecb b _080BAA08 .align 2, 0 _080BA9CC: .4byte gBattleAnimArgs _080BA9D0: .4byte 0x00007ecb _080BA9D4: ldr r1, _080BA9DC @ =gBattleAnimArgs ldr r0, _080BA9E0 @ =0x00007ecb b _080BAA08 .align 2, 0 _080BA9DC: .4byte gBattleAnimArgs _080BA9E0: .4byte 0x00007ecb _080BA9E4: ldr r1, _080BA9EC @ =gBattleAnimArgs ldr r0, _080BA9F0 @ =0x00002a16 b _080BAA08 .align 2, 0 _080BA9EC: .4byte gBattleAnimArgs _080BA9F0: .4byte 0x00002a16 _080BA9F4: ldr r1, _080BA9FC @ =gBattleAnimArgs ldr r0, _080BAA00 @ =0x00000d2e b _080BAA08 .align 2, 0 _080BA9FC: .4byte gBattleAnimArgs _080BAA00: .4byte 0x00000d2e _080BAA04: ldr r1, _080BAA18 @ =gBattleAnimArgs ldr r0, _080BAA1C @ =0x00007fff _080BAA08: strh r0, [r1, 0x8] _080BAA0A: adds r0, r4, 0 adds r1, r2, 0 bl sub_80BAA4C pop {r4} pop {r0} bx r0 .align 2, 0 _080BAA18: .4byte gBattleAnimArgs _080BAA1C: .4byte 0x00007fff thumb_func_end sub_80BA934 thumb_func_start sub_80BAA20 sub_80BAA20: @ 80BAA20 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080BAA48 @ =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_80BAA4C pop {r4} pop {r0} bx r0 .align 2, 0 _080BAA48: .4byte gBattleAnimArgs thumb_func_end sub_80BAA20 thumb_func_start sub_80BAA4C sub_80BAA4C: @ 80BAA4C push {lr} lsls r0, 24 lsrs r0, 24 ldr r3, _080BAA84 @ =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, _080BAA88 @ =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, _080BAA8C @ =sub_80BAA90 str r1, [r2] bl _call_via_r1 pop {r0} bx r0 .align 2, 0 _080BAA84: .4byte gTasks _080BAA88: .4byte gBattleAnimArgs _080BAA8C: .4byte sub_80BAA90 thumb_func_end sub_80BAA4C thumb_func_start sub_80BAA90 sub_80BAA90: @ 80BAA90 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, _080BAB10 @ =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 _080BAB26 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 _080BAAF2 adds r5, r3, 0 _080BAAD0: movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _080BAAE4 ldrb r2, [r5, 0x1C] ldrh r3, [r5, 0x12] adds r0, r6, 0 movs r1, 0x10 bl BlendPalette _080BAAE4: adds r0, r6, 0 adds r0, 0x10 lsls r0, 16 lsrs r6, r0, 16 lsrs r4, 1 cmp r4, 0 bne _080BAAD0 _080BAAF2: 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 _080BAB14 adds r0, 0x1 strh r0, [r2, 0x1C] b _080BAB2C .align 2, 0 _080BAB10: .4byte gTasks _080BAB14: cmp r3, r1 ble _080BAB1E subs r0, 0x1 strh r0, [r2, 0x1C] b _080BAB2C _080BAB1E: adds r0, r7, 0 bl DestroyAnimVisualTask b _080BAB2C _080BAB26: mov r0, r8 adds r0, 0x1 strh r0, [r3, 0x1A] _080BAB2C: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80BAA90 thumb_func_start sub_80BAB38 sub_80BAB38: @ 80BAB38 push {r4,r5,lr} sub sp, 0x4 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r4, _080BAB6C @ =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, _080BAB70 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _080BAB74 @ =sub_80BAB78 str r1, [r0] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080BAB6C: .4byte gBattleAnimArgs _080BAB70: .4byte gTasks _080BAB74: .4byte sub_80BAB78 thumb_func_end sub_80BAB38 thumb_func_start sub_80BAB78 sub_80BAB78: @ 80BAB78 push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r0, _080BAB94 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080BAB90 adds r0, r2, 0 bl DestroyAnimVisualTask _080BAB90: pop {r0} bx r0 .align 2, 0 _080BAB94: .4byte gPaletteFade thumb_func_end sub_80BAB78 thumb_func_start sub_80BAB98 sub_80BAB98: @ 80BAB98 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080BABC4 @ =gTasks adds r1, r0 ldr r2, _080BABC8 @ =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, _080BABCC @ =sub_80BABD0 str r0, [r1] bx lr .align 2, 0 _080BABC4: .4byte gTasks _080BABC8: .4byte gBattleAnimArgs _080BABCC: .4byte sub_80BABD0 thumb_func_end sub_80BAB98 thumb_func_start sub_80BABD0 sub_80BABD0: @ 80BABD0 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, _080BABFC @ =gTasks adds r4, r0, r1 movs r1, 0x10 ldrsh r0, [r4, r1] cmp r0, 0 beq _080BAC94 ldrh r1, [r4, 0xA] movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 beq _080BAC00 subs r0, r1, 0x1 strh r0, [r4, 0xA] b _080BACA2 .align 2, 0 _080BABFC: .4byte gTasks _080BAC00: ldrb r0, [r4, 0x8] bl duplicate_obj_of_side_rel2move_in_transparent_mode strh r0, [r4, 0x14] lsls r0, 16 cmp r0, 0 blt _080BAC7E ldr r6, _080BAC8C @ =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 _080BAC28 movs r2, 0x1 _080BAC28: 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, _080BAC90 @ =sub_80BACA8 str r1, [r0] ldrh r0, [r4, 0x12] adds r0, 0x1 strh r0, [r4, 0x12] _080BAC7E: ldrh r0, [r4, 0x10] subs r0, 0x1 strh r0, [r4, 0x10] ldrh r0, [r4, 0xC] strh r0, [r4, 0xA] b _080BACA2 .align 2, 0 _080BAC8C: .4byte gSprites _080BAC90: .4byte sub_80BACA8 _080BAC94: movs r1, 0x12 ldrsh r0, [r4, r1] cmp r0, 0 bne _080BACA2 adds r0, r2, 0 bl DestroyAnimVisualTask _080BACA2: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80BABD0 thumb_func_start sub_80BACA8 sub_80BACA8: @ 80BACA8 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x2E] movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0 beq _080BACBC subs r0, r1, 0x1 strh r0, [r4, 0x2E] b _080BACE0 _080BACBC: ldr r3, _080BACE8 @ =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 _080BACE0: pop {r4} pop {r0} bx r0 .align 2, 0 _080BACE8: .4byte gTasks thumb_func_end sub_80BACA8 thumb_func_start sub_80BACEC sub_80BACEC: @ 80BACEC push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x14 lsls r0, 24 lsrs r0, 24 mov r9, r0 movs r7, 0 ldr r0, _080BAE20 @ =gUnknown_2022984 strh r7, [r0] ldr r0, _080BAE24 @ =gUnknown_2022986 strh r7, [r0] ldr r1, _080BAE28 @ =0x00003f3f movs r0, 0x48 bl SetGpuReg ldr r1, _080BAE2C @ =0x00003f3d movs r0, 0x4A bl SetGpuReg movs r1, 0x80 lsls r1, 8 movs r0, 0 bl SetGpuRegBits ldr r1, _080BAE30 @ =0x00003f42 movs r0, 0x50 bl SetGpuReg ldr r1, _080BAE34 @ =0x00000c08 movs r0, 0x52 bl SetGpuReg movs r0, 0xA bl GetGpuReg add r4, sp, 0x10 strh r0, [r4] ldrb r1, [r4] movs r0, 0x4 negs r0, r0 mov r8, r0 ands r0, r1 strb r0, [r4] mov r2, sp adds r2, 0x11 ldrb r1, [r2] movs r0, 0x3F ands r0, r1 strb r0, [r2] ldrh r1, [r4] movs r0, 0xA bl SetGpuReg bl sub_8073788 lsls r0, 24 cmp r0, 0 bne _080BAD7A ldrb r1, [r4] movs r0, 0xD negs r0, r0 ands r0, r1 movs r1, 0x4 orrs r0, r1 strb r0, [r4] ldrh r1, [r4] movs r0, 0xA bl SetGpuReg _080BAD7A: bl sub_8075290 lsls r0, 24 cmp r0, 0 beq _080BADFE bl sub_8073788 lsls r0, 24 cmp r0, 0 bne _080BADFE ldr r5, _080BAE38 @ =gBattleAnimAttacker ldrb r0, [r5] bl GetBattlerPosition lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 beq _080BADAA ldrb r0, [r5] bl GetBattlerPosition lsls r0, 24 cmp r0, 0 bne _080BADFE _080BADAA: ldrb r0, [r5] movs r6, 0x2 eors r0, r6 bl sub_8072DF0 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080BADFE ldr r3, _080BAE3C @ =gSprites ldr r1, _080BAE40 @ =gBattlerSpriteIds 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] ldrh r1, [r4] movs r0, 0xA bl SetGpuReg movs r7, 0x1 _080BADFE: ldr r4, _080BAE38 @ =gBattleAnimAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080BAE4C ldr r1, _080BAE44 @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080BAE48 @ =gEnemyParty b _080BAE5C .align 2, 0 _080BAE20: .4byte gUnknown_2022984 _080BAE24: .4byte gUnknown_2022986 _080BAE28: .4byte 0x00003f3f _080BAE2C: .4byte 0x00003f3d _080BAE30: .4byte 0x00003f42 _080BAE34: .4byte 0x00000c08 _080BAE38: .4byte gBattleAnimAttacker _080BAE3C: .4byte gSprites _080BAE40: .4byte gBattlerSpriteIds _080BAE44: .4byte gBattlerPartyIndexes _080BAE48: .4byte gEnemyParty _080BAE4C: ldr r1, _080BAF0C @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080BAF10 @ =gPlayerParty _080BAE5C: adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r4, r0, 16 movs r0, 0 bl GetAnimBankSpriteId lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r0, _080BAF14 @ =gBattleAnimAttacker ldrb r0, [r0] adds r1, r5, 0 adds r2, r4, 0 bl sub_8076E34 lsls r0, 24 lsrs r4, r0, 24 mov r0, sp bl sub_80752A0 mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080BAF18 @ =gFile_graphics_battle_anims_masks_curse_tilemap bl sub_807543C bl sub_8073788 lsls r0, 24 cmp r0, 0 beq _080BAEAC mov r0, sp ldrb r0, [r0, 0x8] ldr r1, [sp, 0x4] movs r2, 0 movs r3, 0 bl sub_80730C0 _080BAEAC: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080BAF1C @ =gFile_graphics_battle_anims_masks_curse_sheet mov r2, sp ldrh r2, [r2, 0xA] bl sub_80753B4 ldr r0, _080BAF20 @ =gUnknown_83E7CC8 mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 adds r1, 0x1 movs r2, 0x2 bl LoadPalette ldr r2, _080BAF24 @ =gBattle_BG1_X ldr r0, _080BAF28 @ =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, _080BAF2C @ =gBattle_BG1_Y ldrh r0, [r1, 0x22] negs r0, r0 adds r0, 0x20 strh r0, [r2] ldr r1, _080BAF30 @ =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, _080BAF34 @ =sub_80BAF38 str r1, [r0] add sp, 0x14 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080BAF0C: .4byte gBattlerPartyIndexes _080BAF10: .4byte gPlayerParty _080BAF14: .4byte gBattleAnimAttacker _080BAF18: .4byte gFile_graphics_battle_anims_masks_curse_tilemap _080BAF1C: .4byte gFile_graphics_battle_anims_masks_curse_sheet _080BAF20: .4byte gUnknown_83E7CC8 _080BAF24: .4byte gBattle_BG1_X _080BAF28: .4byte gSprites _080BAF2C: .4byte gBattle_BG1_Y _080BAF30: .4byte gTasks _080BAF34: .4byte sub_80BAF38 thumb_func_end sub_80BACEC thumb_func_start sub_80BAF38 sub_80BAF38: @ 80BAF38 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x14 lsls r0, 24 lsrs r0, 24 adds r6, r0, 0 ldr r1, _080BB068 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r5, r0, r1 ldrh r0, [r5, 0x1C] adds r0, 0x4 movs r1, 0 mov r8, r1 strh r0, [r5, 0x1C] ldr r7, _080BB06C @ =gBattle_BG1_Y ldrh r2, [r7] subs r1, r2, 0x4 strh r1, [r7] lsls r0, 16 asrs r0, 16 cmp r0, 0x40 bne _080BB05A mov r0, r8 strh r0, [r5, 0x1C] adds r0, r2, 0 adds r0, 0x3C strh r0, [r7] ldrh r0, [r5, 0x1E] adds r0, 0x1 strh r0, [r5, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bne _080BB05A movs r0, 0 bl sub_8073128 ldr r0, _080BB070 @ =gUnknown_2022984 mov r1, r8 strh r1, [r0] ldr r0, _080BB074 @ =gUnknown_2022986 strh r1, [r0] ldr r4, _080BB078 @ =0x00003f3f movs r0, 0x48 adds r1, r4, 0 bl SetGpuReg movs r0, 0x4A adds r1, r4, 0 bl SetGpuReg bl sub_8073788 lsls r0, 24 cmp r0, 0 bne _080BAFCA movs r0, 0xA bl GetGpuReg add r1, sp, 0x10 strh r0, [r1] ldrb r2, [r1] movs r0, 0xD negs r0, r0 ands r0, r2 strb r0, [r1] ldrh r1, [r1] movs r0, 0xA bl SetGpuReg _080BAFCA: movs r0, 0 bl GetGpuReg adds r1, r0, 0 movs r2, 0x80 lsls r2, 8 adds r0, r2, 0 eors r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0 bl SetGpuReg movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r0, 0 bl GetAnimBankSpriteId ldr r4, _080BB07C @ =gSprites movs r0, 0x8 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl DestroySprite mov r0, sp bl sub_80752A0 mov r0, sp ldrb r0, [r0, 0x9] bl sub_8075358 movs r1, 0x14 ldrsh r0, [r5, r1] cmp r0, 0x1 bne _080BB050 ldr r2, _080BB080 @ =gBattlerSpriteIds ldr r0, _080BB084 @ =gBattleAnimAttacker 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, r4 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] _080BB050: mov r2, r8 strh r2, [r7] adds r0, r6, 0 bl DestroyAnimVisualTask _080BB05A: add sp, 0x14 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080BB068: .4byte gTasks _080BB06C: .4byte gBattle_BG1_Y _080BB070: .4byte gUnknown_2022984 _080BB074: .4byte gUnknown_2022986 _080BB078: .4byte 0x00003f3f _080BB07C: .4byte gSprites _080BB080: .4byte gBattlerSpriteIds _080BB084: .4byte gBattleAnimAttacker thumb_func_end sub_80BAF38 thumb_func_start sub_80BB088 sub_80BB088: @ 80BB088 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r4, _080BB0C8 @ =gUnknown_20399B4 movs r0, 0x18 bl AllocZeroed str r0, [r4] movs r2, 0 ldr r3, _080BB0CC @ =gBattleAnimArgs _080BB09C: ldr r1, [r4] lsls r0, r2, 1 adds r1, 0x4 adds r1, r0 adds r0, r3 ldrh r0, [r0] strh r0, [r1] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x7 bls _080BB09C ldr r0, _080BB0D0 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _080BB0D4 @ =sub_80BB0D8 str r0, [r1] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080BB0C8: .4byte gUnknown_20399B4 _080BB0CC: .4byte gBattleAnimArgs _080BB0D0: .4byte gTasks _080BB0D4: .4byte sub_80BB0D8 thumb_func_end sub_80BB088 thumb_func_start sub_80BB0D8 sub_80BB0D8: @ 80BB0D8 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r0, _080BB0F0 @ =gUnknown_20399B4 ldr r1, [r0] movs r2, 0x8 ldrsh r0, [r1, r2] cmp r0, 0 bne _080BB0F8 ldr r0, _080BB0F4 @ =gBattleAnimAttacker b _080BB0FA .align 2, 0 _080BB0F0: .4byte gUnknown_20399B4 _080BB0F4: .4byte gBattleAnimAttacker _080BB0F8: ldr r0, _080BB230 @ =gBattleAnimTarget _080BB0FA: ldrb r0, [r0] strb r0, [r1] ldr r4, _080BB234 @ =gUnknown_20399B4 ldr r2, [r4] ldrb r0, [r2] movs r1, 0x2 eors r0, r1 strb r0, [r2, 0x1] bl sub_8073788 lsls r0, 24 cmp r0, 0 bne _080BB12A ldr r1, [r4] movs r2, 0xA ldrsh r0, [r1, r2] cmp r0, 0 beq _080BB130 ldrb r0, [r1, 0x1] bl sub_8072DF0 lsls r0, 24 cmp r0, 0 bne _080BB130 _080BB12A: ldr r1, [r4] movs r0, 0 strh r0, [r1, 0xA] _080BB130: ldr r0, _080BB238 @ =gUnknown_2022984 movs r1, 0 strh r1, [r0] ldr r0, _080BB23C @ =gUnknown_2022986 strh r1, [r0] ldr r1, _080BB240 @ =0x00003f3f movs r0, 0x48 bl SetGpuReg ldr r1, _080BB244 @ =0x00003f3d movs r0, 0x4A bl SetGpuReg movs r1, 0x80 lsls r1, 8 movs r0, 0 bl SetGpuRegBits ldr r1, _080BB248 @ =0x00003f42 movs r0, 0x50 bl SetGpuReg movs r1, 0x80 lsls r1, 5 movs r0, 0x52 bl SetGpuReg movs r0, 0x1 movs r1, 0x4 movs r2, 0 bl SetAnimBgAttribute movs r0, 0x1 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute bl sub_8073788 lsls r0, 24 cmp r0, 0 bne _080BB18E movs r0, 0x1 movs r1, 0x3 movs r2, 0x1 bl SetAnimBgAttribute _080BB18E: bl sub_8075290 lsls r0, 24 cmp r0, 0 beq _080BB20A ldr r4, _080BB234 @ =gUnknown_20399B4 ldr r1, [r4] movs r2, 0xA ldrsh r0, [r1, r2] cmp r0, 0 bne _080BB20A ldrb r0, [r1] bl GetBattlerPosition lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 beq _080BB1C0 ldr r0, [r4] ldrb r0, [r0] bl GetBattlerPosition lsls r0, 24 cmp r0, 0 bne _080BB20A _080BB1C0: ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8072DF0 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x1 bne _080BB20A ldr r3, _080BB24C @ =gSprites ldr r1, _080BB250 @ =gBattlerSpriteIds ldr r0, [r4] ldrb r0, [r0, 0x1] 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] movs r0, 0x1 movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute ldr r0, [r4] strb r5, [r0, 0x2] _080BB20A: ldr r4, _080BB234 @ =gUnknown_20399B4 ldr r0, [r4] ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080BB25C ldr r1, _080BB254 @ =gBattlerPartyIndexes ldr r0, [r4] ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080BB258 @ =gEnemyParty b _080BB26E .align 2, 0 _080BB230: .4byte gBattleAnimTarget _080BB234: .4byte gUnknown_20399B4 _080BB238: .4byte gUnknown_2022984 _080BB23C: .4byte gUnknown_2022986 _080BB240: .4byte 0x00003f3f _080BB244: .4byte 0x00003f3d _080BB248: .4byte 0x00003f42 _080BB24C: .4byte gSprites _080BB250: .4byte gBattlerSpriteIds _080BB254: .4byte gBattlerPartyIndexes _080BB258: .4byte gEnemyParty _080BB25C: ldr r1, _080BB290 @ =gBattlerPartyIndexes ldr r0, [r4] ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080BB294 @ =gPlayerParty _080BB26E: adds r0, r1 movs r1, 0xB bl GetMonData ldr r1, [r4] strh r0, [r1, 0x14] ldr r0, _080BB298 @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r0, _080BB29C @ =sub_80BB2A0 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080BB290: .4byte gBattlerPartyIndexes _080BB294: .4byte gPlayerParty _080BB298: .4byte gTasks _080BB29C: .4byte sub_80BB2A0 thumb_func_end sub_80BB0D8 thumb_func_start sub_80BB2A0 sub_80BB2A0: @ 80BB2A0 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 lsls r0, 24 lsrs r5, r0, 24 movs r0, 0 mov r8, r0 ldr r6, _080BB300 @ =gBattlerSpriteIds ldr r4, _080BB304 @ =gUnknown_20399B4 ldr r2, [r4] ldrb r0, [r2] adds r1, r0, r6 ldrb r1, [r1] ldrh r2, [r2, 0x14] bl sub_8076E34 lsls r0, 24 lsrs r7, r0, 24 ldr r2, [r4] movs r1, 0xA ldrsh r0, [r2, r1] cmp r0, 0 beq _080BB2E2 ldrb r0, [r2, 0x1] adds r1, r0, r6 ldrb r1, [r1] ldrh r2, [r2, 0x14] bl sub_8076E34 lsls r0, 24 lsrs r0, 24 mov r8, r0 _080BB2E2: mov r0, sp bl sub_80752A0 ldr r0, [r4] movs r4, 0x4 ldrsh r0, [r0, r4] cmp r0, 0 bne _080BB30C mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080BB308 @ =gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap bl sub_807543C b _080BB316 .align 2, 0 _080BB300: .4byte gBattlerSpriteIds _080BB304: .4byte gUnknown_20399B4 _080BB308: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap _080BB30C: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080BB354 @ =gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap bl sub_807543C _080BB316: bl sub_8073788 lsls r0, 24 cmp r0, 0 beq _080BB32E mov r0, sp ldrb r0, [r0, 0x8] ldr r1, [sp, 0x4] movs r2, 0 movs r3, 0 bl sub_80730C0 _080BB32E: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080BB358 @ =gFile_graphics_battle_anims_masks_stat_sheet mov r2, sp ldrh r2, [r2, 0xA] bl sub_80753B4 ldr r0, _080BB35C @ =gUnknown_20399B4 ldr r0, [r0] movs r1, 0x6 ldrsh r0, [r0, r1] cmp r0, 0x6 bhi _080BB3C4 lsls r0, 2 ldr r1, _080BB360 @ =_080BB364 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080BB354: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap _080BB358: .4byte gFile_graphics_battle_anims_masks_stat_sheet _080BB35C: .4byte gUnknown_20399B4 _080BB360: .4byte _080BB364 .align 2, 0 _080BB364: .4byte _080BB380 .4byte _080BB388 .4byte _080BB390 .4byte _080BB398 .4byte _080BB3A0 .4byte _080BB3A8 .4byte _080BB3B0 _080BB380: ldr r0, _080BB384 @ =gFile_graphics_battle_anims_masks_stat2_palette b _080BB3B2 .align 2, 0 _080BB384: .4byte gFile_graphics_battle_anims_masks_stat2_palette _080BB388: ldr r0, _080BB38C @ =gFile_graphics_battle_anims_masks_stat1_palette b _080BB3B2 .align 2, 0 _080BB38C: .4byte gFile_graphics_battle_anims_masks_stat1_palette _080BB390: ldr r0, _080BB394 @ =gFile_graphics_battle_anims_masks_stat3_palette b _080BB3B2 .align 2, 0 _080BB394: .4byte gFile_graphics_battle_anims_masks_stat3_palette _080BB398: ldr r0, _080BB39C @ =gFile_graphics_battle_anims_masks_stat4_palette b _080BB3B2 .align 2, 0 _080BB39C: .4byte gFile_graphics_battle_anims_masks_stat4_palette _080BB3A0: ldr r0, _080BB3A4 @ =gFile_graphics_battle_anims_masks_stat6_palette b _080BB3B2 .align 2, 0 _080BB3A4: .4byte gFile_graphics_battle_anims_masks_stat6_palette _080BB3A8: ldr r0, _080BB3AC @ =gFile_graphics_battle_anims_masks_stat7_palette b _080BB3B2 .align 2, 0 _080BB3AC: .4byte gFile_graphics_battle_anims_masks_stat7_palette _080BB3B0: ldr r0, _080BB3C0 @ =gFile_graphics_battle_anims_masks_stat8_palette _080BB3B2: mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette b _080BB3D2 .align 2, 0 _080BB3C0: .4byte gFile_graphics_battle_anims_masks_stat8_palette _080BB3C4: ldr r0, _080BB3FC @ =gFile_graphics_battle_anims_masks_stat5_palette mov r1, sp ldrb r1, [r1, 0x8] lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette _080BB3D2: ldr r3, _080BB400 @ =gBattle_BG1_X movs r2, 0 strh r2, [r3] ldr r0, _080BB404 @ =gBattle_BG1_Y strh r2, [r0] ldr r1, _080BB408 @ =gUnknown_20399B4 ldr r0, [r1] movs r4, 0x4 ldrsh r0, [r0, r4] adds r4, r1, 0 cmp r0, 0x1 bne _080BB414 movs r0, 0x40 strh r0, [r3] ldr r2, _080BB40C @ =gTasks lsls r3, r5, 2 adds r0, r3, r5 lsls r0, 3 adds r0, r2 ldr r1, _080BB410 @ =0x0000fffd b _080BB420 .align 2, 0 _080BB3FC: .4byte gFile_graphics_battle_anims_masks_stat5_palette _080BB400: .4byte gBattle_BG1_X _080BB404: .4byte gBattle_BG1_Y _080BB408: .4byte gUnknown_20399B4 _080BB40C: .4byte gTasks _080BB410: .4byte 0x0000fffd _080BB414: ldr r2, _080BB43C @ =gTasks lsls r3, r5, 2 adds r0, r3, r5 lsls r0, 3 adds r0, r2 movs r1, 0x3 _080BB420: strh r1, [r0, 0xA] ldr r0, [r4] movs r1, 0xC ldrsh r0, [r0, r1] cmp r0, 0 bne _080BB440 adds r0, r3, r5 lsls r0, 3 adds r0, r2 movs r1, 0xA strh r1, [r0, 0x10] movs r1, 0x14 b _080BB44C .align 2, 0 _080BB43C: .4byte gTasks _080BB440: adds r0, r3, r5 lsls r0, 3 adds r0, r2 movs r1, 0xD strh r1, [r0, 0x10] movs r1, 0x1E _080BB44C: strh r1, [r0, 0x12] adds r1, r3, r5 lsls r1, 3 adds r1, r2 strh r7, [r1, 0x8] ldr r3, [r4] ldrh r0, [r3, 0xA] strh r0, [r1, 0xC] mov r4, r8 strh r4, [r1, 0xE] ldrb r0, [r3, 0x2] strh r0, [r1, 0x14] ldr r2, _080BB490 @ =gBattlerSpriteIds ldrb r0, [r3, 0x1] adds r0, r2 ldrb r0, [r0] strh r0, [r1, 0x16] ldr r0, _080BB494 @ =sub_80BB4B8 str r0, [r1] movs r1, 0x4 ldrsh r0, [r3, r1] cmp r0, 0 bne _080BB498 movs r0, 0x40 negs r0, r0 bl sub_8073B08 adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0xE8 bl PlaySE12WithPanning b _080BB4AC .align 2, 0 _080BB490: .4byte gBattlerSpriteIds _080BB494: .4byte sub_80BB4B8 _080BB498: movs r0, 0x40 negs r0, r0 bl sub_8073B08 adds r1, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0xEE bl PlaySE12WithPanning _080BB4AC: add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80BB2A0 thumb_func_start sub_80BB4B8 sub_80BB4B8: @ 80BB4B8 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r2, _080BB4E4 @ =gBattle_BG1_Y ldr r1, _080BB4E8 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r5, r0, r1 ldrh r0, [r5, 0xA] ldrh r1, [r2] adds r0, r1 strh r0, [r2] movs r0, 0x26 ldrsh r2, [r5, r0] cmp r2, 0x1 beq _080BB52E cmp r2, 0x1 bgt _080BB4EC cmp r2, 0 beq _080BB4F6 b _080BB644 .align 2, 0 _080BB4E4: .4byte gBattle_BG1_Y _080BB4E8: .4byte gTasks _080BB4EC: cmp r2, 0x2 beq _080BB544 cmp r2, 0x3 beq _080BB582 b _080BB644 _080BB4F6: ldrh r0, [r5, 0x1E] adds r1, r0, 0x1 strh r1, [r5, 0x1E] lsls r0, 16 cmp r0, 0 bgt _080BB504 b _080BB644 _080BB504: strh r2, [r5, 0x1E] ldrh r1, [r5, 0x20] adds r1, 0x1 strh r1, [r5, 0x20] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r2, 0x20 ldrsh r1, [r5, r2] movs r2, 0x10 ldrsh r0, [r5, r2] cmp r1, r0 beq _080BB52C b _080BB644 _080BB52C: b _080BB57A _080BB52E: ldrh r0, [r5, 0x1C] adds r0, 0x1 strh r0, [r5, 0x1C] lsls r0, 16 asrs r0, 16 movs r2, 0x12 ldrsh r1, [r5, r2] cmp r0, r1 beq _080BB542 b _080BB644 _080BB542: b _080BB57A _080BB544: ldrh r0, [r5, 0x1E] adds r1, r0, 0x1 strh r1, [r5, 0x1E] lsls r0, 16 cmp r0, 0 ble _080BB644 movs r0, 0 strh r0, [r5, 0x1E] ldrh r1, [r5, 0x20] subs r1, 0x1 strh r1, [r5, 0x20] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r1, 0x20 ldrsh r0, [r5, r1] cmp r0, 0 bne _080BB644 movs r0, 0 bl sub_8073128 _080BB57A: ldrh r0, [r5, 0x26] adds r0, 0x1 strh r0, [r5, 0x26] b _080BB644 _080BB582: ldr r0, _080BB64C @ =gUnknown_2022984 movs r1, 0 strh r1, [r0] ldr r0, _080BB650 @ =gUnknown_2022986 strh r1, [r0] ldr r4, _080BB654 @ =0x00003f3f movs r0, 0x48 adds r1, r4, 0 bl SetGpuReg movs r0, 0x4A adds r1, r4, 0 bl SetGpuReg bl sub_8073788 lsls r0, 24 cmp r0, 0 bne _080BB5B2 movs r0, 0x1 movs r1, 0x3 movs r2, 0 bl SetAnimBgAttribute _080BB5B2: movs r0, 0 bl GetGpuReg adds r1, r0, 0 movs r2, 0x80 lsls r2, 8 adds r0, r2, 0 eors r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0 bl SetGpuReg movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r0, 0x8 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _080BB658 @ =gSprites adds r0, r4 bl DestroySprite movs r1, 0xC ldrsh r0, [r5, r1] cmp r0, 0 beq _080BB606 movs r2, 0xE ldrsh r1, [r5, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl DestroySprite _080BB606: movs r1, 0x14 ldrsh r0, [r5, r1] cmp r0, 0x1 bne _080BB632 movs r2, 0x16 ldrsh r0, [r5, r2] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r4 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] _080BB632: ldr r4, _080BB65C @ =gUnknown_20399B4 ldr r0, [r4] bl Free movs r0, 0 str r0, [r4] adds r0, r6, 0 bl DestroyAnimVisualTask _080BB644: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080BB64C: .4byte gUnknown_2022984 _080BB650: .4byte gUnknown_2022986 _080BB654: .4byte 0x00003f3f _080BB658: .4byte gSprites _080BB65C: .4byte gUnknown_20399B4 thumb_func_end sub_80BB4B8 thumb_func_start sub_80BB660 sub_80BB660: @ 80BB660 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_8075CB8 adds r6, r0, 0 movs r1, 0 bl sub_80BB790 ldr r0, _080BB6C0 @ =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_8075BE8 adds r6, r0, 0 ldr r1, _080BB6C4 @ =0x0000ffff ands r6, r1 adds r0, r6, 0 bl sub_80BB790 strh r6, [r4, 0x26] strh r5, [r4, 0x8] strh r5, [r4, 0xA] ldr r0, _080BB6C8 @ =sub_80BB6CC str r0, [r4] add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080BB6C0: .4byte gTasks _080BB6C4: .4byte 0x0000ffff _080BB6C8: .4byte sub_80BB6CC thumb_func_end sub_80BB660 thumb_func_start sub_80BB6CC sub_80BB6CC: @ 80BB6CC push {r4-r6,lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _080BB6F0 @ =gTasks adds r4, r0, r1 movs r0, 0x8 ldrsh r1, [r4, r0] cmp r1, 0x1 beq _080BB710 cmp r1, 0x1 bgt _080BB6F4 cmp r1, 0 beq _080BB6FA b _080BB78A .align 2, 0 _080BB6F0: .4byte gTasks _080BB6F4: cmp r1, 0x2 beq _080BB784 b _080BB78A _080BB6FA: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 ble _080BB78A strh r1, [r4, 0xA] movs r0, 0x10 strh r0, [r4, 0xC] b _080BB778 _080BB710: ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _080BB78A movs r0, 0 strh r0, [r4, 0xA] ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] movs r5, 0 movs r6, 0x1 _080BB72C: movs r1, 0x26 ldrsh r0, [r4, r1] asrs r0, r5 ands r0, r6 cmp r0, 0 beq _080BB746 lsls r0, r5, 20 lsrs r0, 16 ldrb r2, [r4, 0xC] movs r1, 0x10 ldr r3, _080BB780 @ =0x0000ffff bl BlendPalette _080BB746: movs r1, 0x24 ldrsh r0, [r4, r1] asrs r0, r5 ands r0, r6 cmp r0, 0 beq _080BB766 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 _080BB766: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0xF bls _080BB72C movs r1, 0xC ldrsh r0, [r4, r1] cmp r0, 0 bne _080BB78A _080BB778: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080BB78A .align 2, 0 _080BB780: .4byte 0x0000ffff _080BB784: adds r0, r2, 0 bl DestroyAnimVisualTask _080BB78A: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80BB6CC thumb_func_start sub_80BB790 sub_80BB790: @ 80BB790 push {r4-r6,lr} adds r3, r0, 0 lsls r1, 16 lsrs r6, r1, 16 movs r2, 0 _080BB79A: movs r0, 0x1 ands r0, r3 lsrs r4, r3, 1 adds r5, r2, 0x1 cmp r0, 0 beq _080BB7C6 lsls r0, r2, 20 lsrs r2, r0, 16 adds r0, r2, 0 adds r0, 0x10 cmp r2, r0 bge _080BB7C6 ldr r1, _080BB7D8 @ =gPlttBufferFaded adds r3, r0, 0 _080BB7B6: 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 _080BB7B6 _080BB7C6: adds r3, r4, 0 lsls r0, r5, 16 lsrs r2, r0, 16 cmp r2, 0x1F bls _080BB79A pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080BB7D8: .4byte gPlttBufferFaded thumb_func_end sub_80BB790 thumb_func_start sub_80BB7DC sub_80BB7DC: @ 80BB7DC push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 movs r4, 0 movs r2, 0 ldr r0, _080BB824 @ =gBattleAnimAttacker ldrb r3, [r0] movs r5, 0x1 _080BB7EC: cmp r3, r2 beq _080BB7FA adds r1, r2, 0 adds r1, 0x10 adds r0, r5, 0 lsls r0, r1 orrs r4, r0 _080BB7FA: adds r2, 0x1 cmp r2, 0x3 bls _080BB7EC movs r2, 0x5 ldr r0, _080BB828 @ =gBattleAnimArgs adds r1, r0, 0 adds r1, 0x8 _080BB808: ldrh r0, [r1] strh r0, [r1, 0x2] subs r1, 0x2 subs r2, 0x1 cmp r2, 0 bne _080BB808 adds r0, r6, 0 adds r1, r4, 0 bl sub_80BAA4C pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080BB824: .4byte gBattleAnimAttacker _080BB828: .4byte gBattleAnimArgs thumb_func_end sub_80BB7DC thumb_func_start sub_80BB82C sub_80BB82C: @ 80BB82C push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 movs r0, 0 bl sub_8075458 ldr r0, _080BB894 @ =sub_80BB8A4 movs r1, 0x5 bl CreateTask lsls r0, 24 lsrs r5, r0, 24 ldr r4, _080BB898 @ =gBattleAnimArgs movs r1, 0x4 ldrsh r0, [r4, r1] cmp r0, 0 beq _080BB868 ldr r0, _080BB89C @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080BB868 ldrh r0, [r4] negs r0, r0 strh r0, [r4] ldrh r0, [r4, 0x2] negs r0, r0 strh r0, [r4, 0x2] _080BB868: ldr r0, _080BB8A0 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r2, _080BB898 @ =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 _080BB894: .4byte sub_80BB8A4 _080BB898: .4byte gBattleAnimArgs _080BB89C: .4byte gBattleAnimAttacker _080BB8A0: .4byte gTasks thumb_func_end sub_80BB82C thumb_func_start sub_80BB8A4 sub_80BB8A4: @ 80BB8A4 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _080BB910 @ =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, _080BB914 @ =gBattle_BG3_X lsls r0, r3, 16 asrs r0, 24 ldrh r4, [r6] adds r0, r4 strh r0, [r6] ldr r4, _080BB918 @ =gBattle_BG3_Y 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, _080BB91C @ =gBattleAnimArgs movs r3, 0xE ldrsh r2, [r0, r3] movs r7, 0xE ldrsh r0, [r1, r7] cmp r2, r0 bne _080BB90A mov r0, r12 strh r0, [r6] strh r0, [r4] movs r0, 0x1 bl sub_8075458 adds r0, r5, 0 bl DestroyTask _080BB90A: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080BB910: .4byte gTasks _080BB914: .4byte gBattle_BG3_X _080BB918: .4byte gBattle_BG3_Y _080BB91C: .4byte gBattleAnimArgs thumb_func_end sub_80BB8A4 thumb_func_start sub_80BB920 sub_80BB920: @ 80BB920 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080BB944 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide ldr r1, _080BB948 @ =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 _080BB944: .4byte gBattleAnimAttacker _080BB948: .4byte gBattleAnimArgs thumb_func_end sub_80BB920 thumb_func_start sub_80BB94C sub_80BB94C: @ 80BB94C push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080BB970 @ =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide ldr r1, _080BB974 @ =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 _080BB970: .4byte gBattleAnimTarget _080BB974: .4byte gBattleAnimArgs thumb_func_end sub_80BB94C thumb_func_start sub_80BB978 sub_80BB978: @ 80BB978 push {r4,r5,lr} lsls r0, 24 lsrs r3, r0, 24 ldr r5, _080BB9A4 @ =gBattleAnimArgs movs r4, 0 ldr r0, _080BB9A8 @ =gBattleAnimAttacker ldrb r2, [r0] movs r0, 0x2 ldr r1, _080BB9AC @ =gBattleAnimTarget eors r0, r2 ldrb r1, [r1] cmp r0, r1 bne _080BB994 movs r4, 0x1 _080BB994: strh r4, [r5, 0xE] adds r0, r3, 0 bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080BB9A4: .4byte gBattleAnimArgs _080BB9A8: .4byte gBattleAnimAttacker _080BB9AC: .4byte gBattleAnimTarget thumb_func_end sub_80BB978 thumb_func_start sub_80BB9B0 sub_80BB9B0: @ 80BB9B0 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 ldr r6, _080BBA10 @ =gSprites _080BB9BA: ldr r0, _080BBA14 @ =gBattleAnimAttacker ldrb r0, [r0] cmp r4, r0 beq _080BB9F8 lsls r0, r4, 24 lsrs r0, 24 bl sub_8072DF0 lsls r0, 24 cmp r0, 0 beq _080BB9F8 ldr r0, _080BBA18 @ =gBattlerSpriteIds adds r0, r4, r0 ldrb r0, [r0] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r6 ldr r1, _080BBA1C @ =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] _080BB9F8: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x3 bls _080BB9BA adds r0, r5, 0 bl DestroyAnimVisualTask pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080BBA10: .4byte gSprites _080BBA14: .4byte gBattleAnimAttacker _080BBA18: .4byte gBattlerSpriteIds _080BBA1C: .4byte gBattleAnimArgs thumb_func_end sub_80BB9B0 thumb_func_start sub_80BBA20 sub_80BBA20: @ 80BBA20 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x24 ldr r1, [sp, 0x44] ldr r4, [sp, 0x48] ldr r5, [sp, 0x4C] ldr r6, [sp, 0x50] lsls r0, 24 lsrs r0, 24 mov r9, r0 lsls r2, 16 lsrs r2, 16 str r2, [sp, 0x14] 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, 0x18] lsls r5, 24 lsrs r5, 24 str r5, [sp, 0x1C] lsls r6, 24 lsrs r6, 24 mov r10, r6 movs r0, 0 str r0, [sp, 0x20] movs r0, 0x2 adds r6, r7, 0 eors r6, r0 bl sub_8073788 lsls r0, 24 cmp r0, 0 bne _080BBA82 mov r1, r8 cmp r1, 0 beq _080BBA86 adds r0, r6, 0 bl sub_8072DF0 lsls r0, 24 cmp r0, 0 bne _080BBA86 _080BBA82: movs r2, 0 mov r8, r2 _080BBA86: ldr r0, _080BBB20 @ =gUnknown_2022984 movs r1, 0 strh r1, [r0] ldr r0, _080BBB24 @ =gUnknown_2022986 strh r1, [r0] ldr r1, _080BBB28 @ =0x00003f3f movs r0, 0x48 bl SetGpuReg ldr r1, _080BBB2C @ =0x00003f3d movs r0, 0x4A bl SetGpuReg movs r1, 0x80 lsls r1, 8 movs r0, 0 bl SetGpuRegBits ldr r1, _080BBB30 @ =0x00003f42 movs r0, 0x50 bl SetGpuReg movs r1, 0x80 lsls r1, 5 movs r0, 0x52 bl SetGpuReg movs r0, 0xA bl GetGpuReg add r4, sp, 0x10 strh r0, [r4] ldrb r1, [r4] movs r0, 0x4 negs r0, r0 ands r0, r1 strb r0, [r4] mov r2, sp adds r2, 0x11 ldrb r1, [r2] movs r0, 0x3F ands r0, r1 strb r0, [r2] ldrb r0, [r2] movs r1, 0x20 orrs r0, r1 strb r0, [r2] bl sub_8073788 lsls r0, 24 cmp r0, 0 bne _080BBAFC ldrb r0, [r4] movs r1, 0xD negs r1, r1 ands r1, r0 movs r0, 0x4 orrs r1, r0 strb r1, [r4] _080BBAFC: ldrh r1, [r4] movs r0, 0xA bl SetGpuReg adds r0, r7, 0 bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _080BBB3C ldr r1, _080BBB34 @ =gBattlerPartyIndexes lsls r0, r7, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080BBB38 @ =gEnemyParty b _080BBB4A .align 2, 0 _080BBB20: .4byte gUnknown_2022984 _080BBB24: .4byte gUnknown_2022986 _080BBB28: .4byte 0x00003f3f _080BBB2C: .4byte 0x00003f3d _080BBB30: .4byte 0x00003f42 _080BBB34: .4byte gBattlerPartyIndexes _080BBB38: .4byte gEnemyParty _080BBB3C: ldr r1, _080BBC10 @ =gBattlerPartyIndexes lsls r0, r7, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _080BBC14 @ =gPlayerParty _080BBB4A: adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r4, r0, 16 ldr r5, _080BBC18 @ =gBattlerSpriteIds adds r0, r7, r5 ldrb r1, [r0] adds r0, r7, 0 adds r2, r4, 0 bl sub_8076E34 lsls r0, 24 lsrs r7, r0, 24 mov r0, r8 cmp r0, 0 beq _080BBB80 adds r0, r6, r5 ldrb r1, [r0] adds r0, r6, 0 adds r2, r4, 0 bl sub_8076E34 lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x20] _080BBB80: mov r0, sp bl sub_80752A0 mov r0, sp ldrb r0, [r0, 0x9] ldr r1, [sp, 0x58] bl sub_807543C bl sub_8073788 lsls r0, 24 cmp r0, 0 beq _080BBBA8 mov r0, sp ldrb r0, [r0, 0x8] ldr r1, [sp, 0x4] movs r2, 0 movs r3, 0 bl sub_80730C0 _080BBBA8: mov r0, sp ldrb r0, [r0, 0x9] mov r1, sp ldrh r2, [r1, 0xA] ldr r1, [sp, 0x54] bl sub_80753B4 mov r0, sp ldrb r1, [r0, 0x8] lsls r1, 4 ldr r0, [sp, 0x5C] movs r2, 0x20 bl LoadCompressedPalette ldr r0, _080BBC1C @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] ldr r0, _080BBC20 @ =gBattle_BG1_Y strh r1, [r0] ldr r1, _080BBC24 @ =gTasks mov r2, r9 lsls r0, r2, 2 add r0, r9 lsls r0, 3 adds r0, r1 mov r1, sp ldrh r1, [r1, 0x14] strh r1, [r0, 0xA] mov r2, sp ldrh r2, [r2, 0x18] strh r2, [r0, 0x10] mov r1, r10 strh r1, [r0, 0x12] mov r2, sp ldrh r2, [r2, 0x1C] strh r2, [r0, 0x14] strh r7, [r0, 0x8] mov r1, r8 strh r1, [r0, 0xC] mov r2, sp ldrh r2, [r2, 0x20] strh r2, [r0, 0xE] ldr r1, _080BBC28 @ =sub_80BBC2C str r1, [r0] add sp, 0x24 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080BBC10: .4byte gBattlerPartyIndexes _080BBC14: .4byte gPlayerParty _080BBC18: .4byte gBattlerSpriteIds _080BBC1C: .4byte gBattle_BG1_X _080BBC20: .4byte gBattle_BG1_Y _080BBC24: .4byte gTasks _080BBC28: .4byte sub_80BBC2C thumb_func_end sub_80BBA20 thumb_func_start sub_80BBC2C sub_80BBC2C: @ 80BBC2C push {r4-r6,lr} sub sp, 0x4 lsls r0, 24 lsrs r6, r0, 24 ldr r1, _080BBC68 @ =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 _080BBC4A negs r2, r2 _080BBC4A: ldrh r0, [r3, 0x22] adds r4, r0, r2 strh r4, [r3, 0x22] movs r1, 0xA ldrsh r0, [r3, r1] cmp r0, 0 bge _080BBC70 ldr r2, _080BBC6C @ =gBattle_BG1_Y lsls r1, r4, 16 asrs r1, 24 ldrh r0, [r2] subs r0, r1 strh r0, [r2] b _080BBC7C .align 2, 0 _080BBC68: .4byte gTasks _080BBC6C: .4byte gBattle_BG1_Y _080BBC70: ldr r1, _080BBCA0 @ =gBattle_BG1_Y lsls r0, r4, 16 asrs r0, 24 ldrh r2, [r1] adds r0, r2 strh r0, [r1] _080BBC7C: lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r5, r0, r5 ldrh r1, [r5, 0x22] movs r0, 0xFF ands r0, r1 movs r2, 0 strh r0, [r5, 0x22] movs r3, 0x26 ldrsh r0, [r5, r3] cmp r0, 0x1 beq _080BBCE6 cmp r0, 0x1 bgt _080BBCA4 cmp r0, 0 beq _080BBCAA b _080BBDD8 .align 2, 0 _080BBCA0: .4byte gBattle_BG1_Y _080BBCA4: cmp r0, 0x2 beq _080BBD00 b _080BBDD8 _080BBCAA: ldrh r0, [r5, 0x1E] adds r1, r0, 0x1 strh r1, [r5, 0x1E] lsls r0, 16 asrs r0, 16 movs r3, 0x14 ldrsh r1, [r5, r3] cmp r0, r1 bge _080BBCBE b _080BBDD8 _080BBCBE: strh r2, [r5, 0x1E] ldrh r1, [r5, 0x20] adds r1, 0x1 strh r1, [r5, 0x20] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r0, 0x20 ldrsh r1, [r5, r0] movs r2, 0x10 ldrsh r0, [r5, r2] cmp r1, r0 bne _080BBDD8 b _080BBCF8 _080BBCE6: ldrh r0, [r5, 0x1C] adds r0, 0x1 strh r0, [r5, 0x1C] lsls r0, 16 asrs r0, 16 movs r3, 0x12 ldrsh r1, [r5, r3] cmp r0, r1 bne _080BBDD8 _080BBCF8: ldrh r0, [r5, 0x26] adds r0, 0x1 strh r0, [r5, 0x26] b _080BBDD8 _080BBD00: ldrh r0, [r5, 0x1E] adds r1, r0, 0x1 strh r1, [r5, 0x1E] lsls r0, 16 asrs r0, 16 movs r3, 0x14 ldrsh r1, [r5, r3] cmp r0, r1 blt _080BBDD8 strh r2, [r5, 0x1E] ldrh r1, [r5, 0x20] subs r1, 0x1 strh r1, [r5, 0x20] movs r0, 0x10 subs r0, r1 lsls r0, 8 orrs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg movs r0, 0x20 ldrsh r4, [r5, r0] cmp r4, 0 bne _080BBDD8 movs r0, 0 bl sub_8073128 ldr r0, _080BBDE0 @ =gUnknown_2022984 strh r4, [r0] ldr r0, _080BBDE4 @ =gUnknown_2022986 strh r4, [r0] ldr r4, _080BBDE8 @ =0x00003f3f movs r0, 0x48 adds r1, r4, 0 bl SetGpuReg movs r0, 0x4A adds r1, r4, 0 bl SetGpuReg bl sub_8073788 lsls r0, 24 cmp r0, 0 bne _080BBD7E movs r0, 0xA bl GetGpuReg mov r1, sp strh r0, [r1] mov r2, sp ldrb r1, [r2] movs r0, 0xD negs r0, r0 ands r0, r1 strb r0, [r2] mov r0, sp ldrh r1, [r0] movs r0, 0xA bl SetGpuReg _080BBD7E: movs r0, 0 bl GetGpuReg adds r1, r0, 0 movs r2, 0x80 lsls r2, 8 adds r0, r2, 0 eors r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0 bl SetGpuReg movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r3, 0x8 ldrsh r1, [r5, r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _080BBDEC @ =gSprites adds r0, r4 bl DestroySprite movs r1, 0xC ldrsh r0, [r5, r1] cmp r0, 0 beq _080BBDD2 movs r2, 0xE ldrsh r1, [r5, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl DestroySprite _080BBDD2: adds r0, r6, 0 bl DestroyAnimVisualTask _080BBDD8: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080BBDE0: .4byte gUnknown_2022984 _080BBDE4: .4byte gUnknown_2022986 _080BBDE8: .4byte 0x00003f3f _080BBDEC: .4byte gSprites thumb_func_end sub_80BBC2C thumb_func_start sub_80BBDF0 sub_80BBDF0: @ 80BBDF0 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080BBE08 @ =gBattleAnimArgs ldr r1, _080BBE0C @ =gUnknown_2022B50 ldrb r1, [r1] strh r1, [r2] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080BBE08: .4byte gBattleAnimArgs _080BBE0C: .4byte gUnknown_2022B50 thumb_func_end sub_80BBDF0 thumb_func_start sub_80BBE10 sub_80BBE10: @ 80BBE10 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x80 lsls r0, 6 bl AllocZeroed ldr r1, _080BBE38 @ =gMonSpritesGfxPtr ldr r1, [r1] movs r2, 0xBE lsls r2, 1 adds r1, r2 str r0, [r1] adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .align 2, 0 _080BBE38: .4byte gMonSpritesGfxPtr thumb_func_end sub_80BBE10 thumb_func_start sub_80BBE3C sub_80BBE3C: @ 80BBE3C push {r4-r6,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r6, _080BBE68 @ =gMonSpritesGfxPtr ldr r0, [r6] movs r5, 0xBE lsls r5, 1 adds r0, r5 ldr r0, [r0] bl Free ldr r0, [r6] adds r0, r5 movs r1, 0 str r1, [r0] adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080BBE68: .4byte gMonSpritesGfxPtr thumb_func_end sub_80BBE3C thumb_func_start sub_80BBE6C sub_80BBE6C: @ 80BBE6C push {r4,r5,lr} sub sp, 0xC lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 ldr r0, _080BBEAC @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080BBEB0 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_8075BE8 adds r1, r0, 0 movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _080BBEC8 movs r2, 0x1 _080BBE9E: lsrs r1, 1 adds r4, 0x1 adds r0, r1, 0 ands r0, r2 cmp r0, 0 beq _080BBE9E b _080BBEC8 .align 2, 0 _080BBEAC: .4byte gBattleAnimArgs _080BBEB0: cmp r0, 0x1 bne _080BBEBC ldr r0, _080BBEB8 @ =gBattleAnimAttacker b _080BBEC2 .align 2, 0 _080BBEB8: .4byte gBattleAnimAttacker _080BBEBC: cmp r0, 0x2 bne _080BBEC8 ldr r0, _080BBEF8 @ =gBattleAnimTarget _080BBEC2: ldrb r0, [r0] adds r4, r0, 0 adds r4, 0x10 _080BBEC8: ldr r0, _080BBEFC @ =gMonSpritesGfxPtr ldr r1, [r0] ldr r0, _080BBF00 @ =gBattleAnimArgs movs r2, 0x2 ldrsh r0, [r0, r2] movs r2, 0xBE lsls r2, 1 adds r1, r2 ldr r1, [r1] lsls r0, 5 adds r0, r1 lsls r1, r4, 5 ldr r2, _080BBF04 @ =gPlttBufferUnfaded 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 _080BBEF8: .4byte gBattleAnimTarget _080BBEFC: .4byte gMonSpritesGfxPtr _080BBF00: .4byte gBattleAnimArgs _080BBF04: .4byte gPlttBufferUnfaded thumb_func_end sub_80BBE6C thumb_func_start sub_80BBF08 sub_80BBF08: @ 80BBF08 push {r4,r5,lr} sub sp, 0xC lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 ldr r0, _080BBF48 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080BBF4C 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_8075BE8 adds r1, r0, 0 movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _080BBF64 movs r2, 0x1 _080BBF3A: lsrs r1, 1 adds r4, 0x1 adds r0, r1, 0 ands r0, r2 cmp r0, 0 beq _080BBF3A b _080BBF64 .align 2, 0 _080BBF48: .4byte gBattleAnimArgs _080BBF4C: cmp r0, 0x1 bne _080BBF58 ldr r0, _080BBF54 @ =gBattleAnimAttacker b _080BBF5E .align 2, 0 _080BBF54: .4byte gBattleAnimAttacker _080BBF58: cmp r0, 0x2 bne _080BBF64 ldr r0, _080BBF94 @ =gBattleAnimTarget _080BBF5E: ldrb r0, [r0] adds r4, r0, 0 adds r4, 0x10 _080BBF64: lsls r0, r4, 5 ldr r1, _080BBF98 @ =gPlttBufferUnfaded adds r0, r1 ldr r1, _080BBF9C @ =gMonSpritesGfxPtr ldr r2, [r1] ldr r1, _080BBFA0 @ =gBattleAnimArgs movs r3, 0x2 ldrsh r1, [r1, r3] movs r3, 0xBE lsls r3, 1 adds r2, r3 ldr r2, [r2] lsls r1, 5 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 _080BBF94: .4byte gBattleAnimTarget _080BBF98: .4byte gPlttBufferUnfaded _080BBF9C: .4byte gMonSpritesGfxPtr _080BBFA0: .4byte gBattleAnimArgs thumb_func_end sub_80BBF08 thumb_func_start sub_80BBFA4 sub_80BBFA4: @ 80BBFA4 push {r4,r5,lr} sub sp, 0xC lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 ldr r0, _080BBFE4 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _080BBFE8 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_8075BE8 adds r1, r0, 0 movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _080BC000 movs r2, 0x1 _080BBFD6: lsrs r1, 1 adds r4, 0x1 adds r0, r1, 0 ands r0, r2 cmp r0, 0 beq _080BBFD6 b _080BC000 .align 2, 0 _080BBFE4: .4byte gBattleAnimArgs _080BBFE8: cmp r0, 0x1 bne _080BBFF4 ldr r0, _080BBFF0 @ =gBattleAnimAttacker b _080BBFFA .align 2, 0 _080BBFF0: .4byte gBattleAnimAttacker _080BBFF4: cmp r0, 0x2 bne _080BC000 ldr r0, _080BC020 @ =gBattleAnimTarget _080BBFFA: ldrb r0, [r0] adds r4, r0, 0 adds r4, 0x10 _080BC000: lsls r1, r4, 5 ldr r0, _080BC024 @ =gPlttBufferUnfaded adds r0, r1, r0 ldr r2, _080BC028 @ =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 _080BC020: .4byte gBattleAnimTarget _080BC024: .4byte gPlttBufferUnfaded _080BC028: .4byte gPlttBufferFaded thumb_func_end sub_80BBFA4 thumb_func_start sub_80BC02C sub_80BC02C: @ 80BC02C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl sub_8073788 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 beq _080BC04C ldr r1, _080BC048 @ =gBattleAnimArgs movs r0, 0x1 strh r0, [r1, 0xE] b _080BC050 .align 2, 0 _080BC048: .4byte gBattleAnimArgs _080BC04C: ldr r0, _080BC05C @ =gBattleAnimArgs strh r1, [r0, 0xE] _080BC050: adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} pop {r0} bx r0 .align 2, 0 _080BC05C: .4byte gBattleAnimArgs thumb_func_end sub_80BC02C thumb_func_start sub_80BC060 sub_80BC060: @ 80BC060 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080BC080 @ =gBattleAnimAttacker ldr r1, _080BC084 @ =gBattlerTarget ldrb r1, [r1] strb r1, [r2] ldr r2, _080BC088 @ =gBattleAnimTarget ldr r1, _080BC08C @ =gUnknown_2023D6E ldrb r1, [r1] strb r1, [r2] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080BC080: .4byte gBattleAnimAttacker _080BC084: .4byte gBattlerTarget _080BC088: .4byte gBattleAnimTarget _080BC08C: .4byte gUnknown_2023D6E thumb_func_end sub_80BC060 thumb_func_start sub_80BC090 sub_80BC090: @ 80BC090 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _080BC0B8 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide adds r4, r0, 0 ldr r0, _080BC0BC @ =gBattleAnimTarget ldrb r0, [r0] bl GetBattlerSide lsls r4, 24 lsls r0, 24 cmp r4, r0 bne _080BC0C4 ldr r1, _080BC0C0 @ =gBattleAnimArgs movs r0, 0x1 b _080BC0C8 .align 2, 0 _080BC0B8: .4byte gBattleAnimAttacker _080BC0BC: .4byte gBattleAnimTarget _080BC0C0: .4byte gBattleAnimArgs _080BC0C4: ldr r1, _080BC0D8 @ =gBattleAnimArgs movs r0, 0 _080BC0C8: strh r0, [r1, 0xE] adds r0, r5, 0 bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080BC0D8: .4byte gBattleAnimArgs thumb_func_end sub_80BC090 thumb_func_start sub_80BC0DC sub_80BC0DC: @ 80BC0DC push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080BC0F4 @ =gBattleAnimTarget ldr r1, _080BC0F8 @ =gBattlerTarget ldrb r1, [r1] strb r1, [r2] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080BC0F4: .4byte gBattleAnimTarget _080BC0F8: .4byte gBattlerTarget thumb_func_end sub_80BC0DC thumb_func_start sub_80BC0FC sub_80BC0FC: @ 80BC0FC push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _080BC11C @ =gBattleAnimAttacker ldr r1, _080BC120 @ =sBattler_AI ldrb r1, [r1] strb r1, [r2] ldr r2, _080BC124 @ =gBattleAnimTarget ldr r1, _080BC128 @ =gUnknown_2023D6E ldrb r1, [r1] strb r1, [r2] bl DestroyAnimVisualTask pop {r0} bx r0 .align 2, 0 _080BC11C: .4byte gBattleAnimAttacker _080BC120: .4byte sBattler_AI _080BC124: .4byte gBattleAnimTarget _080BC128: .4byte gUnknown_2023D6E thumb_func_end sub_80BC0FC thumb_func_start sub_80BC12C sub_80BC12C: @ 80BC12C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl sub_8073788 lsls r0, 24 cmp r0, 0 beq _080BC144 adds r0, r4, 0 bl DestroyAnimVisualTask b _080BC180 _080BC144: ldr r0, _080BC188 @ =gTasks lsls r3, r4, 2 adds r3, r4 lsls r3, 3 adds r3, r0 ldr r0, _080BC18C @ =gUnknown_2024018 ldr r4, [r0] ldr r2, _080BC190 @ =gBattleAnimAttacker ldrb r0, [r2] ldr r1, [r4] lsls r0, 2 adds r0, r1 ldr r0, [r0] lsls r0, 31 lsrs r0, 31 strh r0, [r3, 0x8] ldrb r1, [r2] ldr r0, [r4] lsls r1, 2 adds r1, r0 ldrb r0, [r1] movs r2, 0x1 orrs r0, r2 strb r0, [r1] ldr r0, _080BC194 @ =sub_80BC19C str r0, [r3] ldr r1, _080BC198 @ =gUnknown_2037EE2 ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] _080BC180: pop {r4} pop {r0} bx r0 .align 2, 0 _080BC188: .4byte gTasks _080BC18C: .4byte gUnknown_2024018 _080BC190: .4byte gBattleAnimAttacker _080BC194: .4byte sub_80BC19C _080BC198: .4byte gUnknown_2037EE2 thumb_func_end sub_80BC12C thumb_func_start sub_80BC19C sub_80BC19C: @ 80BC19C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080BC1E8 @ =gBattleAnimArgs movs r2, 0xE ldrsh r1, [r0, r2] movs r0, 0x80 lsls r0, 5 cmp r1, r0 bne _080BC1E0 ldr r0, _080BC1EC @ =gUnknown_2024018 ldr r1, [r0] ldr r0, _080BC1F0 @ =gBattleAnimAttacker ldrb r3, [r0] ldr r0, [r1] lsls r3, 2 adds r3, r0 ldr r1, _080BC1F4 @ =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 _080BC1E0: pop {r4} pop {r0} bx r0 .align 2, 0 _080BC1E8: .4byte gBattleAnimArgs _080BC1EC: .4byte gUnknown_2024018 _080BC1F0: .4byte gBattleAnimAttacker _080BC1F4: .4byte gTasks thumb_func_end sub_80BC19C thumb_func_start SetAnimBgAttribute SetAnimBgAttribute: @ 80BC1F8 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r1, 24 lsrs r5, r1, 24 lsls r2, 24 lsrs r4, r2, 24 cmp r6, 0x3 bls _080BC20C b _080BC2FE _080BC20C: ldr r0, _080BC228 @ =gUnknown_83E7CCA adds r0, r6, r0 ldrb r0, [r0] bl GetGpuReg ldr r1, _080BC22C @ =gUnknown_20399B8 strh r0, [r1] cmp r5, 0x6 bhi _080BC2F0 lsls r0, r5, 2 ldr r1, _080BC230 @ =_080BC234 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080BC228: .4byte gUnknown_83E7CCA _080BC22C: .4byte gUnknown_20399B8 _080BC230: .4byte _080BC234 .align 2, 0 _080BC234: .4byte _080BC250 .4byte _080BC264 .4byte _080BC27C .4byte _080BC294 .4byte _080BC2AC .4byte _080BC2C8 .4byte _080BC2DC _080BC250: ldr r2, _080BC260 @ =gUnknown_20399B8 lsls r3, r4, 6 ldrb r1, [r2, 0x1] movs r0, 0x3F ands r0, r1 orrs r0, r3 strb r0, [r2, 0x1] b _080BC2F0 .align 2, 0 _080BC260: .4byte gUnknown_20399B8 _080BC264: ldr r3, _080BC278 @ =gUnknown_20399B8 movs r0, 0x1 adds r1, r4, 0 ands r1, r0 lsls r1, 5 ldrb r2, [r3, 0x1] movs r0, 0x21 negs r0, r0 b _080BC2EA .align 2, 0 _080BC278: .4byte gUnknown_20399B8 _080BC27C: ldr r3, _080BC290 @ =gUnknown_20399B8 movs r0, 0x1 adds r1, r4, 0 ands r1, r0 lsls r1, 6 ldrb r2, [r3] movs r0, 0x41 negs r0, r0 b _080BC2BA .align 2, 0 _080BC290: .4byte gUnknown_20399B8 _080BC294: ldr r3, _080BC2A8 @ =gUnknown_20399B8 movs r0, 0x3 adds r1, r4, 0 ands r1, r0 lsls r1, 2 ldrb r2, [r3] movs r0, 0xD negs r0, r0 b _080BC2BA .align 2, 0 _080BC2A8: .4byte gUnknown_20399B8 _080BC2AC: ldr r3, _080BC2C4 @ =gUnknown_20399B8 movs r0, 0x3 adds r1, r4, 0 ands r1, r0 ldrb r2, [r3] movs r0, 0x4 negs r0, r0 _080BC2BA: ands r0, r2 orrs r0, r1 strb r0, [r3] b _080BC2F0 .align 2, 0 _080BC2C4: .4byte gUnknown_20399B8 _080BC2C8: ldr r2, _080BC2D8 @ =gUnknown_20399B8 lsls r3, r4, 7 ldrb r1, [r2] movs r0, 0x7F ands r0, r1 orrs r0, r3 strb r0, [r2] b _080BC2F0 .align 2, 0 _080BC2D8: .4byte gUnknown_20399B8 _080BC2DC: ldr r3, _080BC304 @ =gUnknown_20399B8 movs r0, 0x1F adds r1, r4, 0 ands r1, r0 ldrb r2, [r3, 0x1] movs r0, 0x20 negs r0, r0 _080BC2EA: ands r0, r2 orrs r0, r1 strb r0, [r3, 0x1] _080BC2F0: ldr r0, _080BC308 @ =gUnknown_83E7CCA adds r0, r6, r0 ldrb r0, [r0] ldr r1, _080BC304 @ =gUnknown_20399B8 ldrh r1, [r1] bl SetGpuReg _080BC2FE: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080BC304: .4byte gUnknown_20399B8 _080BC308: .4byte gUnknown_83E7CCA thumb_func_end SetAnimBgAttribute thumb_func_start sub_80BC30C sub_80BC30C: @ 80BC30C push {r4,lr} sub sp, 0x4 lsls r0, 24 lsrs r2, r0, 24 lsls r1, 24 lsrs r4, r1, 24 cmp r2, 0x3 bhi _080BC394 ldr r0, _080BC338 @ =gUnknown_83E7CCE adds r0, r2, r0 ldrb r0, [r0] bl GetGpuReg mov r1, sp strh r0, [r1] cmp r4, 0x6 bhi _080BC394 lsls r0, r4, 2 ldr r1, _080BC33C @ =_080BC340 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080BC338: .4byte gUnknown_83E7CCE _080BC33C: .4byte _080BC340 .align 2, 0 _080BC340: .4byte _080BC35C .4byte _080BC364 .4byte _080BC36C .4byte _080BC374 .4byte _080BC37C .4byte _080BC384 .4byte _080BC38C _080BC35C: ldr r0, [sp] lsls r0, 16 lsrs r0, 30 b _080BC396 _080BC364: ldr r0, [sp] lsls r0, 18 lsrs r0, 31 b _080BC396 _080BC36C: ldr r0, [sp] lsls r0, 25 lsrs r0, 31 b _080BC396 _080BC374: ldr r0, [sp] lsls r0, 28 lsrs r0, 30 b _080BC396 _080BC37C: ldr r0, [sp] lsls r0, 30 lsrs r0, 30 b _080BC396 _080BC384: ldr r0, [sp] lsls r0, 24 lsrs r0, 31 b _080BC396 _080BC38C: ldr r0, [sp] lsls r0, 19 lsrs r0, 27 b _080BC396 _080BC394: movs r0, 0 _080BC396: add sp, 0x4 pop {r4} pop {r1} bx r1 thumb_func_end sub_80BC30C thumb_func_start sub_80BC3A0 sub_80BC3A0: @ 80BC3A0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080BC3B8 @ =gBattleTypeFlags ldr r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080BC3C0 ldr r0, _080BC3BC @ =sub_80BCC4C b _080BC3E8 .align 2, 0 _080BC3B8: .4byte gBattleTypeFlags _080BC3BC: .4byte sub_80BCC4C _080BC3C0: movs r0, 0x80 lsls r0, 5 ands r1, r0 cmp r1, 0 beq _080BC3E0 ldr r0, _080BC3D8 @ =gGameVersion ldrb r0, [r0] cmp r0, 0x2 beq _080BC3E0 movs r4, 0x3 ldr r0, _080BC3DC @ =task00_battle_intro_80BC6C8 b _080BC3E8 .align 2, 0 _080BC3D8: .4byte gGameVersion _080BC3DC: .4byte task00_battle_intro_80BC6C8 _080BC3E0: ldr r1, _080BC414 @ =gUnknown_83E7CD4 lsls r0, r4, 2 adds r0, r1 ldr r0, [r0] _080BC3E8: movs r1, 0 bl CreateTask lsls r0, 24 lsrs r2, r0, 24 ldr r0, _080BC418 @ =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 _080BC414: .4byte gUnknown_83E7CD4 _080BC418: .4byte gTasks thumb_func_end sub_80BC3A0 thumb_func_start sub_80BC41C sub_80BC41C: @ 80BC41C push {r4,lr} lsls r0, 24 lsrs r0, 24 bl DestroyTask ldr r0, _080BC468 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] ldr r0, _080BC46C @ =gBattle_BG1_Y strh r1, [r0] ldr r0, _080BC470 @ =gBattle_BG2_X strh r1, [r0] ldr r0, _080BC474 @ =gBattle_BG2_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r0, 0x54 movs r1, 0 bl SetGpuReg ldr r4, _080BC478 @ =0x00003f3f movs r0, 0x48 adds r1, r4, 0 bl SetGpuReg movs r0, 0x4A adds r1, r4, 0 bl SetGpuReg pop {r4} pop {r0} bx r0 .align 2, 0 _080BC468: .4byte gBattle_BG1_X _080BC46C: .4byte gBattle_BG1_Y _080BC470: .4byte gBattle_BG2_X _080BC474: .4byte gBattle_BG2_Y _080BC478: .4byte 0x00003f3f thumb_func_end sub_80BC41C thumb_func_start task_battle_intro_80BC47C task_battle_intro_80BC47C: @ 80BC47C 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, _080BC4B4 @ =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x6 strh r0, [r1] ldr r1, _080BC4B8 @ =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 _080BC4A8 b _080BC6BA _080BC4A8: lsls r0, 2 ldr r1, _080BC4BC @ =_080BC4C0 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080BC4B4: .4byte gBattle_BG1_X _080BC4B8: .4byte gTasks _080BC4BC: .4byte _080BC4C0 .align 2, 0 _080BC4C0: .4byte _080BC4D4 .4byte _080BC504 .4byte _080BC52C .4byte _080BC574 .4byte _080BC6B4 _080BC4D4: ldr r0, _080BC4EC @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _080BC4F0 lsls r0, r4, 2 adds r0, r4 lsls r0, 3 add r0, r8 movs r1, 0x10 b _080BC4FA .align 2, 0 _080BC4EC: .4byte gBattleTypeFlags _080BC4F0: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 add r0, r8 movs r1, 0x1 _080BC4FA: strh r1, [r0, 0xC] ldrh r1, [r0, 0x8] adds r1, 0x1 strh r1, [r0, 0x8] b _080BC6BA _080BC504: 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 _080BC51C b _080BC6BA _080BC51C: ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] movs r0, 0x48 movs r1, 0x3F bl SetGpuReg b _080BC6BA _080BC52C: ldr r1, _080BC568 @ =gUnknown_2022986 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 _080BC544 b _080BC6BA _080BC544: 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, _080BC56C @ =gUnknown_2023F4C ldrh r1, [r2] ldr r0, _080BC570 @ =0x0000fffe ands r0, r1 strh r0, [r2] b _080BC6BA .align 2, 0 _080BC568: .4byte gUnknown_2022986 _080BC56C: .4byte gUnknown_2023F4C _080BC570: .4byte 0x0000fffe _080BC574: 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 _080BC590 subs r0, r3, 0x1 strh r0, [r2, 0xE] b _080BC5BE _080BC590: movs r1, 0xA ldrsh r0, [r2, r1] cmp r0, 0x1 bne _080BC5B0 ldr r2, _080BC5A8 @ =gBattle_BG1_Y ldrh r1, [r2] ldr r0, _080BC5AC @ =0x0000ffb0 cmp r1, r0 beq _080BC5BE subs r0, r1, 0x2 b _080BC5BC .align 2, 0 _080BC5A8: .4byte gBattle_BG1_Y _080BC5AC: .4byte 0x0000ffb0 _080BC5B0: ldr r2, _080BC690 @ =gBattle_BG1_Y ldrh r1, [r2] ldr r0, _080BC694 @ =0x0000ffc8 cmp r1, r0 beq _080BC5BE subs r0, r1, 0x1 _080BC5BC: strh r0, [r2] _080BC5BE: ldr r2, _080BC698 @ =gUnknown_2022986 ldrh r1, [r2] movs r0, 0xFF lsls r0, 8 ands r0, r1 cmp r0, 0 beq _080BC5D2 ldr r3, _080BC69C @ =0xfffffc04 adds r0, r1, r3 strh r0, [r2] _080BC5D2: 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 _080BC5EA subs r0, r2, 0x2 strh r0, [r1, 0xC] _080BC5EA: movs r3, 0 ldr r5, _080BC6A0 @ =gScanlineEffect mov r9, r5 ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers mov r6, r9 adds r5, r1, 0 _080BC5F6: 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 _080BC5F6 cmp r3, 0x9F bgt _080BC63A ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers ldr r6, _080BC6A0 @ =gScanlineEffect ldr r1, _080BC6A8 @ =gTasks mov r2, r12 adds r0, r2, r4 lsls r0, 3 adds r5, r0, r1 _080BC620: 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 _080BC620 _080BC63A: 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 _080BC6BA 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, _080BC6AC @ =0x0600e000 ldr r2, _080BC6B0 @ =0x05000200 mov r0, sp bl CpuSet movs r0, 0x1 movs r1, 0x1 movs r2, 0 bl SetBgAttribute movs r0, 0x2 movs r1, 0x1 movs r2, 0 bl SetBgAttribute movs r1, 0x9C lsls r1, 8 movs r0, 0xA bl SetGpuReg movs r1, 0xBC lsls r1, 7 movs r0, 0xC bl SetGpuReg b _080BC6BA .align 2, 0 _080BC690: .4byte gBattle_BG1_Y _080BC694: .4byte 0x0000ffc8 _080BC698: .4byte gUnknown_2022986 _080BC69C: .4byte 0xfffffc04 _080BC6A0: .4byte gScanlineEffect _080BC6A4: .4byte gScanlineEffectRegBuffers _080BC6A8: .4byte gTasks _080BC6AC: .4byte 0x0600e000 _080BC6B0: .4byte 0x05000200 _080BC6B4: adds r0, r4, 0 bl sub_80BC41C _080BC6BA: 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: @ 80BC6C8 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080BC6F4 @ =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 _080BC708 cmp r0, 0x3 bgt _080BC6F8 cmp r0, 0x2 beq _080BC6FC b _080BC710 .align 2, 0 _080BC6F4: .4byte gTasks _080BC6F8: cmp r0, 0x4 bne _080BC710 _080BC6FC: ldr r1, _080BC704 @ =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x8 b _080BC70E .align 2, 0 _080BC704: .4byte gBattle_BG1_X _080BC708: ldr r1, _080BC74C @ =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x6 _080BC70E: strh r0, [r1] _080BC710: 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 _080BC774 ldr r7, _080BC750 @ =gBattle_BG1_Y ldrh r0, [r4, 0x14] bl Cos2 lsls r0, 16 asrs r0, 16 cmp r0, 0 bge _080BC736 ldr r1, _080BC754 @ =0x000001ff adds r0, r1 _080BC736: asrs r0, 9 subs r0, 0x8 strh r0, [r7] ldrh r1, [r4, 0x14] movs r2, 0x14 ldrsh r0, [r4, r2] cmp r0, 0xB3 bgt _080BC758 adds r0, r1, 0x4 b _080BC75A .align 2, 0 _080BC74C: .4byte gBattle_BG1_X _080BC750: .4byte gBattle_BG1_Y _080BC754: .4byte 0x000001ff _080BC758: adds r0, r1, 0x6 _080BC75A: strh r0, [r4, 0x14] ldr r2, _080BC790 @ =gTasks adds r0, r6, r5 lsls r0, 3 adds r3, r0, r2 movs r0, 0x14 ldrsh r1, [r3, r0] movs r0, 0xB4 lsls r0, 1 cmp r1, r0 bne _080BC774 movs r0, 0 strh r0, [r3, 0x14] _080BC774: adds r0, r6, r5 lsls r0, 3 adds r0, r2 movs r1, 0x8 ldrsh r0, [r0, r1] cmp r0, 0x4 bls _080BC784 b _080BC9AA _080BC784: lsls r0, 2 ldr r1, _080BC794 @ =_080BC798 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080BC790: .4byte gTasks _080BC794: .4byte _080BC798 .align 2, 0 _080BC798: .4byte _080BC7AC .4byte _080BC7DC .4byte _080BC808 .4byte _080BC858 .4byte _080BC9A4 _080BC7AC: ldr r1, _080BC7C8 @ =gTasks adds r0, r6, r5 lsls r0, 3 adds r2, r0, r1 movs r3, 0x10 strh r3, [r2, 0x10] ldr r0, _080BC7CC @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _080BC7D0 strh r3, [r2, 0xC] b _080BC7D4 .align 2, 0 _080BC7C8: .4byte gTasks _080BC7CC: .4byte gBattleTypeFlags _080BC7D0: movs r0, 0x1 strh r0, [r2, 0xC] _080BC7D4: ldrh r0, [r2, 0x8] adds r0, 0x1 strh r0, [r2, 0x8] b _080BC9AA _080BC7DC: ldr r0, _080BC804 @ =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 _080BC7F2 b _080BC9AA _080BC7F2: ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] movs r0, 0x48 movs r1, 0x3F bl SetGpuReg b _080BC9AA .align 2, 0 _080BC804: .4byte gTasks _080BC808: ldr r1, _080BC848 @ =gUnknown_2022986 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 _080BC820 b _080BC9AA _080BC820: ldr r0, _080BC84C @ =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, _080BC850 @ =gUnknown_2023F4C ldrh r1, [r2] ldr r0, _080BC854 @ =0x0000fffe ands r0, r1 strh r0, [r2] b _080BC9AA .align 2, 0 _080BC848: .4byte gUnknown_2022986 _080BC84C: .4byte gTasks _080BC850: .4byte gUnknown_2023F4C _080BC854: .4byte 0x0000fffe _080BC858: ldr r0, _080BC890 @ =gTasks adds r1, r6, r5 lsls r1, 3 adds r1, r0 ldrh r2, [r1, 0xE] movs r3, 0xE ldrsh r0, [r1, r3] cmp r0, 0 beq _080BC898 subs r0, r2, 0x1 strh r0, [r1, 0xE] lsls r0, 16 cmp r0, 0 bne _080BC8B8 ldr r1, _080BC894 @ =0x00001842 movs r0, 0x50 bl SetGpuReg movs r0, 0x52 movs r1, 0xF bl SetGpuReg movs r0, 0x54 movs r1, 0 bl SetGpuReg b _080BC8B8 .align 2, 0 _080BC890: .4byte gTasks _080BC894: .4byte 0x00001842 _080BC898: ldrh r2, [r1, 0x10] movs r0, 0x1F ands r0, r2 cmp r0, 0 beq _080BC8B8 ldrh r0, [r1, 0x12] subs r0, 0x1 strh r0, [r1, 0x12] lsls r0, 16 cmp r0, 0 bne _080BC8B8 adds r0, r2, 0 adds r0, 0xFF strh r0, [r1, 0x10] movs r0, 0x4 strh r0, [r1, 0x12] _080BC8B8: ldr r2, _080BC988 @ =gUnknown_2022986 ldrh r1, [r2] movs r0, 0xFF lsls r0, 8 ands r0, r1 cmp r0, 0 beq _080BC8CC ldr r3, _080BC98C @ =0xfffffc04 adds r0, r1, r3 strh r0, [r2] _080BC8CC: ldr r0, _080BC990 @ =gTasks adds r1, r6, r5 lsls r1, 3 adds r1, r0 ldrh r2, [r1, 0xC] movs r3, 0xC ldrsh r0, [r1, r3] cmp r0, 0 beq _080BC8E2 subs r0, r2, 0x2 strh r0, [r1, 0xC] _080BC8E2: movs r3, 0 ldr r0, _080BC994 @ =gScanlineEffect mov r8, r0 ldr r2, _080BC998 @ =gScanlineEffectRegBuffers mov r12, r2 mov r7, r8 adds r4, r1, 0 _080BC8F0: 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 _080BC8F0 cmp r3, 0x9F bgt _080BC934 ldr r0, _080BC998 @ =gScanlineEffectRegBuffers mov r12, r0 ldr r7, _080BC994 @ =gScanlineEffect ldr r1, _080BC990 @ =gTasks adds r0, r6, r5 lsls r0, 3 adds r4, r0, r1 _080BC91A: 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 _080BC91A _080BC934: ldr r1, _080BC990 @ =gTasks adds r0, r6, r5 lsls r0, 3 adds r1, r0, r1 movs r3, 0xC ldrsh r2, [r1, r3] cmp r2, 0 bne _080BC9AA movs r0, 0x3 mov r3, r8 strb r0, [r3, 0x15] ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] str r2, [sp] ldr r1, _080BC99C @ =0x0600e000 ldr r2, _080BC9A0 @ =0x05000200 mov r0, sp bl CpuSet movs r0, 0x1 movs r1, 0x1 movs r2, 0 bl SetBgAttribute movs r0, 0x2 movs r1, 0x1 movs r2, 0 bl SetBgAttribute movs r1, 0x9C lsls r1, 8 movs r0, 0xA bl SetGpuReg movs r1, 0xBC lsls r1, 7 movs r0, 0xC bl SetGpuReg b _080BC9AA .align 2, 0 _080BC988: .4byte gUnknown_2022986 _080BC98C: .4byte 0xfffffc04 _080BC990: .4byte gTasks _080BC994: .4byte gScanlineEffect _080BC998: .4byte gScanlineEffectRegBuffers _080BC99C: .4byte 0x0600e000 _080BC9A0: .4byte 0x05000200 _080BC9A4: adds r0, r5, 0 bl sub_80BC41C _080BC9AA: ldr r0, _080BC9D0 @ =gTasks adds r1, r6, r5 lsls r1, 3 adds r1, r0 movs r2, 0x8 ldrsh r0, [r1, r2] cmp r0, 0x4 beq _080BC9C2 ldrh r1, [r1, 0x10] movs r0, 0x52 bl SetGpuReg _080BC9C2: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080BC9D0: .4byte gTasks thumb_func_end task00_battle_intro_80BC6C8 thumb_func_start task_battle_intro_anim task_battle_intro_anim: @ 80BC9D4 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080BCA08 @ =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x8 strh r0, [r1] ldr r1, _080BCA0C @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 movs r2, 0x8 ldrsh r0, [r0, r2] adds r4, r1, 0 cmp r0, 0x4 bls _080BC9FE b _080BCC22 _080BC9FE: lsls r0, 2 ldr r1, _080BCA10 @ =_080BCA14 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080BCA08: .4byte gBattle_BG1_X _080BCA0C: .4byte gTasks _080BCA10: .4byte _080BCA14 .align 2, 0 _080BCA14: .4byte _080BCA28 .4byte _080BCA7C .4byte _080BCAA8 .4byte _080BCAF8 .4byte _080BCC1C _080BCA28: ldr r1, _080BCA60 @ =0x00001842 movs r0, 0x50 bl SetGpuReg ldr r4, _080BCA64 @ =0x00000808 movs r0, 0x52 adds r1, r4, 0 bl SetGpuReg movs r0, 0x54 movs r1, 0 bl SetGpuReg ldr r1, _080BCA68 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r2, r0, r1 strh r4, [r2, 0x10] ldr r0, _080BCA6C @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _080BCA70 movs r0, 0x10 b _080BCA72 .align 2, 0 _080BCA60: .4byte 0x00001842 _080BCA64: .4byte 0x00000808 _080BCA68: .4byte gTasks _080BCA6C: .4byte gBattleTypeFlags _080BCA70: movs r0, 0x1 _080BCA72: strh r0, [r2, 0xC] ldrh r0, [r2, 0x8] adds r0, 0x1 strh r0, [r2, 0x8] b _080BCC22 _080BCA7C: ldr r0, _080BCAA4 @ =gTasks lsls r1, r5, 2 adds r1, 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 _080BCA94 b _080BCC22 _080BCA94: ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] movs r0, 0x48 movs r1, 0x3F bl SetGpuReg b _080BCC22 .align 2, 0 _080BCAA4: .4byte gTasks _080BCAA8: ldr r1, _080BCAE8 @ =gUnknown_2022986 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 _080BCAC0 b _080BCC22 _080BCAC0: ldr r0, _080BCAEC @ =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] movs r0, 0xF0 strh r0, [r1, 0xC] movs r0, 0x20 strh r0, [r1, 0xE] movs r0, 0x1 strh r0, [r1, 0x12] ldr r2, _080BCAF0 @ =gUnknown_2023F4C ldrh r1, [r2] ldr r0, _080BCAF4 @ =0x0000fffe ands r0, r1 strh r0, [r2] b _080BCC22 .align 2, 0 _080BCAE8: .4byte gUnknown_2022986 _080BCAEC: .4byte gTasks _080BCAF0: .4byte gUnknown_2023F4C _080BCAF4: .4byte 0x0000fffe _080BCAF8: lsls r0, r5, 2 adds r1, r0, r5 lsls r1, 3 adds r2, r1, r4 ldrh r3, [r2, 0xE] movs r6, 0xE ldrsh r1, [r2, r6] mov r12, r0 cmp r1, 0 beq _080BCB12 subs r0, r3, 0x1 strh r0, [r2, 0xE] b _080BCB32 _080BCB12: ldrh r1, [r2, 0x10] movs r0, 0xF ands r0, r1 cmp r0, 0 beq _080BCB32 ldrh r0, [r2, 0x12] subs r0, 0x1 strh r0, [r2, 0x12] lsls r0, 16 cmp r0, 0 bne _080BCB32 adds r0, r1, 0 adds r0, 0xFF strh r0, [r2, 0x10] movs r0, 0x6 strh r0, [r2, 0x12] _080BCB32: ldr r2, _080BCC00 @ =gUnknown_2022986 ldrh r1, [r2] movs r0, 0xFF lsls r0, 8 ands r0, r1 cmp r0, 0 beq _080BCB46 ldr r3, _080BCC04 @ =0xfffffc04 adds r0, r1, r3 strh r0, [r2] _080BCB46: mov r6, r12 adds r0, r6, r5 lsls r0, 3 adds r1, r0, r4 ldrh r2, [r1, 0xC] movs r3, 0xC ldrsh r0, [r1, r3] cmp r0, 0 beq _080BCB5C subs r0, r2, 0x2 strh r0, [r1, 0xC] _080BCB5C: movs r3, 0 ldr r6, _080BCC08 @ =gScanlineEffect mov r8, r6 ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers adds r4, r1, 0 _080BCB66: 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, [r4, 0xC] strh r0, [r2] adds r3, 0x1 cmp r3, 0x4F ble _080BCB66 cmp r3, 0x9F bgt _080BCBAA ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers ldr r6, _080BCC08 @ =gScanlineEffect ldr r1, _080BCC10 @ =gTasks mov r2, r12 adds r0, r2, r5 lsls r0, 3 adds r4, r0, r1 _080BCB90: 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, [r4, 0xC] negs r0, r0 strh r0, [r2] adds r3, 0x1 cmp r3, 0x9F ble _080BCB90 _080BCBAA: ldr r1, _080BCC10 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r1, r0, r1 movs r3, 0xC ldrsh r2, [r1, r3] cmp r2, 0 bne _080BCC22 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, _080BCC14 @ =0x0600e000 ldr r2, _080BCC18 @ =0x05000200 mov r0, sp bl CpuSet movs r0, 0x1 movs r1, 0x1 movs r2, 0 bl SetBgAttribute movs r0, 0x2 movs r1, 0x1 movs r2, 0 bl SetBgAttribute movs r1, 0x9C lsls r1, 8 movs r0, 0xA bl SetGpuReg movs r1, 0xBC lsls r1, 7 movs r0, 0xC bl SetGpuReg b _080BCC22 .align 2, 0 _080BCC00: .4byte gUnknown_2022986 _080BCC04: .4byte 0xfffffc04 _080BCC08: .4byte gScanlineEffect _080BCC0C: .4byte gScanlineEffectRegBuffers _080BCC10: .4byte gTasks _080BCC14: .4byte 0x0600e000 _080BCC18: .4byte 0x05000200 _080BCC1C: adds r0, r5, 0 bl sub_80BC41C _080BCC22: ldr r0, _080BCC48 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 movs r2, 0x8 ldrsh r0, [r1, r2] cmp r0, 0x4 beq _080BCC3C ldrh r1, [r1, 0x10] movs r0, 0x52 bl SetGpuReg _080BCC3C: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080BCC48: .4byte gTasks thumb_func_end task_battle_intro_anim thumb_func_start sub_80BCC4C sub_80BCC4C: @ 80BCC4C 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, _080BCC98 @ =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 _080BCCC2 movs r2, 0x10 ldrsh r0, [r7, r2] cmp r0, 0 bne _080BCCC2 ldr r2, _080BCC9C @ =gBattle_BG1_X ldrh r1, [r2] movs r0, 0x80 lsls r0, 8 ands r0, r1 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0 bne _080BCC8A cmp r1, 0x4F bhi _080BCCA4 _080BCC8A: adds r0, r1, 0x3 strh r0, [r2] ldr r1, _080BCCA0 @ =gBattle_BG2_X ldrh r0, [r1] subs r0, 0x3 strh r0, [r1] b _080BCCC2 .align 2, 0 _080BCC98: .4byte gTasks _080BCC9C: .4byte gBattle_BG1_X _080BCCA0: .4byte gBattle_BG2_X _080BCCA4: str r5, [sp] ldr r1, _080BCCE4 @ =0x0600e000 ldr r4, _080BCCE8 @ =0x05000200 mov r0, sp adds r2, r4, 0 bl CpuSet str r5, [sp, 0x4] add r0, sp, 0x4 ldr r1, _080BCCEC @ =0x0600f000 adds r2, r4, 0 bl CpuSet movs r0, 0x1 strh r0, [r7, 0x10] _080BCCC2: ldr r0, _080BCCF0 @ =gTasks lsls r2, r6, 2 adds r1, r2, r6 lsls r1, 3 adds r1, r0 movs r3, 0x8 ldrsh r1, [r1, r3] mov r9, r0 adds r5, r2, 0 cmp r1, 0x4 bls _080BCCDA b _080BCEE6 _080BCCDA: lsls r0, r1, 2 ldr r1, _080BCCF4 @ =_080BCCF8 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080BCCE4: .4byte 0x0600e000 _080BCCE8: .4byte 0x05000200 _080BCCEC: .4byte 0x0600f000 _080BCCF0: .4byte gTasks _080BCCF4: .4byte _080BCCF8 .align 2, 0 _080BCCF8: .4byte _080BCD0C .4byte _080BCD1E .4byte _080BCDC4 .4byte _080BCE08 .4byte _080BCEE0 _080BCD0C: adds r0, r5, r6 lsls r0, 3 add r0, r9 movs r1, 0x20 strh r1, [r0, 0xC] ldrh r1, [r0, 0x8] adds r1, 0x1 strh r1, [r0, 0x8] b _080BCEE6 _080BCD1E: adds r0, r5, r6 lsls r0, 3 mov r2, r9 adds r1, r0, r2 ldrh r0, [r1, 0xC] subs r0, 0x1 strh r0, [r1, 0xC] lsls r0, 16 cmp r0, 0 beq _080BCD34 b _080BCEE6 _080BCD34: ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] ldr r4, _080BCDB4 @ =gSprites ldr r5, _080BCDB8 @ =gBattleStruct ldr r0, [r5] adds r0, 0x7D ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r3, [r1, 0x1] movs r2, 0xD negs r2, r2 adds r0, r2, 0 ands r0, r3 movs r3, 0x8 mov r9, r3 mov r3, r9 orrs r0, r3 strb r0, [r1, 0x1] ldr r3, [r5] adds r0, r3, 0 adds r0, 0x7D ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 movs r1, 0x1C adds r1, r4 mov r8, r1 add r0, r8 ldr r6, _080BCDBC @ =sub_801182C str r6, [r0] adds r3, 0x7E ldrb r1, [r3] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r0, 0x1] ands r2, r1 mov r3, r9 orrs r2, r3 strb r2, [r0, 0x1] ldr r0, [r5] adds r0, 0x7E ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 add r0, r8 str r6, [r0] movs r0, 0x48 movs r1, 0x3F bl SetGpuReg ldr r1, _080BCDC0 @ =0x00003f06 movs r0, 0x4A bl SetGpuReg b _080BCEE6 .align 2, 0 _080BCDB4: .4byte gSprites _080BCDB8: .4byte gBattleStruct _080BCDBC: .4byte sub_801182C _080BCDC0: .4byte 0x00003f06 _080BCDC4: ldr r1, _080BCDFC @ =gUnknown_2022986 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 _080BCDDC b _080BCEE6 _080BCDDC: adds r1, r5, r6 lsls r1, 3 add r1, r9 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, _080BCE00 @ =gUnknown_2023F4C ldrh r1, [r2] ldr r0, _080BCE04 @ =0x0000fffe ands r0, r1 strh r0, [r2] b _080BCEE6 .align 2, 0 _080BCDFC: .4byte gUnknown_2022986 _080BCE00: .4byte gUnknown_2023F4C _080BCE04: .4byte 0x0000fffe _080BCE08: ldr r2, _080BCECC @ =gUnknown_2022986 ldrh r1, [r2] movs r0, 0xFF lsls r0, 8 ands r0, r1 cmp r0, 0 beq _080BCE1C ldr r3, _080BCED0 @ =0xfffffc04 adds r0, r1, r3 strh r0, [r2] _080BCE1C: adds r0, r5, r6 lsls r0, 3 mov r2, r9 adds r1, r0, r2 ldrh r2, [r1, 0xC] movs r3, 0xC ldrsh r0, [r1, r3] cmp r0, 0 beq _080BCE32 subs r0, r2, 0x2 strh r0, [r1, 0xC] _080BCE32: movs r3, 0 ldr r0, _080BCED4 @ =gScanlineEffect mov r12, r0 ldr r2, _080BCED8 @ =gScanlineEffectRegBuffers mov r8, r2 mov r7, r12 adds r4, r1, 0 _080BCE40: 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 _080BCE40 cmp r3, 0x9F bgt _080BCE84 ldr r0, _080BCED8 @ =gScanlineEffectRegBuffers mov r8, r0 ldr r7, _080BCED4 @ =gScanlineEffect ldr r1, _080BCEDC @ =gTasks adds r0, r5, r6 lsls r0, 3 adds r4, r0, r1 _080BCE6A: 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 _080BCE6A _080BCE84: adds r0, r5, r6 lsls r0, 3 mov r2, r9 adds r1, r0, r2 movs r3, 0xC ldrsh r0, [r1, r3] cmp r0, 0 bne _080BCEE6 movs r0, 0x3 mov r2, r12 strb r0, [r2, 0x15] ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] movs r0, 0x1 movs r1, 0x1 movs r2, 0 bl SetBgAttribute movs r0, 0x2 movs r1, 0x1 movs r2, 0 bl SetBgAttribute movs r1, 0x9C lsls r1, 8 movs r0, 0xA bl SetGpuReg movs r1, 0xBC lsls r1, 7 movs r0, 0xC bl SetGpuReg b _080BCEE6 .align 2, 0 _080BCECC: .4byte gUnknown_2022986 _080BCED0: .4byte 0xfffffc04 _080BCED4: .4byte gScanlineEffect _080BCED8: .4byte gScanlineEffectRegBuffers _080BCEDC: .4byte gTasks _080BCEE0: adds r0, r6, 0 bl sub_80BC41C _080BCEE6: add sp, 0x8 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80BCC4C thumb_func_start sub_80BCEF4 sub_80BCEF4: @ 80BCEF4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 str r0, [sp] adds r6, r2, 0 adds r4, r3, 0 ldr r0, [sp, 0x24] ldr r7, [sp, 0x28] ldr r2, [sp, 0x2C] mov r9, r2 ldr r5, [sp, 0x30] lsls r1, 24 lsrs r1, 24 mov r8, r1 lsls r6, 24 lsrs r6, 24 lsls r4, 24 lsrs r4, 24 lsls r0, 24 lsrs r0, 24 mov r10, r0 lsls r5, 16 lsrs r5, 16 adds r0, r4, 0 bl GetBattlerAtPosition lsls r0, 24 lsrs r0, 24 ldr r1, _080BCFC4 @ =gMonSpritesGfxPtr ldr r2, [r1] lsls r4, 2 adds r2, 0x4 adds r2, r4 ldr r1, _080BCFC8 @ =gBattleMonForms adds r0, r1 ldrb r1, [r0] lsls r1, 11 ldr r0, [r2] adds r0, r1 movs r2, 0x80 lsls r2, 3 adds r1, r7, 0 bl CpuSet ldr r1, [sp] lsls r0, r1, 24 lsrs r0, 24 movs r2, 0x80 lsls r2, 5 adds r1, r7, 0 adds r3, r5, 0 bl LoadBgTiles adds r0, r6, 0 adds r0, 0x8 cmp r6, r0 bge _080BCFA0 mov r12, r0 mov r2, r8 lsls r7, r2, 1 _080BCF72: mov r1, r8 adds r2, r1, 0 adds r2, 0x8 adds r4, r6, 0x1 cmp r1, r2 bge _080BCF9A mov r0, r10 lsls r3, r0, 12 lsls r0, r6, 6 add r0, r9 adds r6, r7, r0 subs r1, r2, r1 _080BCF8A: adds r0, r5, 0 orrs r0, r3 strh r0, [r6] adds r5, 0x1 adds r6, 0x2 subs r1, 0x1 cmp r1, 0 bne _080BCF8A _080BCF9A: adds r6, r4, 0 cmp r6, r12 blt _080BCF72 _080BCFA0: ldr r1, [sp] lsls r0, r1, 24 lsrs r0, 24 movs r2, 0x80 lsls r2, 4 mov r1, r9 movs r3, 0 bl LoadBgTilemap 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 _080BCFC4: .4byte gMonSpritesGfxPtr _080BCFC8: .4byte gBattleMonForms thumb_func_end sub_80BCEF4 thumb_func_start sub_80BCFCC sub_80BCFCC: @ 80BCFCC 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, _080BD090 @ =0x040000d4 ldr r0, _080BD094 @ =gMonSpritesGfxPtr ldr r0, [r0] lsrs r2, 22 adds r0, 0x4 adds r0, r2 lsrs r3, 13 ldr r0, [r0] adds r0, r3 str r0, [r4] movs r0, 0xC0 lsls r0, 19 adds r6, r0 str r6, [r4, 0x4] ldr r0, _080BD098 @ =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 _080BD080 mov r9, r1 mov r7, r12 lsls r7, 1 mov r8, r7 lsls r5, 11 str r5, [sp] _080BD048: mov r2, r12 adds r3, r2, 0 adds r3, 0x8 adds r5, r0, 0x1 cmp r2, r3 bge _080BD07A 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 _080BD06A: adds r0, r4, 0 orrs r0, r6 strh r0, [r1] adds r4, 0x1 adds r1, 0x2 subs r2, 0x1 cmp r2, 0 bne _080BD06A _080BD07A: adds r0, r5, 0 cmp r0, r9 blt _080BD048 _080BD080: 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 _080BD090: .4byte 0x040000d4 _080BD094: .4byte gMonSpritesGfxPtr _080BD098: .4byte 0x80000400 thumb_func_end sub_80BCFCC .align 2, 0 @ Don't pad with nop.