.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start nullsub_120 nullsub_120: @ 8189948 bx lr thumb_func_end nullsub_120 thumb_func_start SetBankFuncToRecordedPlayerBufferRunCommand SetBankFuncToRecordedPlayerBufferRunCommand: @ 818994C ldr r1, =gBattleBankFunc ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, =RecordedPlayerBufferRunCommand str r1, [r0] bx lr .pool thumb_func_end SetBankFuncToRecordedPlayerBufferRunCommand thumb_func_start RecordedPlayerBufferRunCommand RecordedPlayerBufferRunCommand: @ 8189968 push {lr} ldr r2, =gBattleExecBuffer ldr r1, =gBitTable ldr r0, =gActiveBank ldrb r3, [r0] lsls r0, r3, 2 adds r0, r1 ldr r1, [r2] ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _081899B4 ldr r0, =gBattleBufferA lsls r1, r3, 9 adds r1, r0 ldrb r0, [r1] cmp r0, 0x38 bhi _081899B0 ldr r0, =gRecordedPlayerBufferCommands ldrb r1, [r1] lsls r1, 2 adds r1, r0 ldr r0, [r1] bl _call_via_r0 b _081899B4 .pool _081899B0: bl RecordedPlayerBufferExecCompleted _081899B4: pop {r0} bx r0 thumb_func_end RecordedPlayerBufferRunCommand thumb_func_start sub_81899B8 sub_81899B8: @ 81899B8 push {lr} ldr r2, =gSprites ldr r1, =gBankSpriteIds ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, =SpriteCallbackDummy cmp r1, r0 bne _081899DC bl RecordedPlayerBufferExecCompleted _081899DC: pop {r0} bx r0 .pool thumb_func_end sub_81899B8 thumb_func_start sub_81899F0 sub_81899F0: @ 81899F0 push {r4-r6,lr} ldr r6, =gSprites ldr r5, =gBankSpriteIds ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r6, 0 adds r1, 0x1C adds r0, r1 ldr r1, [r0] ldr r0, =SpriteCallbackDummy cmp r1, r0 bne _08189A40 movs r0, 0 bl nullsub_25 ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 bl FreeSpriteOamMatrix ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 bl DestroySprite bl RecordedPlayerBufferExecCompleted _08189A40: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_81899F0 thumb_func_start sub_8189A58 sub_8189A58: @ 8189A58 push {r4,lr} ldr r4, =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, =gActiveBank ldrb r0, [r3] ldr r2, [r1, 0x4] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1, 0x9] subs r0, 0x1 strb r0, [r1, 0x9] lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF bne _08189A90 ldr r0, [r4] ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x9] bl RecordedPlayerBufferExecCompleted _08189A90: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_8189A58 thumb_func_start sub_8189AA0 sub_8189AA0: @ 8189AA0 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r6, 0 ldr r4, =gActiveBank ldrb r0, [r4] bl GetBankIdentity lsls r0, 24 cmp r0, 0 beq _08189ABA b _08189C60 _08189ABA: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189ADA bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189B0C ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _08189B0C _08189ADA: ldr r2, =gSprites ldr r1, =gHealthBoxesIds ldrb r0, [r4] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, =SpriteCallbackDummy cmp r1, r0 bne _08189B42 b _08189B48 .pool _08189B0C: ldr r2, =gSprites ldr r5, =gHealthBoxesIds ldr r0, =gActiveBank ldrb r3, [r0] adds r0, r3, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r4, [r0] ldr r0, =SpriteCallbackDummy cmp r4, r0 bne _08189B42 movs r0, 0x2 eors r3, r0 adds r0, r3, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldr r0, [r0] cmp r0, r4 bne _08189B42 movs r6, 0x1 _08189B42: cmp r6, 0 bne _08189B48 b _08189D18 _08189B48: ldr r0, =gBattleSpritesDataPtr mov r9, r0 ldr r0, [r0] ldr r5, =gActiveBank ldrb r2, [r5] ldr r3, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r4, r0, r3 ldrb r1, [r4, 0x1] movs r6, 0x1 adds r0, r6, 0 ands r0, r1 cmp r0, 0 bne _08189B6A b _08189D18 _08189B6A: movs r1, 0x2 mov r8, r1 mov r1, r8 eors r1, r2 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r1, [r0, 0x1] adds r0, r6, 0 ands r0, r1 cmp r0, 0 bne _08189B86 b _08189D18 _08189B86: ldrb r1, [r4] movs r3, 0x7F adds r0, r3, 0 ands r0, r1 strb r0, [r4] mov r1, r9 ldr r0, [r1] ldrb r2, [r5] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1, 0x1] movs r4, 0x2 negs r4, r4 adds r0, r4, 0 ands r0, r2 strb r0, [r1, 0x1] mov r0, r9 ldr r2, [r0] ldrb r0, [r5] mov r1, r8 eors r1, r0 ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] ands r3, r1 strb r3, [r0] mov r1, r9 ldr r2, [r1] ldrb r0, [r5] mov r1, r8 eors r1, r0 ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x1] ands r4, r1 strb r4, [r0, 0x1] ldr r4, =0x000027f9 adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag ldr r7, =gBattlePartyID ldrb r1, [r5] lsls r0, r1, 1 adds r0, r7 ldrh r0, [r0] movs r6, 0x64 muls r0, r6 ldr r4, =gPlayerParty adds r0, r4 bl sub_805E990 bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189C22 ldrb r0, [r5] mov r1, r8 eors r1, r0 lsls r0, r1, 1 adds r0, r7 ldrh r0, [r0] muls r0, r6 adds r0, r4 bl sub_805E990 _08189C22: mov r1, r9 ldr r0, [r1] ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x3 strb r1, [r0, 0x9] ldr r1, =gBattleBankFunc ldrb r0, [r5] b _08189D10 .pool _08189C60: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189C80 bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189CB0 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _08189CB0 _08189C80: ldr r2, =gSprites ldr r1, =gHealthBoxesIds ldrb r0, [r4] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, =SpriteCallbackDummy cmp r1, r0 bne _08189CE6 b _08189CE4 .pool _08189CB0: ldr r2, =gSprites ldr r5, =gHealthBoxesIds ldr r0, =gActiveBank ldrb r3, [r0] adds r0, r3, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r4, [r0] ldr r0, =SpriteCallbackDummy cmp r4, r0 bne _08189CE6 movs r0, 0x2 eors r3, r0 adds r0, r3, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldr r0, [r0] cmp r0, r4 bne _08189CE6 _08189CE4: movs r6, 0x1 _08189CE6: bl IsCryPlayingOrClearCrySongs lsls r0, 24 cmp r0, 0 beq _08189CF2 movs r6, 0 _08189CF2: cmp r6, 0 beq _08189D18 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, =gActiveBank ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x3 strb r1, [r0, 0x9] ldr r1, =gBattleBankFunc ldrb r0, [r3] _08189D10: lsls r0, 2 adds r0, r1 ldr r1, =sub_8189A58 str r1, [r0] _08189D18: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8189AA0 thumb_func_start sub_8189D40 sub_8189D40: @ 8189D40 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r0, 0 mov r10, r0 ldr r4, =gActiveBank ldrb r0, [r4] bl GetBankIdentity lsls r0, 24 cmp r0, 0 bne _08189DBE ldr r5, =gBattleSpritesDataPtr ldr r0, [r5] ldrb r2, [r4] ldr r1, [r0, 0x4] lsls r3, r2, 1 adds r0, r3, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r6, 0x88 adds r0, r6, 0 ands r0, r1 cmp r0, 0 bne _08189D8C ldr r0, =gBattlePartyID adds r0, r3, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, =gPlayerParty adds r1, r0 adds r0, r2, 0 bl sub_8172EF0 _08189D8C: ldr r2, [r5] ldrb r1, [r4] movs r0, 0x2 adds r3, r0, 0 eors r3, r1 ldr r1, [r2, 0x4] lsls r2, r3, 1 adds r0, r2, r3 lsls r0, 2 adds r0, r1 ldrb r1, [r0] adds r0, r6, 0 ands r0, r1 cmp r0, 0 bne _08189DBE ldr r0, =gBattlePartyID adds r0, r2, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, =gPlayerParty adds r1, r0 adds r0, r3, 0 bl sub_8172EF0 _08189DBE: ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, =gActiveBank ldrb r5, [r2] ldr r4, [r0, 0x4] lsls r0, r5, 1 adds r0, r5 lsls r0, 2 adds r6, r0, r4 ldrb r1, [r6] movs r0, 0x8 mov r12, r0 ands r0, r1 mov r9, r2 mov r8, r3 cmp r0, 0 bne _08189EA2 movs r7, 0x2 adds r1, r7, 0 eors r1, r5 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r0] mov r0, r12 ands r0, r1 cmp r0, 0 bne _08189EA2 ldrb r1, [r6, 0x1] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08189E84 bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189E54 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 bne _08189E54 ldr r4, =gHealthBoxesIds mov r1, r9 ldrb r0, [r1] adds r1, r7, 0 eors r1, r0 adds r0, r1, r4 ldrb r0, [r0] ldr r2, =gBattlePartyID lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r1, 0x64 muls r1, r2 ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 bl UpdateHealthboxAttribute mov r1, r9 ldrb r0, [r1] eors r0, r7 bl sub_8076918 mov r1, r9 ldrb r0, [r1] eors r0, r7 adds r0, r4 ldrb r0, [r0] bl SetHealthboxSpriteVisible _08189E54: ldr r5, =gHealthBoxesIds ldr r4, =gActiveBank ldrb r1, [r4] adds r0, r1, r5 ldrb r0, [r0] ldr r2, =gBattlePartyID lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r1, 0x64 muls r1, r2 ldr r2, =gPlayerParty adds r1, r2 movs r2, 0 bl UpdateHealthboxAttribute ldrb r0, [r4] bl sub_8076918 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] bl SetHealthboxSpriteVisible _08189E84: ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x1] movs r2, 0x80 orrs r1, r2 strb r1, [r0, 0x1] mov r9, r3 mov r8, r4 _08189EA2: mov r1, r8 ldr r0, [r1] mov r1, r9 ldrb r2, [r1] ldr r3, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r3 ldrb r1, [r0, 0x1] movs r0, 0xC0 ands r0, r1 cmp r0, 0x80 bne _08189F62 movs r1, 0x2 eors r1, r2 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 ldrb r1, [r0, 0x1] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _08189F62 bl IsCryPlayingOrClearCrySongs lsls r0, 24 cmp r0, 0 bne _08189F62 mov r1, r8 ldr r0, [r1] mov r1, r9 ldrb r2, [r1] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x1] movs r0, 0x20 ands r0, r1 cmp r0, 0 bne _08189F44 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x42 ands r0, r1 cmp r0, 0x42 bne _08189F38 adds r0, r2, 0 bl GetBankIdentity lsls r0, 24 cmp r0, 0 bne _08189F44 ldr r0, =gMPlay_BGM bl m4aMPlayContinue b _08189F44 .pool _08189F38: ldr r0, =gMPlay_BGM ldr r1, =0x0000ffff movs r2, 0x80 lsls r2, 1 bl m4aMPlayVolumeControl _08189F44: ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x1] movs r2, 0x20 orrs r1, r2 strb r1, [r0, 0x1] movs r0, 0x1 mov r10, r0 _08189F62: mov r1, r10 cmp r1, 0 beq _0818A02A ldr r7, =gSprites ldr r6, =gUnknown_03005D7C ldr r5, =gActiveBank ldrb r3, [r5] adds r0, r3, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, r7, 0 adds r4, 0x1C adds r0, r4 ldr r2, [r0] ldr r0, =SpriteCallbackDummy cmp r2, r0 bne _0818A02A ldr r0, =gBankSpriteIds adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r0, [r0] cmp r0, r2 bne _0818A02A bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08189FC8 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 bne _08189FC8 ldrb r1, [r5] movs r0, 0x2 eors r0, r1 adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r7 bl DestroySprite _08189FC8: ldr r1, =gUnknown_03005D7C ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, =gSprites adds r0, r1 bl DestroySprite ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] movs r0, 0x2 negs r0, r0 ands r0, r1 strb r0, [r2, 0x9] ldr r0, [r3] ldrb r2, [r4] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1, 0x1] movs r0, 0x21 negs r0, r0 ands r0, r2 strb r0, [r1, 0x1] ldr r0, [r3] ldrb r2, [r4] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1, 0x1] movs r0, 0x7F ands r0, r2 strb r0, [r1, 0x1] ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, =sub_8189AA0 str r1, [r0] _0818A02A: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8189D40 thumb_func_start sub_818A064 sub_818A064: @ 818A064 push {lr} ldr r2, =gSprites ldr r1, =gBankSpriteIds ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r0, r2 adds r0, r1, 0 adds r0, 0x3F ldrb r0, [r0] lsls r0, 27 cmp r0, 0 bge _0818A092 movs r2, 0x24 ldrsh r0, [r1, r2] cmp r0, 0 bne _0818A092 bl RecordedPlayerBufferExecCompleted _0818A092: pop {r0} bx r0 .pool thumb_func_end sub_818A064 thumb_func_start sub_818A0A4 sub_818A0A4: @ 818A0A4 push {r4-r6,lr} ldr r5, =gActiveBank ldrb r0, [r5] ldr r6, =gHealthBoxesIds adds r1, r0, r6 ldrb r1, [r1] movs r2, 0 movs r3, 0 bl sub_8074AA0 adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] bl SetHealthboxSpriteVisible lsls r4, 16 asrs r1, r4, 16 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0818A0EC ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] movs r2, 0 bl UpdateHpTextInHealthbox b _0818A106 .pool _0818A0EC: ldr r2, =gBattlePartyID ldrb r1, [r5] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 bl sub_805E990 bl RecordedPlayerBufferExecCompleted _0818A106: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818A0A4 thumb_func_start sub_818A114 sub_818A114: @ 818A114 push {r4-r6,lr} ldr r6, =gSprites ldr r5, =gBankSpriteIds ldr r4, =gActiveBank ldrb r2, [r4] adds r0, r2, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 movs r3, 0x22 ldrsh r1, [r0, r3] movs r3, 0x26 ldrsh r0, [r0, r3] adds r1, r0 cmp r1, 0xA0 ble _0818A190 ldr r1, =gBattlePartyID lsls r0, r2, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 bl nullsub_24 ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 ldrb r0, [r0, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r6 bl DestroySprite ldr r1, =gHealthBoxesIds ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] bl SetHealthboxSpriteInvisible bl RecordedPlayerBufferExecCompleted _0818A190: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818A114 thumb_func_start sub_818A1B0 sub_818A1B0: @ 818A1B0 push {r4-r6,lr} ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, =gActiveBank ldrb r2, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _0818A204 ldr r5, =gBankSpriteIds adds r0, r2, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, =gSprites adds r0, r4 bl FreeSpriteOamMatrix ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl DestroySprite ldr r1, =gHealthBoxesIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] bl SetHealthboxSpriteInvisible bl RecordedPlayerBufferExecCompleted _0818A204: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818A1B0 thumb_func_start sub_818A220 sub_818A220: @ 818A220 push {lr} movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 bne _0818A232 bl RecordedPlayerBufferExecCompleted _0818A232: pop {r0} bx r0 thumb_func_end sub_818A220 thumb_func_start sub_818A238 sub_818A238: @ 818A238 push {r4,lr} ldr r1, =gBankSpriteIds ldr r0, =gActiveBank ldrb r0, [r0] adds r0, r1 ldrb r1, [r0] ldr r2, =gSprites lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, r0, r2 movs r1, 0x30 ldrsh r0, [r4, r1] cmp r0, 0x20 bne _0818A284 movs r3, 0 movs r0, 0 strh r0, [r4, 0x30] adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] subs r0, 0x5 ands r0, r1 strb r0, [r2] ldr r0, =gDoingBattleAnim strb r3, [r0] bl RecordedPlayerBufferExecCompleted b _0818A2AE .pool _0818A284: ldrh r0, [r4, 0x30] movs r1, 0x3 ands r0, r1 cmp r0, 0 bne _0818A2A8 adds r3, r4, 0 adds r3, 0x3E ldrb r2, [r3] lsls r0, r2, 29 lsrs r0, 31 movs r1, 0x1 eors r1, r0 lsls r1, 2 movs r0, 0x5 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] _0818A2A8: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] _0818A2AE: pop {r4} pop {r0} bx r0 thumb_func_end sub_818A238 thumb_func_start sub_818A2B4 sub_818A2B4: @ 818A2B4 push {r4,lr} ldr r2, =gSprites ldr r0, =gHealthBoxesIds ldr r4, =gActiveBank ldrb r3, [r4] adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, =SpriteCallbackDummy cmp r1, r0 bne _0818A306 adds r0, r3, 0 bl sub_805E408 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] lsls r0, r2, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0818A2FA adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x6 bl move_anim_start_t4 _0818A2FA: ldr r0, =gBattleBankFunc ldrb r1, [r4] lsls r1, 2 adds r1, r0 ldr r0, =sub_818A328 str r0, [r1] _0818A306: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_818A2B4 thumb_func_start sub_818A328 sub_818A328: @ 818A328 push {lr} ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] ldr r1, [r1, 0x4] lsls r0, r3, 1 adds r0, r3 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _0818A364 ldr r2, =gSprites ldr r0, =gBankSpriteIds adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, [r0] ldr r0, =SpriteCallbackDummy cmp r1, r0 bne _0818A364 bl RecordedPlayerBufferExecCompleted _0818A364: pop {r0} bx r0 .pool thumb_func_end sub_818A328 thumb_func_start sub_818A37C sub_818A37C: @ 818A37C push {r4-r7,lr} mov r7, r8 push {r7} ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldr r7, =gActiveBank ldrb r1, [r7] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r2, r0, r2 ldrb r1, [r2, 0x1] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0818A438 ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] ldr r0, [r3] ldrb r2, [r7] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1, 0x1] movs r0, 0x2 negs r0, r0 ands r0, r2 strb r0, [r1, 0x1] ldr r4, =0x000027f9 adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag ldr r0, =c3_0802FDF4 movs r1, 0xA bl CreateTask ldr r0, =gBattlePartyID mov r8, r0 ldrb r1, [r7] lsls r0, r1, 1 add r0, r8 ldrh r0, [r0] movs r6, 0x64 muls r0, r6 ldr r5, =gPlayerParty adds r0, r5 bl sub_805E990 ldr r1, =gBankSpriteIds ldrb r0, [r7] adds r0, r1 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, =gSprites adds r0, r1 movs r1, 0 bl StartSpriteAnim ldr r4, =gHealthBoxesIds ldrb r1, [r7] adds r0, r1, r4 ldrb r0, [r0] lsls r1, 1 add r1, r8 ldrh r1, [r1] muls r1, r6 adds r1, r5 movs r2, 0 bl UpdateHealthboxAttribute ldrb r0, [r7] bl sub_8076918 ldrb r0, [r7] adds r0, r4 ldrb r0, [r0] bl SetHealthboxSpriteVisible ldr r1, =gBattleBankFunc ldrb r0, [r7] lsls r0, 2 adds r0, r1 ldr r1, =sub_818A2B4 str r1, [r0] _0818A438: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_818A37C thumb_func_start sub_818A470 sub_818A470: @ 818A470 push {r4-r6,lr} ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r4, =gActiveBank ldrb r2, [r4] ldr r1, [r0, 0x4] lsls r3, r2, 1 adds r0, r3, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x88 ands r0, r1 cmp r0, 0 bne _0818A4A2 ldr r0, =gBattlePartyID adds r0, r3, r0 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, =gPlayerParty adds r1, r0 adds r0, r2, 0 bl sub_8172EF0 _0818A4A2: ldr r5, =gSprites ldr r0, =gUnknown_03005D7C ldrb r2, [r4] adds r0, r2, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r3, r0, 2 adds r0, r5, 0 adds r0, 0x1C adds r0, r3, r0 ldr r1, [r0] ldr r0, =SpriteCallbackDummy cmp r1, r0 bne _0818A4E8 ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x8 ands r0, r1 cmp r0, 0 bne _0818A4E8 adds r0, r3, r5 bl DestroySprite ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, =sub_818A37C str r1, [r0] _0818A4E8: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818A470 thumb_func_start RecordedPlayerBufferExecCompleted RecordedPlayerBufferExecCompleted: @ 818A514 push {r4,lr} sub sp, 0x4 ldr r1, =gBattleBankFunc ldr r4, =gActiveBank ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, =RecordedPlayerBufferRunCommand str r1, [r0] ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x2 ands r0, r1 cmp r0, 0 beq _0818A568 bl GetMultiplayerId mov r1, sp strb r0, [r1] movs r0, 0x2 movs r1, 0x4 mov r2, sp bl PrepareBufferDataTransferLink ldr r1, =gBattleBufferA ldrb r0, [r4] lsls r0, 9 adds r0, r1 movs r1, 0x38 strb r1, [r0] b _0818A57A .pool _0818A568: ldr r2, =gBattleExecBuffer ldr r1, =gBitTable ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, [r0] ldr r0, [r2] bics r0, r1 str r0, [r2] _0818A57A: add sp, 0x4 pop {r4} pop {r0} bx r0 .pool thumb_func_end RecordedPlayerBufferExecCompleted thumb_func_start sub_818A58C sub_818A58C: @ 818A58C push {lr} ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 bne _0818A5AE bl RecordedPlayerBufferExecCompleted _0818A5AE: pop {r0} bx r0 .pool thumb_func_end sub_818A58C thumb_func_start sub_818A5BC sub_818A5BC: @ 818A5BC push {lr} ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 bne _0818A5DE bl RecordedPlayerBufferExecCompleted _0818A5DE: pop {r0} bx r0 .pool thumb_func_end sub_818A5BC thumb_func_start sub_818A5EC sub_818A5EC: @ 818A5EC push {r4-r6,lr} sub sp, 0x100 movs r6, 0 ldr r1, =gBattleBufferA ldr r0, =gActiveBank ldrb r2, [r0] lsls r0, r2, 9 adds r1, 0x2 adds r1, r0, r1 ldrb r0, [r1] cmp r0, 0 bne _0818A624 ldr r0, =gBattlePartyID lsls r1, r2, 1 adds r1, r0 ldrb r0, [r1] mov r1, sp bl sub_818A660 adds r6, r0, 0 b _0818A646 .pool _0818A624: ldrb r4, [r1] movs r5, 0 _0818A628: movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _0818A63E lsls r0, r5, 24 lsrs r0, 24 mov r2, sp adds r1, r2, r6 bl sub_818A660 adds r6, r0 _0818A63E: lsrs r4, 1 adds r5, 0x1 cmp r5, 0x5 ble _0818A628 _0818A646: lsls r1, r6, 16 lsrs r1, 16 movs r0, 0x1 mov r2, sp bl EmitDataTransfer bl RecordedPlayerBufferExecCompleted add sp, 0x100 pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_818A5EC thumb_func_start sub_818A660 sub_818A660: @ 818A660 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x90 adds r7, r1, 0 lsls r0, 24 lsrs r5, r0, 24 movs r6, 0 ldr r2, =gBattleBufferA ldr r3, =gActiveBank ldrb r0, [r3] lsls r0, 9 adds r1, r2, 0x1 adds r0, r1 ldrb r0, [r0] cmp r0, 0x3B bls _0818A68A bl _0818ADF6 _0818A68A: lsls r0, 2 ldr r1, =_0818A6A0 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0818A6A0: .4byte _0818A790 .4byte _0818A9B4 .4byte _0818A9C4 .4byte _0818A9D4 .4byte _0818AA3C .4byte _0818AA3C .4byte _0818AA3C .4byte _0818AA3C .4byte _0818AA58 .4byte _0818AA94 .4byte _0818AA94 .4byte _0818AA94 .4byte _0818AA94 .4byte _0818ADF6 .4byte _0818ADF6 .4byte _0818ADF6 .4byte _0818ADF6 .4byte _0818AAB0 .4byte _0818AAC0 .4byte _0818AAF0 .4byte _0818AB00 .4byte _0818AB10 .4byte _0818AB20 .4byte _0818AB30 .4byte _0818AB40 .4byte _0818AB50 .4byte _0818AB60 .4byte _0818AB70 .4byte _0818AB80 .4byte _0818AB90 .4byte _0818ABA0 .4byte _0818ABB0 .4byte _0818AC00 .4byte _0818AC10 .4byte _0818AC20 .4byte _0818AC30 .4byte _0818AC40 .4byte _0818AC50 .4byte _0818AC60 .4byte _0818AC70 .4byte _0818AC80 .4byte _0818ACB4 .4byte _0818ACC4 .4byte _0818ACD4 .4byte _0818ACE4 .4byte _0818ACF4 .4byte _0818AD04 .4byte _0818AD14 .4byte _0818AD24 .4byte _0818AD44 .4byte _0818AD54 .4byte _0818AD64 .4byte _0818AD74 .4byte _0818AD84 .4byte _0818AD94 .4byte _0818ADA4 .4byte _0818ADB4 .4byte _0818ADC4 .4byte _0818ADD4 .4byte _0818ADE4 _0818A790: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData mov r1, sp strh r0, [r1] adds r0, r4, 0 movs r1, 0xC bl GetMonData mov r1, sp strh r0, [r1, 0x2E] movs r6, 0 add r0, sp, 0x24 mov r9, r0 movs r1, 0x3B add r1, sp mov r10, r1 mov r2, sp adds r2, 0x2B str r2, [sp, 0x80] mov r0, sp adds r0, 0x2A str r0, [sp, 0x7C] mov r1, sp adds r1, 0x68 str r1, [sp, 0x8C] adds r2, 0x5 str r2, [sp, 0x84] adds r0, 0x12 str r0, [sp, 0x88] mov r8, r4 add r4, sp, 0xC _0818A7DC: adds r1, r6, 0 adds r1, 0xD mov r0, r8 bl GetMonData strh r0, [r4] adds r1, r6, 0 adds r1, 0x11 mov r0, r8 bl GetMonData mov r2, r9 adds r1, r2, r6 strb r0, [r1] adds r4, 0x2 adds r6, 0x1 cmp r6, 0x3 ble _0818A7DC movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0x15 bl GetMonData mov r1, r10 strb r0, [r1] adds r0, r4, 0 movs r1, 0x20 bl GetMonData ldr r2, [sp, 0x80] strb r0, [r2] adds r0, r4, 0 movs r1, 0x19 bl GetMonData str r0, [sp, 0x44] adds r0, r4, 0 movs r1, 0x27 bl GetMonData mov r3, sp movs r5, 0x1F ands r0, r5 ldrb r2, [r3, 0x14] movs r1, 0x20 negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x14] adds r0, r4, 0 movs r1, 0x28 bl GetMonData mov r3, sp movs r6, 0x1F ands r0, r6 lsls r0, 5 ldrh r2, [r3, 0x14] ldr r1, =0xfffffc1f ands r1, r2 orrs r1, r0 strh r1, [r3, 0x14] adds r0, r4, 0 movs r1, 0x29 bl GetMonData mov r3, sp ands r0, r5 lsls r0, 2 ldrb r2, [r3, 0x15] movs r1, 0x7D negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x15] adds r0, r4, 0 movs r1, 0x2A bl GetMonData movs r1, 0x1F ands r1, r0 lsls r1, 15 ldr r0, [sp, 0x14] ldr r2, =0xfff07fff ands r0, r2 orrs r0, r1 str r0, [sp, 0x14] adds r0, r4, 0 movs r1, 0x2B bl GetMonData mov r3, sp ands r0, r6 lsls r0, 4 ldrh r2, [r3, 0x16] ldr r1, =0xfffffe0f ands r1, r2 orrs r1, r0 strh r1, [r3, 0x16] adds r0, r4, 0 movs r1, 0x2C bl GetMonData mov r3, sp ands r0, r5 lsls r0, 1 ldrb r2, [r3, 0x17] movs r1, 0x3F negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x17] adds r0, r4, 0 movs r1, 0 bl GetMonData str r0, [sp, 0x48] adds r0, r4, 0 movs r1, 0x37 bl GetMonData str r0, [sp, 0x4C] adds r0, r4, 0 movs r1, 0x38 bl GetMonData ldr r1, [sp, 0x7C] strb r0, [r1] adds r0, r4, 0 movs r1, 0x39 bl GetMonData mov r1, sp strh r0, [r1, 0x28] adds r0, r4, 0 movs r1, 0x3A bl GetMonData mov r1, sp strh r0, [r1, 0x2C] adds r0, r4, 0 movs r1, 0x3B bl GetMonData mov r1, sp strh r0, [r1, 0x2] adds r0, r4, 0 movs r1, 0x3C bl GetMonData mov r1, sp strh r0, [r1, 0x4] adds r0, r4, 0 movs r1, 0x3D bl GetMonData mov r1, sp strh r0, [r1, 0x6] adds r0, r4, 0 movs r1, 0x3E bl GetMonData mov r1, sp strh r0, [r1, 0x8] adds r0, r4, 0 movs r1, 0x3F bl GetMonData mov r1, sp strh r0, [r1, 0xA] adds r0, r4, 0 movs r1, 0x2D bl GetMonData mov r3, sp movs r1, 0x1 ands r0, r1 lsls r0, 6 ldrb r2, [r3, 0x17] movs r1, 0x41 negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3, 0x17] adds r0, r4, 0 movs r1, 0x2E bl GetMonData mov r3, sp lsls r0, 7 ldrb r2, [r3, 0x17] movs r1, 0x7F ands r1, r2 orrs r1, r0 strb r1, [r3, 0x17] adds r0, r4, 0 movs r1, 0x1 bl GetMonData str r0, [sp, 0x54] adds r0, r4, 0 movs r1, 0x2 ldr r2, [sp, 0x8C] bl GetMonData ldr r0, [sp, 0x84] ldr r1, [sp, 0x8C] bl StringCopy10 adds r0, r4, 0 movs r1, 0x7 ldr r2, [sp, 0x88] bl GetMonData mov r2, sp movs r6, 0 _0818A994: adds r0, r7, r6 adds r1, r2, r6 ldrb r1, [r1] strb r1, [r0] adds r6, 0x1 cmp r6, 0x57 bls _0818A994 b _0818ADF6 .pool _0818A9B4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0xB b _0818AD2E .pool _0818A9C4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0xC b _0818AD2E .pool _0818A9D4: movs r6, 0 add r2, sp, 0x58 mov r9, r2 add r0, sp, 0x60 mov r10, r0 movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, =gPlayerParty adds r4, r1, r0 mov r8, r9 _0818A9EA: adds r1, r6, 0 adds r1, 0xD adds r0, r4, 0 bl GetMonData mov r1, r8 strh r0, [r1] adds r1, r6, 0 adds r1, 0x11 adds r0, r4, 0 bl GetMonData mov r2, r10 adds r1, r2, r6 strb r0, [r1] movs r0, 0x2 add r8, r0 adds r6, 0x1 cmp r6, 0x3 ble _0818A9EA movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x15 bl GetMonData mov r1, r9 strb r0, [r1, 0xC] mov r2, r9 movs r6, 0 _0818AA28: adds r0, r7, r6 adds r1, r2, r6 ldrb r1, [r1] strb r1, [r0] adds r6, 0x1 cmp r6, 0xF bls _0818AA28 b _0818ADF6 .pool _0818AA3C: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldrb r1, [r3] lsls r1, 9 adds r2, 0x1 adds r1, r2 ldrb r1, [r1] adds r1, 0x9 b _0818AD2E .pool _0818AA58: movs r6, 0 movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r2, =gPlayerParty mov r8, r2 _0818AA64: adds r1, r6, 0 adds r1, 0x11 mov r2, r8 adds r0, r4, r2 bl GetMonData adds r1, r7, r6 strb r0, [r1] adds r6, 0x1 cmp r6, 0x3 ble _0818AA64 movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x15 bl GetMonData adds r1, r7, r6 strb r0, [r1] adds r6, 0x1 b _0818ADF6 .pool _0818AA94: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldrb r1, [r3] lsls r1, 9 adds r2, 0x1 adds r1, r2 ldrb r1, [r1] adds r1, 0x8 b _0818ADEE .pool _0818AAB0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x1 b _0818AACA .pool _0818AAC0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x19 _0818AACA: bl GetMonData adds r1, r0, 0 strb r1, [r7] movs r0, 0xFF lsls r0, 8 ands r0, r1 lsrs r0, 8 strb r0, [r7, 0x1] movs r0, 0xFF lsls r0, 16 ands r0, r1 lsrs r0, 16 strb r0, [r7, 0x2] movs r6, 0x3 b _0818ADF6 .pool _0818AAF0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x1A b _0818ADEE .pool _0818AB00: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x1B b _0818ADEE .pool _0818AB10: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x1C b _0818ADEE .pool _0818AB20: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x1D b _0818ADEE .pool _0818AB30: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x1E b _0818ADEE .pool _0818AB40: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x1F b _0818ADEE .pool _0818AB50: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x20 b _0818ADEE .pool _0818AB60: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x22 b _0818ADEE .pool _0818AB70: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x23 b _0818ADEE .pool _0818AB80: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x24 b _0818ADEE .pool _0818AB90: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x25 b _0818ADEE .pool _0818ABA0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x26 b _0818ADEE .pool _0818ABB0: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0x27 bl GetMonData strb r0, [r7] adds r0, r4, 0 movs r1, 0x28 bl GetMonData strb r0, [r7, 0x1] adds r0, r4, 0 movs r1, 0x29 bl GetMonData strb r0, [r7, 0x2] adds r0, r4, 0 movs r1, 0x2A bl GetMonData strb r0, [r7, 0x3] adds r0, r4, 0 movs r1, 0x2B bl GetMonData strb r0, [r7, 0x4] adds r0, r4, 0 movs r1, 0x2C bl GetMonData strb r0, [r7, 0x5] movs r6, 0x6 b _0818ADF6 .pool _0818AC00: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x27 b _0818ADEE .pool _0818AC10: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x28 b _0818ADEE .pool _0818AC20: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x29 b _0818ADEE .pool _0818AC30: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x2A b _0818ADEE .pool _0818AC40: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x2B b _0818ADEE .pool _0818AC50: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x2C b _0818ADEE .pool _0818AC60: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0 b _0818AC8A .pool _0818AC70: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x9 b _0818AD2E .pool _0818AC80: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x37 _0818AC8A: bl GetMonData adds r1, r0, 0 strb r1, [r7] movs r0, 0xFF lsls r0, 8 ands r0, r1 lsrs r0, 8 strb r0, [r7, 0x1] movs r0, 0xFF lsls r0, 16 ands r0, r1 lsrs r0, 16 strb r0, [r7, 0x2] lsrs r0, r1, 24 strb r0, [r7, 0x3] movs r6, 0x4 b _0818ADF6 .pool _0818ACB4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x38 b _0818ADEE .pool _0818ACC4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x39 b _0818AD2E .pool _0818ACD4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x3A b _0818AD2E .pool _0818ACE4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x3B b _0818AD2E .pool _0818ACF4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x3C b _0818AD2E .pool _0818AD04: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x3D b _0818AD2E .pool _0818AD14: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x3E b _0818AD2E .pool _0818AD24: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x3F _0818AD2E: bl GetMonData lsls r0, 16 lsrs r0, 16 strb r0, [r7] lsrs r0, 8 strb r0, [r7, 0x1] movs r6, 0x2 b _0818ADF6 .pool _0818AD44: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x16 b _0818ADEE .pool _0818AD54: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x17 b _0818ADEE .pool _0818AD64: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x18 b _0818ADEE .pool _0818AD74: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x21 b _0818ADEE .pool _0818AD84: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x2F b _0818ADEE .pool _0818AD94: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x30 b _0818ADEE .pool _0818ADA4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x32 b _0818ADEE .pool _0818ADB4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x33 b _0818ADEE .pool _0818ADC4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x34 b _0818ADEE .pool _0818ADD4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x35 b _0818ADEE .pool _0818ADE4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x36 _0818ADEE: bl GetMonData strb r0, [r7] movs r6, 0x1 _0818ADF6: adds r0, r6, 0 add sp, 0x90 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end sub_818A660 thumb_func_start sub_818AE0C sub_818AE0C: @ 818AE0C push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818AE0C thumb_func_start sub_818AE18 sub_818AE18: @ 818AE18 push {r4,r5,lr} ldr r1, =gBattleBufferA ldr r0, =gActiveBank ldrb r2, [r0] lsls r0, r2, 9 adds r1, 0x2 adds r1, r0, r1 ldrb r0, [r1] cmp r0, 0 bne _0818AE48 ldr r0, =gBattlePartyID lsls r1, r2, 1 adds r1, r0 ldrb r0, [r1] bl sub_818AE70 b _0818AE66 .pool _0818AE48: ldrb r4, [r1] movs r5, 0 _0818AE4C: movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _0818AE5A adds r0, r5, 0 bl sub_818AE70 _0818AE5A: lsrs r4, 1 adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _0818AE4C _0818AE66: bl RecordedPlayerBufferExecCompleted pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_818AE18 thumb_func_start sub_818AE70 sub_818AE70: @ 818AE70 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x34 lsls r0, 24 lsrs r5, r0, 24 ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 9 ldr r2, =gBattleBufferA + 3 adds r3, r0, r2 adds r6, r3, 0 subs r1, r2, 0x2 adds r0, r1 ldrb r0, [r0] adds r7, r2, 0 cmp r0, 0x3B bls _0818AE9C bl _0818B836 _0818AE9C: lsls r0, 2 ldr r1, =_0818AEB4 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0818AEB4: .4byte _0818AFA4 .4byte _0818B13C .4byte _0818B15C .4byte _0818B17C .4byte _0818B1D4 .4byte _0818B1D4 .4byte _0818B1D4 .4byte _0818B1D4 .4byte _0818B1FC .4byte _0818B260 .4byte _0818B260 .4byte _0818B260 .4byte _0818B260 .4byte _0818B836 .4byte _0818B836 .4byte _0818B836 .4byte _0818B836 .4byte _0818B290 .4byte _0818B2B0 .4byte _0818B2D0 .4byte _0818B2F0 .4byte _0818B310 .4byte _0818B330 .4byte _0818B350 .4byte _0818B370 .4byte _0818B390 .4byte _0818B3B0 .4byte _0818B3D0 .4byte _0818B3F0 .4byte _0818B410 .4byte _0818B430 .4byte _0818B450 .4byte _0818B4C0 .4byte _0818B4E0 .4byte _0818B500 .4byte _0818B520 .4byte _0818B540 .4byte _0818B560 .4byte _0818B580 .4byte _0818B5A0 .4byte _0818B5C0 .4byte _0818B5E0 .4byte _0818B600 .4byte _0818B620 .4byte _0818B640 .4byte _0818B660 .4byte _0818B680 .4byte _0818B6A0 .4byte _0818B6C0 .4byte _0818B6E0 .4byte _0818B700 .4byte _0818B720 .4byte _0818B740 .4byte _0818B760 .4byte _0818B780 .4byte _0818B7A0 .4byte _0818B7C0 .4byte _0818B7E0 .4byte _0818B800 .4byte _0818B820 _0818AFA4: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0xB adds r2, r6, 0 bl SetMonData adds r2, r6, 0 adds r2, 0x2E adds r0, r4, 0 movs r1, 0xC bl SetMonData movs r0, 0 mov r8, r0 movs r0, 0x3B adds r0, r6 mov r10, r0 adds r0, r6, 0 adds r0, 0x2B str r0, [sp, 0x20] adds r0, 0x19 str r0, [sp, 0x28] adds r0, 0x4 str r0, [sp, 0x2C] adds r0, 0x4 str r0, [sp, 0x30] subs r0, 0x22 str r0, [sp, 0x1C] subs r0, 0x2 str r0, [sp, 0x18] adds r0, 0x4 str r0, [sp, 0x24] adds r0, r6, 0x2 str r0, [sp, 0x4] adds r0, r6, 0x4 str r0, [sp, 0x8] adds r0, r6, 0x6 str r0, [sp, 0xC] adds r0, 0x2 str r0, [sp, 0x10] adds r0, 0x2 str r0, [sp, 0x14] mov r9, r4 adds r7, r6, 0 adds r7, 0x24 adds r4, r6, 0 adds r4, 0xC _0818B00A: mov r1, r8 adds r1, 0xD mov r0, r9 adds r2, r4, 0 bl SetMonData mov r1, r8 adds r1, 0x11 mov r0, r9 adds r2, r7, 0 bl SetMonData adds r7, 0x1 adds r4, 0x2 movs r0, 0x1 add r8, r0 mov r0, r8 cmp r0, 0x3 ble _0818B00A movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0x15 mov r2, r10 bl SetMonData adds r0, r4, 0 movs r1, 0x20 ldr r2, [sp, 0x20] bl SetMonData adds r0, r4, 0 movs r1, 0x19 ldr r2, [sp, 0x28] bl SetMonData ldrb r0, [r6, 0x14] lsls r0, 27 lsrs r0, 27 mov r1, sp strb r0, [r1] adds r0, r4, 0 movs r1, 0x27 mov r2, sp bl SetMonData mov r1, sp ldrh r0, [r6, 0x14] lsls r0, 22 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x28 mov r2, sp bl SetMonData mov r1, sp ldrb r0, [r6, 0x15] lsls r0, 25 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x29 mov r2, sp bl SetMonData mov r1, sp ldr r0, [r6, 0x14] lsls r0, 12 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x2A mov r2, sp bl SetMonData mov r1, sp ldrh r0, [r6, 0x16] lsls r0, 23 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x2B mov r2, sp bl SetMonData mov r1, sp ldrb r0, [r6, 0x17] lsls r0, 26 lsrs r0, 27 strb r0, [r1] adds r0, r4, 0 movs r1, 0x2C mov r2, sp bl SetMonData adds r0, r4, 0 movs r1, 0 ldr r2, [sp, 0x2C] bl SetMonData adds r0, r4, 0 movs r1, 0x37 ldr r2, [sp, 0x30] bl SetMonData adds r0, r4, 0 movs r1, 0x38 ldr r2, [sp, 0x1C] bl SetMonData adds r0, r4, 0 movs r1, 0x39 ldr r2, [sp, 0x18] bl SetMonData adds r0, r4, 0 movs r1, 0x3A ldr r2, [sp, 0x24] bl SetMonData adds r0, r4, 0 movs r1, 0x3B ldr r2, [sp, 0x4] bl SetMonData adds r0, r4, 0 movs r1, 0x3C ldr r2, [sp, 0x8] bl SetMonData adds r0, r4, 0 movs r1, 0x3D ldr r2, [sp, 0xC] bl SetMonData adds r0, r4, 0 movs r1, 0x3E ldr r2, [sp, 0x10] bl SetMonData adds r0, r4, 0 movs r1, 0x3F ldr r2, [sp, 0x14] bl SetMonData b _0818B836 .pool _0818B13C: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0xB bl SetMonData b _0818B836 .pool _0818B15C: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0xC bl SetMonData b _0818B836 .pool _0818B17C: movs r0, 0 mov r8, r0 movs r0, 0xC adds r0, r3 mov r9, r0 movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, =gPlayerParty adds r7, r1, r0 adds r6, r3, 0 adds r6, 0x8 adds r4, r3, 0 _0818B196: mov r1, r8 adds r1, 0xD adds r0, r7, 0 adds r2, r4, 0 bl SetMonData mov r1, r8 adds r1, 0x11 adds r0, r7, 0 adds r2, r6, 0 bl SetMonData adds r6, 0x1 adds r4, 0x2 movs r0, 0x1 add r8, r0 mov r0, r8 cmp r0, 0x3 ble _0818B196 movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x15 mov r2, r9 bl SetMonData b _0818B836 .pool _0818B1D4: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r3, =gBattleBufferA ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r1, r3, 0x1 adds r1, r2, r1 ldrb r1, [r1] adds r1, 0x9 b _0818B278 .pool _0818B1FC: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, =gPlayerParty adds r4, r0 ldr r5, =gActiveBank ldrb r2, [r5] lsls r2, 9 adds r2, r7 adds r0, r4, 0 movs r1, 0x11 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x1 adds r2, r0 adds r0, r4, 0 movs r1, 0x12 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x2 adds r2, r0 adds r0, r4, 0 movs r1, 0x13 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x3 adds r2, r0 adds r0, r4, 0 movs r1, 0x14 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x4 adds r2, r0 adds r0, r4, 0 movs r1, 0x15 bl SetMonData b _0818B836 .pool _0818B260: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r3, =gBattleBufferA ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r1, r3, 0x1 adds r1, r2, r1 ldrb r1, [r1] adds r1, 0x8 _0818B278: adds r3, 0x3 adds r2, r3 bl SetMonData b _0818B836 .pool _0818B290: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1 bl SetMonData b _0818B836 .pool _0818B2B0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x19 bl SetMonData b _0818B836 .pool _0818B2D0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1A bl SetMonData b _0818B836 .pool _0818B2F0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1B bl SetMonData b _0818B836 .pool _0818B310: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1C bl SetMonData b _0818B836 .pool _0818B330: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1D bl SetMonData b _0818B836 .pool _0818B350: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1E bl SetMonData b _0818B836 .pool _0818B370: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x1F bl SetMonData b _0818B836 .pool _0818B390: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x20 bl SetMonData b _0818B836 .pool _0818B3B0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x22 bl SetMonData b _0818B836 .pool _0818B3D0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x23 bl SetMonData b _0818B836 .pool _0818B3F0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x24 bl SetMonData b _0818B836 .pool _0818B410: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x25 bl SetMonData b _0818B836 .pool _0818B430: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x26 bl SetMonData b _0818B836 .pool _0818B450: movs r0, 0x64 adds r4, r5, 0 muls r4, r0 ldr r0, =gPlayerParty adds r4, r0 ldr r5, =gActiveBank ldrb r2, [r5] lsls r2, 9 adds r2, r7 adds r0, r4, 0 movs r1, 0x27 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x1 adds r2, r0 adds r0, r4, 0 movs r1, 0x28 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x2 adds r2, r0 adds r0, r4, 0 movs r1, 0x29 bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x3 adds r2, r0 adds r0, r4, 0 movs r1, 0x2A bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x4 adds r2, r0 adds r0, r4, 0 movs r1, 0x2B bl SetMonData ldrb r2, [r5] lsls r2, 9 adds r0, r7, 0x5 adds r2, r0 adds r0, r4, 0 b _0818B570 .pool _0818B4C0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x27 bl SetMonData b _0818B836 .pool _0818B4E0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x28 bl SetMonData b _0818B836 .pool _0818B500: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x29 bl SetMonData b _0818B836 .pool _0818B520: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x2A bl SetMonData b _0818B836 .pool _0818B540: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x2B bl SetMonData b _0818B836 .pool _0818B560: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 _0818B570: movs r1, 0x2C bl SetMonData b _0818B836 .pool _0818B580: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0 bl SetMonData b _0818B836 .pool _0818B5A0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x9 bl SetMonData b _0818B836 .pool _0818B5C0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x37 bl SetMonData b _0818B836 .pool _0818B5E0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x38 bl SetMonData b _0818B836 .pool _0818B600: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x39 bl SetMonData b _0818B836 .pool _0818B620: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3A bl SetMonData b _0818B836 .pool _0818B640: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3B bl SetMonData b _0818B836 .pool _0818B660: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3C bl SetMonData b _0818B836 .pool _0818B680: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3D bl SetMonData b _0818B836 .pool _0818B6A0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3E bl SetMonData b _0818B836 .pool _0818B6C0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x3F bl SetMonData b _0818B836 .pool _0818B6E0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x16 bl SetMonData b _0818B836 .pool _0818B700: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x17 bl SetMonData b _0818B836 .pool _0818B720: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x18 bl SetMonData b _0818B836 .pool _0818B740: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x21 bl SetMonData b _0818B836 .pool _0818B760: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x2F bl SetMonData b _0818B836 .pool _0818B780: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x30 bl SetMonData b _0818B836 .pool _0818B7A0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x32 bl SetMonData b _0818B836 .pool _0818B7C0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x33 bl SetMonData b _0818B836 .pool _0818B7E0: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x34 bl SetMonData b _0818B836 .pool _0818B800: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x35 bl SetMonData b _0818B836 .pool _0818B820: movs r0, 0x64 muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 ldr r1, =gActiveBank ldrb r2, [r1] lsls r2, 9 adds r2, r7 movs r1, 0x36 bl SetMonData _0818B836: ldr r2, =gBattlePartyID ldr r0, =gActiveBank ldrb r1, [r0] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 bl sub_805E990 add sp, 0x34 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_818AE70 thumb_func_start sub_818B86C sub_818B86C: @ 818B86C push {r4-r7,lr} ldr r1, =gBattlePartyID ldr r7, =gActiveBank ldrb r2, [r7] lsls r0, r2, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 adds r3, r1, 0 muls r3, r0 ldr r4, =gBattleBufferA lsls r2, 9 adds r0, r4, 0x1 adds r0, r2, r0 ldrb r0, [r0] ldr r1, =gPlayerParty adds r0, r1 adds r5, r3, r0 movs r3, 0 adds r0, r4, 0x2 adds r2, r0 ldrb r2, [r2] cmp r3, r2 bcs _0818B8C4 adds r6, r4, 0 adds r2, r7, 0 adds r4, r0, 0 _0818B8A2: adds r1, r5, r3 ldrb r0, [r2] lsls r0, 9 adds r0, 0x3 adds r0, r3, r0 adds r0, r6 ldrb r0, [r0] strb r0, [r1] adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 ldrb r0, [r2] lsls r0, 9 adds r0, r4 ldrb r0, [r0] cmp r3, r0 bcc _0818B8A2 _0818B8C4: bl RecordedPlayerBufferExecCompleted pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_818B86C thumb_func_start sub_818B8E0 sub_818B8E0: @ 818B8E0 push {r4-r6,lr} mov r6, r8 push {r6} ldr r0, =gBattlePartyID mov r8, r0 ldr r6, =gActiveBank ldrb r1, [r6] lsls r0, r1, 1 add r0, r8 ldrh r0, [r0] movs r5, 0x64 muls r0, r5 ldr r4, =gPlayerParty adds r0, r4 bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r6] lsls r0, 1 add r0, r8 ldrh r0, [r0] muls r0, r5 adds r0, r4 movs r1, 0xB bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 ldrb r0, [r6] bl GetBankIdentity adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl sub_806A068 ldr r0, =gUnknown_0202499C mov r8, r0 ldrb r0, [r6] movs r1, 0x2 bl sub_80A5C6C adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldrb r0, [r6] bl sub_80A6138 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldrb r0, [r6] bl sub_80A82E4 adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 mov r0, r8 adds r1, r5, 0 adds r2, r4, 0 bl CreateSprite ldr r4, =gBankSpriteIds ldrb r1, [r6] adds r1, r4 strb r0, [r1] ldr r5, =gSprites ldrb r0, [r6] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, =0x0000ff10 strh r1, [r0, 0x24] ldrb r2, [r6] adds r0, r2, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 strh r2, [r0, 0x2E] ldrb r3, [r6] adds r0, r3, r4 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 lsls r3, 4 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r3 strb r0, [r1, 0x5] ldrb r2, [r6] adds r4, r2, r4 ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, =gBattleMonForms adds r2, r1 ldrb r1, [r2] bl StartSpriteAnim ldr r1, =gBattleBankFunc ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r1, =sub_818A064 str r1, [r0] pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818B8E0 thumb_func_start sub_818B9FC sub_818B9FC: @ 818B9FC push {r4-r6,lr} ldr r5, =gActiveBank ldrb r0, [r5] ldr r4, =gBattleBufferA lsls r1, r0, 9 adds r6, r4, 0x2 adds r1, r6 ldrb r1, [r1] bl sub_805EF84 ldr r2, =gBattlePartyID ldrb r0, [r5] lsls r1, r0, 1 adds r1, r2 lsls r0, 9 adds r4, 0x1 adds r0, r4 ldrb r0, [r0] strh r0, [r1] ldrb r1, [r5] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r5] lsls r1, r0, 9 adds r1, r6 ldrb r1, [r1] bl sub_818BA6C ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, =sub_818A470 str r1, [r0] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818B9FC thumb_func_start sub_818BA6C sub_818BA6C: @ 818BA6C push {r4-r6,lr} mov r6, r10 mov r5, r9 mov r4, r8 push {r4-r6} adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 bl sub_805EF84 ldr r0, =gBattlePartyID lsls r2, r6, 1 adds r2, r0 ldr r0, =gBattleBufferA lsls r1, r6, 9 adds r0, 0x1 adds r1, r0 ldrb r0, [r1] strh r0, [r2] ldrh r1, [r2] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData mov r8, r0 lsls r0, 16 lsrs r0, 16 mov r8, r0 ldr r0, =sub_805D714 bl CreateInvisibleSpriteWithCallback ldr r1, =gUnknown_03005D7C mov r9, r1 add r9, r6 mov r1, r9 strb r0, [r1] adds r0, r6, 0 bl GetBankIdentity adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 mov r0, r8 bl sub_806A068 ldr r0, =gUnknown_0202499C mov r10, r0 adds r0, r6, 0 movs r1, 0x2 bl sub_80A5C6C adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 bl sub_80A6138 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 bl sub_80A82E4 adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 mov r0, r10 adds r1, r5, 0 adds r2, r4, 0 bl CreateSprite ldr r4, =gBankSpriteIds adds r4, r6, r4 strb r0, [r4] ldr r5, =gSprites mov r0, r9 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r4] strh r1, [r0, 0x30] mov r0, r9 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 strh r6, [r0, 0x32] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 strh r6, [r0, 0x2E] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 mov r1, r8 strh r1, [r0, 0x32] ldrb r0, [r4] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 lsls r3, r6, 4 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r3 strb r0, [r1, 0x5] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, =gBattleMonForms adds r6, r1 ldrb r1, [r6] bl StartSpriteAnim ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] ldrb r1, [r4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r5, 0 adds r1, 0x1C adds r0, r1 ldr r1, =SpriteCallbackDummy str r1, [r0] movs r0, 0 movs r1, 0xFF bl sub_80753E8 mov r1, r9 ldrb r2, [r1] lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r5 lsls r0, 24 lsrs r0, 24 strh r0, [r1, 0x2E] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818BA6C thumb_func_start sub_818BBE8 sub_818BBE8: @ 818BBE8 push {r4-r6,lr} ldr r1, =gBattleBufferA ldr r6, =gActiveBank ldrb r2, [r6] lsls r0, r2, 9 adds r1, 0x1 adds r0, r1 ldrb r3, [r0] cmp r3, 0 bne _0818BC30 ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 strb r3, [r0, 0x4] ldr r1, =gBattleBankFunc ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r1, =sub_818BC78 str r1, [r0] b _0818BC66 .pool _0818BC30: ldr r5, =gBankSpriteIds adds r0, r2, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, =gSprites adds r0, r4 bl FreeSpriteOamMatrix ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 bl DestroySprite ldr r1, =gHealthBoxesIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] bl SetHealthboxSpriteInvisible bl RecordedPlayerBufferExecCompleted _0818BC66: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818BBE8 thumb_func_start sub_818BC78 sub_818BC78: @ 818BC78 push {r4-r6,lr} ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] ldr r1, [r4, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r3, r0, r1 ldrb r0, [r3, 0x4] cmp r0, 0 beq _0818BCA0 cmp r0, 0x1 beq _0818BCCE b _0818BCF6 .pool _0818BCA0: ldr r1, [r4] lsls r0, r2, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0818BCBA adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x5 bl move_anim_start_t4 _0818BCBA: ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x1 strb r1, [r0, 0x4] b _0818BCF6 _0818BCCE: ldrb r1, [r3] movs r0, 0x40 ands r0, r1 lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0818BCF6 strb r0, [r3, 0x4] ldrb r2, [r5] adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x1 bl move_anim_start_t4 ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, =sub_818A1B0 str r1, [r0] _0818BCF6: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818BC78 thumb_func_start sub_818BD04 sub_818BD04: @ 818BD04 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, =gBattleTypeFlags ldr r1, [r0] movs r0, 0x80 lsls r0, 18 ands r0, r1 cmp r0, 0 beq _0818BD48 movs r0, 0x40 ands r1, r0 cmp r1, 0 beq _0818BD30 bl sub_8185F40 lsls r0, 24 lsrs r4, r0, 24 b _0818BD4C .pool _0818BD30: ldr r2, =gLinkPlayers ldr r0, =gUnknown_0203C7B4 ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 b _0818BD4A .pool _0818BD48: ldr r0, =gLinkPlayers _0818BD4A: ldrb r4, [r0, 0x13] _0818BD4C: ldr r0, =gBattleTypeFlags ldr r1, [r0] movs r2, 0x40 ands r1, r2 adds r5, r0, 0 cmp r1, 0 beq _0818BD98 ldr r0, =gActiveBank ldrb r0, [r0] bl GetBankIdentity movs r1, 0x2 ands r1, r0 movs r0, 0x20 mov r9, r0 cmp r1, 0 beq _0818BD72 movs r1, 0x5A mov r9, r1 _0818BD72: ldr r0, [r5] movs r1, 0x80 lsls r1, 15 ands r0, r1 cmp r0, 0 beq _0818BD9C movs r0, 0x5A mov r9, r0 ldr r1, =gTrainerFrontPicCoords b _0818BD9E .pool _0818BD98: movs r0, 0x50 mov r9, r0 _0818BD9C: ldr r1, =gTrainerBackPicCoords _0818BD9E: lsls r0, r4, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x8 subs r0, r1 lsls r0, 18 movs r1, 0xA0 lsls r1, 15 adds r0, r1 lsrs r7, r0, 16 ldr r0, [r5] movs r1, 0x80 lsls r1, 15 ands r0, r1 cmp r0, 0 bne _0818BDC0 b _0818BEDC _0818BDC0: ldr r0, =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x8] bl sub_806F000 lsls r0, 16 lsrs r4, r0, 16 adds r5, r4, 0 ldr r6, =gActiveBank ldrb r1, [r6] adds r0, r5, 0 bl sub_805DF38 ldrb r0, [r6] bl GetBankIdentity adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl sub_806A1C0 ldr r0, =gUnknown_0202499C mov r8, r0 lsls r4, r7, 16 asrs r4, 16 ldrb r0, [r6] bl sub_80A82E4 adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 mov r0, r8 mov r1, r9 adds r2, r4, 0 bl CreateSprite ldr r4, =gBankSpriteIds ldrb r1, [r6] adds r1, r4 strb r0, [r1] ldr r0, =gTrainerFrontPicPaletteTable lsls r5, 3 adds r5, r0 ldrh r0, [r5, 0x4] bl IndexOfSpritePaletteTag ldr r5, =gSprites ldrb r1, [r6] adds r1, r4 ldrb r1, [r1] lsls r2, r1, 4 adds r2, r1 lsls r2, 2 adds r2, r5 lsls r0, 4 ldrb r3, [r2, 0x5] movs r1, 0xF ands r1, r3 orrs r1, r0 strb r1, [r2, 0x5] ldrb r0, [r6] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0xF0 strh r1, [r0, 0x24] ldrb r0, [r6] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0x30 strh r1, [r0, 0x26] ldrb r0, [r6] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, =0x0000fffe strh r1, [r0, 0x2E] ldrb r0, [r6] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r5, 0 adds r1, 0x1C adds r0, r1 ldr r1, =sub_805D7AC str r1, [r0] ldrb r0, [r6] adds r0, r4 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r5 ldrb r2, [r1, 0x1] movs r0, 0x4 negs r0, r0 ands r0, r2 strb r0, [r1, 0x1] ldrb r0, [r6] adds r0, r4 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 adds r0, 0x3F ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] b _0818BF72 .pool _0818BEDC: ldr r5, =gActiveBank ldrb r1, [r5] adds r0, r4, 0 bl LoadBackTrainerBankSpriteGfx ldrb r0, [r5] bl GetBankIdentity adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl sub_806A12C ldr r6, =gUnknown_0202499C mov r8, r9 lsls r4, r7, 16 asrs r4, 16 ldrb r0, [r5] bl sub_80A82E4 adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 adds r0, r6, 0 mov r1, r8 adds r2, r4, 0 bl CreateSprite ldr r6, =gBankSpriteIds ldrb r1, [r5] adds r1, r6 strb r0, [r1] ldr r4, =gSprites ldrb r3, [r5] adds r0, r3, r6 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r4 lsls r3, 4 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r3 strb r0, [r1, 0x5] ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0xF0 strh r1, [r0, 0x24] ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, =0x0000fffe strh r1, [r0, 0x2E] ldrb r0, [r5] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, 0x1C adds r0, r4 ldr r1, =sub_805D7AC str r1, [r0] _0818BF72: ldr r1, =gBattleBankFunc ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, =sub_81899B8 str r1, [r0] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_818BD04 thumb_func_start sub_818BFAC sub_818BFAC: @ 818BFAC push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818BFAC thumb_func_start sub_818BFB8 sub_818BFB8: @ 818BFB8 push {r4-r6,lr} ldr r6, =gBankSpriteIds ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r5, =gSprites adds r0, r5 bl oamt_add_pos2_onto_pos1 ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0x23 strh r1, [r0, 0x2E] ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, =0x0000ffd8 strh r1, [r0, 0x32] ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldrh r1, [r0, 0x22] strh r1, [r0, 0x36] ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r5, 0 adds r1, 0x1C adds r0, r1 ldr r1, =sub_80A6EEC str r1, [r0] ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 ldr r1, =SpriteCallbackDummy bl StoreSpriteCallbackInData6 ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, =sub_81899F0 str r1, [r0] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818BFB8 thumb_func_start sub_818C064 sub_818C064: @ 818C064 push {r4-r6,lr} ldr r6, =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, =gActiveBank ldrb r2, [r5] ldr r0, [r4, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r3, r1, r0 ldrb r0, [r3, 0x4] cmp r0, 0 bne _0818C0B8 ldr r1, [r4] lsls r0, r2, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0818C098 adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x5 bl move_anim_start_t4 _0818C098: ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x4] adds r1, 0x1 strb r1, [r0, 0x4] b _0818C12E .pool _0818C0B8: ldrb r1, [r3] movs r0, 0x40 ands r0, r1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _0818C12E strb r4, [r3, 0x4] ldr r2, =gBattlePartyID ldrb r1, [r5] lsls r0, r1, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 bl sub_805E990 movs r1, 0x40 negs r1, r1 movs r0, 0x10 bl PlaySE12WithPanning ldr r2, =gSprites ldr r3, =gBankSpriteIds ldrb r0, [r5] adds r0, r3 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 strh r4, [r0, 0x30] ldrb r0, [r5] adds r0, r3 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x5 strh r1, [r0, 0x32] ldrb r0, [r5] adds r0, r3 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, 0x1C adds r0, r2 ldr r1, =sub_8039C00 str r1, [r0] ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, =sub_818A114 str r1, [r0] _0818C12E: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818C064 thumb_func_start sub_818C150 sub_818C150: @ 818C150 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C150 thumb_func_start sub_818C15C sub_818C15C: @ 818C15C push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C15C thumb_func_start sub_818C168 sub_818C168: @ 818C168 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C168 thumb_func_start sub_818C174 sub_818C174: @ 818C174 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C174 thumb_func_start sub_818C180 sub_818C180: @ 818C180 push {r4-r6,lr} ldr r6, =gActiveBank ldrb r0, [r6] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 beq _0818C192 b _0818C2A6 _0818C192: ldr r0, =gBattleBufferA mov r12, r0 ldrb r2, [r6] lsls r2, 9 adds r0, 0x1 adds r0, r2, r0 ldrb r0, [r0] mov r1, r12 adds r1, 0x2 adds r1, r2, r1 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 ldr r5, =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 ldrb r1, [r2] strb r1, [r5] ldr r4, =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0x4 adds r1, r2, r1 ldrb r3, [r1] mov r1, r12 adds r1, 0x5 adds r2, r1 ldrb r1, [r2] lsls r1, 8 orrs r3, r1 strh r3, [r4] ldr r4, =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0x6 adds r1, r2, r1 ldrb r3, [r1] mov r1, r12 adds r1, 0x7 adds r1, r2, r1 ldrb r1, [r1] lsls r1, 8 orrs r3, r1 mov r1, r12 adds r1, 0x8 adds r1, r2, r1 ldrb r1, [r1] lsls r1, 16 orrs r3, r1 mov r1, r12 adds r1, 0x9 adds r2, r1 ldrb r1, [r2] lsls r1, 24 orrs r3, r1 str r3, [r4] ldr r3, =gAnimFriendship ldrb r1, [r6] lsls r1, 9 mov r2, r12 adds r2, 0xA adds r1, r2 ldrb r1, [r1] strb r1, [r3] ldr r4, =gWeatherMoveAnim ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0xC adds r1, r2, r1 ldrb r3, [r1] mov r1, r12 adds r1, 0xD adds r2, r1 ldrb r1, [r2] lsls r1, 8 orrs r3, r1 strh r3, [r4] ldr r3, =gAnimDisableStructPtr ldrb r2, [r6] lsls r2, 9 mov r1, r12 adds r1, 0x10 adds r2, r1 str r2, [r3] ldr r3, =gUnknown_020244BC ldrb r1, [r6] lsls r1, 2 adds r1, r3 ldr r2, [r2] str r2, [r1] ldrb r1, [r5] bl sub_805DB8C lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 beq _0818C288 bl RecordedPlayerBufferExecCompleted b _0818C2A6 .pool _0818C288: ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 strb r3, [r0, 0x4] ldr r1, =gBattleBankFunc ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r1, =bx_move_anim_2 str r1, [r0] _0818C2A6: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818C180 thumb_func_start bx_move_anim_2 bx_move_anim_2: @ 818C2B8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r2, =gBattleBufferA ldr r6, =gActiveBank ldrb r3, [r6] lsls r1, r3, 9 adds r0, r2, 0x1 mov r10, r0 adds r0, r1, r0 ldrb r4, [r0] adds r5, r2, 0x2 mov r9, r5 adds r0, r1, r5 ldrb r0, [r0] lsls r0, 8 orrs r4, r0 adds r2, 0xB adds r1, r2 ldrb r1, [r1] mov r8, r1 ldr r7, =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 adds r0, r3 lsls r0, 2 adds r0, r1 ldrb r2, [r0, 0x4] cmp r2, 0x1 beq _0818C350 cmp r2, 0x1 bgt _0818C310 cmp r2, 0 beq _0818C31A b _0818C42C .pool _0818C310: cmp r2, 0x2 beq _0818C37A cmp r2, 0x3 beq _0818C3F0 b _0818C42C _0818C31A: ldr r1, [r5] lsls r0, r3, 2 adds r1, r0, r1 ldrb r2, [r1] movs r0, 0xC ands r0, r2 cmp r0, 0x4 bne _0818C33C movs r0, 0x8 orrs r0, r2 strb r0, [r1] ldrb r2, [r6] adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x5 bl move_anim_start_t4 _0818C33C: ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x1 strb r1, [r0, 0x4] b _0818C42C _0818C350: ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _0818C42C movs r0, 0 bl sub_805EB9C adds r0, r4, 0 bl DoMoveAnim ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x2 strb r1, [r0, 0x4] b _0818C42C _0818C37A: ldr r0, =gAnimScriptCallback ldr r0, [r0] bl _call_via_r0 ldr r0, =gAnimScriptActive ldrb r0, [r0] cmp r0, 0 bne _0818C42C movs r0, 0x1 bl sub_805EB9C ldr r0, [r7] ldrb r2, [r6] ldr r1, [r0] lsls r0, r2, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0818C3C8 mov r0, r8 cmp r0, 0x1 bhi _0818C3C8 adds r0, r2, 0 adds r1, r2, 0 movs r3, 0x6 bl move_anim_start_t4 ldr r0, [r7] ldrb r1, [r6] ldr r0, [r0] lsls r1, 2 adds r1, r0 ldrb r2, [r1] movs r0, 0x9 negs r0, r0 ands r0, r2 strb r0, [r1] _0818C3C8: ldr r0, =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, =gActiveBank ldrb r1, [r0] ldr r2, [r2, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x3 strb r1, [r0, 0x4] b _0818C42C .pool _0818C3F0: ldrb r1, [r0] movs r0, 0x40 ands r0, r1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _0818C42C bl sub_805E394 ldrb r0, [r6] lsls r2, r0, 9 mov r3, r10 adds r1, r2, r3 ldrb r1, [r1] add r2, r9 ldrb r2, [r2] lsls r2, 8 orrs r1, r2 bl sub_805E94C ldr r0, [r7] ldrb r1, [r6] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 strb r4, [r0, 0x4] bl RecordedPlayerBufferExecCompleted _0818C42C: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end bx_move_anim_2 thumb_func_start sub_818C43C sub_818C43C: @ 818C43C push {r4,lr} ldr r0, =gBattle_BG0_X movs r1, 0 strh r1, [r0] ldr r0, =gBattle_BG0_Y strh r1, [r0] ldr r4, =gActiveBank ldrb r0, [r4] lsls r0, 9 ldr r1, =gBattleBufferA + 2 adds r0, r1 ldrh r0, [r0] bl BufferStringBattle ldr r0, =gDisplayedStringBattle movs r1, 0 bl sub_814F9EC ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, =sub_818A220 str r1, [r0] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_818C43C thumb_func_start sub_818C490 sub_818C490: @ 818C490 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C490 thumb_func_start sub_818C49C sub_818C49C: @ 818C49C push {lr} ldr r1, =gBattleCommunication ldr r0, =gNoOfAllBanks ldrb r0, [r0] ldrb r1, [r1, 0x4] lsrs r0, 1 cmp r1, r0 bcc _0818C4C6 ldr r0, =gActiveBank ldrb r0, [r0] bl sub_8185054 adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0x1 movs r2, 0 bl EmitCmd33 bl RecordedPlayerBufferExecCompleted _0818C4C6: pop {r0} bx r0 .pool thumb_func_end sub_818C49C thumb_func_start sub_818C4D8 sub_818C4D8: @ 818C4D8 push {lr} ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 10 ands r0, r1 cmp r0, 0 beq _0818C508 ldr r1, =gBattleBankFunc ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, =sub_818C49C str r1, [r0] b _0818C522 .pool _0818C508: ldr r0, =gActiveBank ldrb r0, [r0] bl sub_8185054 adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0x1 movs r2, 0 bl EmitCmd33 bl RecordedPlayerBufferExecCompleted _0818C522: pop {r0} bx r0 .pool thumb_func_end sub_818C4D8 thumb_func_start sub_818C52C sub_818C52C: @ 818C52C push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C52C thumb_func_start sub_818C538 sub_818C538: @ 818C538 push {r4,r5,lr} ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 10 ands r0, r1 cmp r0, 0 beq _0818C560 bl sub_805D19C adds r2, r0, 0 lsls r2, 16 lsrs r2, 16 movs r0, 0x1 movs r1, 0xA bl EmitCmd33 b _0818C584 .pool _0818C560: ldr r5, =gActiveBank ldrb r0, [r5] bl sub_8185054 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldrb r0, [r5] bl sub_8185054 adds r2, r0, 0 lsls r2, 24 lsrs r2, 16 orrs r2, r4 movs r0, 0x1 movs r1, 0xA bl EmitCmd33 _0818C584: bl RecordedPlayerBufferExecCompleted pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_818C538 thumb_func_start sub_818C594 sub_818C594: @ 818C594 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C594 thumb_func_start sub_818C5A0 sub_818C5A0: @ 818C5A0 push {r4,lr} ldr r4, =gActiveBank ldrb r0, [r4] bl sub_8185054 ldrb r1, [r4] ldr r3, =gBattleStruct ldr r2, [r3] adds r1, r2 adds r1, 0x5C strb r0, [r1] ldrb r0, [r4] ldr r1, [r3] adds r0, r1 adds r0, 0x5C ldrb r1, [r0] movs r0, 0x1 movs r2, 0 bl EmitCmd34 bl RecordedPlayerBufferExecCompleted pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_818C5A0 thumb_func_start sub_818C5DC sub_818C5DC: @ 818C5DC push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C5DC thumb_func_start sub_818C5E8 sub_818C5E8: @ 818C5E8 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 movs r0, 0 bl LoadBattleBarGfx ldr r3, =gBattleBufferA ldr r0, =gActiveBank mov r9, r0 ldrb r4, [r0] lsls r2, r4, 9 adds r0, r3, 0x2 adds r0, r2, r0 ldrb r1, [r0] adds r3, 0x3 adds r2, r3 ldrb r0, [r2] lsls r0, 8 orrs r1, r0 lsls r1, 16 asrs r7, r1, 16 ldr r0, =0x00007fff cmp r7, r0 beq _0818C678 ldr r6, =gBattlePartyID lsls r0, r4, 1 adds r0, r6 ldrh r0, [r0] movs r5, 0x64 muls r0, r5 ldr r4, =gPlayerParty adds r0, r4 movs r1, 0x3A bl GetMonData mov r8, r0 mov r1, r9 ldrb r0, [r1] lsls r0, 1 adds r0, r6 ldrh r0, [r0] muls r0, r5 adds r0, r4 movs r1, 0x39 bl GetMonData adds r3, r0, 0 mov r1, r9 ldrb r0, [r1] ldr r1, =gHealthBoxesIds adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] mov r2, r8 bl SetBattleBarStruct b _0818C6B2 .pool _0818C678: ldr r1, =gBattlePartyID lsls r0, r4, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x3A bl GetMonData adds r2, r0, 0 mov r1, r9 ldrb r0, [r1] ldr r4, =gHealthBoxesIds adds r1, r0, r4 ldrb r1, [r1] str r7, [sp] movs r3, 0 bl SetBattleBarStruct mov r1, r9 ldrb r0, [r1] adds r0, r4 ldrb r0, [r0] movs r1, 0 movs r2, 0 bl UpdateHpTextInHealthbox _0818C6B2: ldr r1, =gBattleBankFunc ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, =sub_818A0A4 str r1, [r0] add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_818C5E8 thumb_func_start sub_818C6E8 sub_818C6E8: @ 818C6E8 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C6E8 thumb_func_start sub_818C6F4 sub_818C6F4: @ 818C6F4 push {r4,lr} ldr r4, =gActiveBank ldrb r0, [r4] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 bne _0818C748 ldr r0, =gHealthBoxesIds ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] ldr r2, =gBattlePartyID lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r1, 0x64 muls r1, r2 ldr r2, =gPlayerParty adds r1, r2 movs r2, 0x9 bl UpdateHealthboxAttribute ldrb r2, [r4] ldr r0, =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1] movs r0, 0x11 negs r0, r0 ands r0, r2 strb r0, [r1] ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, =sub_818A58C str r1, [r0] _0818C748: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_818C6F4 thumb_func_start sub_818C76C sub_818C76C: @ 818C76C push {r4,r5,lr} ldr r5, =gActiveBank ldrb r0, [r5] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 bne _0818C7BC ldr r4, =gBattleBufferA ldrb r3, [r5] lsls r3, 9 adds r0, r4, 0x1 adds r0, r3, r0 ldrb r0, [r0] adds r1, r4, 0x2 adds r1, r3, r1 ldrb r1, [r1] adds r2, r4, 0x3 adds r2, r3, r2 ldrb r2, [r2] lsls r2, 8 orrs r1, r2 adds r2, r4, 0x4 adds r2, r3, r2 ldrb r2, [r2] lsls r2, 16 orrs r1, r2 adds r4, 0x5 adds r3, r4 ldrb r2, [r3] lsls r2, 24 orrs r1, r2 bl move_anim_start_t2_for_situation ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, =sub_818A58C str r1, [r0] _0818C7BC: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_818C76C thumb_func_start sub_818C7D4 sub_818C7D4: @ 818C7D4 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C7D4 thumb_func_start sub_818C7E0 sub_818C7E0: @ 818C7E0 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C7E0 thumb_func_start sub_818C7EC sub_818C7EC: @ 818C7EC push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C7EC thumb_func_start sub_818C7F8 sub_818C7F8: @ 818C7F8 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C7F8 thumb_func_start sub_818C804 sub_818C804: @ 818C804 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C804 thumb_func_start sub_818C810 sub_818C810: @ 818C810 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C810 thumb_func_start sub_818C81C sub_818C81C: @ 818C81C push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C81C thumb_func_start sub_818C828 sub_818C828: @ 818C828 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C828 thumb_func_start sub_818C834 sub_818C834: @ 818C834 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C834 thumb_func_start sub_818C840 sub_818C840: @ 818C840 push {lr} ldr r2, =gUnknown_02022D0C ldrb r1, [r2] movs r0, 0x80 negs r0, r0 ands r0, r1 strb r0, [r2] bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 .pool thumb_func_end sub_818C840 thumb_func_start sub_818C85C sub_818C85C: @ 818C85C push {lr} ldr r3, =gUnknown_02022D0C ldr r1, =gBattleBufferA ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] movs r1, 0x7F ands r1, r0 ldrb r2, [r3] movs r0, 0x80 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3] bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 .pool thumb_func_end sub_818C85C thumb_func_start sub_818C894 sub_818C894: @ 818C894 push {lr} ldr r2, =gUnknown_02022D0C ldrb r1, [r2] movs r0, 0x7F ands r0, r1 strb r0, [r2] bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 .pool thumb_func_end sub_818C894 thumb_func_start sub_818C8AC sub_818C8AC: @ 818C8AC push {lr} ldr r3, =gUnknown_02022D0C ldr r1, [r3] lsls r1, 24 lsrs r1, 31 movs r0, 0x1 eors r1, r0 lsls r1, 7 ldrb r2, [r3] movs r0, 0x7F ands r0, r2 orrs r0, r1 strb r0, [r3] bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 .pool thumb_func_end sub_818C8AC thumb_func_start sub_818C8D4 sub_818C8D4: @ 818C8D4 push {r4,lr} ldr r3, =gSprites ldr r2, =gBankSpriteIds ldr r4, =gActiveBank ldrb r0, [r4] adds r0, r2 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 adds r0, 0x3E ldrb r0, [r0] lsls r0, 29 cmp r0, 0 bge _0818C908 bl RecordedPlayerBufferExecCompleted b _0818C932 .pool _0818C908: ldr r1, =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldrb r0, [r4] adds r0, r2 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 movs r1, 0 strh r1, [r0, 0x30] ldrb r0, [r4] bl sub_80769F4 ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, =sub_818A238 str r1, [r0] _0818C932: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_818C8D4 thumb_func_start sub_818C944 sub_818C944: @ 818C944 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818C944 thumb_func_start sub_818C950 sub_818C950: @ 818C950 push {r4,lr} ldr r4, =gActiveBank ldrb r0, [r4] bl GetBankSide lsls r0, 24 movs r3, 0x3F cmp r0, 0 bne _0818C964 movs r3, 0xC0 _0818C964: ldr r2, =gBattleBufferA ldrb r1, [r4] lsls r1, 9 adds r0, r2, 0x1 adds r0, r1, r0 ldrb r0, [r0] adds r2, 0x2 adds r1, r2 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 bl PlaySE12WithPanning bl RecordedPlayerBufferExecCompleted pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_818C950 thumb_func_start sub_818C994 sub_818C994: @ 818C994 push {r4,r5,lr} ldr r4, =gBattleBufferA ldr r5, =gActiveBank ldrb r0, [r5] lsls r3, r0, 9 adds r0, r4, 0x3 adds r0, r3, r0 ldrb r0, [r0] cmp r0, 0 beq _0818C9D0 bl BattleMusicStop ldrb r1, [r5] lsls r1, 9 adds r0, r4, 0x1 adds r0, r1, r0 ldrb r0, [r0] adds r2, r4, 0x2 adds r1, r2 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 bl PlayBGM b _0818C9E4 .pool _0818C9D0: adds r0, r4, 0x1 adds r0, r3, r0 ldrb r0, [r0] adds r1, r4, 0x2 adds r1, r3, r1 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 bl PlayFanfare _0818C9E4: bl RecordedPlayerBufferExecCompleted pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_818C994 thumb_func_start sub_818C9F0 sub_818C9F0: @ 818C9F0 push {lr} ldr r1, =gBattlePartyID ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 movs r1, 0x19 negs r1, r1 movs r2, 0x5 bl PlayCry3 bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 .pool thumb_func_end sub_818C9F0 thumb_func_start dp01t_2E_2_battle_intro dp01t_2E_2_battle_intro: @ 818CA30 push {lr} ldr r1, =gBattleBufferA ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] bl battle_intro_launch ldr r2, =gUnknown_020243FC ldrh r0, [r2] movs r1, 0x1 orrs r0, r1 strh r0, [r2] bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 .pool thumb_func_end dp01t_2E_2_battle_intro thumb_func_start sub_818CA64 sub_818CA64: @ 818CA64 push {r4-r6,lr} ldr r5, =gBankSpriteIds ldr r6, =gActiveBank ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, =gSprites adds r0, r4 bl oamt_add_pos2_onto_pos1 ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x32 strh r1, [r0, 0x2E] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, =0x0000ffd8 strh r1, [r0, 0x32] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldrh r1, [r0, 0x22] strh r1, [r0, 0x36] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r1, r4, 0 adds r1, 0x1C adds r0, r1 ldr r1, =sub_80A6EEC str r1, [r0] ldrb r2, [r6] adds r0, r2, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 strh r2, [r0, 0x38] ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, =sub_805CC00 bl StoreSpriteCallbackInData6 ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x1 bl StartSpriteAnim ldr r0, =0x0000d6f9 bl AllocSpritePalette lsls r0, 24 lsrs r5, r0, 24 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _0818CB54 ldr r4, =gLinkPlayers ldrb r0, [r6] bl sub_806D864 lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r4 ldrb r0, [r1, 0x13] b _0818CB5A .pool _0818CB54: ldr r0, =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x8] _0818CB5A: ldr r1, =gTrainerBackPicPaletteTable lsls r0, 3 adds r0, r1 ldr r0, [r0] lsls r4, r5, 4 movs r2, 0x80 lsls r2, 1 adds r1, r4, r2 movs r2, 0x20 bl LoadCompressedPalette ldr r2, =gSprites ldr r1, =gBankSpriteIds ldr r5, =gActiveBank ldrb r0, [r5] adds r0, r1 ldrb r0, [r0] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r4 strb r0, [r1, 0x5] ldr r0, =sub_818CC24 movs r1, 0x5 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r4, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r4 ldrb r0, [r5] strh r0, [r1, 0x8] ldr r3, =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r5] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0818CBD4 ldr r0, =gUnknown_020244B4 adds r0, r2, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r4 ldr r1, =sub_8073C30 str r1, [r0] _0818CBD4: ldr r0, [r3] ldr r2, [r0, 0x8] ldrb r0, [r2, 0x9] movs r1, 0x1 orrs r0, r1 strb r0, [r2, 0x9] ldr r1, =gBattleBankFunc ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, =nullsub_120 str r1, [r0] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818CA64 thumb_func_start sub_818CC24 sub_818CC24: @ 818CC24 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r1, =gTasks lsls r0, 2 add r0, r8 lsls r0, 3 adds r1, r0, r1 ldrh r2, [r1, 0xA] movs r3, 0xA ldrsh r0, [r1, r3] cmp r0, 0x17 bgt _0818CC50 adds r0, r2, 0x1 strh r0, [r1, 0xA] b _0818CD0C .pool _0818CC50: ldr r7, =gActiveBank ldrb r0, [r7] mov r9, r0 ldrh r0, [r1, 0x8] strb r0, [r7] bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0818CC70 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _0818CCA0 _0818CC70: ldr r0, =gBattleBufferA ldrb r1, [r7] lsls r2, r1, 9 adds r0, 0x1 adds r2, r0 ldr r0, =gBattlePartyID lsls r1, 1 adds r1, r0 ldrh r0, [r1] strb r0, [r2] ldrb r0, [r7] movs r1, 0 bl sub_818BA6C b _0818CCF4 .pool _0818CCA0: ldr r4, =gBattleBufferA ldrb r0, [r7] lsls r1, r0, 9 adds r4, 0x1 adds r1, r4 ldr r5, =gBattlePartyID lsls r0, 1 adds r0, r5 ldrh r0, [r0] strb r0, [r1] ldrb r0, [r7] movs r1, 0 bl sub_818BA6C ldrb r0, [r7] movs r6, 0x2 eors r0, r6 strb r0, [r7] ldrb r0, [r7] lsls r1, r0, 9 adds r1, r4 lsls r0, 1 adds r0, r5 ldrh r0, [r0] strb r0, [r1] ldrb r1, [r7] lsls r0, r1, 1 adds r0, r5 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r2, =gPlayerParty adds r0, r2 bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r7] movs r1, 0 bl sub_818BA6C ldrb r0, [r7] eors r0, r6 strb r0, [r7] _0818CCF4: ldr r1, =gBattleBankFunc ldr r2, =gActiveBank ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, =sub_8189D40 str r1, [r0] mov r3, r9 strb r3, [r2] mov r0, r8 bl DestroyTask _0818CD0C: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_818CC24 thumb_func_start sub_818CD30 sub_818CD30: @ 818CD30 push {r4-r6,lr} ldr r1, =gBattleBufferA ldr r0, =gActiveBank ldrb r2, [r0] lsls r0, r2, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] cmp r0, 0 beq _0818CD60 adds r0, r2, 0 bl GetBankSide lsls r0, 24 cmp r0, 0 bne _0818CD60 bl RecordedPlayerBufferExecCompleted b _0818CDD4 .pool _0818CD60: ldr r6, =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, =gActiveBank ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] ldrb r0, [r5] lsls r3, r0, 9 ldr r4, =gBattleBufferA + 4 adds r1, r3, r4 subs r2, r4, 0x3 adds r2, r3, r2 ldrb r2, [r2] subs r4, 0x2 adds r3, r4 ldrb r3, [r3] bl CreatePartyStatusSummarySprites ldr r2, =gUnknown_020244B4 ldrb r1, [r5] adds r1, r2 movs r3, 0 strb r0, [r1] ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 strb r3, [r0, 0x5] ldrb r2, [r5] lsls r0, r2, 9 adds r0, r4 ldrb r0, [r0] cmp r0, 0 beq _0818CDC8 ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 movs r1, 0x5D strb r1, [r0, 0x5] _0818CDC8: ldr r0, =gBattleBankFunc ldrb r1, [r5] lsls r1, 2 adds r1, r0 ldr r0, =bx_increment_dp11b_field_5_till_x60_then_resume str r0, [r1] _0818CDD4: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818CD30 thumb_func_start bx_increment_dp11b_field_5_till_x60_then_resume bx_increment_dp11b_field_5_till_x60_then_resume: @ 818CDF4 push {r4,lr} ldr r4, =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, =gActiveBank ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x5] adds r2, r1, 0x1 strb r2, [r0, 0x5] lsls r1, 24 lsrs r1, 24 cmp r1, 0x5C bls _0818CE2C ldr r0, [r4] ldrb r1, [r3] ldr r2, [r0, 0x4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x5] bl RecordedPlayerBufferExecCompleted _0818CE2C: pop {r4} pop {r0} bx r0 .pool thumb_func_end bx_increment_dp11b_field_5_till_x60_then_resume thumb_func_start sub_818CE3C sub_818CE3C: @ 818CE3C push {lr} ldr r0, =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, =gActiveBank ldrb r3, [r0] ldr r1, [r1, 0x4] lsls r0, r3, 1 adds r0, r3 lsls r0, 2 adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0818CE6E ldr r2, =gTasks ldr r0, =gUnknown_020244B4 adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldr r1, =sub_8073C30 str r1, [r0] _0818CE6E: bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 .pool thumb_func_end sub_818CE3C thumb_func_start sub_818CE8C sub_818CE8C: @ 818CE8C push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818CE8C thumb_func_start sub_818CE98 sub_818CE98: @ 818CE98 push {r4,lr} ldr r4, =gActiveBank ldrb r0, [r4] bl AnimBankSpriteExists lsls r0, 24 cmp r0, 0 beq _0818CEDE ldr r3, =gSprites ldr r0, =gBankSpriteIds ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r3 ldr r0, =gBattleBufferA lsls r1, 9 adds r0, 0x1 adds r1, r0 adds r2, 0x3E movs r0, 0x1 ldrb r1, [r1] ands r1, r0 lsls r1, 2 ldrb r3, [r2] movs r0, 0x5 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2] ldrb r0, [r4] bl sub_805E408 _0818CEDE: bl RecordedPlayerBufferExecCompleted pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_818CE98 thumb_func_start sub_818CEF8 sub_818CEF8: @ 818CEF8 push {r4-r6,lr} sub sp, 0x4 ldr r6, =gActiveBank ldrb r0, [r6] bl mplay_80342A4 lsls r0, 24 cmp r0, 0 bne _0818CF50 ldr r5, =gBattleBufferA ldrb r2, [r6] lsls r1, r2, 9 adds r0, r5, 0x1 adds r0, r1, r0 ldrb r3, [r0] adds r0, r5, 0x2 adds r0, r1, r0 ldrb r4, [r0] adds r5, 0x3 adds r1, r5 ldrb r0, [r1] lsls r0, 8 orrs r4, r0 str r4, [sp] adds r0, r2, 0 adds r1, r2, 0 bl move_anim_start_t3 lsls r0, 24 cmp r0, 0 beq _0818CF44 bl RecordedPlayerBufferExecCompleted b _0818CF50 .pool _0818CF44: ldr r0, =gBattleBankFunc ldrb r1, [r6] lsls r1, 2 adds r1, r0 ldr r0, =sub_818A5BC str r0, [r1] _0818CF50: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_818CEF8 thumb_func_start sub_818CF60 sub_818CF60: @ 818CF60 push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818CF60 thumb_func_start sub_818CF6C sub_818CF6C: @ 818CF6C push {lr} bl RecordedPlayerBufferExecCompleted pop {r0} bx r0 thumb_func_end sub_818CF6C thumb_func_start sub_818CF78 sub_818CF78: @ 818CF78 push {r4,lr} ldr r2, =gBattleOutcome ldr r1, =gBattleBufferA ldr r4, =gActiveBank ldrb r0, [r4] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] strb r0, [r2] movs r0, 0x5 bl FadeOutMapMusic movs r0, 0x3 bl BeginFastPaletteFade bl RecordedPlayerBufferExecCompleted ldr r1, =gBattleBankFunc ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, =sub_80587B0 str r1, [r0] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_818CF78 thumb_func_start nullsub_121 nullsub_121: @ 818CFC4 bx lr thumb_func_end nullsub_121 .align 2, 0 @ Don't pad with nop.