.include "constants/gba_constants.inc" .include "constants/species_constants.inc" .include "asm/macros.inc" .syntax unified .text thumb_func_start unref_sub_812AECC unref_sub_812AECC: @ 812AECC push {lr} bl RunMysteryEventScript lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 cmp r0, 0x1 beq _0812AEEA cmp r0, 0x1 ble _0812AF08 cmp r1, 0x2 beq _0812AEF4 cmp r1, 0x3 beq _0812AEFA b _0812AF08 _0812AEEA: movs r0, 0x16 bl PlaySE movs r0, 0x1 b _0812AF0A _0812AEF4: bl sub_812AF10 b _0812AF08 _0812AEFA: movs r0, 0x16 bl PlaySE bl sub_812AF10 movs r0, 0x1 b _0812AF0A _0812AF08: movs r0, 0 _0812AF0A: pop {r1} bx r1 thumb_func_end unref_sub_812AECC thumb_func_start sub_812AF10 sub_812AF10: @ 812AF10 push {lr} movs r0, 0x2 movs r1, 0xE movs r2, 0x1B movs r3, 0x13 bl MenuDrawTextWindow ldr r0, _0812AF2C @ =gStringVar4 movs r1, 0x3 movs r2, 0xF bl MenuPrint pop {r0} bx r0 .align 2, 0 _0812AF2C: .4byte gStringVar4 thumb_func_end sub_812AF10 thumb_func_start sub_812AF30 sub_812AF30: @ 812AF30 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0812AF8C @ =gTasks lsls r6, r0, 2 adds r6, r0 lsls r6, 3 adds r6, r1 ldr r1, _0812AF90 @ =gBattleAnimArgs ldrh r0, [r1] strh r0, [r6, 0x8] ldrh r0, [r1, 0x2] strh r0, [r6, 0xA] movs r0, 0x40 negs r0, r0 bl sub_8076F98 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x3F bl sub_8076F98 adds r5, r0, 0 lsls r4, 24 asrs r4, 24 lsls r5, 24 asrs r5, 24 adds r0, r4, 0 adds r1, r5, 0 movs r2, 0x2 bl sub_807712C strh r4, [r6, 0xC] strh r5, [r6, 0xE] lsls r0, 24 asrs r0, 24 strh r0, [r6, 0x10] movs r0, 0xA strh r0, [r6, 0x1C] ldr r0, _0812AF94 @ =sub_812AF98 str r0, [r6] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0812AF8C: .4byte gTasks _0812AF90: .4byte gBattleAnimArgs _0812AF94: .4byte sub_812AF98 thumb_func_end sub_812AF30 thumb_func_start sub_812AF98 sub_812AF98: @ 812AF98 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0812AFC8 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 ldrh r5, [r4, 0xC] ldrb r6, [r4, 0x10] ldrh r0, [r4, 0x1E] adds r0, 0x1 movs r1, 0 strh r0, [r4, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0x6F bne _0812AFD0 movs r0, 0x5 strh r0, [r4, 0x1C] strh r1, [r4, 0x1E] ldr r0, _0812AFCC @ =sub_812B004 str r0, [r4] b _0812AFFE .align 2, 0 _0812AFC8: .4byte gTasks _0812AFCC: .4byte sub_812B004 _0812AFD0: ldrh r0, [r4, 0x1C] adds r0, 0x1 strh r0, [r4, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0xB bne _0812AFEA strh r1, [r4, 0x1C] ldrh r0, [r4, 0x8] lsls r1, r5, 24 asrs r1, 24 bl PlaySE12WithPanning _0812AFEA: lsls r1, r6, 24 asrs r1, 24 lsls r0, r5, 16 asrs r0, 16 adds r0, r1 lsls r0, 16 asrs r0, 16 bl sub_8077104 strh r0, [r4, 0xC] _0812AFFE: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_812AF98 thumb_func_start sub_812B004 sub_812B004: @ 812B004 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _0812B054 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 ldrh r0, [r4, 0x1C] adds r0, 0x1 strh r0, [r4, 0x1C] lsls r0, 16 asrs r0, 16 cmp r0, 0x6 bne _0812B04C movs r0, 0 strh r0, [r4, 0x1C] movs r0, 0x3F bl sub_8076F98 adds r1, r0, 0 ldrh r0, [r4, 0xA] lsls r1, 24 asrs r1, 24 bl PlaySE12WithPanning ldrh r0, [r4, 0x1E] adds r0, 0x1 strh r0, [r4, 0x1E] lsls r0, 16 asrs r0, 16 cmp r0, 0x2 bne _0812B04C adds r0, r5, 0 bl DestroyAnimSoundTask _0812B04C: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0812B054: .4byte gTasks thumb_func_end sub_812B004 thumb_func_start sub_812B058 sub_812B058: @ 812B058 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 mov r8, r0 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r0, _0812B0FC @ =gBattleAnimArgs ldrh r1, [r0] str r1, [sp] ldrb r5, [r0, 0x4] ldrb r6, [r0, 0x6] ldrb r3, [r0, 0x8] mov r10, r3 ldrb r7, [r0, 0xA] ldrb r1, [r0, 0xC] mov r9, r1 ldrb r0, [r0, 0x2] lsls r0, 24 asrs r0, 24 bl sub_8076F98 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 lsls r5, 24 asrs r5, 24 adds r0, r5, 0 bl sub_8076F98 adds r5, r0, 0 lsls r4, 24 asrs r4, 24 lsls r5, 24 asrs r5, 24 lsls r6, 24 asrs r6, 24 adds r0, r4, 0 adds r1, r5, 0 adds r2, r6, 0 bl sub_807712C ldr r2, _0812B100 @ =gTasks mov r3, r8 lsls r1, r3, 2 add r1, r8 lsls r1, 3 adds r1, r2 movs r2, 0 mov r6, sp ldrh r6, [r6] strh r6, [r1, 0x8] strh r4, [r1, 0xA] strh r5, [r1, 0xC] lsls r0, 24 asrs r0, 24 strh r0, [r1, 0xE] mov r0, r10 strh r0, [r1, 0x10] strh r7, [r1, 0x12] mov r3, r9 strh r3, [r1, 0x14] strh r2, [r1, 0x1C] strh r4, [r1, 0x1E] strh r3, [r1, 0x20] ldr r2, _0812B104 @ =sub_812B108 str r2, [r1] mov r0, r8 bl _call_via_r2 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 _0812B0FC: .4byte gBattleAnimArgs _0812B100: .4byte gTasks _0812B104: .4byte sub_812B108 thumb_func_end sub_812B058 thumb_func_start sub_812B108 sub_812B108: @ 812B108 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, _0812B14C @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 ldrh r0, [r4, 0x20] adds r1, r0, 0x1 strh r1, [r4, 0x20] lsls r0, 16 asrs r0, 16 movs r2, 0x14 ldrsh r1, [r4, r2] cmp r0, r1 bne _0812B150 movs r0, 0 strh r0, [r4, 0x20] ldrh r0, [r4, 0x8] movs r1, 0x1E ldrsb r1, [r4, r1] bl PlaySE12WithPanning ldrh r0, [r4, 0x10] subs r0, 0x1 strh r0, [r4, 0x10] lsls r0, 16 cmp r0, 0 bne _0812B150 adds r0, r5, 0 bl DestroyAnimSoundTask b _0812B182 .align 2, 0 _0812B14C: .4byte gTasks _0812B150: ldr r1, _0812B188 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 ldrh r0, [r4, 0x1C] adds r1, r0, 0x1 strh r1, [r4, 0x1C] lsls r0, 16 asrs r0, 16 movs r2, 0x12 ldrsh r1, [r4, r2] cmp r0, r1 bne _0812B182 movs r0, 0 strh r0, [r4, 0x1C] ldrh r0, [r4, 0xE] ldrh r1, [r4, 0x1E] adds r0, r1 strh r0, [r4, 0x1E] movs r2, 0x1E ldrsh r0, [r4, r2] bl sub_8077104 strh r0, [r4, 0x1E] _0812B182: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0812B188: .4byte gTasks thumb_func_end sub_812B108 thumb_func_start sub_812B18C sub_812B18C: @ 812B18C push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 movs r4, 0 movs r0, 0x40 negs r0, r0 bl sub_8076F98 lsls r0, 24 lsrs r6, r0, 24 bl IsContest lsls r0, 24 cmp r0, 0 beq _0812B1CC ldr r0, _0812B1BC @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bne _0812B1C4 ldr r0, _0812B1C0 @ =0x02019348 ldrh r4, [r0] b _0812B272 .align 2, 0 _0812B1BC: .4byte gBattleAnimArgs _0812B1C0: .4byte 0x02019348 _0812B1C4: adds r0, r5, 0 bl DestroyAnimVisualTask b _0812B272 _0812B1CC: ldr r0, _0812B1E0 @ =gBattleAnimArgs movs r2, 0 ldrsh r1, [r0, r2] adds r2, r0, 0 cmp r1, 0 bne _0812B1E8 ldr r0, _0812B1E4 @ =gBattleAnimBankAttacker ldrb r4, [r0] b _0812B20E .align 2, 0 _0812B1E0: .4byte gBattleAnimArgs _0812B1E4: .4byte gBattleAnimBankAttacker _0812B1E8: cmp r1, 0x1 bne _0812B1F8 ldr r0, _0812B1F4 @ =gBattleAnimBankTarget ldrb r4, [r0] b _0812B20E .align 2, 0 _0812B1F4: .4byte gBattleAnimBankTarget _0812B1F8: cmp r1, 0x2 bne _0812B204 ldr r0, _0812B200 @ =gBattleAnimBankAttacker b _0812B206 .align 2, 0 _0812B200: .4byte gBattleAnimBankAttacker _0812B204: ldr r0, _0812B230 @ =gBattleAnimBankTarget _0812B206: ldrb r1, [r0] movs r0, 0x2 adds r4, r0, 0 eors r4, r1 _0812B20E: movs r1, 0 ldrsh r0, [r2, r1] cmp r0, 0x1 beq _0812B21A cmp r0, 0x3 bne _0812B234 _0812B21A: adds r0, r4, 0 bl IsAnimBankSpriteVisible lsls r0, 24 cmp r0, 0 bne _0812B234 adds r0, r5, 0 bl DestroyAnimVisualTask b _0812B2B0 .align 2, 0 _0812B230: .4byte gBattleAnimBankTarget _0812B234: adds r0, r4, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 beq _0812B258 ldr r1, _0812B250 @ =gBattlePartyID lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0812B254 @ =gEnemyParty b _0812B266 .align 2, 0 _0812B250: .4byte gBattlePartyID _0812B254: .4byte gEnemyParty _0812B258: ldr r1, _0812B290 @ =gBattlePartyID lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0812B294 @ =gPlayerParty _0812B266: adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r4, r0, 16 _0812B272: cmp r4, 0 beq _0812B2AA ldr r0, _0812B298 @ =gBattleAnimArgs ldrh r2, [r0, 0x2] movs r1, 0x2 ldrsh r0, [r0, r1] cmp r0, 0xFF bne _0812B29C lsls r1, r6, 24 asrs r1, 24 adds r0, r4, 0 bl PlayCry1 b _0812B2AA .align 2, 0 _0812B290: .4byte gBattlePartyID _0812B294: .4byte gPlayerParty _0812B298: .4byte gBattleAnimArgs _0812B29C: lsls r1, r6, 24 asrs r1, 24 lsls r2, 24 lsrs r2, 24 adds r0, r4, 0 bl PlayCry3 _0812B2AA: adds r0, r5, 0 bl DestroyAnimVisualTask _0812B2B0: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_812B18C thumb_func_start sub_812B2B8 sub_812B2B8: @ 812B2B8 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 movs r0, 0x40 negs r0, r0 bl sub_8076F98 lsls r0, 24 lsrs r4, r0, 24 bl IsContest lsls r0, 24 cmp r0, 0 beq _0812B2DC ldr r0, _0812B2D8 @ =0x02019348 b _0812B2E6 .align 2, 0 _0812B2D8: .4byte 0x02019348 _0812B2DC: ldr r1, _0812B304 @ =gUnknown_0202F7CA ldr r0, _0812B308 @ =gBattleAnimBankAttacker ldrb r0, [r0] lsls r0, 1 adds r0, r1 _0812B2E6: ldrh r0, [r0] cmp r0, 0 beq _0812B2F6 lsls r1, r4, 24 asrs r1, 24 movs r2, 0x4 bl PlayCry3 _0812B2F6: adds r0, r5, 0 bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0812B304: .4byte gUnknown_0202F7CA _0812B308: .4byte gBattleAnimBankAttacker thumb_func_end sub_812B2B8 thumb_func_start sub_812B30C sub_812B30C: @ 812B30C push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _0812B33C @ =gBattleAnimArgs ldrh r5, [r0] ldrb r0, [r0, 0x2] lsls r0, 24 asrs r0, 24 bl sub_8076F98 adds r1, r0, 0 lsls r1, 24 asrs r1, 24 adds r0, r5, 0 bl PlaySE1WithPanning adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0812B33C: .4byte gBattleAnimArgs thumb_func_end sub_812B30C thumb_func_start sub_812B340 sub_812B340: @ 812B340 push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _0812B370 @ =gBattleAnimArgs ldrh r5, [r0] ldrb r0, [r0, 0x2] lsls r0, 24 asrs r0, 24 bl sub_8076F98 adds r1, r0, 0 lsls r1, 24 asrs r1, 24 adds r0, r5, 0 bl PlaySE2WithPanning adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0812B370: .4byte gBattleAnimArgs thumb_func_end sub_812B340 thumb_func_start sub_812B374 sub_812B374: @ 812B374 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} mov r8, r0 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r0, _0812B3F8 @ =gBattleAnimArgs ldrb r5, [r0, 0x2] ldrb r6, [r0, 0x4] ldrh r1, [r0, 0x6] mov r9, r1 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 bl sub_8076F98 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 lsls r5, 24 asrs r5, 24 adds r0, r5, 0 bl sub_8076F98 adds r5, r0, 0 lsls r4, 24 asrs r4, 24 lsls r5, 24 asrs r5, 24 lsls r6, 24 asrs r6, 24 adds r0, r4, 0 adds r1, r5, 0 adds r2, r6, 0 bl sub_807712C ldr r2, _0812B3FC @ =gTasks mov r3, r8 lsls r1, r3, 2 add r1, r8 lsls r1, 3 adds r1, r2 movs r2, 0 strh r4, [r1, 0xA] strh r5, [r1, 0xC] lsls r0, 24 asrs r0, 24 strh r0, [r1, 0xE] mov r0, r9 strh r0, [r1, 0x12] strh r2, [r1, 0x1C] strh r4, [r1, 0x1E] ldr r2, _0812B400 @ =sub_812B404 str r2, [r1] mov r0, r8 bl _call_via_r2 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0812B3F8: .4byte gBattleAnimArgs _0812B3FC: .4byte gTasks _0812B400: .4byte sub_812B404 thumb_func_end sub_812B374 thumb_func_start sub_812B404 sub_812B404: @ 812B404 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r1, _0812B45C @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 ldrh r2, [r4, 0xE] ldrh r0, [r4, 0x1C] adds r1, r0, 0x1 strh r1, [r4, 0x1C] lsls r0, 16 asrs r0, 16 movs r3, 0x12 ldrsh r1, [r4, r3] cmp r0, r1 bne _0812B43E movs r0, 0 strh r0, [r4, 0x1C] ldrh r1, [r4, 0x1E] adds r0, r2, r1 strh r0, [r4, 0x1E] movs r2, 0x1E ldrsh r0, [r4, r2] bl sub_8077104 strh r0, [r4, 0x1E] _0812B43E: ldr r1, _0812B460 @ =gUnknown_0202F7D2 ldrh r0, [r4, 0x1E] strb r0, [r1] movs r3, 0x1E ldrsh r1, [r4, r3] movs r2, 0xC ldrsh r0, [r4, r2] cmp r1, r0 bne _0812B456 adds r0, r5, 0 bl DestroyAnimVisualTask _0812B456: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0812B45C: .4byte gTasks _0812B460: .4byte gUnknown_0202F7D2 thumb_func_end sub_812B404 .align 2, 0 @ Don't pad with nop.