.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_800D230 sub_800D230: @ 800D230 push {lr} ldr r0, _0800D268 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _0800D262 ldr r0, _0800D26C @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 beq _0800D24A bl sub_800B1F4 _0800D24A: ldr r0, _0800D270 @ =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0800D256 bl sub_8009804 _0800D256: ldr r0, _0800D274 @ =sub_8081A90 movs r1, 0 bl CreateTask bl CreateTasksForSendRecvLinkBuffers _0800D262: pop {r0} bx r0 .align 2, 0 _0800D268: .4byte gBattleTypeFlags _0800D26C: .4byte gWirelessCommType _0800D270: .4byte gReceivedRemoteLinkPlayers _0800D274: .4byte sub_8081A90 thumb_func_end sub_800D230 thumb_func_start sub_800D278 sub_800D278: @ 800D278 push {r4-r7,lr} mov r7, r8 push {r7} ldr r1, _0800D2E4 @ =gUnknown_3004F84 ldr r0, _0800D2E8 @ =nullsub_12 str r0, [r1] movs r2, 0 ldr r0, _0800D2EC @ =nullsub_13 mov r8, r0 movs r3, 0 ldr r1, _0800D2F0 @ =gUnknown_3004FE0 mov r12, r1 ldr r7, _0800D2F4 @ =gUnknown_2023BD6 movs r6, 0xFF ldr r5, _0800D2F8 @ =gUnknown_2023FF8 ldr r4, _0800D2FC @ =gUnknown_2023FFC _0800D298: mov r0, r8 mov r1, r12 adds r1, 0x4 mov r12, r1 subs r1, 0x4 stm r1!, {r0} adds r1, r2, r7 ldrb r0, [r1] orrs r0, r6 strb r0, [r1] adds r0, r2, r5 strb r3, [r0] adds r0, r2, r4 strb r3, [r0] adds r2, 0x1 cmp r2, 0x3 ble _0800D298 bl sub_800D230 ldr r0, _0800D300 @ =gUnknown_2023BC8 movs r4, 0 str r4, [r0] bl ClearBattleAnimationVars bl ClearBattleMonForms bl BattleAI_HandleItemUseBeforeAISetup ldr r0, _0800D304 @ =gUnknown_2022B54 str r4, [r0] ldr r0, _0800D308 @ =gUnknown_2023DDC strb r4, [r0] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800D2E4: .4byte gUnknown_3004F84 _0800D2E8: .4byte nullsub_12 _0800D2EC: .4byte nullsub_13 _0800D2F0: .4byte gUnknown_3004FE0 _0800D2F4: .4byte gUnknown_2023BD6 _0800D2F8: .4byte gUnknown_2023FF8 _0800D2FC: .4byte gUnknown_2023FFC _0800D300: .4byte gUnknown_2023BC8 _0800D304: .4byte gUnknown_2022B54 _0800D308: .4byte gUnknown_2023DDC thumb_func_end sub_800D278 thumb_func_start sub_800D30C sub_800D30C: @ 800D30C push {r4,r5,lr} ldr r0, _0800D320 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _0800D324 bl sub_800D494 b _0800D328 .align 2, 0 _0800D320: .4byte gBattleTypeFlags _0800D324: bl sub_800D364 _0800D328: bl sub_800D768 ldr r0, _0800D35C @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 bne _0800D356 movs r4, 0 ldr r0, _0800D360 @ =gBattlersCount ldrb r1, [r0] cmp r4, r1 bge _0800D356 adds r5, r0, 0 _0800D344: lsls r0, r4, 24 lsrs r0, 24 movs r1, 0 bl sub_8127DA8 adds r4, 0x1 ldrb r0, [r5] cmp r4, r0 blt _0800D344 _0800D356: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800D35C: .4byte gBattleTypeFlags _0800D360: .4byte gBattlersCount thumb_func_end sub_800D30C thumb_func_start sub_800D364 sub_800D364: @ 800D364 push {r4,lr} ldr r0, _0800D398 @ =gBattleTypeFlags ldr r2, [r0] movs r4, 0x1 adds r3, r2, 0 ands r3, r4 cmp r3, 0 bne _0800D414 ldr r1, _0800D39C @ =gUnknown_3004F84 ldr r0, _0800D3A0 @ =sub_80123C0 str r0, [r1] movs r0, 0x80 lsls r0, 9 ands r0, r2 cmp r0, 0 beq _0800D3B4 ldr r2, _0800D3A4 @ =gUnknown_3004FE0 ldr r1, _0800D3A8 @ =sub_81560A4 str r1, [r2] ldr r0, _0800D3AC @ =gUnknown_2023BD6 strb r3, [r0] str r1, [r2, 0x4] strb r4, [r0, 0x1] ldr r1, _0800D3B0 @ =gBattlersCount movs r0, 0x2 b _0800D478 .align 2, 0 _0800D398: .4byte gBattleTypeFlags _0800D39C: .4byte gUnknown_3004F84 _0800D3A0: .4byte sub_80123C0 _0800D3A4: .4byte gUnknown_3004FE0 _0800D3A8: .4byte sub_81560A4 _0800D3AC: .4byte gUnknown_2023BD6 _0800D3B0: .4byte gBattlersCount _0800D3B4: movs r0, 0x80 ands r0, r2 cmp r0, 0 beq _0800D3CC ldr r1, _0800D3C4 @ =gUnknown_3004FE0 ldr r0, _0800D3C8 @ =sub_80DD538 b _0800D3E8 .align 2, 0 _0800D3C4: .4byte gUnknown_3004FE0 _0800D3C8: .4byte sub_80DD538 _0800D3CC: movs r0, 0x84 lsls r0, 2 ands r2, r0 cmp r2, 0 beq _0800D3E4 ldr r1, _0800D3DC @ =gUnknown_3004FE0 ldr r0, _0800D3E0 @ =sub_80E75B0 b _0800D3E8 .align 2, 0 _0800D3DC: .4byte gUnknown_3004FE0 _0800D3E0: .4byte sub_80E75B0 _0800D3E4: ldr r1, _0800D400 @ =gUnknown_3004FE0 ldr r0, _0800D404 @ =SetBankFuncToPlayerBufferRunCommand _0800D3E8: str r0, [r1] adds r2, r1, 0 ldr r1, _0800D408 @ =gUnknown_2023BD6 movs r0, 0 strb r0, [r1] ldr r0, _0800D40C @ =sub_8035A7C str r0, [r2, 0x4] movs r0, 0x1 strb r0, [r1, 0x1] ldr r1, _0800D410 @ =gBattlersCount movs r0, 0x2 b _0800D478 .align 2, 0 _0800D400: .4byte gUnknown_3004FE0 _0800D404: .4byte SetBankFuncToPlayerBufferRunCommand _0800D408: .4byte gUnknown_2023BD6 _0800D40C: .4byte sub_8035A7C _0800D410: .4byte gBattlersCount _0800D414: ldr r1, _0800D444 @ =gUnknown_3004F84 ldr r0, _0800D448 @ =sub_80123C0 str r0, [r1] movs r3, 0x80 lsls r3, 9 ands r3, r2 cmp r3, 0 beq _0800D458 ldr r3, _0800D44C @ =gUnknown_3004FE0 ldr r1, _0800D450 @ =sub_81560A4 str r1, [r3] ldr r2, _0800D454 @ =gUnknown_2023BD6 movs r0, 0 strb r0, [r2] str r1, [r3, 0x4] strb r4, [r2, 0x1] str r1, [r3, 0x8] movs r0, 0x2 strb r0, [r2, 0x2] str r1, [r3, 0xC] movs r0, 0x3 strb r0, [r2, 0x3] b _0800D474 .align 2, 0 _0800D444: .4byte gUnknown_3004F84 _0800D448: .4byte sub_80123C0 _0800D44C: .4byte gUnknown_3004FE0 _0800D450: .4byte sub_81560A4 _0800D454: .4byte gUnknown_2023BD6 _0800D458: ldr r2, _0800D480 @ =gUnknown_3004FE0 ldr r0, _0800D484 @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2] ldr r1, _0800D488 @ =gUnknown_2023BD6 strb r3, [r1] ldr r3, _0800D48C @ =sub_8035A7C str r3, [r2, 0x4] strb r4, [r1, 0x1] str r0, [r2, 0x8] movs r0, 0x2 strb r0, [r1, 0x2] str r3, [r2, 0xC] movs r0, 0x3 strb r0, [r1, 0x3] _0800D474: ldr r1, _0800D490 @ =gBattlersCount movs r0, 0x4 _0800D478: strb r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0800D480: .4byte gUnknown_3004FE0 _0800D484: .4byte SetBankFuncToPlayerBufferRunCommand _0800D488: .4byte gUnknown_2023BD6 _0800D48C: .4byte sub_8035A7C _0800D490: .4byte gBattlersCount thumb_func_end sub_800D364 thumb_func_start sub_800D494 sub_800D494: @ 800D494 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r4, _0800D4D0 @ =gBattleTypeFlags ldr r0, [r4] movs r5, 0x1 adds r3, r0, 0 ands r3, r5 cmp r3, 0 bne _0800D51C movs r4, 0x4 ands r4, r0 cmp r4, 0 beq _0800D4F0 ldr r1, _0800D4D4 @ =gUnknown_3004F84 ldr r0, _0800D4D8 @ =sub_80123C0 str r0, [r1] ldr r2, _0800D4DC @ =gUnknown_3004FE0 ldr r0, _0800D4E0 @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2] ldr r1, _0800D4E4 @ =gUnknown_2023BD6 strb r3, [r1] ldr r0, _0800D4E8 @ =sub_803A668 str r0, [r2, 0x4] strb r5, [r1, 0x1] ldr r1, _0800D4EC @ =gBattlersCount movs r0, 0x2 b _0800D752 .align 2, 0 _0800D4D0: .4byte gBattleTypeFlags _0800D4D4: .4byte gUnknown_3004F84 _0800D4D8: .4byte sub_80123C0 _0800D4DC: .4byte gUnknown_3004FE0 _0800D4E0: .4byte SetBankFuncToPlayerBufferRunCommand _0800D4E4: .4byte gUnknown_2023BD6 _0800D4E8: .4byte sub_803A668 _0800D4EC: .4byte gBattlersCount _0800D4F0: ldr r2, _0800D508 @ =gUnknown_3004FE0 ldr r0, _0800D50C @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2, 0x4] ldr r1, _0800D510 @ =gUnknown_2023BD6 strb r4, [r1, 0x1] ldr r0, _0800D514 @ =sub_803A668 str r0, [r2] strb r5, [r1] ldr r1, _0800D518 @ =gBattlersCount movs r0, 0x2 b _0800D752 .align 2, 0 _0800D508: .4byte gUnknown_3004FE0 _0800D50C: .4byte SetBankFuncToPlayerBufferRunCommand _0800D510: .4byte gUnknown_2023BD6 _0800D514: .4byte sub_803A668 _0800D518: .4byte gBattlersCount _0800D51C: movs r5, 0x41 ands r5, r0 cmp r5, 0x1 bne _0800D5A4 movs r6, 0x4 adds r3, r6, 0 ands r3, r0 cmp r3, 0 beq _0800D56C ldr r1, _0800D554 @ =gUnknown_3004F84 ldr r0, _0800D558 @ =sub_80123C0 str r0, [r1] ldr r2, _0800D55C @ =gUnknown_3004FE0 ldr r4, _0800D560 @ =SetBankFuncToPlayerBufferRunCommand str r4, [r2] ldr r1, _0800D564 @ =gUnknown_2023BD6 movs r0, 0 strb r0, [r1] ldr r3, _0800D568 @ =sub_803A668 str r3, [r2, 0x4] strb r5, [r1, 0x1] str r4, [r2, 0x8] movs r0, 0x2 strb r0, [r1, 0x2] str r3, [r2, 0xC] movs r0, 0x3 strb r0, [r1, 0x3] b _0800D588 .align 2, 0 _0800D554: .4byte gUnknown_3004F84 _0800D558: .4byte sub_80123C0 _0800D55C: .4byte gUnknown_3004FE0 _0800D560: .4byte SetBankFuncToPlayerBufferRunCommand _0800D564: .4byte gUnknown_2023BD6 _0800D568: .4byte sub_803A668 _0800D56C: ldr r2, _0800D590 @ =gUnknown_3004FE0 ldr r0, _0800D594 @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2, 0x4] ldr r1, _0800D598 @ =gUnknown_2023BD6 strb r3, [r1, 0x1] ldr r3, _0800D59C @ =sub_803A668 str r3, [r2] strb r5, [r1] str r0, [r2, 0xC] movs r0, 0x2 strb r0, [r1, 0x3] str r3, [r2, 0x8] movs r0, 0x3 strb r0, [r1, 0x2] _0800D588: ldr r0, _0800D5A0 @ =gBattlersCount strb r6, [r0] b _0800D754 .align 2, 0 _0800D590: .4byte gUnknown_3004FE0 _0800D594: .4byte SetBankFuncToPlayerBufferRunCommand _0800D598: .4byte gUnknown_2023BD6 _0800D59C: .4byte sub_803A668 _0800D5A0: .4byte gBattlersCount _0800D5A4: bl GetMultiplayerId lsls r0, 24 lsrs r5, r0, 24 ldr r0, [r4] movs r1, 0x4 ands r0, r1 cmp r0, 0 beq _0800D5BC ldr r1, _0800D5E4 @ =gUnknown_3004F84 ldr r0, _0800D5E8 @ =sub_80123C0 str r0, [r1] _0800D5BC: movs r0, 0 mov r10, r0 ldr r1, _0800D5EC @ =gLinkPlayers mov r12, r1 ldr r7, _0800D5F0 @ =gUnknown_2023BD6 mov r8, r0 ldr r6, _0800D5F4 @ =gBattlerPartyIndexes movs r4, 0 movs r2, 0x3 mov r9, r2 _0800D5D0: mov r1, r12 adds r0, r4, r1 ldrh r0, [r0, 0x18] cmp r0, 0x2 bgt _0800D5F8 cmp r0, 0x1 bge _0800D610 cmp r0, 0 beq _0800D5FC b _0800D61A .align 2, 0 _0800D5E4: .4byte gUnknown_3004F84 _0800D5E8: .4byte sub_80123C0 _0800D5EC: .4byte gLinkPlayers _0800D5F0: .4byte gUnknown_2023BD6 _0800D5F4: .4byte gBattlerPartyIndexes _0800D5F8: cmp r0, 0x3 bne _0800D61A _0800D5FC: ldr r0, _0800D60C @ =gLinkPlayers adds r0, r4, r0 ldrb r0, [r0, 0x18] movs r1, 0 bl sub_8127DA8 b _0800D61A .align 2, 0 _0800D60C: .4byte gLinkPlayers _0800D610: lsls r0, 24 lsrs r0, 24 movs r1, 0x1 bl sub_8127DA8 _0800D61A: cmp r10, r5 bne _0800D66A ldr r0, _0800D640 @ =gLinkPlayers adds r3, r4, r0 ldrh r1, [r3, 0x18] lsls r1, 2 ldr r2, _0800D644 @ =gUnknown_3004FE0 adds r1, r2 ldr r2, _0800D648 @ =SetBankFuncToPlayerBufferRunCommand str r2, [r1] ldrh r1, [r3, 0x18] mov r12, r0 cmp r1, 0x2 bgt _0800D64C cmp r1, 0x1 bge _0800D660 cmp r1, 0 beq _0800D650 b _0800D740 .align 2, 0 _0800D640: .4byte gLinkPlayers _0800D644: .4byte gUnknown_3004FE0 _0800D648: .4byte SetBankFuncToPlayerBufferRunCommand _0800D64C: cmp r1, 0x3 bne _0800D740 _0800D650: mov r1, r12 adds r0, r4, r1 ldrh r1, [r0, 0x18] adds r1, r7 mov r2, r8 strb r2, [r1] ldrh r0, [r0, 0x18] b _0800D726 _0800D660: adds r1, r7 movs r0, 0x2 strb r0, [r1] ldrh r0, [r3, 0x18] b _0800D738 _0800D66A: ldr r2, _0800D690 @ =gLinkPlayers adds r0, r4, r2 ldrh r1, [r0, 0x18] movs r3, 0x1 adds r0, r3, 0 ands r0, r1 mov r12, r2 cmp r0, 0 bne _0800D694 lsls r0, r5, 3 subs r0, r5 lsls r0, 2 add r0, r12 ldrh r1, [r0, 0x18] adds r0, r3, 0 ands r0, r1 cmp r0, 0 beq _0800D6A6 b _0800D6EC .align 2, 0 _0800D690: .4byte gLinkPlayers _0800D694: lsls r0, r5, 3 subs r0, r5 lsls r0, 2 add r0, r12 ldrh r1, [r0, 0x18] adds r0, r3, 0 ands r0, r1 cmp r0, 0 beq _0800D6EC _0800D6A6: mov r0, r12 adds r2, r4, r0 ldrh r0, [r2, 0x18] lsls r0, 2 ldr r1, _0800D6C8 @ =gUnknown_3004FE0 adds r0, r1 ldr r1, _0800D6CC @ =sub_80D4204 str r1, [r0] ldrh r1, [r2, 0x18] cmp r1, 0x2 bgt _0800D6D0 cmp r1, 0x1 bge _0800D6E4 cmp r1, 0 beq _0800D6D4 b _0800D740 .align 2, 0 _0800D6C8: .4byte gUnknown_3004FE0 _0800D6CC: .4byte sub_80D4204 _0800D6D0: cmp r1, 0x3 bne _0800D740 _0800D6D4: mov r2, r12 adds r0, r4, r2 ldrh r1, [r0, 0x18] adds r1, r7 mov r2, r8 strb r2, [r1] ldrh r0, [r0, 0x18] b _0800D726 _0800D6E4: adds r1, r7 movs r0, 0x2 strb r0, [r1] b _0800D736 _0800D6EC: mov r0, r12 adds r2, r4, r0 ldrh r0, [r2, 0x18] lsls r0, 2 ldr r1, _0800D70C @ =gUnknown_3004FE0 adds r0, r1 ldr r1, _0800D710 @ =sub_803A668 str r1, [r0] ldrh r0, [r2, 0x18] cmp r0, 0x2 bgt _0800D714 cmp r0, 0x1 bge _0800D730 cmp r0, 0 beq _0800D718 b _0800D740 .align 2, 0 _0800D70C: .4byte gUnknown_3004FE0 _0800D710: .4byte sub_803A668 _0800D714: cmp r0, 0x3 bne _0800D740 _0800D718: mov r0, r12 adds r2, r4, r0 ldrh r0, [r2, 0x18] adds r0, r7 movs r1, 0x1 strb r1, [r0] ldrh r0, [r2, 0x18] _0800D726: lsls r0, 1 adds r0, r6 mov r1, r8 strh r1, [r0] b _0800D740 _0800D730: adds r0, r7 mov r1, r9 strb r1, [r0] _0800D736: ldrh r0, [r2, 0x18] _0800D738: lsls r0, 1 adds r0, r6 mov r2, r9 strh r2, [r0] _0800D740: adds r4, 0x1C movs r0, 0x1 add r10, r0 mov r1, r10 cmp r1, 0x3 bgt _0800D74E b _0800D5D0 _0800D74E: ldr r1, _0800D764 @ =gBattlersCount movs r0, 0x4 _0800D752: strb r0, [r1] _0800D754: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800D764: .4byte gBattlersCount thumb_func_end sub_800D494 thumb_func_start sub_800D768 sub_800D768: @ 800D768 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, _0800D788 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _0800D780 b _0800D89C _0800D780: movs r0, 0 mov r8, r0 b _0800D892 .align 2, 0 _0800D788: .4byte gBattleTypeFlags _0800D78C: movs r5, 0 movs r0, 0x1 add r0, r8 mov r10, r0 ldr r0, _0800D7B8 @ =gUnknown_2023BD6 add r0, r8 mov r9, r0 mov r0, r8 lsls r6, r0, 1 movs r7, 0 _0800D7A0: mov r0, r8 cmp r0, 0x1 bgt _0800D808 mov r0, r9 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0800D7C0 ldr r0, _0800D7BC @ =gPlayerParty b _0800D7C2 .align 2, 0 _0800D7B8: .4byte gUnknown_2023BD6 _0800D7BC: .4byte gPlayerParty _0800D7C0: ldr r0, _0800D800 @ =gEnemyParty _0800D7C2: adds r4, r7, r0 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0800D888 adds r0, r4, 0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _0800D888 adds r0, r4, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _0800D888 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0800D888 ldr r0, _0800D804 @ =gBattlerPartyIndexes adds r0, r6, r0 strh r5, [r0] b _0800D890 .align 2, 0 _0800D800: .4byte gEnemyParty _0800D804: .4byte gBattlerPartyIndexes _0800D808: mov r0, r9 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0800D830 ldr r0, _0800D82C @ =gPlayerParty adds r4, r7, r0 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0800D888 adds r0, r4, 0 movs r1, 0xB b _0800D844 .align 2, 0 _0800D82C: .4byte gPlayerParty _0800D830: ldr r0, _0800D880 @ =gEnemyParty adds r4, r7, r0 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0800D888 adds r0, r4, 0 movs r1, 0x41 _0800D844: bl GetMonData cmp r0, 0 beq _0800D888 adds r0, r4, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _0800D888 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0800D888 ldr r1, _0800D884 @ =gBattlerPartyIndexes mov r0, r8 subs r0, 0x2 lsls r0, 1 adds r0, r1 ldrh r0, [r0] cmp r0, r5 beq _0800D888 adds r0, r6, r1 strh r5, [r0] b _0800D890 .align 2, 0 _0800D880: .4byte gEnemyParty _0800D884: .4byte gBattlerPartyIndexes _0800D888: adds r7, 0x64 adds r5, 0x1 cmp r5, 0x5 ble _0800D7A0 _0800D890: mov r8, r10 _0800D892: ldr r0, _0800D8AC @ =gBattlersCount ldrb r0, [r0] cmp r8, r0 bge _0800D89C b _0800D78C _0800D89C: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800D8AC: .4byte gBattlersCount thumb_func_end sub_800D768 thumb_func_start PrepareBufferDataTransfer PrepareBufferDataTransfer: @ 800D8B0 push {r4-r6,lr} adds r4, r1, 0 lsls r0, 24 lsrs r3, r0, 24 adds r5, r3, 0 lsls r2, 16 lsrs r2, 16 ldr r0, _0800D8D8 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _0800D8DC adds r0, r3, 0 adds r1, r2, 0 adds r2, r4, 0 bl PrepareBufferDataTransferLink b _0800D92E .align 2, 0 _0800D8D8: .4byte gBattleTypeFlags _0800D8DC: cmp r5, 0 beq _0800D8E6 cmp r5, 0x1 beq _0800D910 b _0800D92E _0800D8E6: movs r3, 0 cmp r3, r2 bge _0800D92E ldr r6, _0800D908 @ =gUnknown_2022BC4 ldr r5, _0800D90C @ =gActiveBattler _0800D8F0: ldrb r0, [r5] lsls r0, 9 adds r0, r3, r0 adds r0, r6 ldrb r1, [r4] strb r1, [r0] adds r4, 0x1 adds r3, 0x1 cmp r3, r2 blt _0800D8F0 b _0800D92E .align 2, 0 _0800D908: .4byte gUnknown_2022BC4 _0800D90C: .4byte gActiveBattler _0800D910: movs r3, 0 cmp r3, r2 bge _0800D92E ldr r6, _0800D934 @ =gUnknown_20233C4 ldr r5, _0800D938 @ =gActiveBattler _0800D91A: ldrb r0, [r5] lsls r0, 9 adds r0, r3, r0 adds r0, r6 ldrb r1, [r4] strb r1, [r0] adds r4, 0x1 adds r3, 0x1 cmp r3, r2 blt _0800D91A _0800D92E: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800D934: .4byte gUnknown_20233C4 _0800D938: .4byte gActiveBattler thumb_func_end PrepareBufferDataTransfer thumb_func_start CreateTasksForSendRecvLinkBuffers CreateTasksForSendRecvLinkBuffers: @ 800D93C push {r4-r6,lr} ldr r0, _0800D9D4 @ =sub_800DB6C movs r1, 0 bl CreateTask ldr r2, _0800D9D8 @ =gUnknown_202286C strb r0, [r2] ldr r5, _0800D9DC @ =gTasks ldrb r1, [r2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 movs r6, 0 movs r4, 0 strh r4, [r0, 0x1E] ldrb r1, [r2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 strh r4, [r0, 0x20] ldrb r1, [r2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 strh r4, [r0, 0x22] ldrb r1, [r2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 strh r4, [r0, 0x24] ldrb r1, [r2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 strh r4, [r0, 0x26] ldr r0, _0800D9E0 @ =Task_HandleCopyReceivedLinkBuffersData movs r1, 0 bl CreateTask ldr r2, _0800D9E4 @ =gUnknown_202286D strb r0, [r2] ldrb r1, [r2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 strh r4, [r0, 0x20] ldrb r1, [r2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 strh r4, [r0, 0x22] ldrb r1, [r2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 strh r4, [r0, 0x24] ldrb r1, [r2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 strh r4, [r0, 0x26] ldr r0, _0800D9E8 @ =gUnknown_202286E strb r6, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800D9D4: .4byte sub_800DB6C _0800D9D8: .4byte gUnknown_202286C _0800D9DC: .4byte gTasks _0800D9E0: .4byte Task_HandleCopyReceivedLinkBuffersData _0800D9E4: .4byte gUnknown_202286D _0800D9E8: .4byte gUnknown_202286E thumb_func_end CreateTasksForSendRecvLinkBuffers thumb_func_start PrepareBufferDataTransferLink PrepareBufferDataTransferLink: @ 800D9EC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} mov r9, r2 lsls r0, 24 lsrs r6, r0, 24 lsls r1, 16 lsrs r1, 16 mov r12, r1 movs r1, 0x3 mov r0, r12 bics r0, r1 adds r0, 0x4 mov r8, r0 ldr r2, _0800DB4C @ =gTasks ldr r3, _0800DB50 @ =gUnknown_202286C ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r4, r0, r2 movs r1, 0x24 ldrsh r0, [r4, r1] add r0, r8 adds r0, 0x9 movs r1, 0x80 lsls r1, 5 adds r5, r2, 0 cmp r0, r1 ble _0800DA3E ldrh r0, [r4, 0x24] movs r2, 0 strh r0, [r4, 0x20] ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 strh r2, [r0, 0x24] _0800DA3E: ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 movs r2, 0x24 ldrsh r1, [r0, r2] ldr r4, _0800DB54 @ =gUnknown_2023FEC ldr r0, [r4] adds r0, r1 strb r6, [r0] ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 movs r7, 0x24 ldrsh r1, [r0, r7] ldr r0, [r4] adds r1, r0 ldr r0, _0800DB58 @ =gActiveBattler ldrb r0, [r0] strb r0, [r1, 0x1] ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 movs r2, 0x24 ldrsh r1, [r0, r2] ldr r0, [r4] adds r1, r0 ldr r0, _0800DB5C @ =sBattler_AI ldrb r0, [r0] strb r0, [r1, 0x2] ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 movs r7, 0x24 ldrsh r1, [r0, r7] ldr r0, [r4] adds r1, r0 ldr r0, _0800DB60 @ =gBattlerTarget ldrb r0, [r0] strb r0, [r1, 0x3] ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 movs r1, 0x24 ldrsh r0, [r0, r1] ldr r1, [r4] adds r0, r1 mov r2, r8 strb r2, [r0, 0x4] ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 movs r7, 0x24 ldrsh r1, [r0, r7] ldr r0, [r4] adds r1, r0 movs r0, 0xFF lsls r0, 8 mov r2, r8 ands r0, r2 asrs r0, 8 strb r0, [r1, 0x5] ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 movs r7, 0x24 ldrsh r1, [r0, r7] ldr r0, [r4] adds r1, r0 ldr r0, _0800DB64 @ =gAbsentBattlerFlags ldrb r0, [r0] strb r0, [r1, 0x6] ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 movs r2, 0x24 ldrsh r1, [r0, r2] ldr r0, [r4] adds r1, r0 ldr r0, _0800DB68 @ =gUnknown_2023D6E ldrb r0, [r0] strb r0, [r1, 0x7] movs r2, 0 cmp r2, r12 bge _0800DB2C mov r10, r5 adds r6, r3, 0 _0800DB0A: ldrb r1, [r6] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 add r0, r10 movs r7, 0x24 ldrsh r1, [r0, r7] ldr r0, [r4] adds r1, r2, r1 adds r1, r0 mov r7, r9 adds r0, r7, r2 ldrb r0, [r0] strb r0, [r1, 0x8] adds r2, 0x1 cmp r2, r12 blt _0800DB0A _0800DB2C: ldrb r0, [r3] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r5 ldrh r0, [r1, 0x24] add r0, r8 adds r0, 0x8 strh r0, [r1, 0x24] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800DB4C: .4byte gTasks _0800DB50: .4byte gUnknown_202286C _0800DB54: .4byte gUnknown_2023FEC _0800DB58: .4byte gActiveBattler _0800DB5C: .4byte sBattler_AI _0800DB60: .4byte gBattlerTarget _0800DB64: .4byte gAbsentBattlerFlags _0800DB68: .4byte gUnknown_2023D6E thumb_func_end PrepareBufferDataTransferLink thumb_func_start sub_800DB6C sub_800DB6C: @ 800DB6C push {r4-r7,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r1, _0800DB94 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 movs r2, 0x1E ldrsh r0, [r0, r2] adds r7, r1, 0 cmp r0, 0x5 bls _0800DB88 b _0800DD20 _0800DB88: lsls r0, 2 ldr r1, _0800DB98 @ =_0800DB9C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0800DB94: .4byte gTasks _0800DB98: .4byte _0800DB9C .align 2, 0 _0800DB9C: .4byte _0800DBB4 .4byte _0800DBC8 .4byte _0800DBF4 .4byte _0800DC50 .4byte _0800DCC6 .4byte _0800DD04 _0800DBB4: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r7 movs r1, 0x64 strh r1, [r0, 0x1C] ldrh r1, [r0, 0x1E] adds r1, 0x1 strh r1, [r0, 0x1E] b _0800DD20 _0800DBC8: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r1, r0, r7 ldrh r0, [r1, 0x1C] subs r0, 0x1 strh r0, [r1, 0x1C] lsls r0, 16 cmp r0, 0 beq _0800DBDE b _0800DD20 _0800DBDE: ldrh r0, [r1, 0x1E] adds r0, 0x1 strh r0, [r1, 0x1E] ldr r0, _0800DBF0 @ =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0800DBEE b _0800DD20 _0800DBEE: b _0800DD1C .align 2, 0 _0800DBF0: .4byte gReceivedRemoteLinkPlayers _0800DBF4: bl GetLinkPlayerCount_2 lsls r0, 24 lsrs r2, r0, 24 ldr r0, _0800DC10 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _0800DC14 cmp r2, 0x3 bgt _0800DC1A b _0800DD20 .align 2, 0 _0800DC10: .4byte gBattleTypeFlags _0800DC14: cmp r2, 0x1 bgt _0800DC1A b _0800DD20 _0800DC1A: bl sub_800AA48 lsls r0, 24 cmp r0, 0 beq _0800DC3C bl sub_800A5BC ldr r0, _0800DC38 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x1E] adds r0, 0x1 b _0800DD1E .align 2, 0 _0800DC38: .4byte gTasks _0800DC3C: ldr r0, _0800DC4C @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x1E] adds r0, 0x1 b _0800DD1E .align 2, 0 _0800DC4C: .4byte gTasks _0800DC50: lsls r1, r4, 2 adds r0, r1, r4 lsls r0, 3 adds r2, r0, r7 movs r3, 0x26 ldrsh r5, [r2, r3] movs r0, 0x24 ldrsh r6, [r2, r0] mov r12, r6 cmp r5, r12 beq _0800DD20 ldrh r0, [r2, 0x22] movs r6, 0x22 ldrsh r3, [r2, r6] cmp r3, 0 bne _0800DCC0 cmp r5, r12 ble _0800DC80 movs r6, 0x20 ldrsh r0, [r2, r6] cmp r5, r0 bne _0800DC80 strh r3, [r2, 0x20] strh r3, [r2, 0x26] _0800DC80: adds r4, r1, r4 lsls r4, 3 adds r4, r7 movs r0, 0x26 ldrsh r1, [r4, r0] ldr r5, _0800DCBC @ =gUnknown_2023FEC ldr r0, [r5] adds r1, r0 ldrb r0, [r1, 0x4] ldrb r1, [r1, 0x5] lsls r1, 8 orrs r0, r1 adds r0, 0x8 lsls r0, 16 lsrs r6, r0, 16 bl bitmask_all_link_players_but_self lsls r0, 24 lsrs r0, 24 movs r1, 0x26 ldrsh r2, [r4, r1] ldr r1, [r5] adds r1, r2 adds r2, r6, 0 bl SendBlock ldrh r0, [r4, 0x1E] adds r0, 0x1 strh r0, [r4, 0x1E] b _0800DD20 .align 2, 0 _0800DCBC: .4byte gUnknown_2023FEC _0800DCC0: subs r0, 0x1 strh r0, [r2, 0x22] b _0800DD20 _0800DCC6: bl sub_800A4BC lsls r0, 24 cmp r0, 0 beq _0800DD20 ldr r0, _0800DCFC @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 movs r3, 0x26 ldrsh r2, [r1, r3] ldr r0, _0800DD00 @ =gUnknown_2023FEC ldr r0, [r0] adds r2, r0 ldrb r0, [r2, 0x4] ldrb r2, [r2, 0x5] lsls r2, 8 movs r3, 0x5 strh r3, [r1, 0x22] orrs r0, r2 ldrh r6, [r1, 0x26] adds r0, r6 adds r0, 0x8 strh r0, [r1, 0x26] b _0800DD1C .align 2, 0 _0800DCFC: .4byte gTasks _0800DD00: .4byte gUnknown_2023FEC _0800DD04: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r1, r0, r7 ldrh r0, [r1, 0x22] subs r0, 0x1 strh r0, [r1, 0x22] lsls r0, 16 cmp r0, 0 bne _0800DD20 movs r0, 0x5 strh r0, [r1, 0x22] _0800DD1C: movs r0, 0x3 _0800DD1E: strh r0, [r1, 0x1E] _0800DD20: pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_800DB6C thumb_func_start sub_800DD28 sub_800DD28: @ 800DD28 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, _0800DD5C @ =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 beq _0800DE28 ldr r0, _0800DD60 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x20 ands r0, r1 cmp r0, 0 beq _0800DE28 ldr r0, _0800DD64 @ =gLinkPlayers ldr r1, [r0, 0x14] ldr r0, _0800DD68 @ =0x00002211 cmp r1, r0 bne _0800DE28 bl sub_80FBB4C movs r4, 0 ldr r0, _0800DD6C @ =gBlockRecvBuffer mov r10, r0 b _0800DE1C .align 2, 0 _0800DD5C: .4byte gReceivedRemoteLinkPlayers _0800DD60: .4byte gBattleTypeFlags _0800DD64: .4byte gLinkPlayers _0800DD68: .4byte 0x00002211 _0800DD6C: .4byte gBlockRecvBuffer _0800DD70: bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 ldr r2, _0800DE38 @ =gBitTable lsls r1, r4, 2 adds r1, r2 ldr r1, [r1] ands r0, r1 adds r1, r4, 0x1 mov r9, r1 cmp r0, 0 beq _0800DE16 adds r0, r4, 0 bl ResetBlockReceivedFlag lsls r0, r4, 8 mov r4, r10 adds r3, r0, r4 ldr r1, _0800DE3C @ =gBlockRecvBuffer + 4 adds r0, r1 ldrh r6, [r0] ldr r7, _0800DE40 @ =gTasks ldr r4, _0800DE44 @ =gUnknown_202286D mov r12, r4 ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r2, r0, r7 movs r0, 0x24 ldrsh r1, [r2, r0] adds r0, r6, 0 adds r0, 0x9 adds r1, r0 movs r0, 0x80 lsls r0, 5 cmp r1, r0 ble _0800DDD0 ldrh r0, [r2, 0x24] strh r0, [r2, 0x20] ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r7 movs r1, 0 strh r1, [r0, 0x24] _0800DDD0: ldr r2, _0800DE48 @ =gUnknown_2023FF0 mov r4, r12 ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r7 movs r4, 0x24 ldrsh r1, [r0, r4] ldr r0, [r2] adds r5, r0, r1 adds r4, r3, 0 movs r2, 0 adds r3, r6, 0 adds r3, 0x8 mov r8, r7 mov r7, r12 cmp r2, r3 bge _0800DE04 _0800DDF6: adds r0, r5, r2 adds r1, r4, r2 ldrb r1, [r1] strb r1, [r0] adds r2, 0x1 cmp r2, r3 blt _0800DDF6 _0800DE04: ldrb r0, [r7] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 add r1, r8 ldrh r0, [r1, 0x24] adds r0, r6, r0 adds r0, 0x8 strh r0, [r1, 0x24] _0800DE16: mov r1, r9 lsls r0, r1, 24 lsrs r4, r0, 24 _0800DE1C: bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 bcc _0800DD70 _0800DE28: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800DE38: .4byte gBitTable _0800DE3C: .4byte gBlockRecvBuffer + 4 _0800DE40: .4byte gTasks _0800DE44: .4byte gUnknown_202286D _0800DE48: .4byte gUnknown_2023FF0 thumb_func_end sub_800DD28 thumb_func_start Task_HandleCopyReceivedLinkBuffersData Task_HandleCopyReceivedLinkBuffersData: @ 800DE4C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r7, r0, 24 ldr r1, _0800DEB4 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r3, r0, r1 movs r0, 0x26 ldrsh r2, [r3, r0] movs r4, 0x24 ldrsh r0, [r3, r4] cmp r2, r0 bne _0800DE70 b _0800DF8C _0800DE70: cmp r2, r0 ble _0800DE82 movs r4, 0x20 ldrsh r0, [r3, r4] cmp r2, r0 bne _0800DE82 movs r0, 0 strh r0, [r3, 0x20] strh r0, [r3, 0x26] _0800DE82: lsls r2, r7, 2 adds r0, r2, r7 lsls r0, 3 adds r5, r0, r1 movs r0, 0x26 ldrsh r1, [r5, r0] ldr r3, _0800DEB8 @ =gUnknown_2023FF0 mov r8, r3 ldr r0, [r3] adds r3, r1, r0 ldrb r4, [r3, 0x1] ldrb r6, [r3, 0x4] ldrb r0, [r3, 0x5] lsls r0, 8 orrs r6, r0 ldrb r0, [r3] mov r9, r2 cmp r0, 0x1 beq _0800DF4C cmp r0, 0x1 bgt _0800DEBC cmp r0, 0 beq _0800DEC2 b _0800DF7A .align 2, 0 _0800DEB4: .4byte gTasks _0800DEB8: .4byte gUnknown_2023FF0 _0800DEBC: cmp r0, 0x2 beq _0800DF64 b _0800DF7A _0800DEC2: ldr r2, _0800DF2C @ =gUnknown_2023BC8 ldr r1, _0800DF30 @ =gBitTable lsls r0, r4, 2 adds r0, r1 ldr r1, [r2] ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0800DF8C lsls r0, r4, 9 ldr r1, _0800DF34 @ =gUnknown_2022BC4 adds r0, r1 adds r1, r3, 0 adds r1, 0x8 adds r2, r6, 0 bl memcpy adds r0, r4, 0 bl sub_8017298 ldr r0, _0800DF38 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x4 ands r0, r1 cmp r0, 0 bne _0800DF7A ldr r2, _0800DF3C @ =sBattler_AI movs r4, 0x26 ldrsh r0, [r5, r4] mov r3, r8 ldr r1, [r3] adds r0, r1 ldrb r0, [r0, 0x2] strb r0, [r2] ldr r2, _0800DF40 @ =gBattlerTarget movs r4, 0x26 ldrsh r0, [r5, r4] adds r0, r1 ldrb r0, [r0, 0x3] strb r0, [r2] ldr r2, _0800DF44 @ =gAbsentBattlerFlags movs r3, 0x26 ldrsh r0, [r5, r3] adds r0, r1 ldrb r0, [r0, 0x6] strb r0, [r2] ldr r2, _0800DF48 @ =gUnknown_2023D6E movs r4, 0x26 ldrsh r0, [r5, r4] adds r0, r1 ldrb r0, [r0, 0x7] strb r0, [r2] b _0800DF7A .align 2, 0 _0800DF2C: .4byte gUnknown_2023BC8 _0800DF30: .4byte gBitTable _0800DF34: .4byte gUnknown_2022BC4 _0800DF38: .4byte gBattleTypeFlags _0800DF3C: .4byte sBattler_AI _0800DF40: .4byte gBattlerTarget _0800DF44: .4byte gAbsentBattlerFlags _0800DF48: .4byte gUnknown_2023D6E _0800DF4C: lsls r0, r4, 9 ldr r1, _0800DF60 @ =gUnknown_20233C4 adds r0, r1 adds r1, r3, 0 adds r1, 0x8 adds r2, r6, 0 bl memcpy b _0800DF7A .align 2, 0 _0800DF60: .4byte gUnknown_20233C4 _0800DF64: ldrb r2, [r3, 0x8] ldr r3, _0800DF98 @ =gUnknown_2023BC8 ldr r1, _0800DF9C @ =gBitTable lsls r0, r4, 2 adds r0, r1 lsls r2, 2 ldr r1, [r0] lsls r1, r2 ldr r0, [r3] bics r0, r1 str r0, [r3] _0800DF7A: ldr r0, _0800DFA0 @ =gTasks mov r2, r9 adds r1, r2, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x26] adds r0, r6, r0 adds r0, 0x8 strh r0, [r1, 0x26] _0800DF8C: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800DF98: .4byte gUnknown_2023BC8 _0800DF9C: .4byte gBitTable _0800DFA0: .4byte gTasks thumb_func_end Task_HandleCopyReceivedLinkBuffersData thumb_func_start BtlController_EmitGetMonData BtlController_EmitGetMonData: @ 800DFA4 push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800DFC4 @ =gUnknown_2022874 movs r3, 0 strb r3, [r1] strb r4, [r1, 0x1] strb r2, [r1, 0x2] strb r3, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800DFC4: .4byte gUnknown_2022874 thumb_func_end BtlController_EmitGetMonData thumb_func_start EmitGetRawMonData EmitGetRawMonData: @ 800DFC8 push {r4,r5,lr} adds r5, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800DFEC @ =gUnknown_2022874 movs r4, 0 movs r3, 0x1 strb r3, [r1] strb r5, [r1, 0x1] strb r2, [r1, 0x2] strb r4, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800DFEC: .4byte gUnknown_2022874 thumb_func_end EmitGetRawMonData thumb_func_start EmitSetMonData EmitSetMonData: @ 800DFF0 push {r4-r6,lr} ldr r4, [sp, 0x10] lsls r0, 24 lsrs r6, r0, 24 lsls r3, 24 lsrs r5, r3, 24 ldr r0, _0800E02C @ =gUnknown_2022874 movs r3, 0x2 strb r3, [r0] strb r1, [r0, 0x1] strb r2, [r0, 0x2] adds r1, r0, 0 cmp r5, 0 beq _0800E01E adds r3, r1, 0x3 adds r2, r5, 0 _0800E010: ldrb r0, [r4] strb r0, [r3] adds r4, 0x1 adds r3, 0x1 subs r2, 0x1 cmp r2, 0 bne _0800E010 _0800E01E: adds r2, r5, 0x3 adds r0, r6, 0 bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800E02C: .4byte gUnknown_2022874 thumb_func_end EmitSetMonData thumb_func_start EmitSetRawMonData EmitSetRawMonData: @ 800E030 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r2, 24 lsrs r4, r2, 24 ldr r0, _0800E06C @ =gUnknown_2022874 movs r2, 0x3 strb r2, [r0] strb r1, [r0, 0x1] strb r4, [r0, 0x2] adds r5, r0, 0 cmp r4, 0 beq _0800E05C adds r1, r5, 0x3 adds r2, r4, 0 _0800E04E: ldrb r0, [r3] strb r0, [r1] adds r3, 0x1 adds r1, 0x1 subs r2, 0x1 cmp r2, 0 bne _0800E04E _0800E05C: adds r2, r4, 0x3 adds r0, r6, 0 adds r1, r5, 0 bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800E06C: .4byte gUnknown_2022874 thumb_func_end EmitSetRawMonData thumb_func_start EmitLoadMonSprite EmitLoadMonSprite: @ 800E070 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E08C @ =gUnknown_2022874 movs r2, 0x4 strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E08C: .4byte gUnknown_2022874 thumb_func_end EmitLoadMonSprite thumb_func_start EmitSwitchInAnim EmitSwitchInAnim: @ 800E090 push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800E0B0 @ =gUnknown_2022874 movs r3, 0x5 strb r3, [r1] strb r4, [r1, 0x1] strb r2, [r1, 0x2] strb r3, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800E0B0: .4byte gUnknown_2022874 thumb_func_end EmitSwitchInAnim thumb_func_start EmitReturnMonToBall EmitReturnMonToBall: @ 800E0B4 push {lr} adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800E0D0 @ =gUnknown_2022874 movs r2, 0x6 strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E0D0: .4byte gUnknown_2022874 thumb_func_end EmitReturnMonToBall thumb_func_start EmitDrawTrainerPic EmitDrawTrainerPic: @ 800E0D4 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E0F0 @ =gUnknown_2022874 movs r2, 0x7 strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E0F0: .4byte gUnknown_2022874 thumb_func_end EmitDrawTrainerPic thumb_func_start EmitTrainerSlide EmitTrainerSlide: @ 800E0F4 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E110 @ =gUnknown_2022874 movs r2, 0x8 strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E110: .4byte gUnknown_2022874 thumb_func_end EmitTrainerSlide thumb_func_start EmitTrainerSlideBack EmitTrainerSlideBack: @ 800E114 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E130 @ =gUnknown_2022874 movs r2, 0x9 strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E130: .4byte gUnknown_2022874 thumb_func_end EmitTrainerSlideBack thumb_func_start EmitFaintAnimation EmitFaintAnimation: @ 800E134 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E150 @ =gUnknown_2022874 movs r2, 0xA strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E150: .4byte gUnknown_2022874 thumb_func_end EmitFaintAnimation thumb_func_start EmitPaletteFade EmitPaletteFade: @ 800E154 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E170 @ =gUnknown_2022874 movs r2, 0xB strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E170: .4byte gUnknown_2022874 thumb_func_end EmitPaletteFade thumb_func_start EmitSuccessBallThrowAnim EmitSuccessBallThrowAnim: @ 800E174 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E190 @ =gUnknown_2022874 movs r2, 0xC strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E190: .4byte gUnknown_2022874 thumb_func_end EmitSuccessBallThrowAnim thumb_func_start EmitBallThrowAnim EmitBallThrowAnim: @ 800E194 push {lr} adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800E1B0 @ =gUnknown_2022874 movs r2, 0xD strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E1B0: .4byte gUnknown_2022874 thumb_func_end EmitBallThrowAnim thumb_func_start EmitPause EmitPause: @ 800E1B4 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r1, 24 lsrs r4, r1, 24 ldr r1, _0800E1F8 @ =gUnknown_2022874 movs r0, 0xE strb r0, [r1] strb r4, [r1, 0x1] lsls r0, r4, 1 adds r0, r4 adds r5, r1, 0 cmp r0, 0 beq _0800E1E2 adds r1, r5, 0x2 adds r3, r0, 0 _0800E1D4: ldrb r0, [r2] strb r0, [r1] adds r2, 0x1 adds r1, 0x1 subs r3, 0x1 cmp r3, 0 bne _0800E1D4 _0800E1E2: lsls r2, r4, 1 adds r2, r4 adds r2, 0x2 adds r0, r6, 0 adds r1, r5, 0 bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800E1F8: .4byte gUnknown_2022874 thumb_func_end EmitPause thumb_func_start EmitMoveAnimation EmitMoveAnimation: @ 800E1FC push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 ldr r4, [sp, 0x1C] ldr r5, [sp, 0x20] lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r1, 16 lsrs r1, 16 lsls r3, 16 lsrs r3, 16 ldr r7, _0800E290 @ =gUnknown_2022874 movs r0, 0 mov r12, r0 movs r0, 0xF strb r0, [r7] strb r1, [r7, 0x1] lsrs r1, 8 strb r1, [r7, 0x2] strb r2, [r7, 0x3] strb r3, [r7, 0x4] movs r6, 0xFF lsls r6, 8 lsrs r3, 8 strb r3, [r7, 0x5] strb r4, [r7, 0x6] adds r0, r4, 0 ands r0, r6 asrs r0, 8 strb r0, [r7, 0x7] movs r0, 0xFF lsls r0, 16 ands r0, r4 asrs r0, 16 strb r0, [r7, 0x8] lsrs r4, 24 strb r4, [r7, 0x9] strb r5, [r7, 0xA] ldr r0, _0800E294 @ =gUnknown_2023D72 ldrb r0, [r0] strb r0, [r7, 0xB] mov r0, r12 str r0, [sp] movs r0, 0xE movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0800E29C str r0, [sp] movs r0, 0xE movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _0800E29C ldr r0, _0800E298 @ =gBattleWeather ldrh r0, [r0] strb r0, [r7, 0xC] ands r6, r0 lsrs r0, r6, 8 strb r0, [r7, 0xD] adds r4, r7, 0 b _0800E2A6 .align 2, 0 _0800E290: .4byte gUnknown_2022874 _0800E294: .4byte gUnknown_2023D72 _0800E298: .4byte gBattleWeather _0800E29C: ldr r0, _0800E2D0 @ =gUnknown_2022874 movs r1, 0 strb r1, [r0, 0xC] strb r1, [r0, 0xD] adds r4, r0, 0 _0800E2A6: movs r0, 0 strb r0, [r4, 0xE] strb r0, [r4, 0xF] adds r0, r4, 0 adds r0, 0x10 ldr r1, [sp, 0x24] movs r2, 0x1C bl memcpy mov r0, r8 adds r1, r4, 0 movs r2, 0x2C bl PrepareBufferDataTransfer add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800E2D0: .4byte gUnknown_2022874 thumb_func_end EmitMoveAnimation thumb_func_start EmitPrintString EmitPrintString: @ 800E2D4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r0, 24 mov r10, r0 lsls r1, 16 lsrs r1, 16 ldr r2, _0800E3B4 @ =gUnknown_2022874 movs r0, 0x10 strb r0, [r2] ldr r0, _0800E3B8 @ =gBattleOutcome ldrb r0, [r0] strb r0, [r2, 0x1] strb r1, [r2, 0x2] lsrs r1, 8 strb r1, [r2, 0x3] adds r0, r2, 0x4 mov r12, r0 ldr r4, _0800E3BC @ =gCurrentMove ldrh r0, [r4] strh r0, [r2, 0x4] ldr r0, _0800E3C0 @ =gUnknown_2023D4C ldrh r0, [r0] mov r1, r12 strh r0, [r1, 0x2] ldr r0, _0800E3C4 @ =gUnknown_2023D68 ldrh r0, [r0] strh r0, [r1, 0x4] ldr r0, _0800E3C8 @ =gLastUsedAbility ldrb r0, [r0] strb r0, [r1, 0x6] ldr r0, _0800E3CC @ =gBattleScripting ldrb r0, [r0, 0x17] strb r0, [r1, 0x7] ldr r0, _0800E3D0 @ =gBattleStruct ldr r0, [r0] adds r1, r0, 0 adds r1, 0x52 ldrb r1, [r1] mov r3, r12 strb r1, [r3, 0x8] adds r0, 0xAD ldrb r0, [r0] strb r0, [r3, 0x9] ldr r0, _0800E3D4 @ =gPotentialItemEffectBattler ldrb r0, [r0] strb r0, [r3, 0xA] ldr r3, _0800E3D8 @ =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r0, [r0, 0x2] mov r7, r12 strb r0, [r7, 0xB] movs r3, 0 mov r9, r2 ldr r0, _0800E3DC @ =gUnknown_2022AD8 mov r8, r0 adds r2, 0x10 ldr r0, _0800E3E0 @ =gBattleMons adds r4, r0, 0 adds r4, 0x20 _0800E35A: adds r1, r2, r3 ldrb r0, [r4] strb r0, [r1] adds r4, 0x58 adds r3, 0x1 cmp r3, 0x3 ble _0800E35A movs r3, 0 mov r5, r12 adds r5, 0x10 mov r4, r12 adds r4, 0x20 ldr r6, _0800E3E4 @ =gBattleTextBuff2 mov r2, r12 adds r2, 0x30 _0800E378: adds r1, r5, r3 ldr r7, _0800E3E8 @ =gBattleTextBuff1 adds r0, r3, r7 ldrb r0, [r0] strb r0, [r1] adds r1, r4, r3 adds r0, r3, r6 ldrb r0, [r0] strb r0, [r1] adds r1, r2, r3 mov r7, r8 adds r0, r3, r7 ldrb r0, [r0] strb r0, [r1] adds r3, 0x1 cmp r3, 0xF ble _0800E378 mov r0, r10 mov r1, r9 movs r2, 0x44 bl PrepareBufferDataTransfer pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800E3B4: .4byte gUnknown_2022874 _0800E3B8: .4byte gBattleOutcome _0800E3BC: .4byte gCurrentMove _0800E3C0: .4byte gUnknown_2023D4C _0800E3C4: .4byte gUnknown_2023D68 _0800E3C8: .4byte gLastUsedAbility _0800E3CC: .4byte gBattleScripting _0800E3D0: .4byte gBattleStruct _0800E3D4: .4byte gPotentialItemEffectBattler _0800E3D8: .4byte gBattleMoves _0800E3DC: .4byte gUnknown_2022AD8 _0800E3E0: .4byte gBattleMons _0800E3E4: .4byte gBattleTextBuff2 _0800E3E8: .4byte gBattleTextBuff1 thumb_func_end EmitPrintString thumb_func_start EmitPrintSelectionString EmitPrintSelectionString: @ 800E3EC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 24 lsrs r0, 24 mov r10, r0 lsls r1, 16 lsrs r1, 16 ldr r2, _0800E4A8 @ =gUnknown_2022874 movs r0, 0x11 strb r0, [r2] strb r0, [r2, 0x1] strb r1, [r2, 0x2] lsrs r1, 8 strb r1, [r2, 0x3] adds r0, r2, 0x4 mov r12, r0 ldr r0, _0800E4AC @ =gCurrentMove ldrh r0, [r0] strh r0, [r2, 0x4] ldr r0, _0800E4B0 @ =gUnknown_2023D4C ldrh r0, [r0] mov r1, r12 strh r0, [r1, 0x2] ldr r0, _0800E4B4 @ =gUnknown_2023D68 ldrh r0, [r0] strh r0, [r1, 0x4] ldr r0, _0800E4B8 @ =gLastUsedAbility ldrb r0, [r0] strb r0, [r1, 0x6] ldr r0, _0800E4BC @ =gBattleScripting ldrb r0, [r0, 0x17] strb r0, [r1, 0x7] ldr r0, _0800E4C0 @ =gBattleStruct ldr r0, [r0] adds r0, 0x52 ldrb r0, [r0] strb r0, [r1, 0x8] movs r3, 0 mov r9, r2 ldr r7, _0800E4C4 @ =gUnknown_2022AD8 mov r8, r7 mov r4, r9 adds r4, 0x10 ldr r0, _0800E4C8 @ =gBattleMons adds r2, r0, 0 adds r2, 0x20 _0800E44E: adds r1, r4, r3 ldrb r0, [r2] strb r0, [r1] adds r2, 0x58 adds r3, 0x1 cmp r3, 0x3 ble _0800E44E movs r3, 0 mov r5, r12 adds r5, 0x10 mov r4, r12 adds r4, 0x20 ldr r6, _0800E4CC @ =gBattleTextBuff2 mov r2, r12 adds r2, 0x30 _0800E46C: adds r1, r5, r3 ldr r7, _0800E4D0 @ =gBattleTextBuff1 adds r0, r3, r7 ldrb r0, [r0] strb r0, [r1] adds r1, r4, r3 adds r0, r3, r6 ldrb r0, [r0] strb r0, [r1] adds r1, r2, r3 mov r7, r8 adds r0, r3, r7 ldrb r0, [r0] strb r0, [r1] adds r3, 0x1 cmp r3, 0xF ble _0800E46C mov r0, r10 mov r1, r9 movs r2, 0x44 bl PrepareBufferDataTransfer pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800E4A8: .4byte gUnknown_2022874 _0800E4AC: .4byte gCurrentMove _0800E4B0: .4byte gUnknown_2023D4C _0800E4B4: .4byte gUnknown_2023D68 _0800E4B8: .4byte gLastUsedAbility _0800E4BC: .4byte gBattleScripting _0800E4C0: .4byte gBattleStruct _0800E4C4: .4byte gUnknown_2022AD8 _0800E4C8: .4byte gBattleMons _0800E4CC: .4byte gBattleTextBuff2 _0800E4D0: .4byte gBattleTextBuff1 thumb_func_end EmitPrintSelectionString thumb_func_start EmitChooseAction EmitChooseAction: @ 800E4D4 push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 lsls r2, 16 lsrs r2, 16 ldr r1, _0800E4FC @ =gUnknown_2022874 movs r3, 0x12 strb r3, [r1] strb r4, [r1, 0x1] strb r2, [r1, 0x2] lsrs r2, 8 strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800E4FC: .4byte gUnknown_2022874 thumb_func_end EmitChooseAction thumb_func_start Emitcmd19 Emitcmd19: @ 800E500 push {lr} adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800E51C @ =gUnknown_2022874 movs r2, 0x13 strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E51C: .4byte gUnknown_2022874 thumb_func_end Emitcmd19 thumb_func_start EmitChooseMove EmitChooseMove: @ 800E520 push {r4-r6,lr} adds r5, r3, 0 lsls r0, 24 lsrs r6, r0, 24 ldr r3, _0800E558 @ =gUnknown_2022874 movs r4, 0 movs r0, 0x14 strb r0, [r3] strb r1, [r3, 0x1] strb r2, [r3, 0x2] strb r4, [r3, 0x3] movs r2, 0 adds r1, r3, 0 adds r4, r1, 0x4 _0800E53C: adds r0, r5, r2 ldrb r0, [r0] strb r0, [r4] adds r4, 0x1 adds r2, 0x1 cmp r2, 0x13 bls _0800E53C adds r0, r6, 0 movs r2, 0x18 bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800E558: .4byte gUnknown_2022874 thumb_func_end EmitChooseMove thumb_func_start EmitChooseItem EmitChooseItem: @ 800E55C push {r4,r5,lr} adds r4, r1, 0 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _0800E58C @ =gUnknown_2022874 movs r0, 0x15 strb r0, [r1] movs r2, 0 adds r3, r1, 0x1 _0800E56E: adds r0, r4, r2 ldrb r0, [r0] strb r0, [r3] adds r3, 0x1 adds r2, 0x1 cmp r2, 0x2 ble _0800E56E adds r0, r5, 0 movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800E58C: .4byte gUnknown_2022874 thumb_func_end EmitChooseItem thumb_func_start EmitChoosePokemon EmitChoosePokemon: @ 800E590 push {r4-r6,lr} ldr r6, [sp, 0x10] lsls r0, 24 lsrs r5, r0, 24 ldr r4, _0800E5C8 @ =gUnknown_2022874 movs r0, 0x16 strb r0, [r4] strb r1, [r4, 0x1] strb r2, [r4, 0x2] strb r3, [r4, 0x3] movs r2, 0 adds r1, r4, 0 adds r3, r1, 0x4 _0800E5AA: adds r0, r6, r2 ldrb r0, [r0] strb r0, [r3] adds r3, 0x1 adds r2, 0x1 cmp r2, 0x2 ble _0800E5AA adds r0, r5, 0 movs r2, 0x8 bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800E5C8: .4byte gUnknown_2022874 thumb_func_end EmitChoosePokemon thumb_func_start EmitCmd23 EmitCmd23: @ 800E5CC push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E5E8 @ =gUnknown_2022874 movs r2, 0x17 strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E5E8: .4byte gUnknown_2022874 thumb_func_end EmitCmd23 thumb_func_start EmitHealthBarUpdate EmitHealthBarUpdate: @ 800E5EC push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, 16 lsrs r1, 16 ldr r3, _0800E620 @ =gUnknown_2022874 movs r4, 0 movs r2, 0x18 strb r2, [r3] strb r4, [r3, 0x1] strb r1, [r3, 0x2] lsls r1, 16 asrs r1, 16 movs r2, 0xFF lsls r2, 8 ands r1, r2 asrs r1, 8 strb r1, [r3, 0x3] adds r1, r3, 0 movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800E620: .4byte gUnknown_2022874 thumb_func_end EmitHealthBarUpdate thumb_func_start EmitExpUpdate EmitExpUpdate: @ 800E624 push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 lsls r2, 16 lsrs r2, 16 ldr r1, _0800E654 @ =gUnknown_2022874 movs r3, 0x19 strb r3, [r1] strb r4, [r1, 0x1] strb r2, [r1, 0x2] lsls r2, 16 asrs r2, 16 movs r3, 0xFF lsls r3, 8 ands r2, r3 asrs r2, 8 strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800E654: .4byte gUnknown_2022874 thumb_func_end EmitExpUpdate thumb_func_start EmitStatusIconUpdate EmitStatusIconUpdate: @ 800E658 push {r4-r6,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800E6A8 @ =gUnknown_2022874 movs r3, 0x1A strb r3, [r1] strb r4, [r1, 0x1] movs r6, 0xFF lsls r6, 8 adds r3, r4, 0 ands r3, r6 lsrs r3, 8 strb r3, [r1, 0x2] movs r5, 0xFF lsls r5, 16 adds r3, r4, 0 ands r3, r5 lsrs r3, 16 strb r3, [r1, 0x3] lsrs r4, 24 strb r4, [r1, 0x4] strb r2, [r1, 0x5] adds r3, r2, 0 ands r3, r6 lsrs r3, 8 strb r3, [r1, 0x6] adds r3, r2, 0 ands r3, r5 lsrs r3, 16 strb r3, [r1, 0x7] lsrs r2, 24 strb r2, [r1, 0x8] movs r2, 0x9 bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800E6A8: .4byte gUnknown_2022874 thumb_func_end EmitStatusIconUpdate thumb_func_start EmitStatusAnimation EmitStatusAnimation: @ 800E6AC push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800E6E4 @ =gUnknown_2022874 movs r3, 0x1B strb r3, [r1] strb r4, [r1, 0x1] strb r2, [r1, 0x2] movs r3, 0xFF lsls r3, 8 ands r3, r2 lsrs r3, 8 strb r3, [r1, 0x3] movs r3, 0xFF lsls r3, 16 ands r3, r2 lsrs r3, 16 strb r3, [r1, 0x4] lsrs r2, 24 strb r2, [r1, 0x5] movs r2, 0x6 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800E6E4: .4byte gUnknown_2022874 thumb_func_end EmitStatusAnimation thumb_func_start EmitStatusXor EmitStatusXor: @ 800E6E8 push {lr} adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800E704 @ =gUnknown_2022874 movs r2, 0x1C strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E704: .4byte gUnknown_2022874 thumb_func_end EmitStatusXor thumb_func_start EmitDataTransfer EmitDataTransfer: @ 800E708 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r1, 16 lsrs r4, r1, 16 ldr r1, _0800E74C @ =gUnknown_2022874 movs r0, 0x1D strb r0, [r1] strb r0, [r1, 0x1] strb r4, [r1, 0x2] lsrs r0, r4, 8 strb r0, [r1, 0x3] adds r5, r1, 0 cmp r4, 0 beq _0800E738 adds r1, r5, 0x4 adds r3, r4, 0 _0800E72A: ldrb r0, [r2] strb r0, [r1] adds r2, 0x1 adds r1, 0x1 subs r3, 0x1 cmp r3, 0 bne _0800E72A _0800E738: adds r2, r4, 0x4 lsls r2, 16 lsrs r2, 16 adds r0, r6, 0 adds r1, r5, 0 bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800E74C: .4byte gUnknown_2022874 thumb_func_end EmitDataTransfer thumb_func_start EmitDMA3Transfer EmitDMA3Transfer: @ 800E750 push {r4-r6,lr} adds r4, r3, 0 lsls r0, 24 lsrs r6, r0, 24 lsls r2, 16 lsrs r5, r2, 16 ldr r2, _0800E7B4 @ =gUnknown_2022874 movs r0, 0x1E strb r0, [r2] strb r1, [r2, 0x1] movs r3, 0xFF lsls r3, 8 adds r0, r1, 0 ands r0, r3 lsrs r0, 8 strb r0, [r2, 0x2] movs r0, 0xFF lsls r0, 16 ands r0, r1 lsrs r0, 16 strb r0, [r2, 0x3] lsrs r1, 24 strb r1, [r2, 0x4] strb r5, [r2, 0x5] adds r0, r5, 0 ands r0, r3 lsrs r0, 8 strb r0, [r2, 0x6] adds r1, r2, 0 cmp r5, 0 beq _0800E7A0 adds r3, r1, 0x7 adds r2, r5, 0 _0800E792: ldrb r0, [r4] strb r0, [r3] adds r4, 0x1 adds r3, 0x1 subs r2, 0x1 cmp r2, 0 bne _0800E792 _0800E7A0: adds r2, r5, 0x7 lsls r2, 16 lsrs r2, 16 adds r0, r6, 0 bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800E7B4: .4byte gUnknown_2022874 thumb_func_end EmitDMA3Transfer thumb_func_start EmitPlayBGM EmitPlayBGM: @ 800E7B8 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r1, 16 lsrs r4, r1, 16 ldr r1, _0800E7FC @ =gUnknown_2022874 movs r0, 0x1F strb r0, [r1] strb r4, [r1, 0x1] lsrs r0, r4, 8 strb r0, [r1, 0x2] adds r5, r1, 0 cmp r4, 0 beq _0800E7E6 adds r1, r5, 0x3 adds r3, r4, 0 _0800E7D8: ldrb r0, [r2] strb r0, [r1] adds r2, 0x1 adds r1, 0x1 subs r3, 0x1 cmp r3, 0 bne _0800E7D8 _0800E7E6: adds r2, r4, 0x3 lsls r2, 16 lsrs r2, 16 adds r0, r6, 0 adds r1, r5, 0 bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800E7FC: .4byte gUnknown_2022874 thumb_func_end EmitPlayBGM thumb_func_start EmitCmd32 EmitCmd32: @ 800E800 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r1, 16 lsrs r4, r1, 16 ldr r1, _0800E844 @ =gUnknown_2022874 movs r0, 0x20 strb r0, [r1] strb r4, [r1, 0x1] lsrs r0, r4, 8 strb r0, [r1, 0x2] adds r5, r1, 0 cmp r4, 0 beq _0800E82E adds r1, r5, 0x3 adds r3, r4, 0 _0800E820: ldrb r0, [r2] strb r0, [r1] adds r2, 0x1 adds r1, 0x1 subs r3, 0x1 cmp r3, 0 bne _0800E820 _0800E82E: adds r2, r4, 0x3 lsls r2, 16 lsrs r2, 16 adds r0, r6, 0 adds r1, r5, 0 bl PrepareBufferDataTransfer pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800E844: .4byte gUnknown_2022874 thumb_func_end EmitCmd32 thumb_func_start EmitTwoReturnValues EmitTwoReturnValues: @ 800E848 push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 lsls r2, 16 lsrs r2, 16 ldr r1, _0800E870 @ =gUnknown_2022874 movs r3, 0x21 strb r3, [r1] strb r4, [r1, 0x1] strb r2, [r1, 0x2] lsrs r2, 8 strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800E870: .4byte gUnknown_2022874 thumb_func_end EmitTwoReturnValues thumb_func_start EmitChosenMonReturnValue EmitChosenMonReturnValue: @ 800E874 push {r4,r5,lr} adds r4, r2, 0 lsls r0, 24 lsrs r5, r0, 24 ldr r2, _0800E8A8 @ =gUnknown_2022874 movs r0, 0x22 strb r0, [r2] strb r1, [r2, 0x1] movs r3, 0 adds r1, r2, 0x2 _0800E888: adds r0, r4, r3 ldrb r0, [r0] strb r0, [r1] adds r1, 0x1 adds r3, 0x1 cmp r3, 0x2 ble _0800E888 adds r0, r5, 0 adds r1, r2, 0 movs r2, 0x5 bl PrepareBufferDataTransfer pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800E8A8: .4byte gUnknown_2022874 thumb_func_end EmitChosenMonReturnValue thumb_func_start EmitOneReturnValue EmitOneReturnValue: @ 800E8AC push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, 16 lsrs r1, 16 ldr r3, _0800E8D4 @ =gUnknown_2022874 movs r4, 0 movs r2, 0x23 strb r2, [r3] strb r1, [r3, 0x1] lsrs r1, 8 strb r1, [r3, 0x2] strb r4, [r3, 0x3] adds r1, r3, 0 movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800E8D4: .4byte gUnknown_2022874 thumb_func_end EmitOneReturnValue thumb_func_start EmitOneReturnValue_Duplicate EmitOneReturnValue_Duplicate: @ 800E8D8 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, 16 lsrs r1, 16 ldr r3, _0800E900 @ =gUnknown_2022874 movs r4, 0 movs r2, 0x24 strb r2, [r3] strb r1, [r3, 0x1] lsrs r1, 8 strb r1, [r3, 0x2] strb r4, [r3, 0x3] adds r1, r3, 0 movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800E900: .4byte gUnknown_2022874 thumb_func_end EmitOneReturnValue_Duplicate thumb_func_start EmitCmd37 EmitCmd37: @ 800E904 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E920 @ =gUnknown_2022874 movs r2, 0x25 strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E920: .4byte gUnknown_2022874 thumb_func_end EmitCmd37 thumb_func_start EmitCmd38 EmitCmd38: @ 800E924 push {lr} adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800E940 @ =gUnknown_2022874 movs r2, 0x26 strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E940: .4byte gUnknown_2022874 thumb_func_end EmitCmd38 thumb_func_start EmitCmd39 EmitCmd39: @ 800E944 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E960 @ =gUnknown_2022874 movs r2, 0x27 strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E960: .4byte gUnknown_2022874 thumb_func_end EmitCmd39 thumb_func_start EmitCmd40 EmitCmd40: @ 800E964 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E980 @ =gUnknown_2022874 movs r2, 0x28 strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E980: .4byte gUnknown_2022874 thumb_func_end EmitCmd40 thumb_func_start EmitHitAnimation EmitHitAnimation: @ 800E984 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E9A0 @ =gUnknown_2022874 movs r2, 0x29 strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E9A0: .4byte gUnknown_2022874 thumb_func_end EmitHitAnimation thumb_func_start EmitCmd42 EmitCmd42: @ 800E9A4 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800E9C0 @ =gUnknown_2022874 movs r2, 0x2A strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800E9C0: .4byte gUnknown_2022874 thumb_func_end EmitCmd42 thumb_func_start EmitPlaySE EmitPlaySE: @ 800E9C4 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, 16 lsrs r1, 16 ldr r3, _0800E9EC @ =gUnknown_2022874 movs r4, 0 movs r2, 0x2B strb r2, [r3] strb r1, [r3, 0x1] lsrs r1, 8 strb r1, [r3, 0x2] strb r4, [r3, 0x3] adds r1, r3, 0 movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800E9EC: .4byte gUnknown_2022874 thumb_func_end EmitPlaySE thumb_func_start Emitcmd44 Emitcmd44: @ 800E9F0 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, 16 lsrs r1, 16 ldr r3, _0800EA18 @ =gUnknown_2022874 movs r4, 0 movs r2, 0x2C strb r2, [r3] strb r1, [r3, 0x1] lsrs r1, 8 strb r1, [r3, 0x2] strb r4, [r3, 0x3] adds r1, r3, 0 movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800EA18: .4byte gUnknown_2022874 thumb_func_end Emitcmd44 thumb_func_start EmitFaintingCry EmitFaintingCry: @ 800EA1C push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800EA38 @ =gUnknown_2022874 movs r2, 0x2D strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800EA38: .4byte gUnknown_2022874 thumb_func_end EmitFaintingCry thumb_func_start EmitIntroSlide EmitIntroSlide: @ 800EA3C push {lr} adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800EA58 @ =gUnknown_2022874 movs r2, 0x2E strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800EA58: .4byte gUnknown_2022874 thumb_func_end EmitIntroSlide thumb_func_start EmitIntroTrainerBallThrow EmitIntroTrainerBallThrow: @ 800EA5C push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800EA78 @ =gUnknown_2022874 movs r2, 0x2F strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800EA78: .4byte gUnknown_2022874 thumb_func_end EmitIntroTrainerBallThrow thumb_func_start EmitDrawPartyStatusSummary EmitDrawPartyStatusSummary: @ 800EA7C push {r4,r5,lr} adds r4, r1, 0 lsls r0, 24 lsrs r5, r0, 24 lsls r2, 24 lsrs r2, 24 ldr r1, _0800EAC0 @ =gUnknown_2022874 movs r3, 0x30 strb r3, [r1] movs r0, 0x7F ands r0, r2 strb r0, [r1, 0x1] movs r0, 0x80 ands r0, r2 lsls r0, 24 lsrs r0, 31 strb r0, [r1, 0x2] strb r3, [r1, 0x3] movs r2, 0 adds r3, r1, 0x4 _0800EAA4: adds r0, r4, r2 ldrb r0, [r0] strb r0, [r3] adds r3, 0x1 adds r2, 0x1 cmp r2, 0x2F ble _0800EAA4 adds r0, r5, 0 movs r2, 0x34 bl PrepareBufferDataTransfer pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800EAC0: .4byte gUnknown_2022874 thumb_func_end EmitDrawPartyStatusSummary thumb_func_start EmitCmd49 EmitCmd49: @ 800EAC4 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800EAE0 @ =gUnknown_2022874 movs r2, 0x31 strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800EAE0: .4byte gUnknown_2022874 thumb_func_end EmitCmd49 thumb_func_start EmitCmd50 EmitCmd50: @ 800EAE4 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0800EB00 @ =gUnknown_2022874 movs r2, 0x32 strb r2, [r1] strb r2, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800EB00: .4byte gUnknown_2022874 thumb_func_end EmitCmd50 thumb_func_start EmitSpriteInvisibility EmitSpriteInvisibility: @ 800EB04 push {lr} adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800EB24 @ =gUnknown_2022874 movs r2, 0x33 strb r2, [r1] strb r3, [r1, 0x1] strb r2, [r1, 0x2] strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800EB24: .4byte gUnknown_2022874 thumb_func_end EmitSpriteInvisibility thumb_func_start EmitBattleAnimation EmitBattleAnimation: @ 800EB28 push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 lsls r2, 16 lsrs r2, 16 ldr r1, _0800EB50 @ =gUnknown_2022874 movs r3, 0x34 strb r3, [r1] strb r4, [r1, 0x1] strb r2, [r1, 0x2] lsrs r2, 8 strb r2, [r1, 0x3] movs r2, 0x4 bl PrepareBufferDataTransfer pop {r4} pop {r0} bx r0 .align 2, 0 _0800EB50: .4byte gUnknown_2022874 thumb_func_end EmitBattleAnimation thumb_func_start EmitLinkStandbyMsg EmitLinkStandbyMsg: @ 800EB54 push {lr} adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800EB70 @ =gUnknown_2022874 movs r2, 0x35 strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800EB70: .4byte gUnknown_2022874 thumb_func_end EmitLinkStandbyMsg thumb_func_start EmitResetActionMoveSelection EmitResetActionMoveSelection: @ 800EB74 push {lr} adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800EB90 @ =gUnknown_2022874 movs r2, 0x36 strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800EB90: .4byte gUnknown_2022874 thumb_func_end EmitResetActionMoveSelection thumb_func_start EmitCmd55 EmitCmd55: @ 800EB94 push {lr} adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _0800EBB0 @ =gUnknown_2022874 movs r2, 0x37 strb r2, [r1] strb r3, [r1, 0x1] movs r2, 0x2 bl PrepareBufferDataTransfer pop {r0} bx r0 .align 2, 0 _0800EBB0: .4byte gUnknown_2022874 thumb_func_end EmitCmd55 .align 2, 0 @ Don't pad with nop.