.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_80CDD18 sub_80CDD18: @ 80CDD18 push {lr} bl UpdatePaletteFade bl RunTasks pop {r0} bx r0 thumb_func_end sub_80CDD18 thumb_func_start Task_BeginEvolutionScene Task_BeginEvolutionScene: @ 80CDD28 push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 lsrs r2, r0, 24 movs r7, 0 ldr r1, _080CDD4C @ =gTasks lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r6, r0, r1 movs r1, 0x8 ldrsh r0, [r6, r1] cmp r0, 0 beq _080CDD50 cmp r0, 0x1 beq _080CDD68 b _080CDD98 .align 2, 0 _080CDD4C: .4byte gTasks _080CDD50: movs r0, 0x1 negs r0, r0 str r7, [sp] movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] b _080CDD98 _080CDD68: ldr r0, _080CDDA0 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080CDD98 movs r0, 0x1C ldrsh r1, [r6, r0] movs r0, 0x64 muls r1, r0 ldr r0, _080CDDA4 @ =gPlayerParty adds r7, r1, r0 ldrh r4, [r6, 0xC] ldrb r5, [r6, 0xE] ldrb r6, [r6, 0x1C] adds r0, r2, 0 bl DestroyTask adds r0, r7, 0 adds r1, r4, 0 adds r2, r5, 0 adds r3, r6, 0 bl EvolutionScene _080CDD98: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080CDDA0: .4byte gPaletteFade _080CDDA4: .4byte gPlayerParty thumb_func_end Task_BeginEvolutionScene thumb_func_start BeginEvolutionScene BeginEvolutionScene: @ 80CDDA8 push {r4-r6,lr} adds r4, r1, 0 adds r5, r2, 0 adds r6, r3, 0 lsls r4, 16 lsrs r4, 16 lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 ldr r0, _080CDDE8 @ =Task_BeginEvolutionScene movs r1, 0 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, _080CDDEC @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 movs r0, 0 strh r0, [r1, 0x8] strh r4, [r1, 0xC] strh r5, [r1, 0xE] strh r6, [r1, 0x1C] ldr r0, _080CDDF0 @ =sub_80CDD18 bl SetMainCallback2 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080CDDE8: .4byte Task_BeginEvolutionScene _080CDDEC: .4byte gTasks _080CDDF0: .4byte sub_80CDD18 thumb_func_end BeginEvolutionScene thumb_func_start EvolutionScene EvolutionScene: @ 80CDDF4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x24 adds r4, r0, 0 mov r10, r1 mov r0, r10 lsls r0, 16 lsrs r0, 16 mov r10, r0 lsls r2, 24 lsrs r2, 24 str r2, [sp, 0x18] lsls r3, 24 lsrs r3, 24 str r3, [sp, 0x1C] movs r0, 0 bl SetHBlankCallback movs r0, 0 bl SetVBlankCallback movs r1, 0 str r1, [sp, 0x14] add r0, sp, 0x14 movs r1, 0xC0 lsls r1, 19 ldr r2, _080CE07C @ =0x05006000 bl CpuSet movs r0, 0x4C movs r1, 0 bl SetGpuReg movs r0, 0x40 movs r1, 0 bl SetGpuReg movs r0, 0x44 movs r1, 0 bl SetGpuReg movs r0, 0x42 movs r1, 0 bl SetGpuReg movs r0, 0x46 movs r1, 0 bl SetGpuReg movs r0, 0x48 movs r1, 0 bl SetGpuReg movs r0, 0x4A movs r1, 0 bl SetGpuReg bl ResetPaletteFade ldr r0, _080CE080 @ =gUnknown_2022974 movs r2, 0 strh r2, [r0] ldr r0, _080CE084 @ =gUnknown_2022976 strh r2, [r0] ldr r0, _080CE088 @ =gUnknown_2022978 strh r2, [r0] ldr r0, _080CE08C @ =gUnknown_202297A strh r2, [r0] ldr r0, _080CE090 @ =gUnknown_202297C strh r2, [r0] ldr r0, _080CE094 @ =gUnknown_202297E strh r2, [r0] ldr r1, _080CE098 @ =gUnknown_2022980 movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] ldr r0, _080CE09C @ =gUnknown_2022982 movs r1, 0 strh r1, [r0] ldr r1, _080CE0A0 @ =gUnknown_2022B50 movs r0, 0x9 strb r0, [r1] bl sub_800F34C bl LoadBattleTextboxAndBackground bl ResetSpriteData bl remove_some_task bl ResetTasks bl FreeAllSpritePalettes ldr r0, _080CE0A4 @ =gReservedSpritePaletteCount movs r2, 0x4 strb r2, [r0] movs r0, 0x64 bl AllocZeroed ldr r1, _080CE0A8 @ =gUnknown_2039A20 str r0, [r1] bl AllocateMonSpritesGfx adds r0, r4, 0 movs r1, 0x2 mov r2, sp bl GetMonData ldr r0, _080CE0AC @ =gStringVar1 mov r1, sp bl StringCopy10 ldr r0, _080CE0B0 @ =gStringVar2 movs r1, 0xB mov r2, r10 muls r2, r1 adds r1, r2, 0 ldr r2, _080CE0B4 @ =gSpeciesNames adds r1, r2 bl StringCopy adds r0, r4, 0 movs r1, 0xB bl GetMonData adds r5, r0, 0 lsls r5, 16 lsrs r5, 16 adds r0, r4, 0 movs r1, 0x1 bl GetMonData str r0, [sp, 0x20] adds r0, r4, 0 movs r1, 0 bl GetMonData mov r9, r0 lsls r0, r5, 3 ldr r1, _080CE0B8 @ =gUnknown_82350AC adds r0, r1 ldr r2, _080CE0BC @ =gMonSpritesGfxPtr ldr r1, [r2] ldr r1, [r1, 0x8] adds r2, r5, 0 bl DecompressPicFromTable adds r0, r5, 0 ldr r1, [sp, 0x20] mov r2, r9 bl GetMonSpritePalStructFromOtIdPersonality ldr r0, [r0] movs r1, 0x88 lsls r1, 1 movs r2, 0x20 bl LoadCompressedPalette adds r0, r5, 0 movs r1, 0x1 bl sub_803F7D4 ldr r0, _080CE0C0 @ =gMultiuseSpriteTemplate mov r8, r0 ldr r1, _080CE0C4 @ =gDummySpriteAffineAnimTable str r1, [r0, 0x10] movs r1, 0x78 movs r2, 0x40 movs r3, 0x1E bl CreateSprite ldr r1, _080CE0A8 @ =gUnknown_2039A20 ldr r2, [r1] lsls r1, r0, 24 lsrs r3, r1, 24 strb r0, [r2] ldr r7, _080CE0C8 @ =gSprites lsls r1, r3, 4 adds r1, r3 lsls r1, 2 adds r6, r7, 0 adds r6, 0x1C adds r0, r1, r6 ldr r2, _080CE0CC @ =nullsub_10 str r2, [r0] adds r1, r7 ldrb r2, [r1, 0x5] movs r4, 0xF adds r0, r4, 0 ands r0, r2 movs r2, 0x10 orrs r0, r2 strb r0, [r1, 0x5] adds r1, 0x3E ldrb r0, [r1] movs r2, 0x4 orrs r0, r2 strb r0, [r1] mov r1, r10 lsls r0, r1, 3 ldr r2, _080CE0B8 @ =gUnknown_82350AC adds r0, r2 ldr r2, _080CE0BC @ =gMonSpritesGfxPtr ldr r1, [r2] ldr r1, [r1, 0x10] mov r2, r10 bl DecompressPicFromTable mov r0, r10 ldr r1, [sp, 0x20] mov r2, r9 bl GetMonSpritePalStructFromOtIdPersonality ldr r0, [r0] movs r1, 0x90 lsls r1, 1 movs r2, 0x20 bl LoadCompressedPalette mov r0, r10 movs r1, 0x3 bl sub_803F7D4 ldr r0, _080CE0C4 @ =gDummySpriteAffineAnimTable mov r1, r8 str r0, [r1, 0x10] mov r0, r8 movs r1, 0x78 movs r2, 0x40 movs r3, 0x1E bl CreateSprite ldr r1, _080CE0A8 @ =gUnknown_2039A20 ldr r2, [r1] lsls r1, r0, 24 lsrs r3, r1, 24 strb r0, [r2, 0x1] lsls r1, r3, 4 adds r1, r3 lsls r1, 2 adds r6, r1, r6 ldr r2, _080CE0CC @ =nullsub_10 str r2, [r6] adds r1, r7 ldrb r0, [r1, 0x5] ands r4, r0 movs r0, 0x20 orrs r4, r0 strb r4, [r1, 0x5] adds r1, 0x3E ldrb r0, [r1] movs r2, 0x4 orrs r0, r2 strb r0, [r1] bl LoadEvoSparkleSpriteAndPal ldr r0, _080CE0D0 @ =sub_80CE8DC movs r1, 0 bl CreateTask ldr r1, _080CE0A8 @ =gUnknown_2039A20 ldr r2, [r1] lsls r1, r0, 24 lsrs r3, r1, 24 strb r0, [r2, 0x2] ldr r1, _080CE0D4 @ =gTasks lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r0, r1 movs r2, 0 strh r2, [r0, 0x8] strh r5, [r0, 0xA] mov r1, r10 strh r1, [r0, 0xC] mov r2, sp ldrh r2, [r2, 0x18] strh r2, [r0, 0xE] movs r1, 0x1 strh r1, [r0, 0x10] movs r1, 0 strh r1, [r0, 0x1A] mov r2, sp ldrh r2, [r2, 0x1C] strh r2, [r0, 0x1C] ldr r1, _080CE0A8 @ =gUnknown_2039A20 ldr r0, [r1] ldr r1, _080CE0D8 @ =gPlttBufferUnfaded + 0x40 adds r0, 0x4 movs r2, 0x60 bl memcpy movs r1, 0xFA lsls r1, 5 movs r0, 0 bl SetGpuReg ldr r0, _080CE0DC @ =nullsub_76 bl SetHBlankCallback ldr r0, _080CE0E0 @ =sub_80D0050 bl SetVBlankCallback bl m4aMPlayAllStop bl sub_812B478 ldr r0, _080CE0E4 @ =sub_80CE710 bl SetMainCallback2 add sp, 0x24 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080CE07C: .4byte 0x05006000 _080CE080: .4byte gUnknown_2022974 _080CE084: .4byte gUnknown_2022976 _080CE088: .4byte gUnknown_2022978 _080CE08C: .4byte gUnknown_202297A _080CE090: .4byte gUnknown_202297C _080CE094: .4byte gUnknown_202297E _080CE098: .4byte gUnknown_2022980 _080CE09C: .4byte gUnknown_2022982 _080CE0A0: .4byte gUnknown_2022B50 _080CE0A4: .4byte gReservedSpritePaletteCount _080CE0A8: .4byte gUnknown_2039A20 _080CE0AC: .4byte gStringVar1 _080CE0B0: .4byte gStringVar2 _080CE0B4: .4byte gSpeciesNames _080CE0B8: .4byte gUnknown_82350AC _080CE0BC: .4byte gMonSpritesGfxPtr _080CE0C0: .4byte gMultiuseSpriteTemplate _080CE0C4: .4byte gDummySpriteAffineAnimTable _080CE0C8: .4byte gSprites _080CE0CC: .4byte nullsub_10 _080CE0D0: .4byte sub_80CE8DC _080CE0D4: .4byte gTasks _080CE0D8: .4byte gPlttBufferUnfaded + 0x40 _080CE0DC: .4byte nullsub_76 _080CE0E0: .4byte sub_80D0050 _080CE0E4: .4byte sub_80CE710 thumb_func_end EvolutionScene thumb_func_start CB2_EvolutionSceneLoadGraphics CB2_EvolutionSceneLoadGraphics: @ 80CE0E8 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} sub sp, 0x8 ldr r2, _080CE280 @ =gTasks ldr r0, _080CE284 @ =gUnknown_2039A20 mov r8, r0 ldr r0, [r0] ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 movs r1, 0x1C ldrsh r2, [r0, r1] movs r1, 0x64 adds r4, r2, 0 muls r4, r1 ldr r1, _080CE288 @ =gPlayerParty adds r4, r1 ldrh r5, [r0, 0xC] adds r0, r4, 0 movs r1, 0x1 bl GetMonData mov r9, r0 adds r0, r4, 0 movs r1, 0 bl GetMonData adds r6, r0, 0 movs r0, 0 bl SetHBlankCallback movs r0, 0 bl SetVBlankCallback movs r4, 0 str r4, [sp, 0x4] movs r1, 0xC0 lsls r1, 19 ldr r2, _080CE28C @ =0x05006000 add r0, sp, 0x4 bl CpuSet movs r0, 0x4C movs r1, 0 bl SetGpuReg movs r0, 0x40 movs r1, 0 bl SetGpuReg movs r0, 0x44 movs r1, 0 bl SetGpuReg movs r0, 0x42 movs r1, 0 bl SetGpuReg movs r0, 0x46 movs r1, 0 bl SetGpuReg movs r0, 0x48 movs r1, 0 bl SetGpuReg movs r0, 0x4A movs r1, 0 bl SetGpuReg bl ResetPaletteFade ldr r0, _080CE290 @ =gUnknown_2022974 strh r4, [r0] ldr r0, _080CE294 @ =gUnknown_2022976 strh r4, [r0] ldr r0, _080CE298 @ =gUnknown_2022978 strh r4, [r0] ldr r0, _080CE29C @ =gUnknown_202297A strh r4, [r0] ldr r0, _080CE2A0 @ =gUnknown_202297C strh r4, [r0] ldr r0, _080CE2A4 @ =gUnknown_202297E strh r4, [r0] ldr r1, _080CE2A8 @ =gUnknown_2022980 movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] ldr r0, _080CE2AC @ =gUnknown_2022982 strh r4, [r0] ldr r1, _080CE2B0 @ =gUnknown_2022B50 movs r0, 0x9 strb r0, [r1] bl sub_800F34C bl LoadBattleTextboxAndBackground bl ResetSpriteData bl FreeAllSpritePalettes ldr r1, _080CE2B4 @ =gReservedSpritePaletteCount movs r0, 0x4 strb r0, [r1] lsls r0, r5, 3 ldr r1, _080CE2B8 @ =gUnknown_82350AC adds r0, r1 ldr r1, _080CE2BC @ =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x10] adds r2, r5, 0 bl DecompressPicFromTable adds r0, r5, 0 mov r1, r9 adds r2, r6, 0 bl GetMonSpritePalStructFromOtIdPersonality ldr r0, [r0] movs r1, 0x90 lsls r1, 1 movs r2, 0x20 bl LoadCompressedPalette adds r0, r5, 0 movs r1, 0x3 bl sub_803F7D4 ldr r0, _080CE2C0 @ =gMultiuseSpriteTemplate ldr r1, _080CE2C4 @ =gDummySpriteAffineAnimTable str r1, [r0, 0x10] movs r1, 0x78 movs r2, 0x40 movs r3, 0x1E bl CreateSprite mov r2, r8 ldr r1, [r2] lsls r2, r0, 24 lsrs r2, 24 strb r0, [r1, 0x1] ldr r3, _080CE2C8 @ =gSprites lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r0, r3, 0 adds r0, 0x1C adds r0, r1, r0 ldr r2, _080CE2CC @ =nullsub_10 str r2, [r0] adds r1, r3 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 movs r2, 0x20 orrs r0, r2 strb r0, [r1, 0x5] movs r1, 0xFA lsls r1, 5 movs r0, 0 bl SetGpuReg ldr r0, _080CE2D0 @ =nullsub_76 bl SetHBlankCallback ldr r0, _080CE2D4 @ =sub_80D0050 bl SetVBlankCallback ldr r0, _080CE2D8 @ =sub_80CE710 bl SetMainCallback2 movs r0, 0x1 negs r0, r0 str r4, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade movs r0, 0 bl ShowBg movs r0, 0x1 bl ShowBg movs r0, 0x2 bl ShowBg movs r0, 0x3 bl ShowBg add sp, 0x8 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080CE280: .4byte gTasks _080CE284: .4byte gUnknown_2039A20 _080CE288: .4byte gPlayerParty _080CE28C: .4byte 0x05006000 _080CE290: .4byte gUnknown_2022974 _080CE294: .4byte gUnknown_2022976 _080CE298: .4byte gUnknown_2022978 _080CE29C: .4byte gUnknown_202297A _080CE2A0: .4byte gUnknown_202297C _080CE2A4: .4byte gUnknown_202297E _080CE2A8: .4byte gUnknown_2022980 _080CE2AC: .4byte gUnknown_2022982 _080CE2B0: .4byte gUnknown_2022B50 _080CE2B4: .4byte gReservedSpritePaletteCount _080CE2B8: .4byte gUnknown_82350AC _080CE2BC: .4byte gMonSpritesGfxPtr _080CE2C0: .4byte gMultiuseSpriteTemplate _080CE2C4: .4byte gDummySpriteAffineAnimTable _080CE2C8: .4byte gSprites _080CE2CC: .4byte nullsub_10 _080CE2D0: .4byte nullsub_76 _080CE2D4: .4byte sub_80D0050 _080CE2D8: .4byte sub_80CE710 thumb_func_end CB2_EvolutionSceneLoadGraphics thumb_func_start CB2_TradeEvolutionSceneLoadGraphics CB2_TradeEvolutionSceneLoadGraphics: @ 80CE2DC push {r4-r6,lr} sub sp, 0xC ldr r2, _080CE318 @ =gTasks ldr r0, _080CE31C @ =gUnknown_2039A20 ldr r0, [r0] ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 movs r1, 0x1C ldrsh r2, [r0, r1] movs r1, 0x64 muls r2, r1 ldr r1, _080CE320 @ =gPlayerParty adds r4, r2, r1 ldrh r6, [r0, 0xC] ldr r0, _080CE324 @ =gMain movs r3, 0x87 lsls r3, 3 adds r0, r3 ldrb r0, [r0] cmp r0, 0x7 bls _080CE30E b _080CE534 _080CE30E: lsls r0, 2 ldr r1, _080CE328 @ =_080CE32C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080CE318: .4byte gTasks _080CE31C: .4byte gUnknown_2039A20 _080CE320: .4byte gPlayerParty _080CE324: .4byte gMain _080CE328: .4byte _080CE32C .align 2, 0 _080CE32C: .4byte _080CE34C .4byte _080CE3BC .4byte _080CE3E4 .4byte _080CE3EA .4byte _080CE414 .4byte _080CE45C .4byte _080CE4CC .4byte _080CE504 _080CE34C: movs r0, 0 movs r1, 0 bl SetGpuReg movs r0, 0 bl SetHBlankCallback movs r0, 0 bl SetVBlankCallback bl ResetSpriteData bl FreeAllSpritePalettes ldr r1, _080CE398 @ =gReservedSpritePaletteCount movs r0, 0x4 strb r0, [r1] ldr r0, _080CE39C @ =gUnknown_2022974 movs r1, 0 strh r1, [r0] ldr r0, _080CE3A0 @ =gUnknown_2022976 strh r1, [r0] ldr r0, _080CE3A4 @ =gUnknown_2022978 strh r1, [r0] ldr r0, _080CE3A8 @ =gUnknown_202297A strh r1, [r0] ldr r0, _080CE3AC @ =gUnknown_202297C strh r1, [r0] ldr r0, _080CE3B0 @ =gUnknown_202297E strh r1, [r0] ldr r2, _080CE3B4 @ =gUnknown_2022980 movs r3, 0x80 lsls r3, 1 adds r0, r3, 0 strh r0, [r2] ldr r0, _080CE3B8 @ =gUnknown_2022982 strh r1, [r0] b _080CE4EC .align 2, 0 _080CE398: .4byte gReservedSpritePaletteCount _080CE39C: .4byte gUnknown_2022974 _080CE3A0: .4byte gUnknown_2022976 _080CE3A4: .4byte gUnknown_2022978 _080CE3A8: .4byte gUnknown_202297A _080CE3AC: .4byte gUnknown_202297C _080CE3B0: .4byte gUnknown_202297E _080CE3B4: .4byte gUnknown_2022980 _080CE3B8: .4byte gUnknown_2022982 _080CE3BC: bl ResetPaletteFade ldr r0, _080CE3D8 @ =nullsub_76 bl SetHBlankCallback ldr r0, _080CE3DC @ =sub_80D00D8 bl SetVBlankCallback ldr r1, _080CE3E0 @ =gMain movs r3, 0x87 lsls r3, 3 adds r1, r3 b _080CE4F4 .align 2, 0 _080CE3D8: .4byte nullsub_76 _080CE3DC: .4byte sub_80D00D8 _080CE3E0: .4byte gMain _080CE3E4: bl sub_80544FC b _080CE4EC _080CE3EA: movs r0, 0x20 str r0, [sp] str r0, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0x1 movs r1, 0 movs r2, 0 movs r3, 0 bl FillBgTilemapBufferRect movs r0, 0x1 bl CopyBgTilemapBufferToVram ldr r1, _080CE410 @ =gMain movs r3, 0x87 lsls r3, 3 adds r1, r3 b _080CE4F4 .align 2, 0 _080CE410: .4byte gMain _080CE414: adds r0, r4, 0 movs r1, 0x1 bl GetMonData adds r5, r0, 0 adds r0, r4, 0 movs r1, 0 bl GetMonData adds r4, r0, 0 lsls r0, r6, 3 ldr r1, _080CE454 @ =gUnknown_82350AC adds r0, r1 ldr r1, _080CE458 @ =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x10] adds r2, r6, 0 bl DecompressPicFromTable adds r0, r6, 0 adds r1, r5, 0 adds r2, r4, 0 bl GetMonSpritePalStructFromOtIdPersonality ldr r0, [r0] movs r1, 0x90 lsls r1, 1 movs r2, 0x20 bl LoadCompressedPalette b _080CE4EC .align 2, 0 _080CE454: .4byte gUnknown_82350AC _080CE458: .4byte gMonSpritesGfxPtr _080CE45C: adds r0, r6, 0 movs r1, 0x1 bl sub_803F7D4 ldr r0, _080CE4B4 @ =gMultiuseSpriteTemplate ldr r1, _080CE4B8 @ =gDummySpriteAffineAnimTable str r1, [r0, 0x10] movs r1, 0x78 movs r2, 0x40 movs r3, 0x1E bl CreateSprite ldr r1, _080CE4BC @ =gUnknown_2039A20 ldr r1, [r1] lsls r2, r0, 24 lsrs r2, 24 strb r0, [r1, 0x1] ldr r3, _080CE4C0 @ =gSprites lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r0, r3, 0 adds r0, 0x1C adds r0, r1, r0 ldr r2, _080CE4C4 @ =nullsub_10 str r2, [r0] adds r1, r3 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 movs r2, 0x20 orrs r0, r2 strb r0, [r1, 0x5] ldr r1, _080CE4C8 @ =gMain movs r3, 0x87 lsls r3, 3 adds r1, r3 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] bl sub_80504B0 b _080CE534 .align 2, 0 _080CE4B4: .4byte gMultiuseSpriteTemplate _080CE4B8: .4byte gDummySpriteAffineAnimTable _080CE4BC: .4byte gUnknown_2039A20 _080CE4C0: .4byte gSprites _080CE4C4: .4byte nullsub_10 _080CE4C8: .4byte gMain _080CE4CC: ldr r0, _080CE4FC @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 beq _080CE4E0 bl sub_80FCEA8 movs r0, 0 movs r1, 0 bl sub_80FCD74 _080CE4E0: movs r0, 0x1 negs r0, r0 movs r1, 0x10 movs r2, 0 bl BlendPalettes _080CE4EC: ldr r1, _080CE500 @ =gMain movs r0, 0x87 lsls r0, 3 adds r1, r0 _080CE4F4: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] b _080CE534 .align 2, 0 _080CE4FC: .4byte gWirelessCommType _080CE500: .4byte gMain _080CE504: movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade bl sub_805049C movs r0, 0 bl ShowBg movs r0, 0x1 bl ShowBg ldr r0, _080CE53C @ =sub_80CE72C bl SetMainCallback2 movs r1, 0x9A lsls r1, 5 movs r0, 0 bl SetGpuReg _080CE534: add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080CE53C: .4byte sub_80CE72C thumb_func_end CB2_TradeEvolutionSceneLoadGraphics thumb_func_start TradeEvolutionScene TradeEvolutionScene: @ 80CE540 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x18 adds r4, r0, 0 adds r5, r1, 0 adds r6, r2, 0 lsls r5, 16 lsrs r5, 16 lsls r6, 24 lsrs r6, 24 lsls r3, 24 lsrs r3, 24 str r3, [sp, 0x14] movs r1, 0x2 mov r2, sp bl GetMonData ldr r0, _080CE6B0 @ =gStringVar1 mov r1, sp bl StringCopy10 ldr r0, _080CE6B4 @ =gStringVar2 movs r1, 0xB muls r1, r5 ldr r2, _080CE6B8 @ =gSpeciesNames adds r1, r2 bl StringCopy ldr r1, _080CE6BC @ =gAffineAnimsDisabled movs r0, 0x1 strb r0, [r1] adds r0, r4, 0 movs r1, 0xB bl GetMonData mov r8, r0 lsls r0, 16 lsrs r0, 16 mov r8, r0 adds r0, r4, 0 movs r1, 0 bl GetMonData adds r7, r0, 0 adds r0, r4, 0 movs r1, 0x1 bl GetMonData mov r10, r0 ldr r1, _080CE6C0 @ =gUnknown_2039A20 mov r9, r1 movs r0, 0x64 bl AllocZeroed mov r2, r9 str r0, [r2] movs r4, 0 strb r6, [r0] lsls r0, r5, 3 ldr r1, _080CE6C4 @ =gUnknown_82350AC adds r0, r1 ldr r1, _080CE6C8 @ =gMonSpritesGfxPtr ldr r1, [r1] ldr r1, [r1, 0x8] adds r2, r5, 0 bl DecompressPicFromTable adds r0, r5, 0 mov r1, r10 adds r2, r7, 0 bl GetMonSpritePalStructFromOtIdPersonality ldr r0, [r0] movs r1, 0x90 lsls r1, 1 movs r2, 0x20 bl LoadCompressedPalette adds r0, r5, 0 movs r1, 0x1 bl sub_803F7D4 ldr r0, _080CE6CC @ =gMultiuseSpriteTemplate ldr r1, _080CE6D0 @ =gDummySpriteAffineAnimTable str r1, [r0, 0x10] movs r1, 0x78 movs r2, 0x40 movs r3, 0x1E bl CreateSprite mov r1, r9 ldr r2, [r1] lsls r1, r0, 24 lsrs r6, r1, 24 strb r0, [r2, 0x1] ldr r3, _080CE6D4 @ =gSprites lsls r1, r6, 4 adds r1, r6 lsls r1, 2 adds r0, r3, 0 adds r0, 0x1C adds r0, r1, r0 ldr r2, _080CE6D8 @ =nullsub_10 str r2, [r0] adds r1, r3 ldrb r2, [r1, 0x5] movs r0, 0xF ands r0, r2 movs r2, 0x20 orrs r0, r2 strb r0, [r1, 0x5] adds r1, 0x3E ldrb r0, [r1] movs r2, 0x4 orrs r0, r2 strb r0, [r1] bl LoadEvoSparkleSpriteAndPal ldr r0, _080CE6DC @ =sub_80CF53C movs r1, 0 bl CreateTask mov r1, r9 ldr r2, [r1] lsls r1, r0, 24 lsrs r6, r1, 24 strb r0, [r2, 0x2] ldr r1, _080CE6E0 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 strh r4, [r0, 0x8] mov r2, r8 strh r2, [r0, 0xA] strh r5, [r0, 0xC] movs r1, 0x1 strh r1, [r0, 0x10] strh r4, [r0, 0x1A] mov r1, sp ldrh r1, [r1, 0x14] strh r1, [r0, 0x1C] ldr r0, _080CE6E4 @ =gUnknown_2022974 strh r4, [r0] ldr r0, _080CE6E8 @ =gUnknown_2022976 strh r4, [r0] ldr r0, _080CE6EC @ =gUnknown_2022978 strh r4, [r0] ldr r0, _080CE6F0 @ =gUnknown_202297A strh r4, [r0] ldr r0, _080CE6F4 @ =gUnknown_202297C strh r4, [r0] ldr r0, _080CE6F8 @ =gUnknown_202297E strh r4, [r0] ldr r1, _080CE6FC @ =gUnknown_2022980 movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] ldr r0, _080CE700 @ =gUnknown_2022982 strh r4, [r0] ldr r2, _080CE704 @ =gTextFlags ldrb r0, [r2] movs r1, 0x2 orrs r0, r1 strb r0, [r2] ldr r0, _080CE708 @ =sub_80D00D8 bl SetVBlankCallback ldr r0, _080CE70C @ =sub_80CE72C bl SetMainCallback2 add sp, 0x18 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080CE6B0: .4byte gStringVar1 _080CE6B4: .4byte gStringVar2 _080CE6B8: .4byte gSpeciesNames _080CE6BC: .4byte gAffineAnimsDisabled _080CE6C0: .4byte gUnknown_2039A20 _080CE6C4: .4byte gUnknown_82350AC _080CE6C8: .4byte gMonSpritesGfxPtr _080CE6CC: .4byte gMultiuseSpriteTemplate _080CE6D0: .4byte gDummySpriteAffineAnimTable _080CE6D4: .4byte gSprites _080CE6D8: .4byte nullsub_10 _080CE6DC: .4byte sub_80CF53C _080CE6E0: .4byte gTasks _080CE6E4: .4byte gUnknown_2022974 _080CE6E8: .4byte gUnknown_2022976 _080CE6EC: .4byte gUnknown_2022978 _080CE6F0: .4byte gUnknown_202297A _080CE6F4: .4byte gUnknown_202297C _080CE6F8: .4byte gUnknown_202297E _080CE6FC: .4byte gUnknown_2022980 _080CE700: .4byte gUnknown_2022982 _080CE704: .4byte gTextFlags _080CE708: .4byte sub_80D00D8 _080CE70C: .4byte sub_80CE72C thumb_func_end TradeEvolutionScene thumb_func_start sub_80CE710 sub_80CE710: @ 80CE710 push {lr} bl AnimateSprites bl BuildOamBuffer bl RunTextPrinters bl UpdatePaletteFade bl RunTasks pop {r0} bx r0 thumb_func_end sub_80CE710 thumb_func_start sub_80CE72C sub_80CE72C: @ 80CE72C push {lr} bl AnimateSprites bl BuildOamBuffer bl RunTextPrinters bl UpdatePaletteFade bl RunTasks pop {r0} bx r0 thumb_func_end sub_80CE72C thumb_func_start CreateShedinja CreateShedinja: @ 80CE748 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC str r1, [sp, 0x4] lsls r0, 16 lsrs r0, 16 mov r10, r0 movs r0, 0 str r0, [sp] mov r0, r10 lsls r0, 2 str r0, [sp, 0x8] add r0, r10 lsls r7, r0, 3 ldr r1, _080CE8C4 @ =gEvolutionTable adds r1, r7 mov r8, r1 ldrh r0, [r1] cmp r0, 0xD beq _080CE778 b _080CE8B2 _080CE778: ldr r6, _080CE8C8 @ =gPlayerPartyCount ldrb r0, [r6] cmp r0, 0x5 bls _080CE782 b _080CE8B2 _080CE782: movs r5, 0x64 muls r0, r5 ldr r4, _080CE8CC @ =gPlayerParty adds r0, r4 mov r9, r0 ldr r1, [sp, 0x4] movs r2, 0x64 bl CopyMon ldrb r0, [r6] muls r0, r5 adds r0, r4 ldr r1, _080CE8C4 @ =gEvolutionTable adds r2, r1, r7 adds r2, 0xC movs r1, 0xB bl SetMonData ldrb r0, [r6] muls r0, r5 adds r0, r4 mov r1, r8 ldrh r2, [r1, 0xC] movs r1, 0xB muls r2, r1 ldr r1, _080CE8D0 @ =gSpeciesNames adds r2, r1 movs r1, 0x2 bl SetMonData ldrb r0, [r6] muls r0, r5 adds r0, r4 movs r1, 0xC mov r2, sp bl SetMonData ldrb r0, [r6] muls r0, r5 adds r0, r4 movs r1, 0x8 mov r2, sp bl SetMonData ldrb r0, [r6] muls r0, r5 adds r0, r4 movs r1, 0xA mov r2, sp bl SetMonData movs r4, 0x32 ldr r0, [sp, 0x8] mov r8, r0 adds r5, r6, 0 _080CE7F0: ldrb r1, [r5] movs r0, 0x64 muls r0, r1 ldr r1, _080CE8CC @ =gPlayerParty adds r0, r1 adds r1, r4, 0 mov r2, sp bl SetMonData adds r4, 0x1 cmp r4, 0x36 ble _080CE7F0 movs r4, 0x43 ldr r7, _080CE8C8 @ =gPlayerPartyCount _080CE80C: ldrb r0, [r7] movs r6, 0x64 muls r0, r6 ldr r5, _080CE8CC @ =gPlayerParty adds r0, r5 adds r1, r4, 0 mov r2, sp bl SetMonData adds r4, 0x1 cmp r4, 0x4F ble _080CE80C ldr r4, _080CE8C8 @ =gPlayerPartyCount ldrb r0, [r4] muls r0, r6 adds r0, r5 movs r1, 0x37 mov r2, sp bl SetMonData movs r0, 0xFF str r0, [sp] ldrb r0, [r4] muls r0, r6 adds r0, r5 movs r1, 0x40 mov r2, sp bl SetMonData ldrb r0, [r4] muls r0, r6 adds r0, r5 bl CalculateMonStats bl CalculatePlayerPartyCount ldr r0, _080CE8C4 @ =gEvolutionTable mov r4, r8 add r4, r10 lsls r4, 3 adds r4, r0 ldrh r0, [r4, 0xC] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x2 bl GetSetPokedexFlag ldrh r0, [r4, 0xC] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 bl GetSetPokedexFlag mov r0, r9 movs r1, 0xB bl GetMonData ldr r1, _080CE8D4 @ =0x0000012f cmp r0, r1 bne _080CE8B2 mov r0, r9 movs r1, 0x3 bl GetMonData cmp r0, 0x1 bne _080CE8B2 ldr r0, [sp, 0x4] movs r1, 0xB bl GetMonData movs r1, 0x97 lsls r1, 1 cmp r0, r1 bne _080CE8B2 ldr r2, _080CE8D8 @ =gUnknown_83F8440 mov r0, r9 movs r1, 0x2 bl SetMonData _080CE8B2: add sp, 0xC pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080CE8C4: .4byte gEvolutionTable _080CE8C8: .4byte gPlayerPartyCount _080CE8CC: .4byte gPlayerParty _080CE8D0: .4byte gSpeciesNames _080CE8D4: .4byte 0x0000012f _080CE8D8: .4byte gUnknown_83F8440 thumb_func_end CreateShedinja thumb_func_start sub_80CE8DC sub_80CE8DC: @ 80CE8DC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x18 lsls r0, 24 lsrs r7, r0, 24 ldr r4, _080CE93C @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r5, r0, r4 movs r0, 0x1C ldrsh r1, [r5, r0] movs r0, 0x64 muls r1, r0 ldr r0, _080CE940 @ =gPlayerParty adds r1, r0 mov r9, r1 bl sub_806E25C mov r10, r4 cmp r0, 0 bne _080CE948 movs r1, 0x8 ldrsh r0, [r5, r1] cmp r0, 0x8 bne _080CE948 movs r2, 0xC ldrsh r0, [r5, r2] cmp r0, 0x97 ble _080CE948 movs r0, 0x11 strh r0, [r5, 0x8] movs r2, 0x1 strh r2, [r5, 0x1A] ldr r0, _080CE944 @ =gUnknown_2023E82 ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 add r0, r10 strh r2, [r0, 0x18] bl sub_80D04A8 bl _080CF528 .align 2, 0 _080CE93C: .4byte gTasks _080CE940: .4byte gPlayerParty _080CE944: .4byte gUnknown_2023E82 _080CE948: ldr r0, _080CE9A0 @ =gMain ldrh r1, [r0, 0x2C] ldr r3, _080CE9A4 @ =gTasks mov r10, r3 lsls r2, r7, 2 mov r8, r2 adds r5, r0, 0 cmp r1, 0x2 bne _080CE9AC adds r0, r2, r7 lsls r0, 3 adds r2, r0, r3 movs r3, 0x8 ldrsh r0, [r2, r3] cmp r0, 0x8 bne _080CE9AC ldr r4, _080CE9A8 @ =gUnknown_2023E82 ldrb r0, [r4, 0x2] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 add r1, r10 ldrb r0, [r1, 0x4] cmp r0, 0 beq _080CE9AC ldrh r1, [r2, 0xE] movs r3, 0x1 adds r0, r3, 0 ands r0, r1 cmp r0, 0 beq _080CE9AC movs r0, 0x11 strh r0, [r2, 0x8] ldrb r1, [r4, 0x2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 add r0, r10 strh r3, [r0, 0x18] bl sub_80D04A8 bl _080CF528 .align 2, 0 _080CE9A0: .4byte gMain _080CE9A4: .4byte gTasks _080CE9A8: .4byte gUnknown_2023E82 _080CE9AC: mov r1, r8 adds r0, r1, r7 lsls r0, 3 add r0, r10 movs r2, 0x8 ldrsh r0, [r0, r2] cmp r0, 0x16 bls _080CE9C0 bl _080CF528 _080CE9C0: lsls r0, 2 ldr r1, _080CE9CC @ =_080CE9D0 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080CE9CC: .4byte _080CE9D0 .align 2, 0 _080CE9D0: .4byte _080CEA2C .4byte _080CEA90 .4byte _080CEAD0 .4byte _080CEAF0 .4byte _080CEB18 .4byte _080CEB58 .4byte _080CEB90 .4byte _080CEBD0 .4byte _080CEC08 .4byte _080CEC4C .4byte _080CEC68 .4byte _080CEC94 .4byte _080CECC0 .4byte _080CED0C .4byte _080CED2C .4byte _080CEDB8 .4byte _080CEE60 .4byte _080CEED0 .4byte _080CEF10 .4byte _080CEF3C .4byte _080CEF9C .4byte _080CEFF8 .4byte _080CF034 _080CEA2C: movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade ldr r2, _080CEA84 @ =gSprites ldr r0, _080CEA88 @ =gUnknown_2039A20 ldr r0, [r0] ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 strb r1, [r0] ldr r0, _080CEA8C @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] movs r0, 0 bl ShowBg movs r0, 0x1 bl ShowBg movs r0, 0x2 bl ShowBg movs r0, 0x3 bl ShowBg bl _080CF528 .align 2, 0 _080CEA84: .4byte gSprites _080CEA88: .4byte gUnknown_2039A20 _080CEA8C: .4byte gTasks _080CEA90: ldr r0, _080CEAC0 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080CEAA0 bl _080CF528 _080CEAA0: ldr r4, _080CEAC4 @ =gStringVar4 ldr r1, _080CEAC8 @ =gUnknown_83FE672 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0 bl sub_80D87BC ldr r0, _080CEACC @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 b _080CEFDE .align 2, 0 _080CEAC0: .4byte gPaletteFade _080CEAC4: .4byte gStringVar4 _080CEAC8: .4byte gUnknown_83FE672 _080CEACC: .4byte gTasks _080CEAD0: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CEAE0 bl _080CF528 _080CEAE0: ldr r0, _080CEAEC @ =gTasks mov r3, r8 adds r4, r3, r7 lsls r4, 3 adds r4, r0 b _080CEF26 .align 2, 0 _080CEAEC: .4byte gTasks _080CEAF0: bl IsCryFinished lsls r0, 24 cmp r0, 0 bne _080CEAFE bl _080CF528 _080CEAFE: ldr r0, _080CEB10 @ =0x00000107 bl PlaySE ldr r0, _080CEB14 @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 b _080CEFDE .align 2, 0 _080CEB10: .4byte 0x00000107 _080CEB14: .4byte gTasks _080CEB18: bl IsSEPlaying lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 beq _080CEB28 bl _080CF528 _080CEB28: movs r0, 0x84 lsls r0, 1 bl PlayNewMapMusic ldr r0, _080CEB54 @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] str r4, [sp] movs r0, 0x1C movs r1, 0x4 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade bl _080CF528 .align 2, 0 _080CEB54: .4byte gTasks _080CEB58: ldr r0, _080CEB84 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080CEB68 bl _080CF528 _080CEB68: movs r0, 0 bl InitMovingBackgroundTask movs r0, 0x11 bl LaunchTask_PreEvoSparklesSet1 ldr r1, _080CEB88 @ =gUnknown_2023E82 strb r0, [r1, 0x2] ldr r0, _080CEB8C @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 b _080CEFDE .align 2, 0 _080CEB84: .4byte gPaletteFade _080CEB88: .4byte gUnknown_2023E82 _080CEB8C: .4byte gTasks _080CEB90: ldr r4, _080CEBC8 @ =gUnknown_2023E82 ldrb r0, [r4, 0x2] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 add r1, r10 ldrb r0, [r1, 0x4] cmp r0, 0 beq _080CEBA6 bl _080CF528 _080CEBA6: mov r3, r8 adds r1, r3, r7 lsls r1, 3 add r1, r10 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] ldr r0, _080CEBCC @ =gUnknown_2039A20 ldr r1, [r0] movs r0, 0x1 strb r0, [r1, 0x3] bl sub_80F5EC0 strb r0, [r4, 0x2] bl _080CF528 .align 2, 0 _080CEBC8: .4byte gUnknown_2023E82 _080CEBCC: .4byte gUnknown_2039A20 _080CEBD0: ldr r4, _080CEC00 @ =gUnknown_2023E82 ldrb r0, [r4, 0x2] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 add r1, r10 ldrb r0, [r1, 0x4] cmp r0, 0 beq _080CEBE6 bl _080CF528 _080CEBE6: ldr r0, _080CEC04 @ =gUnknown_2039A20 ldr r1, [r0] ldrb r0, [r1] ldrb r1, [r1, 0x1] bl sub_80F62B4 strb r0, [r4, 0x2] mov r0, r8 adds r1, r0, r7 lsls r1, 3 add r1, r10 b _080CEFDE .align 2, 0 _080CEC00: .4byte gUnknown_2023E82 _080CEC04: .4byte gUnknown_2039A20 _080CEC08: ldr r2, _080CEC44 @ =gUnknown_2039A20 ldr r1, [r2] ldrb r0, [r1, 0x3] subs r0, 0x1 strb r0, [r1, 0x3] lsls r0, 24 cmp r0, 0 beq _080CEC1C bl _080CF528 _080CEC1C: ldr r1, [r2] movs r0, 0x3 strb r0, [r1, 0x3] ldr r0, _080CEC48 @ =gUnknown_2023E82 ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 add r0, r10 ldrb r0, [r0, 0x4] cmp r0, 0 beq _080CEC38 bl _080CF528 _080CEC38: mov r2, r8 adds r1, r2, r7 lsls r1, 3 add r1, r10 b _080CEFDE .align 2, 0 _080CEC44: .4byte gUnknown_2039A20 _080CEC48: .4byte gUnknown_2023E82 _080CEC4C: bl sub_80F5F74 ldr r1, _080CEC60 @ =gUnknown_2023E82 strb r0, [r1, 0x2] ldr r0, _080CEC64 @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r1, r0 b _080CEFDE .align 2, 0 _080CEC60: .4byte gUnknown_2023E82 _080CEC64: .4byte gTasks _080CEC68: ldr r6, _080CEC90 @ =gUnknown_2023E82 ldrb r0, [r6, 0x2] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 add r1, r10 ldrb r0, [r1, 0x4] cmp r0, 0 beq _080CEC7E bl _080CF528 _080CEC7E: mov r0, r8 adds r4, r0, r7 lsls r4, 3 add r4, r10 ldrh r0, [r4, 0xC] bl LaunchTask_PostEvoSparklesSet2AndFlash strb r0, [r6, 0x2] b _080CEF2E .align 2, 0 _080CEC90: .4byte gUnknown_2023E82 _080CEC94: ldr r0, _080CECBC @ =gUnknown_2023E82 ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 add r0, r10 ldrb r0, [r0, 0x4] cmp r0, 0 beq _080CECAA bl _080CF528 _080CECAA: movs r0, 0x1B bl PlaySE mov r2, r8 adds r1, r2, r7 lsls r1, 3 add r1, r10 b _080CEFDE .align 2, 0 _080CECBC: .4byte gUnknown_2023E82 _080CECC0: bl IsSEPlaying lsls r0, 24 cmp r0, 0 bne _080CECCE bl _080CF528 _080CECCE: bl m4aMPlayAllStop ldr r0, _080CED00 @ =gPlttBufferUnfaded + 0x40 ldr r1, _080CED04 @ =gUnknown_2039A20 ldr r1, [r1] adds r1, 0x4 movs r2, 0x60 bl memcpy bl sub_80D04E8 movs r0, 0 str r0, [sp] movs r0, 0x1C movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade ldr r0, _080CED08 @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r1, r0 b _080CEFDE .align 2, 0 _080CED00: .4byte gPlttBufferUnfaded + 0x40 _080CED04: .4byte gUnknown_2039A20 _080CED08: .4byte gTasks _080CED0C: ldr r0, _080CED28 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080CED1C bl _080CF528 _080CED1C: mov r0, r8 adds r4, r0, r7 lsls r4, 3 add r4, r10 ldrh r0, [r4, 0xC] b _080CEF28 .align 2, 0 _080CED28: .4byte gPaletteFade _080CED2C: bl IsCryFinished lsls r0, 24 cmp r0, 0 bne _080CED3A bl _080CF528 _080CED3A: ldr r4, _080CEDA8 @ =gStringVar4 ldr r1, _080CEDAC @ =gUnknown_83FE688 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0 bl sub_80D87BC ldr r0, _080CEDB0 @ =0x00000103 bl PlayBGM ldr r2, _080CEDB4 @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r4, r1, r2 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] adds r2, r1 adds r2, 0xC mov r0, r9 movs r1, 0xB bl SetMonData mov r0, r9 bl CalculateMonStats ldrh r1, [r4, 0xA] ldrh r2, [r4, 0xC] mov r0, r9 bl EvolutionRenameMon ldrh r0, [r4, 0xC] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x2 bl GetSetPokedexFlag ldrh r0, [r4, 0xC] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 bl GetSetPokedexFlag movs r0, 0xE bl IncrementGameStat b _080CF528 .align 2, 0 _080CEDA8: .4byte gStringVar4 _080CEDAC: .4byte gUnknown_83FE688 _080CEDB0: .4byte 0x00000103 _080CEDB4: .4byte gTasks _080CEDB8: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CEDC6 b _080CF528 _080CEDC6: bl sub_812B484 ldr r1, _080CEE20 @ =gTasks mov r2, r8 adds r0, r2, r7 lsls r0, 3 adds r5, r0, r1 ldrb r1, [r5, 0x10] mov r0, r9 bl MonTryLearningNewMove lsls r0, 16 lsrs r6, r0, 16 cmp r6, 0 beq _080CEE40 movs r3, 0x1A ldrsh r4, [r5, r3] cmp r4, 0 bne _080CEE40 bl StopMapMusic bl sub_8055DC4 ldrh r1, [r5, 0xE] movs r0, 0x80 orrs r0, r1 strh r0, [r5, 0xE] strh r4, [r5, 0x10] strh r4, [r5, 0x14] mov r0, r9 movs r1, 0x2 add r2, sp, 0x4 bl GetMonData ldr r0, _080CEE24 @ =gBattleTextBuff1 add r1, sp, 0x4 bl StringCopy10 ldr r0, _080CEE28 @ =0x0000ffff cmp r6, r0 bne _080CEE2C movs r0, 0x16 strh r0, [r5, 0x8] b _080CF528 .align 2, 0 _080CEE20: .4byte gTasks _080CEE24: .4byte gBattleTextBuff1 _080CEE28: .4byte 0x0000ffff _080CEE2C: ldr r0, _080CEE3C @ =0x0000fffe cmp r6, r0 bne _080CEE34 b _080CF528 _080CEE34: movs r0, 0x14 strh r0, [r5, 0x8] b _080CF528 .align 2, 0 _080CEE3C: .4byte 0x0000fffe _080CEE40: movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r0, _080CEE5C @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 b _080CEFDE .align 2, 0 _080CEE5C: .4byte gTasks _080CEE60: ldr r0, _080CEEC4 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r2, 0x80 adds r0, r2, 0 ands r0, r1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0 beq _080CEE74 b _080CF528 _080CEE74: mov r3, r8 adds r0, r3, r7 lsls r0, 3 mov r1, r10 adds r4, r0, r1 ldrh r1, [r4, 0xE] adds r0, r2, 0 ands r0, r1 cmp r0, 0 bne _080CEE90 bl StopMapMusic bl sub_8055DC4 _080CEE90: movs r2, 0x1A ldrsh r0, [r4, r2] cmp r0, 0 bne _080CEEA0 ldrh r0, [r4, 0xA] mov r1, r9 bl CreateShedinja _080CEEA0: adds r0, r7, 0 bl DestroyTask bl FreeMonSpritesGfx ldr r4, _080CEEC8 @ =gUnknown_2039A20 ldr r0, [r4] bl Free str r6, [r4] bl FreeAllWindowBuffers ldr r0, _080CEECC @ =gUnknown_300537C ldr r0, [r0] bl SetMainCallback2 b _080CF528 .align 2, 0 _080CEEC4: .4byte gPaletteFade _080CEEC8: .4byte gUnknown_2039A20 _080CEECC: .4byte gUnknown_300537C _080CEED0: ldr r0, _080CEF04 @ =gUnknown_2023E82 ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 add r0, r10 ldrb r0, [r0, 0x4] cmp r0, 0 beq _080CEEE4 b _080CF528 _080CEEE4: bl m4aMPlayAllStop ldr r0, _080CEF08 @ =0x0006001c ldr r1, _080CEF0C @ =0x00007fff str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade mov r3, r8 adds r1, r3, r7 lsls r1, 3 add r1, r10 b _080CEFDE .align 2, 0 _080CEF04: .4byte gUnknown_2023E82 _080CEF08: .4byte 0x0006001c _080CEF0C: .4byte 0x00007fff _080CEF10: ldr r0, _080CEF38 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080CEF1E b _080CF528 _080CEF1E: mov r0, r8 adds r4, r0, r7 lsls r4, 3 add r4, r10 _080CEF26: ldrh r0, [r4, 0xA] _080CEF28: movs r1, 0 bl PlayCry1 _080CEF2E: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080CF528 .align 2, 0 _080CEF38: .4byte gPaletteFade _080CEF3C: bl IsCryFinished lsls r0, 24 cmp r0, 0 bne _080CEF48 b _080CF528 _080CEF48: ldr r0, _080CEF64 @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 movs r3, 0x1A ldrsh r0, [r1, r3] cmp r0, 0 beq _080CEF70 ldr r0, _080CEF68 @ =gStringVar4 ldr r1, _080CEF6C @ =gUnknown_83FE6D0 bl StringExpandPlaceholders b _080CEF78 .align 2, 0 _080CEF64: .4byte gTasks _080CEF68: .4byte gStringVar4 _080CEF6C: .4byte gUnknown_83FE6D0 _080CEF70: ldr r0, _080CEF90 @ =gStringVar4 ldr r1, _080CEF94 @ =gUnknown_83FE6B5 bl StringExpandPlaceholders _080CEF78: ldr r0, _080CEF90 @ =gStringVar4 movs r1, 0 bl sub_80D87BC ldr r1, _080CEF98 @ =gTasks mov r2, r8 adds r0, r2, r7 lsls r0, 3 adds r0, r1 movs r1, 0x1 strh r1, [r0, 0x1A] b _080CF4F2 .align 2, 0 _080CEF90: .4byte gStringVar4 _080CEF94: .4byte gUnknown_83FE6B5 _080CEF98: .4byte gTasks _080CEF9C: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CEFAA b _080CF528 _080CEFAA: bl IsSEPlaying lsls r0, 24 cmp r0, 0 beq _080CEFB6 b _080CF528 _080CEFB6: bl BufferMoveToLearnIntoBattleTextBuff2 ldr r0, _080CEFE8 @ =0x00000101 bl PlayFanfare ldr r0, _080CEFEC @ =gUnknown_83FDF3C ldr r0, [r0, 0xC] bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CEFF0 @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC ldr r0, _080CEFF4 @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r1, r0 movs r0, 0x40 strh r0, [r1, 0x10] _080CEFDE: ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _080CF528 .align 2, 0 _080CEFE8: .4byte 0x00000101 _080CEFEC: .4byte gUnknown_83FDF3C _080CEFF0: .4byte gDisplayedStringBattle _080CEFF4: .4byte gTasks _080CEFF8: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CF006 b _080CF528 _080CF006: bl IsSEPlaying lsls r0, 24 cmp r0, 0 beq _080CF012 b _080CF528 _080CF012: ldr r0, _080CF030 @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x10] subs r0, 0x1 strh r0, [r1, 0x10] lsls r0, 16 cmp r0, 0 beq _080CF02A b _080CF528 _080CF02A: movs r0, 0xF strh r0, [r1, 0x8] b _080CF528 .align 2, 0 _080CF030: .4byte gTasks _080CF034: mov r3, r8 adds r0, r3, r7 lsls r0, 3 add r0, r10 movs r1, 0x14 ldrsh r0, [r0, r1] cmp r0, 0xC bls _080CF046 b _080CF528 _080CF046: lsls r0, 2 ldr r1, _080CF050 @ =_080CF054 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080CF050: .4byte _080CF054 .align 2, 0 _080CF054: .4byte _080CF088 .4byte _080CF0D4 .4byte _080CF11C .4byte _080CF15A .4byte _080CF1BC .4byte _080CF2B4 .4byte _080CF30C .4byte _080CF3E0 .4byte _080CF414 .4byte _080CF45C .4byte _080CF4A4 .4byte _080CF4D8 .4byte _080CF504 _080CF088: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CF096 b _080CF528 _080CF096: bl IsSEPlaying lsls r0, 24 cmp r0, 0 beq _080CF0A2 b _080CF528 _080CF0A2: bl BufferMoveToLearnIntoBattleTextBuff2 ldr r0, _080CF0C8 @ =gUnknown_83FDF3C ldr r0, [r0, 0x10] bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF0CC @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC ldr r0, _080CF0D0 @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x14] adds r0, 0x1 b _080CF526 .align 2, 0 _080CF0C8: .4byte gUnknown_83FDF3C _080CF0CC: .4byte gDisplayedStringBattle _080CF0D0: .4byte gTasks _080CF0D4: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CF0E2 b _080CF528 _080CF0E2: bl IsSEPlaying lsls r0, 24 cmp r0, 0 beq _080CF0EE b _080CF528 _080CF0EE: ldr r0, _080CF110 @ =gUnknown_83FDF3C ldr r0, [r0, 0x14] bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF114 @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC ldr r0, _080CF118 @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x14] adds r0, 0x1 b _080CF526 .align 2, 0 _080CF110: .4byte gUnknown_83FDF3C _080CF114: .4byte gDisplayedStringBattle _080CF118: .4byte gTasks _080CF11C: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 bne _080CF15A bl IsSEPlaying lsls r0, 24 cmp r0, 0 bne _080CF15A ldr r0, _080CF1A8 @ =gUnknown_83FDF3C ldr r0, [r0, 0x18] bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF1AC @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC ldr r0, _080CF1B0 @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 movs r0, 0x5 strh r0, [r1, 0x16] movs r0, 0xA strh r0, [r1, 0x18] ldrh r0, [r1, 0x14] adds r0, 0x1 strh r0, [r1, 0x14] _080CF15A: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CF168 b _080CF528 _080CF168: bl IsSEPlaying lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _080CF176 b _080CF528 _080CF176: str r0, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C ldr r0, _080CF1B4 @ =gUnknown_83FE791 movs r1, 0xE bl sub_80D87BC ldr r0, _080CF1B0 @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x14] adds r0, 0x1 movs r2, 0 strh r0, [r1, 0x14] ldr r0, _080CF1B8 @ =gUnknown_2023E82 strb r2, [r0, 0x1] bl sub_802DCB8 b _080CF528 .align 2, 0 _080CF1A8: .4byte gUnknown_83FDF3C _080CF1AC: .4byte gDisplayedStringBattle _080CF1B0: .4byte gTasks _080CF1B4: .4byte gUnknown_83FE791 _080CF1B8: .4byte gUnknown_2023E82 _080CF1BC: ldr r0, _080CF244 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _080CF1E2 ldr r4, _080CF248 @ =gUnknown_2023E82 ldrb r0, [r4, 0x1] cmp r0, 0 beq _080CF1E2 movs r0, 0x5 bl PlaySE bl sub_802DCF8 movs r0, 0 strb r0, [r4, 0x1] bl sub_802DCB8 _080CF1E2: ldr r0, _080CF244 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080CF208 ldr r4, _080CF248 @ =gUnknown_2023E82 ldrb r0, [r4, 0x1] cmp r0, 0 bne _080CF208 movs r0, 0x5 bl PlaySE bl sub_802DCF8 movs r0, 0x1 strb r0, [r4, 0x1] bl sub_802DCB8 _080CF208: ldr r0, _080CF244 @ =gMain ldrh r1, [r0, 0x2E] movs r2, 0x1 adds r0, r2, 0 ands r0, r1 cmp r0, 0 beq _080CF276 str r2, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C movs r0, 0x5 bl PlaySE ldr r0, _080CF248 @ =gUnknown_2023E82 ldrb r2, [r0, 0x1] cmp r2, 0 beq _080CF250 ldr r0, _080CF24C @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x18] strh r0, [r1, 0x14] b _080CF276 .align 2, 0 _080CF244: .4byte gMain _080CF248: .4byte gUnknown_2023E82 _080CF24C: .4byte gTasks _080CF250: ldr r0, _080CF2AC @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x16] strh r0, [r1, 0x14] lsls r0, 16 asrs r0, 16 cmp r0, 0x5 bne _080CF276 movs r0, 0x1 negs r0, r0 str r2, [sp] movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade _080CF276: ldr r0, _080CF2B0 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _080CF284 b _080CF528 _080CF284: movs r0, 0x1 str r0, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C movs r0, 0x5 bl PlaySE ldr r1, _080CF2AC @ =gTasks mov r2, r8 adds r0, r2, r7 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x18] strh r1, [r0, 0x14] b _080CF528 .align 2, 0 _080CF2AC: .4byte gTasks _080CF2B0: .4byte gMain _080CF2B4: ldr r0, _080CF2F4 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080CF2C2 b _080CF528 _080CF2C2: bl FreeAllWindowBuffers ldr r0, _080CF2F8 @ =gPlayerParty ldr r1, _080CF2FC @ =gTasks mov r3, r8 adds r5, r3, r7 lsls r5, 3 adds r5, r1 ldrb r1, [r5, 0x1C] ldr r2, _080CF300 @ =gPlayerPartyCount ldrb r2, [r2] subs r2, 0x1 lsls r2, 24 lsrs r2, 24 ldr r3, _080CF304 @ =CB2_EvolutionSceneLoadGraphics ldr r4, _080CF308 @ =gMoveToLearn ldrh r4, [r4] str r4, [sp] bl sub_8134738 ldrh r0, [r5, 0x14] adds r0, 0x1 strh r0, [r5, 0x14] b _080CF528 .align 2, 0 _080CF2F4: .4byte gPaletteFade _080CF2F8: .4byte gPlayerParty _080CF2FC: .4byte gTasks _080CF300: .4byte gPlayerPartyCount _080CF304: .4byte CB2_EvolutionSceneLoadGraphics _080CF308: .4byte gMoveToLearn _080CF30C: ldr r0, _080CF340 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080CF31A b _080CF528 _080CF31A: ldr r1, [r5, 0x4] ldr r0, _080CF344 @ =sub_80CE710 cmp r1, r0 beq _080CF324 b _080CF528 _080CF324: bl sub_8138B2C lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x4 bne _080CF34C ldr r0, _080CF348 @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 movs r0, 0xA b _080CF526 .align 2, 0 _080CF340: .4byte gPaletteFade _080CF344: .4byte sub_80CE710 _080CF348: .4byte gTasks _080CF34C: adds r1, r6, 0 adds r1, 0xD mov r0, r9 bl GetMonData lsls r0, 16 lsrs r4, r0, 16 adds r0, r4, 0 bl IsHMMove2 cmp r0, 0 beq _080CF398 ldr r0, _080CF388 @ =gUnknown_83FDF3C ldr r3, _080CF38C @ =0x000004cc adds r0, r3 ldr r0, [r0] bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF390 @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC ldr r1, _080CF394 @ =gTasks mov r2, r8 adds r0, r2, r7 lsls r0, 3 adds r0, r1 movs r1, 0xC strh r1, [r0, 0x14] b _080CF528 .align 2, 0 _080CF388: .4byte gUnknown_83FDF3C _080CF38C: .4byte 0x000004cc _080CF390: .4byte gDisplayedStringBattle _080CF394: .4byte gTasks _080CF398: ldr r1, _080CF3D4 @ =gBattleTextBuff2 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] strb r4, [r1, 0x2] lsrs r0, r4, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] lsls r4, r6, 24 lsrs r4, 24 mov r0, r9 adds r1, r4, 0 bl RemoveMonPPBonus ldr r0, _080CF3D8 @ =gMoveToLearn ldrh r1, [r0] mov r0, r9 adds r2, r4, 0 bl SetMonMoveSlot ldr r0, _080CF3DC @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x14] adds r0, 0x1 b _080CF526 .align 2, 0 _080CF3D4: .4byte gBattleTextBuff2 _080CF3D8: .4byte gMoveToLearn _080CF3DC: .4byte gTasks _080CF3E0: ldr r0, _080CF408 @ =gUnknown_83FDF3C movs r1, 0xCF lsls r1, 2 adds r0, r1 ldr r0, [r0] bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF40C @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC ldr r0, _080CF410 @ =gTasks mov r2, r8 adds r1, r2, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x14] adds r0, 0x1 b _080CF526 .align 2, 0 _080CF408: .4byte gUnknown_83FDF3C _080CF40C: .4byte gDisplayedStringBattle _080CF410: .4byte gTasks _080CF414: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CF422 b _080CF528 _080CF422: bl IsSEPlaying lsls r0, 24 cmp r0, 0 beq _080CF42E b _080CF528 _080CF42E: ldr r0, _080CF450 @ =gUnknown_83FDF3C ldr r0, [r0, 0x1C] bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF454 @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC ldr r0, _080CF458 @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x14] adds r0, 0x1 b _080CF526 .align 2, 0 _080CF450: .4byte gUnknown_83FDF3C _080CF454: .4byte gDisplayedStringBattle _080CF458: .4byte gTasks _080CF45C: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 bne _080CF528 bl IsSEPlaying lsls r0, 24 cmp r0, 0 bne _080CF528 ldr r0, _080CF498 @ =gUnknown_83FDF3C movs r1, 0xD0 lsls r1, 2 adds r0, r1 ldr r0, [r0] bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF49C @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC ldr r1, _080CF4A0 @ =gTasks mov r2, r8 adds r0, r2, r7 lsls r0, 3 adds r0, r1 movs r1, 0x14 strh r1, [r0, 0x8] b _080CF528 .align 2, 0 _080CF498: .4byte gUnknown_83FDF3C _080CF49C: .4byte gDisplayedStringBattle _080CF4A0: .4byte gTasks _080CF4A4: ldr r0, _080CF4CC @ =gUnknown_83FDF3C ldr r0, [r0, 0x20] bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF4D0 @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC ldr r1, _080CF4D4 @ =gTasks mov r3, r8 adds r0, r3, r7 lsls r0, 3 adds r0, r1 movs r2, 0 movs r1, 0xB strh r1, [r0, 0x16] strh r2, [r0, 0x18] movs r1, 0x3 strh r1, [r0, 0x14] b _080CF528 .align 2, 0 _080CF4CC: .4byte gUnknown_83FDF3C _080CF4D0: .4byte gDisplayedStringBattle _080CF4D4: .4byte gTasks _080CF4D8: ldr r0, _080CF4F8 @ =gUnknown_83FDF3C ldr r0, [r0, 0x24] bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF4FC @ =gDisplayedStringBattle movs r1, 0 bl sub_80D87BC ldr r1, _080CF500 @ =gTasks mov r2, r8 adds r0, r2, r7 lsls r0, 3 adds r0, r1 _080CF4F2: movs r1, 0xF strh r1, [r0, 0x8] b _080CF528 .align 2, 0 _080CF4F8: .4byte gUnknown_83FDF3C _080CF4FC: .4byte gDisplayedStringBattle _080CF500: .4byte gTasks _080CF504: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 bne _080CF528 bl IsSEPlaying lsls r0, 24 cmp r0, 0 bne _080CF528 ldr r0, _080CF538 @ =gTasks mov r3, r8 adds r1, r3, r7 lsls r1, 3 adds r1, r0 movs r0, 0x5 _080CF526: strh r0, [r1, 0x14] _080CF528: add sp, 0x18 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080CF538: .4byte gTasks thumb_func_end sub_80CE8DC thumb_func_start sub_80CF53C sub_80CF53C: @ 80CF53C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x20 lsls r0, 24 lsrs r6, r0, 24 ldr r5, _080CF5BC @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r4, r0, r5 movs r0, 0x1C ldrsh r1, [r4, r0] movs r0, 0x64 muls r1, r0 ldr r0, _080CF5C0 @ =gPlayerParty adds r1, r0 mov r8, r1 bl sub_806E25C cmp r0, 0 bne _080CF598 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x7 bne _080CF598 movs r3, 0xC ldrsh r0, [r4, r3] cmp r0, 0x97 ble _080CF598 movs r0, 0xF strh r0, [r4, 0x8] movs r2, 0x1 strh r2, [r4, 0x1A] ldr r0, _080CF5C4 @ =gUnknown_2023E82 ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r1, r0, r5 ldrb r0, [r1, 0x4] cmp r0, 0 beq _080CF598 strh r2, [r1, 0x18] bl sub_80D04A8 _080CF598: ldr r0, _080CF5BC @ =gTasks lsls r2, r6, 2 adds r1, r2, r6 lsls r1, 3 adds r1, r0 movs r3, 0x8 ldrsh r1, [r1, r3] adds r5, r0, 0 adds r7, r2, 0 cmp r1, 0x14 bls _080CF5B2 bl _080D003A _080CF5B2: lsls r0, r1, 2 ldr r1, _080CF5C8 @ =_080CF5CC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080CF5BC: .4byte gTasks _080CF5C0: .4byte gPlayerParty _080CF5C4: .4byte gUnknown_2023E82 _080CF5C8: .4byte _080CF5CC .align 2, 0 _080CF5CC: .4byte _080CF620 .4byte _080CF64C .4byte _080CF66C .4byte _080CF69C .4byte _080CF6D0 .4byte _080CF73C .4byte _080CF778 .4byte _080CF7AC .4byte _080CF7EC .4byte _080CF808 .4byte _080CF838 .4byte _080CF860 .4byte _080CF89C .4byte _080CF924 .4byte _080CF9D0 .4byte _080CFA14 .4byte _080CFA74 .4byte _080CFA9C .4byte _080CFAD8 .4byte _080CFB34 .4byte _080CFB70 _080CF620: ldr r4, _080CF640 @ =gStringVar4 ldr r1, _080CF644 @ =gUnknown_83FE672 adds r0, r4, 0 bl StringExpandPlaceholders movs r0, 0 adds r1, r4, 0 movs r2, 0x1 bl sub_8054508 ldr r0, _080CF648 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 b _080CFB1A .align 2, 0 _080CF640: .4byte gStringVar4 _080CF644: .4byte gUnknown_83FE672 _080CF648: .4byte gTasks _080CF64C: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CF65C bl _080D003A _080CF65C: ldr r0, _080CF668 @ =gTasks adds r4, r7, r6 lsls r4, 3 adds r4, r0 b _080CFA88 .align 2, 0 _080CF668: .4byte gTasks _080CF66C: bl IsCryFinished lsls r0, 24 cmp r0, 0 bne _080CF67A bl _080D003A _080CF67A: movs r0, 0x84 lsls r0, 1 bl m4aSongNumStop ldr r0, _080CF694 @ =0x00000107 bl PlaySE ldr r0, _080CF698 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 b _080CFB1A .align 2, 0 _080CF694: .4byte 0x00000107 _080CF698: .4byte gTasks _080CF69C: bl IsSEPlaying lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 beq _080CF6AC bl _080D003A _080CF6AC: movs r0, 0x84 lsls r0, 1 bl PlayBGM ldr r0, _080CF6CC @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] str r4, [sp] movs r0, 0x1C movs r1, 0x4 b _080CFD56 .align 2, 0 _080CF6CC: .4byte gTasks _080CF6D0: ldr r0, _080CF724 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080CF6E0 bl _080D003A _080CF6E0: movs r0, 0x1 bl InitMovingBackgroundTask ldr r2, _080CF728 @ =gSprites ldr r0, _080CF72C @ =gUnknown_2039A20 ldr r0, [r0] ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x5] lsrs r0, 4 adds r5, r0, 0 adds r5, 0x10 adds r0, r5, 0 bl LaunchTask_PreEvoSparklesSet1 ldr r1, _080CF730 @ =gUnknown_2023E82 strb r0, [r1, 0x2] ldr r0, _080CF734 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] ldr r1, _080CF738 @ =0x00000603 movs r0, 0xE bl SetGpuReg bl _080D003A .align 2, 0 _080CF724: .4byte gPaletteFade _080CF728: .4byte gSprites _080CF72C: .4byte gUnknown_2039A20 _080CF730: .4byte gUnknown_2023E82 _080CF734: .4byte gTasks _080CF738: .4byte 0x00000603 _080CF73C: ldr r4, _080CF770 @ =gUnknown_2023E82 ldrb r0, [r4, 0x2] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r5 ldrb r0, [r1, 0x4] cmp r0, 0 beq _080CF752 bl _080D003A _080CF752: adds r1, r7, r6 lsls r1, 3 adds r1, r5 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] ldr r0, _080CF774 @ =gUnknown_2039A20 ldr r1, [r0] movs r0, 0x1 strb r0, [r1, 0x3] bl sub_80F5EC0 strb r0, [r4, 0x2] bl _080D003A .align 2, 0 _080CF770: .4byte gUnknown_2023E82 _080CF774: .4byte gUnknown_2039A20 _080CF778: ldr r4, _080CF7A4 @ =gUnknown_2023E82 ldrb r0, [r4, 0x2] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r5 ldrb r0, [r1, 0x4] cmp r0, 0 beq _080CF78E bl _080D003A _080CF78E: ldr r0, _080CF7A8 @ =gUnknown_2039A20 ldr r1, [r0] ldrb r0, [r1] ldrb r1, [r1, 0x1] bl sub_80F62B4 strb r0, [r4, 0x2] adds r1, r7, r6 lsls r1, 3 adds r1, r5 b _080CFB1A .align 2, 0 _080CF7A4: .4byte gUnknown_2023E82 _080CF7A8: .4byte gUnknown_2039A20 _080CF7AC: ldr r2, _080CF7E4 @ =gUnknown_2039A20 ldr r1, [r2] ldrb r0, [r1, 0x3] subs r0, 0x1 strb r0, [r1, 0x3] lsls r0, 24 cmp r0, 0 beq _080CF7C0 bl _080D003A _080CF7C0: ldr r1, [r2] movs r0, 0x3 strb r0, [r1, 0x3] ldr r0, _080CF7E8 @ =gUnknown_2023E82 ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 ldrb r0, [r0, 0x4] cmp r0, 0 beq _080CF7DC bl _080D003A _080CF7DC: adds r1, r7, r6 lsls r1, 3 adds r1, r5 b _080CFB1A .align 2, 0 _080CF7E4: .4byte gUnknown_2039A20 _080CF7E8: .4byte gUnknown_2023E82 _080CF7EC: bl sub_80F5F74 ldr r1, _080CF800 @ =gUnknown_2023E82 strb r0, [r1, 0x2] ldr r0, _080CF804 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 b _080CFB1A .align 2, 0 _080CF800: .4byte gUnknown_2023E82 _080CF804: .4byte gTasks _080CF808: ldr r0, _080CF834 @ =gUnknown_2023E82 mov r8, r0 ldrb r0, [r0, 0x2] lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r5 ldrb r0, [r1, 0x4] cmp r0, 0 beq _080CF820 bl _080D003A _080CF820: adds r4, r7, r6 lsls r4, 3 adds r4, r5 ldrh r0, [r4, 0xC] bl sub_80F6190 mov r1, r8 strb r0, [r1, 0x2] b _080CFA90 .align 2, 0 _080CF834: .4byte gUnknown_2023E82 _080CF838: ldr r0, _080CF85C @ =gUnknown_2023E82 ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 ldrb r0, [r0, 0x4] cmp r0, 0 beq _080CF84E bl _080D003A _080CF84E: movs r0, 0x1B bl PlaySE adds r1, r7, r6 lsls r1, 3 adds r1, r5 b _080CFB1A .align 2, 0 _080CF85C: .4byte gUnknown_2023E82 _080CF860: bl IsSEPlaying lsls r0, 24 cmp r0, 0 bne _080CF86E bl _080D003A _080CF86E: ldr r0, _080CF890 @ =gTasks adds r4, r7, r6 lsls r4, 3 adds r4, r0 ldrh r0, [r4, 0xC] movs r1, 0 bl PlayCry1 ldr r0, _080CF894 @ =gPlttBufferUnfaded + 0x40 ldr r1, _080CF898 @ =gUnknown_2039A20 ldr r1, [r1] adds r1, 0x4 movs r2, 0x60 bl memcpy b _080CFA90 .align 2, 0 _080CF890: .4byte gTasks _080CF894: .4byte gPlttBufferUnfaded + 0x40 _080CF898: .4byte gUnknown_2039A20 _080CF89C: bl IsCryFinished lsls r0, 24 cmp r0, 0 bne _080CF8A8 b _080D003A _080CF8A8: ldr r4, _080CF914 @ =gStringVar4 ldr r1, _080CF918 @ =gUnknown_83FE688 adds r0, r4, 0 bl StringExpandPlaceholders movs r0, 0 adds r1, r4, 0 movs r2, 0x1 bl sub_8054508 ldr r0, _080CF91C @ =0x00000103 bl PlayFanfare ldr r2, _080CF920 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r4, r1, r2 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] adds r2, r1 adds r2, 0xC mov r0, r8 movs r1, 0xB bl SetMonData mov r0, r8 bl CalculateMonStats ldrh r1, [r4, 0xA] ldrh r2, [r4, 0xC] mov r0, r8 bl EvolutionRenameMon ldrh r0, [r4, 0xC] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x2 bl GetSetPokedexFlag ldrh r0, [r4, 0xC] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 bl GetSetPokedexFlag movs r0, 0xE bl IncrementGameStat b _080D003A .align 2, 0 _080CF914: .4byte gStringVar4 _080CF918: .4byte gUnknown_83FE688 _080CF91C: .4byte 0x00000103 _080CF920: .4byte gTasks _080CF924: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CF932 b _080D003A _080CF932: bl IsFanfareTaskInactive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _080CF940 b _080D003A _080CF940: ldr r1, _080CF98C @ =gTasks adds r0, r7, r6 lsls r0, 3 adds r4, r0, r1 ldrb r1, [r4, 0x10] mov r0, r8 bl MonTryLearningNewMove lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0 beq _080CF9AC movs r3, 0x1A ldrsh r2, [r4, r3] cmp r2, 0 bne _080CF9AC ldrh r1, [r4, 0xE] movs r0, 0x80 orrs r0, r1 strh r0, [r4, 0xE] strh r2, [r4, 0x10] strh r2, [r4, 0x14] mov r0, r8 movs r1, 0x2 add r2, sp, 0xC bl GetMonData ldr r0, _080CF990 @ =gBattleTextBuff1 add r1, sp, 0xC bl StringCopy10 ldr r0, _080CF994 @ =0x0000ffff cmp r5, r0 bne _080CF998 movs r0, 0x14 strh r0, [r4, 0x8] b _080D003A .align 2, 0 _080CF98C: .4byte gTasks _080CF990: .4byte gBattleTextBuff1 _080CF994: .4byte 0x0000ffff _080CF998: ldr r0, _080CF9A8 @ =0x0000fffe cmp r5, r0 bne _080CF9A0 b _080D003A _080CF9A0: movs r0, 0x12 strh r0, [r4, 0x8] b _080D003A .align 2, 0 _080CF9A8: .4byte 0x0000fffe _080CF9AC: movs r0, 0x84 lsls r0, 1 bl PlayBGM ldr r1, _080CF9C8 @ =gUnknown_841E325 movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r0, _080CF9CC @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 b _080CFB1A .align 2, 0 _080CF9C8: .4byte gUnknown_841E325 _080CF9CC: .4byte gTasks _080CF9D0: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0 beq _080CF9E0 b _080D003A _080CF9E0: adds r0, r6, 0 bl DestroyTask ldr r4, _080CFA08 @ =gUnknown_2039A20 ldr r0, [r4] bl Free str r5, [r4] ldr r2, _080CFA0C @ =gTextFlags ldrb r1, [r2] movs r0, 0x3 negs r0, r0 ands r0, r1 strb r0, [r2] ldr r0, _080CFA10 @ =gUnknown_300537C ldr r0, [r0] bl SetMainCallback2 b _080D003A .align 2, 0 _080CFA08: .4byte gUnknown_2039A20 _080CFA0C: .4byte gTextFlags _080CFA10: .4byte gUnknown_300537C _080CFA14: ldr r0, _080CFA60 @ =gUnknown_2023E82 ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r5 ldrb r0, [r0, 0x4] cmp r0, 0 beq _080CFA28 b _080D003A _080CFA28: bl m4aMPlayAllStop ldr r2, _080CFA64 @ =gSprites ldr r0, _080CFA68 @ =gUnknown_2039A20 ldr r0, [r0] ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x5] lsrs r1, 4 adds r1, 0x10 movs r0, 0x1 lsls r0, r1 ldr r1, _080CFA6C @ =0x0004001c orrs r0, r1 ldr r1, _080CFA70 @ =0x00007fff str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade adds r1, r7, r6 lsls r1, 3 adds r1, r5 b _080CFB1A .align 2, 0 _080CFA60: .4byte gUnknown_2023E82 _080CFA64: .4byte gSprites _080CFA68: .4byte gUnknown_2039A20 _080CFA6C: .4byte 0x0004001c _080CFA70: .4byte 0x00007fff _080CFA74: ldr r0, _080CFA98 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080CFA82 b _080D003A _080CFA82: adds r4, r7, r6 lsls r4, 3 adds r4, r5 _080CFA88: ldrh r0, [r4, 0xA] movs r1, 0 bl PlayCry1 _080CFA90: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _080D003A .align 2, 0 _080CFA98: .4byte gPaletteFade _080CFA9C: bl IsCryFinished lsls r0, 24 cmp r0, 0 bne _080CFAA8 b _080D003A _080CFAA8: ldr r4, _080CFACC @ =gStringVar4 ldr r1, _080CFAD0 @ =gUnknown_83FE6D0 adds r0, r4, 0 bl StringExpandPlaceholders movs r0, 0 adds r1, r4, 0 movs r2, 0x1 bl sub_8054508 ldr r1, _080CFAD4 @ =gTasks adds r0, r7, r6 lsls r0, 3 adds r0, r1 movs r1, 0x1 strh r1, [r0, 0x1A] b _080D0006 .align 2, 0 _080CFACC: .4byte gStringVar4 _080CFAD0: .4byte gUnknown_83FE6D0 _080CFAD4: .4byte gTasks _080CFAD8: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CFAE6 b _080D003A _080CFAE6: bl IsSEPlaying lsls r0, 24 cmp r0, 0 beq _080CFAF2 b _080D003A _080CFAF2: bl BufferMoveToLearnIntoBattleTextBuff2 ldr r0, _080CFB24 @ =0x00000101 bl PlayFanfare ldr r0, _080CFB28 @ =gUnknown_83FDF3C ldr r0, [r0, 0xC] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080CFB2C @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r0, _080CFB30 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 movs r0, 0x40 strh r0, [r1, 0x10] _080CFB1A: ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] b _080D003A .align 2, 0 _080CFB24: .4byte 0x00000101 _080CFB28: .4byte gUnknown_83FDF3C _080CFB2C: .4byte gDisplayedStringBattle _080CFB30: .4byte gTasks _080CFB34: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CFB42 b _080D003A _080CFB42: bl IsFanfareTaskInactive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _080CFB50 b _080D003A _080CFB50: ldr r0, _080CFB6C @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x10] subs r0, 0x1 strh r0, [r1, 0x10] lsls r0, 16 cmp r0, 0 beq _080CFB66 b _080D003A _080CFB66: movs r0, 0xD strh r0, [r1, 0x8] b _080D003A .align 2, 0 _080CFB6C: .4byte gTasks _080CFB70: adds r0, r7, r6 lsls r0, 3 adds r0, r5 movs r1, 0x14 ldrsh r0, [r0, r1] cmp r0, 0xB bls _080CFB80 b _080D003A _080CFB80: lsls r0, 2 ldr r1, _080CFB8C @ =_080CFB90 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080CFB8C: .4byte _080CFB90 .align 2, 0 _080CFB90: .4byte _080CFBC0 .4byte _080CFC0C .4byte _080CFC54 .4byte _080CFC92 .4byte _080CFCFC .4byte _080CFDAC .4byte _080CFE30 .4byte _080CFF28 .4byte _080CFF70 .4byte _080CFFB8 .4byte _080CFFEC .4byte _080D0018 _080CFBC0: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CFBCE b _080D003A _080CFBCE: bl IsSEPlaying lsls r0, 24 cmp r0, 0 beq _080CFBDA b _080D003A _080CFBDA: bl BufferMoveToLearnIntoBattleTextBuff2 ldr r0, _080CFC00 @ =gUnknown_83FDF3C ldr r0, [r0, 0x10] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080CFC04 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r0, _080CFC08 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x14] adds r0, 0x1 b _080D0038 .align 2, 0 _080CFC00: .4byte gUnknown_83FDF3C _080CFC04: .4byte gDisplayedStringBattle _080CFC08: .4byte gTasks _080CFC0C: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CFC1A b _080D003A _080CFC1A: bl IsSEPlaying lsls r0, 24 cmp r0, 0 beq _080CFC26 b _080D003A _080CFC26: ldr r0, _080CFC48 @ =gUnknown_83FDF3C ldr r0, [r0, 0x14] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080CFC4C @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r0, _080CFC50 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x14] adds r0, 0x1 b _080D0038 .align 2, 0 _080CFC48: .4byte gUnknown_83FDF3C _080CFC4C: .4byte gDisplayedStringBattle _080CFC50: .4byte gTasks _080CFC54: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 bne _080CFC92 bl IsSEPlaying lsls r0, 24 cmp r0, 0 bne _080CFC92 ldr r0, _080CFCE8 @ =gUnknown_83FDF3C ldr r0, [r0, 0x18] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080CFCEC @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r0, _080CFCF0 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 movs r0, 0x5 strh r0, [r1, 0x16] movs r0, 0x9 strh r0, [r1, 0x18] ldrh r0, [r1, 0x14] adds r0, 0x1 strh r0, [r1, 0x14] _080CFC92: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CFCA0 b _080D003A _080CFCA0: bl IsSEPlaying lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 beq _080CFCAE b _080D003A _080CFCAE: movs r0, 0 movs r1, 0xA8 movs r2, 0xE0 bl sub_814FE40 ldr r0, _080CFCF4 @ =gUnknown_826D1CC movs r1, 0xA8 str r1, [sp] movs r1, 0xE str r1, [sp, 0x4] str r4, [sp, 0x8] movs r1, 0x3 movs r2, 0 movs r3, 0x2 bl sub_810FF60 ldr r3, _080CFCF8 @ =gUnknown_2023E82 strb r4, [r3, 0x1] ldr r0, _080CFCF0 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x14] adds r0, 0x1 movs r2, 0 strh r0, [r1, 0x14] strb r2, [r3, 0x1] b _080D003A .align 2, 0 _080CFCE8: .4byte gUnknown_83FDF3C _080CFCEC: .4byte gDisplayedStringBattle _080CFCF0: .4byte gTasks _080CFCF4: .4byte gUnknown_826D1CC _080CFCF8: .4byte gUnknown_2023E82 _080CFCFC: bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r4, r0, 24 cmp r4, 0 beq _080CFD1C cmp r4, 0 bgt _080CFD16 movs r0, 0x1 negs r0, r0 cmp r4, r0 beq _080CFD70 b _080D003A _080CFD16: cmp r4, 0x1 beq _080CFD70 b _080D003A _080CFD1C: ldr r0, _080CFD60 @ =gUnknown_2023E82 strb r4, [r0, 0x1] ldr r0, _080CFD64 @ =gUnknown_83FDF3C movs r3, 0x92 lsls r3, 3 adds r0, r3 ldr r0, [r0] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080CFD68 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r1, _080CFD6C @ =gTasks adds r0, r7, r6 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x16] strh r1, [r0, 0x14] lsls r1, 16 asrs r1, 16 cmp r1, 0x5 beq _080CFD4E b _080D003A _080CFD4E: movs r0, 0x1 negs r0, r0 str r4, [sp] movs r1, 0 _080CFD56: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade b _080D003A .align 2, 0 _080CFD60: .4byte gUnknown_2023E82 _080CFD64: .4byte gUnknown_83FDF3C _080CFD68: .4byte gDisplayedStringBattle _080CFD6C: .4byte gTasks _080CFD70: ldr r1, _080CFD9C @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x1] ldr r0, _080CFDA0 @ =gUnknown_83FDF3C movs r1, 0x92 lsls r1, 3 adds r0, r1 ldr r0, [r0] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080CFDA4 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r1, _080CFDA8 @ =gTasks adds r0, r7, r6 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0x18] strh r1, [r0, 0x14] b _080D003A .align 2, 0 _080CFD9C: .4byte gUnknown_2023E82 _080CFDA0: .4byte gUnknown_83FDF3C _080CFDA4: .4byte gDisplayedStringBattle _080CFDA8: .4byte gTasks _080CFDAC: ldr r0, _080CFE14 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080CFDBA b _080D003A _080CFDBA: ldr r0, _080CFE18 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 beq _080CFDC6 bl sub_80FCE44 _080CFDC6: movs r0, 0x3 bl GetBgTilemapBuffer bl Free movs r0, 0x1 bl GetBgTilemapBuffer bl Free movs r0, 0 bl GetBgTilemapBuffer bl Free bl FreeAllWindowBuffers ldr r0, _080CFE1C @ =gPlayerParty ldr r1, _080CFE20 @ =gTasks adds r5, r7, r6 lsls r5, 3 adds r5, r1 ldrb r1, [r5, 0x1C] ldr r2, _080CFE24 @ =gPlayerPartyCount ldrb r2, [r2] subs r2, 0x1 lsls r2, 24 lsrs r2, 24 ldr r3, _080CFE28 @ =CB2_TradeEvolutionSceneLoadGraphics ldr r4, _080CFE2C @ =gMoveToLearn ldrh r4, [r4] str r4, [sp] bl sub_8134738 ldrh r0, [r5, 0x14] adds r0, 0x1 strh r0, [r5, 0x14] b _080D003A .align 2, 0 _080CFE14: .4byte gPaletteFade _080CFE18: .4byte gWirelessCommType _080CFE1C: .4byte gPlayerParty _080CFE20: .4byte gTasks _080CFE24: .4byte gPlayerPartyCount _080CFE28: .4byte CB2_TradeEvolutionSceneLoadGraphics _080CFE2C: .4byte gMoveToLearn _080CFE30: ldr r0, _080CFE64 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080CFE3E b _080D003A _080CFE3E: ldr r0, _080CFE68 @ =gMain ldr r1, [r0, 0x4] ldr r0, _080CFE6C @ =sub_80CE72C cmp r1, r0 beq _080CFE4A b _080D003A _080CFE4A: bl sub_8138B2C lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x4 bne _080CFE74 ldr r0, _080CFE70 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 movs r0, 0x9 b _080D0038 .align 2, 0 _080CFE64: .4byte gPaletteFade _080CFE68: .4byte gMain _080CFE6C: .4byte sub_80CE72C _080CFE70: .4byte gTasks _080CFE74: adds r1, r5, 0 adds r1, 0xD mov r0, r8 bl GetMonData lsls r0, 16 lsrs r4, r0, 16 adds r0, r4, 0 bl IsHMMove2 cmp r0, 0 beq _080CFEC0 ldr r0, _080CFEB0 @ =gUnknown_83FDF3C ldr r3, _080CFEB4 @ =0x000004cc adds r0, r3 ldr r0, [r0] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080CFEB8 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r1, _080CFEBC @ =gTasks adds r0, r7, r6 lsls r0, 3 adds r0, r1 movs r1, 0xB strh r1, [r0, 0x14] b _080D003A .align 2, 0 _080CFEB0: .4byte gUnknown_83FDF3C _080CFEB4: .4byte 0x000004cc _080CFEB8: .4byte gDisplayedStringBattle _080CFEBC: .4byte gTasks _080CFEC0: ldr r1, _080CFF14 @ =gBattleTextBuff2 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] strb r4, [r1, 0x2] lsrs r0, r4, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] lsls r4, r5, 24 lsrs r4, 24 mov r0, r8 adds r1, r4, 0 bl RemoveMonPPBonus ldr r0, _080CFF18 @ =gMoveToLearn ldrh r1, [r0] mov r0, r8 adds r2, r4, 0 bl SetMonMoveSlot ldr r0, _080CFF1C @ =gUnknown_83FDF3C movs r1, 0xCF lsls r1, 2 adds r0, r1 ldr r0, [r0] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080CFF20 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r0, _080CFF24 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x14] adds r0, 0x1 b _080D0038 .align 2, 0 _080CFF14: .4byte gBattleTextBuff2 _080CFF18: .4byte gMoveToLearn _080CFF1C: .4byte gUnknown_83FDF3C _080CFF20: .4byte gDisplayedStringBattle _080CFF24: .4byte gTasks _080CFF28: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 beq _080CFF36 b _080D003A _080CFF36: bl IsSEPlaying lsls r0, 24 cmp r0, 0 beq _080CFF42 b _080D003A _080CFF42: ldr r0, _080CFF64 @ =gUnknown_83FDF3C ldr r0, [r0, 0x1C] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080CFF68 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r0, _080CFF6C @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x14] adds r0, 0x1 b _080D0038 .align 2, 0 _080CFF64: .4byte gUnknown_83FDF3C _080CFF68: .4byte gDisplayedStringBattle _080CFF6C: .4byte gTasks _080CFF70: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 bne _080D003A bl IsSEPlaying lsls r0, 24 cmp r0, 0 bne _080D003A ldr r0, _080CFFAC @ =gUnknown_83FDF3C movs r3, 0xD0 lsls r3, 2 adds r0, r3 ldr r0, [r0] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080CFFB0 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r1, _080CFFB4 @ =gTasks adds r0, r7, r6 lsls r0, 3 adds r0, r1 movs r1, 0x12 strh r1, [r0, 0x8] b _080D003A .align 2, 0 _080CFFAC: .4byte gUnknown_83FDF3C _080CFFB0: .4byte gDisplayedStringBattle _080CFFB4: .4byte gTasks _080CFFB8: ldr r0, _080CFFE0 @ =gUnknown_83FDF3C ldr r0, [r0, 0x20] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080CFFE4 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r1, _080CFFE8 @ =gTasks adds r0, r7, r6 lsls r0, 3 adds r0, r1 movs r2, 0 movs r1, 0xA strh r1, [r0, 0x16] strh r2, [r0, 0x18] movs r1, 0x3 strh r1, [r0, 0x14] b _080D003A .align 2, 0 _080CFFE0: .4byte gUnknown_83FDF3C _080CFFE4: .4byte gDisplayedStringBattle _080CFFE8: .4byte gTasks _080CFFEC: ldr r0, _080D000C @ =gUnknown_83FDF3C ldr r0, [r0, 0x24] bl BattleStringExpandPlaceholdersToDisplayedString ldr r1, _080D0010 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 bl sub_8054508 ldr r1, _080D0014 @ =gTasks adds r0, r7, r6 lsls r0, 3 adds r0, r1 _080D0006: movs r1, 0xD strh r1, [r0, 0x8] b _080D003A .align 2, 0 _080D000C: .4byte gUnknown_83FDF3C _080D0010: .4byte gDisplayedStringBattle _080D0014: .4byte gTasks _080D0018: movs r0, 0 bl IsTextPrinterActive lsls r0, 16 cmp r0, 0 bne _080D003A bl IsSEPlaying lsls r0, 24 cmp r0, 0 bne _080D003A ldr r0, _080D0048 @ =gTasks adds r1, r7, r6 lsls r1, 3 adds r1, r0 movs r0, 0x5 _080D0038: strh r0, [r1, 0x14] _080D003A: add sp, 0x20 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080D0048: .4byte gTasks thumb_func_end sub_80CF53C thumb_func_start nullsub_76 nullsub_76: @ 80D004C bx lr thumb_func_end nullsub_76 thumb_func_start sub_80D0050 sub_80D0050: @ 80D0050 push {lr} ldr r0, _080D00B8 @ =gUnknown_2022974 ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg ldr r0, _080D00BC @ =gUnknown_2022976 ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg ldr r0, _080D00C0 @ =gUnknown_2022978 ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg ldr r0, _080D00C4 @ =gUnknown_202297A ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg ldr r0, _080D00C8 @ =gUnknown_202297C ldrh r1, [r0] movs r0, 0x18 bl SetGpuReg ldr r0, _080D00CC @ =gUnknown_202297E ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg ldr r0, _080D00D0 @ =gUnknown_2022980 ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg ldr r0, _080D00D4 @ =gUnknown_2022982 ldrh r1, [r0] movs r0, 0x1E bl SetGpuReg bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer bl sub_8087F54 pop {r0} bx r0 .align 2, 0 _080D00B8: .4byte gUnknown_2022974 _080D00BC: .4byte gUnknown_2022976 _080D00C0: .4byte gUnknown_2022978 _080D00C4: .4byte gUnknown_202297A _080D00C8: .4byte gUnknown_202297C _080D00CC: .4byte gUnknown_202297E _080D00D0: .4byte gUnknown_2022980 _080D00D4: .4byte gUnknown_2022982 thumb_func_end sub_80D0050 thumb_func_start sub_80D00D8 sub_80D00D8: @ 80D00D8 push {lr} ldr r0, _080D0140 @ =gUnknown_2022974 ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg ldr r0, _080D0144 @ =gUnknown_2022976 ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg ldr r0, _080D0148 @ =gUnknown_2022978 ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg ldr r0, _080D014C @ =gUnknown_202297A ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg ldr r0, _080D0150 @ =gUnknown_202297C ldrh r1, [r0] movs r0, 0x18 bl SetGpuReg ldr r0, _080D0154 @ =gUnknown_202297E ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg ldr r0, _080D0158 @ =gUnknown_2022980 ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg ldr r0, _080D015C @ =gUnknown_2022982 ldrh r1, [r0] movs r0, 0x1E bl SetGpuReg bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer bl sub_8087F54 pop {r0} bx r0 .align 2, 0 _080D0140: .4byte gUnknown_2022974 _080D0144: .4byte gUnknown_2022976 _080D0148: .4byte gUnknown_2022978 _080D014C: .4byte gUnknown_202297A _080D0150: .4byte gUnknown_202297C _080D0154: .4byte gUnknown_202297E _080D0158: .4byte gUnknown_2022980 _080D015C: .4byte gUnknown_2022982 thumb_func_end sub_80D00D8 thumb_func_start sub_80D0160 sub_80D0160: @ 80D0160 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, _080D01E0 @ =gTasks+0x8 adds r4, r0, r1 movs r0, 0xC ldrsh r5, [r4, r0] cmp r5, 0 bne _080D020E ldrh r0, [r4, 0xA] adds r1, r0, 0x1 strh r1, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x13 ble _080D020E ldrh r1, [r4] adds r0, r1, 0x1 strh r0, [r4] lsls r1, 16 asrs r1, 16 ldr r3, _080D01E4 @ =gUnknown_83F846D movs r2, 0x4 ldrsh r0, [r4, r2] lsls r2, r0, 2 adds r0, r3, 0x3 adds r0, r2, r0 ldrb r0, [r0] cmp r1, r0 ble _080D0200 adds r0, r3, 0x1 adds r0, r2, r0 ldrb r0, [r0] movs r2, 0x2 ldrsh r1, [r4, r2] cmp r0, r1 bne _080D01E8 ldrh r0, [r4, 0x6] adds r0, 0x1 strh r0, [r4, 0x6] movs r0, 0x6 ldrsh r2, [r4, r0] movs r1, 0x4 ldrsh r0, [r4, r1] lsls r0, 2 adds r1, r3, 0x2 adds r0, r1 ldrb r0, [r0] cmp r2, r0 bne _080D01D2 strh r5, [r4, 0x6] ldrh r0, [r4, 0x4] adds r0, 0x1 strh r0, [r4, 0x4] _080D01D2: movs r2, 0x4 ldrsh r0, [r4, r2] lsls r0, 2 adds r0, r3 ldrb r0, [r0] b _080D01FE .align 2, 0 _080D01E0: .4byte gTasks+0x8 _080D01E4: .4byte gUnknown_83F846D _080D01E8: ldr r0, _080D0214 @ =gUnknown_2039A24 lsls r1, 5 ldr r0, [r0] adds r0, r1 movs r1, 0xA0 movs r2, 0x20 bl LoadPalette strh r5, [r4] ldrh r0, [r4, 0x2] adds r0, 0x1 _080D01FE: strh r0, [r4, 0x2] _080D0200: movs r1, 0x4 ldrsh r0, [r4, r1] cmp r0, 0x4 bne _080D020E adds r0, r6, 0 bl DestroyTask _080D020E: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080D0214: .4byte gUnknown_2039A24 thumb_func_end sub_80D0160 thumb_func_start sub_80D0218 sub_80D0218: @ 80D0218 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080D023C @ =sub_80D025C movs r1, 0x7 bl CreateTask lsls r0, 24 lsrs r2, r0, 24 cmp r4, 0 bne _080D0244 ldr r1, _080D0240 @ =gTasks lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r0, r1 strh r4, [r0, 0xC] b _080D0252 .align 2, 0 _080D023C: .4byte sub_80D025C _080D0240: .4byte gTasks _080D0244: ldr r0, _080D0258 @ =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 movs r0, 0x1 strh r0, [r1, 0xC] _080D0252: pop {r4} pop {r0} bx r0 .align 2, 0 _080D0258: .4byte gTasks thumb_func_end sub_80D0218 thumb_func_start sub_80D025C sub_80D025C: @ 80D025C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _080D0288 @ =gUnknown_2022978 mov r8, r0 ldr r1, _080D028C @ =gUnknown_202297A mov r9, r1 ldr r1, _080D0290 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 movs r2, 0xC ldrsh r0, [r0, r2] cmp r0, 0 bne _080D029C ldr r7, _080D0294 @ =gUnknown_202297C ldr r6, _080D0298 @ =gUnknown_202297E b _080D02A0 .align 2, 0 _080D0288: .4byte gUnknown_2022978 _080D028C: .4byte gUnknown_202297A _080D0290: .4byte gTasks _080D0294: .4byte gUnknown_202297C _080D0298: .4byte gUnknown_202297E _080D029C: ldr r7, _080D0328 @ =gUnknown_2022980 ldr r6, _080D032C @ =gUnknown_2022982 _080D02A0: lsls r4, r5, 2 adds r4, r5 lsls r4, 3 adds r4, r1 ldrh r0, [r4, 0x8] adds r0, 0x5 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x8] adds r0, 0x80 ands r0, r1 strh r0, [r4, 0xA] movs r1, 0x8 ldrsh r0, [r4, r1] movs r1, 0x4 bl Cos adds r0, 0x8 mov r2, r8 strh r0, [r2] movs r1, 0x8 ldrsh r0, [r4, r1] movs r1, 0x4 bl Sin adds r0, 0x10 mov r2, r9 strh r0, [r2] movs r1, 0xA ldrsh r0, [r4, r1] movs r1, 0x4 bl Cos adds r0, 0x8 strh r0, [r7] movs r2, 0xA ldrsh r0, [r4, r2] movs r1, 0x4 bl Sin adds r0, 0x10 strh r0, [r6] ldr r0, _080D0330 @ =sub_80D0160 bl FuncIsActiveTask lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _080D031A adds r0, r5, 0 bl DestroyTask mov r0, r8 strh r4, [r0] mov r1, r9 strh r4, [r1] movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r7] strh r4, [r6] _080D031A: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080D0328: .4byte gUnknown_2022980 _080D032C: .4byte gUnknown_2022982 _080D0330: .4byte sub_80D0160 thumb_func_end sub_80D025C thumb_func_start InitMovingBgValues InitMovingBgValues: @ 80D0334 push {r4-r7,lr} adds r6, r0, 0 movs r1, 0 ldr r5, _080D036C @ =gUnknown_83F8400 ldr r7, _080D0370 @ =gUnknown_83F847D _080D033E: lsls r0, r1, 4 adds r4, r1, 0x1 adds r2, r0, r7 lsls r0, r1, 5 adds r1, r0, r6 movs r3, 0xF _080D034A: ldrb r0, [r2] lsls r0, 1 adds r0, r5 ldrh r0, [r0] strh r0, [r1] adds r2, 0x1 adds r1, 0x2 subs r3, 0x1 cmp r3, 0 bge _080D034A adds r1, r4, 0 cmp r1, 0x31 ble _080D033E pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080D036C: .4byte gUnknown_83F8400 _080D0370: .4byte gUnknown_83F847D thumb_func_end InitMovingBgValues thumb_func_start InitMovingBackgroundTask InitMovingBackgroundTask: @ 80D0374 push {r4-r6,lr} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 ldr r4, _080D0398 @ =gUnknown_2039A24 movs r0, 0xC8 lsls r0, 3 bl AllocZeroed str r0, [r4] bl InitMovingBgValues cmp r5, 0 bne _080D039C movs r6, 0x1 movs r4, 0x2 b _080D03A0 .align 2, 0 _080D0398: .4byte gUnknown_2039A24 _080D039C: movs r6, 0x1 movs r4, 0x3 _080D03A0: ldr r0, _080D0420 @ =gUnknown_83F7D60 movs r1, 0xA0 movs r2, 0x20 bl LoadPalette ldr r1, _080D0424 @ =gUnknown_83F6CB0 movs r0, 0 str r0, [sp] movs r0, 0x1 movs r2, 0 movs r3, 0 bl sub_80F696C ldr r1, _080D0428 @ =gUnknown_83F73A8 movs r0, 0x1 movs r2, 0 movs r3, 0 bl CopyToBgTilemapBuffer ldr r1, _080D042C @ =gUnknown_83F788C adds r0, r4, 0 movs r2, 0 movs r3, 0 bl CopyToBgTilemapBuffer movs r0, 0x1 bl CopyBgTilemapBufferToVram adds r0, r4, 0 bl CopyBgTilemapBufferToVram cmp r5, 0 bne _080D0438 ldr r1, _080D0430 @ =0x00000442 movs r0, 0x50 bl SetGpuReg ldr r1, _080D0434 @ =0x00000808 movs r0, 0x52 bl SetGpuReg movs r1, 0xBA lsls r1, 5 movs r0, 0 bl SetGpuReg adds r0, r6, 0 movs r1, 0x7 movs r2, 0x2 bl SetBgAttribute adds r0, r4, 0 movs r1, 0x7 movs r2, 0x2 bl SetBgAttribute movs r0, 0x1 bl ShowBg movs r0, 0x2 bl ShowBg b _080D0452 .align 2, 0 _080D0420: .4byte gUnknown_83F7D60 _080D0424: .4byte gUnknown_83F6CB0 _080D0428: .4byte gUnknown_83F73A8 _080D042C: .4byte gUnknown_83F788C _080D0430: .4byte 0x00000442 _080D0434: .4byte 0x00000808 _080D0438: ldr r1, _080D0468 @ =0x00000842 movs r0, 0x50 bl SetGpuReg ldr r1, _080D046C @ =0x00000808 movs r0, 0x52 bl SetGpuReg movs r1, 0xDA lsls r1, 5 movs r0, 0 bl SetGpuReg _080D0452: ldr r0, _080D0470 @ =sub_80D0160 movs r1, 0x5 bl CreateTask adds r0, r5, 0 bl sub_80D0218 add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080D0468: .4byte 0x00000842 _080D046C: .4byte 0x00000808 _080D0470: .4byte sub_80D0160 thumb_func_end InitMovingBackgroundTask thumb_func_start sub_80D0474 sub_80D0474: @ 80D0474 push {lr} ldr r0, _080D04A0 @ =sub_80D0160 bl FindTaskIdByFunc lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0xFF beq _080D0492 ldr r0, _080D04A4 @ =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 movs r0, 0x1 strh r0, [r1, 0x14] _080D0492: movs r0, 0 movs r1, 0xA0 movs r2, 0x20 bl FillPalette pop {r0} bx r0 .align 2, 0 _080D04A0: .4byte sub_80D0160 _080D04A4: .4byte gTasks thumb_func_end sub_80D0474 thumb_func_start sub_80D04A8 sub_80D04A8: @ 80D04A8 push {lr} ldr r0, _080D04E0 @ =sub_80D0160 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF beq _080D04BC bl DestroyTask _080D04BC: ldr r0, _080D04E4 @ =sub_80D025C bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF beq _080D04CE bl DestroyTask _080D04CE: movs r0, 0 movs r1, 0xA0 movs r2, 0x20 bl FillPalette bl sub_80D04E8 pop {r0} bx r0 .align 2, 0 _080D04E0: .4byte sub_80D0160 _080D04E4: .4byte sub_80D025C thumb_func_end sub_80D04A8 thumb_func_start sub_80D04E8 sub_80D04E8: @ 80D04E8 push {lr} movs r0, 0x50 movs r1, 0 bl SetGpuReg ldr r0, _080D0544 @ =gUnknown_2022978 movs r1, 0 strh r1, [r0] ldr r0, _080D0548 @ =gUnknown_202297A strh r1, [r0] ldr r0, _080D054C @ =gUnknown_202297C strh r1, [r0] movs r0, 0x1 movs r1, 0x5 bl sub_8011C44 adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 movs r0, 0x1 movs r1, 0x7 bl SetBgAttribute movs r0, 0x2 movs r1, 0x5 bl sub_8011C44 adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 movs r0, 0x2 movs r1, 0x7 bl SetBgAttribute movs r1, 0xCA lsls r1, 5 movs r0, 0 bl SetGpuReg ldr r0, _080D0550 @ =gUnknown_2039A24 ldr r0, [r0] bl Free pop {r0} bx r0 .align 2, 0 _080D0544: .4byte gUnknown_2022978 _080D0548: .4byte gUnknown_202297A _080D054C: .4byte gUnknown_202297C _080D0550: .4byte gUnknown_2039A24 thumb_func_end sub_80D04E8 .align 2, 0 @ Don't pad with nop.