diff options
-rw-r--r-- | asm/evolution_scene.s | 3943 | ||||
-rw-r--r-- | include/evolution_graphics.h | 6 | ||||
-rw-r--r-- | include/trade.h | 18 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | shared_syms.txt | 2 | ||||
-rw-r--r-- | src/evolution_graphics.c | 9 | ||||
-rw-r--r-- | src/evolution_scene.c | 1184 | ||||
-rw-r--r-- | src/pokemon_3.c | 2 |
8 files changed, 1215 insertions, 3950 deletions
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 54011fb4e..d90772070 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -6,3949 +6,6 @@ .text - thumb_func_start CB2_BeginEvolutionScene -CB2_BeginEvolutionScene: @ 8111894 - push {lr} - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - thumb_func_end CB2_BeginEvolutionScene - - thumb_func_start Task_BeginEvolutionScene -Task_BeginEvolutionScene: @ 81118A4 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - movs r7, 0 - ldr r1, _081118C8 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _081118CC - cmp r0, 0x1 - beq _081118E4 - b _08111918 - .align 2, 0 -_081118C8: .4byte gTasks -_081118CC: - movs r0, 0x1 - negs r0, r0 - str r7, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08111918 -_081118E4: - ldr r0, _08111920 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08111918 - movs r0, 0xA - ldrsh r7, [r4, r0] - movs r1, 0xC - ldrsh r0, [r4, r1] - lsls r0, 16 - orrs r7, r0 - ldrh r5, [r4, 0x10] - ldrb r6, [r4, 0x12] - ldrh r4, [r4, 0x20] - lsls r4, 24 - lsrs r4, 24 - adds r0, r2, 0 - bl DestroyTask - adds r0, r7, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r4, 0 - bl EvolutionScene -_08111918: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08111920: .4byte gPaletteFade - thumb_func_end Task_BeginEvolutionScene - - thumb_func_start BeginEvolutionScene -BeginEvolutionScene: @ 8111924 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - 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, _08111978 @ =Task_BeginEvolutionScene - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811197C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - mov r0, r8 - strh r0, [r1, 0xA] - mov r0, r8 - lsrs r0, 16 - strh r0, [r1, 0xC] - strh r4, [r1, 0x10] - strh r5, [r1, 0x12] - strh r6, [r1, 0x20] - ldr r0, _08111980 @ =CB2_BeginEvolutionScene - bl SetMainCallback2 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08111978: .4byte Task_BeginEvolutionScene -_0811197C: .4byte gTasks -_08111980: .4byte CB2_BeginEvolutionScene - thumb_func_end BeginEvolutionScene - - thumb_func_start EvolutionScene -EvolutionScene: @ 8111984 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x38 - str r0, [sp, 0x20] - mov r10, r1 - mov r0, r10 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x24] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x28] - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r5, 0 - str r5, [sp, 0x1C] - add r0, sp, 0x1C - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _08111C10 @ =0x05006000 - bl CpuSet - ldr r0, _08111C14 @ =REG_MOSAIC - strh r5, [r0] - subs r0, 0xC - strh r5, [r0] - adds r0, 0x4 - strh r5, [r0] - subs r0, 0x2 - strh r5, [r0] - adds r0, 0x4 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - ldr r4, _08111C18 @ =gWindowConfig_81E6C58 - adds r0, r4, 0 - bl SetUpWindowConfig - bl ResetPaletteFade - ldr r0, _08111C1C @ =gUnknown_030042A4 - strh r5, [r0] - ldr r0, _08111C20 @ =gUnknown_030042A0 - strh r5, [r0] - ldr r0, _08111C24 @ =gUnknown_030042C0 - strh r5, [r0] - ldr r0, _08111C28 @ =gUnknown_030041B4 - strh r5, [r0] - ldr r0, _08111C2C @ =gUnknown_03004288 - strh r5, [r0] - ldr r0, _08111C30 @ =gUnknown_03004280 - strh r5, [r0] - ldr r1, _08111C34 @ =gUnknown_030041B0 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08111C38 @ =gUnknown_030041B8 - strh r5, [r0] - ldr r0, _08111C3C @ =gUnknown_03004210 - adds r1, r4, 0 - bl InitWindowFromConfig - ldr r1, _08111C40 @ =gBattleTerrain - movs r0, 0x9 - strb r0, [r1] - bl sub_800D6D4 - bl sub_800DAB8 - bl ResetSpriteData - bl remove_some_task - bl ResetTasks - bl FreeAllSpritePalettes - ldr r0, _08111C44 @ =gReservedSpritePaletteCount - movs r3, 0x4 - strb r3, [r0] - ldr r0, [sp, 0x20] - movs r1, 0x2 - add r2, sp, 0x8 - bl GetMonData - ldr r0, _08111C48 @ =gStringVar1 - add r1, sp, 0x8 - bl StringCopy10 - ldr r0, _08111C4C @ =gStringVar2 - movs r1, 0xB - mov r4, r10 - muls r4, r1 - adds r1, r4, 0 - ldr r2, _08111C50 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, [sp, 0x20] - movs r1, 0xB - bl GetMonData - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - ldr r0, [sp, 0x20] - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x2C] - ldr r0, [sp, 0x20] - movs r1, 0 - bl GetMonData - str r0, [sp, 0x30] - lsls r0, r6, 3 - ldr r1, _08111C54 @ =gMonFrontPicTable - adds r0, r1 - lsls r2, r6, 2 - ldr r3, _08111C58 @ =gMonFrontPicCoords - adds r2, r3 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - ldr r4, _08111C5C @ =gUnknown_081FAF4C - ldr r3, [r4, 0x4] - str r3, [sp] - str r6, [sp, 0x4] - movs r3, 0x80 - lsls r3, 18 - bl DecompressPicFromTable_2 - adds r0, r6, 0 - ldr r1, [sp, 0x2C] - ldr r2, [sp, 0x30] - bl sub_80409C8 - ldr r0, [r0] - movs r1, 0x88 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - adds r0, r6, 0 - movs r1, 0x1 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08111C60 @ =gUnknown_02024E8C - mov r9, r0 - ldr r1, _08111C64 @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - lsls r1, r0, 24 - lsrs r2, r1, 24 - ldr r3, _08111C68 @ =0x02014800 - strb r0, [r3] - ldr r7, _08111C6C @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - movs r4, 0x1C - adds r4, r7 - mov r8, r4 - adds r0, r1, r4 - ldr r2, _08111C70 @ =nullsub_37 - 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 r3, 0x4 - orrs r0, r3 - strb r0, [r1] - mov r1, r10 - lsls r0, r1, 3 - ldr r2, _08111C54 @ =gMonFrontPicTable - adds r0, r2 - lsls r2, r1, 2 - ldr r3, _08111C58 @ =gMonFrontPicCoords - adds r2, r3 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - str r2, [sp, 0x34] - ldr r2, _08111C5C @ =gUnknown_081FAF4C - ldr r2, [r2, 0xC] - str r2, [sp] - mov r3, r10 - str r3, [sp, 0x4] - ldr r2, [sp, 0x34] - movs r3, 0x80 - lsls r3, 18 - bl DecompressPicFromTable_2 - mov r0, r10 - ldr r1, [sp, 0x2C] - ldr r2, [sp, 0x30] - bl sub_80409C8 - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - mov r0, r10 - movs r1, 0x3 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08111C64 @ =gDummySpriteAffineAnimTable - mov r1, r9 - str r0, [r1, 0x10] - mov r0, r9 - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - lsls r1, r0, 24 - lsrs r2, r1, 24 - ldr r3, _08111C68 @ =0x02014800 - strb r0, [r3, 0x1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r8, r1 - ldr r0, _08111C70 @ =nullsub_37 - mov r2, r8 - str r0, [r2] - 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 r3, 0x4 - orrs r0, r3 - strb r0, [r1] - bl LoadEvoSparkleSpriteAndPal - ldr r0, _08111C74 @ =Task_EvolutionScene - movs r1, 0 - bl CreateTask - lsls r1, r0, 24 - lsrs r2, r1, 24 - ldr r4, _08111C68 @ =0x02014800 - strb r0, [r4, 0x2] - ldr r1, _08111C78 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - strh r6, [r0, 0xE] - mov r1, r10 - strh r1, [r0, 0x10] - mov r2, sp - ldrh r2, [r2, 0x20] - strh r2, [r0, 0xA] - ldr r3, [sp, 0x20] - lsrs r1, r3, 16 - strh r1, [r0, 0xC] - mov r4, sp - ldrh r4, [r4, 0x24] - strh r4, [r0, 0x12] - movs r1, 0x1 - strh r1, [r0, 0x14] - strh r5, [r0, 0x1E] - mov r1, sp - ldrh r1, [r1, 0x28] - strh r1, [r0, 0x20] - ldr r0, _08111C7C @ =0x02009000 - ldr r1, _08111C80 @ =gPlttBufferUnfaded + 0x40 - movs r2, 0x60 - bl memcpy - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xFA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08111C84 @ =HBlankCB_EvolutionScene - bl SetHBlankCallback - ldr r0, _08111C88 @ =VBlankCB_EvolutionScene - bl SetVBlankCallback - bl m4aMPlayAllStop - ldr r0, _08111C8C @ =CB2_EvolutionSceneUpdate_0 - bl SetMainCallback2 - add sp, 0x38 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08111C10: .4byte 0x05006000 -_08111C14: .4byte REG_MOSAIC -_08111C18: .4byte gWindowConfig_81E6C58 -_08111C1C: .4byte gUnknown_030042A4 -_08111C20: .4byte gUnknown_030042A0 -_08111C24: .4byte gUnknown_030042C0 -_08111C28: .4byte gUnknown_030041B4 -_08111C2C: .4byte gUnknown_03004288 -_08111C30: .4byte gUnknown_03004280 -_08111C34: .4byte gUnknown_030041B0 -_08111C38: .4byte gUnknown_030041B8 -_08111C3C: .4byte gUnknown_03004210 -_08111C40: .4byte gBattleTerrain -_08111C44: .4byte gReservedSpritePaletteCount -_08111C48: .4byte gStringVar1 -_08111C4C: .4byte gStringVar2 -_08111C50: .4byte gSpeciesNames -_08111C54: .4byte gMonFrontPicTable -_08111C58: .4byte gMonFrontPicCoords -_08111C5C: .4byte gUnknown_081FAF4C -_08111C60: .4byte gUnknown_02024E8C -_08111C64: .4byte gDummySpriteAffineAnimTable -_08111C68: .4byte 0x02014800 -_08111C6C: .4byte gSprites -_08111C70: .4byte nullsub_37 -_08111C74: .4byte Task_EvolutionScene -_08111C78: .4byte gTasks -_08111C7C: .4byte 0x02009000 -_08111C80: .4byte gPlttBufferUnfaded + 0x40 -_08111C84: .4byte HBlankCB_EvolutionScene -_08111C88: .4byte VBlankCB_EvolutionScene -_08111C8C: .4byte CB2_EvolutionSceneUpdate_0 - thumb_func_end EvolutionScene - - thumb_func_start CB2_EvolutionSceneLoadGraphics -CB2_EvolutionSceneLoadGraphics: @ 8111C90 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0xC - ldr r2, _08111E14 @ =gTasks - ldr r0, _08111E18 @ =0x02014800 - mov r9, r0 - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0x20 - ldrsh r2, [r0, r1] - movs r1, 0x64 - adds r4, r2, 0 - muls r4, r1 - ldr r1, _08111E1C @ =gPlayerParty - adds r4, r1 - ldrh r6, [r0, 0x10] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - mov r10, r0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - mov r8, r0 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r5, 0 - str r5, [sp, 0x8] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _08111E20 @ =0x05006000 - add r0, sp, 0x8 - bl CpuSet - ldr r0, _08111E24 @ =REG_MOSAIC - strh r5, [r0] - subs r0, 0xC - strh r5, [r0] - adds r0, 0x4 - strh r5, [r0] - subs r0, 0x2 - strh r5, [r0] - adds r0, 0x4 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - ldr r4, _08111E28 @ =gWindowConfig_81E6C58 - adds r0, r4, 0 - bl SetUpWindowConfig - bl ResetPaletteFade - ldr r0, _08111E2C @ =gUnknown_030042A4 - strh r5, [r0] - ldr r0, _08111E30 @ =gUnknown_030042A0 - strh r5, [r0] - ldr r0, _08111E34 @ =gUnknown_030042C0 - strh r5, [r0] - ldr r0, _08111E38 @ =gUnknown_030041B4 - strh r5, [r0] - ldr r0, _08111E3C @ =gUnknown_03004288 - strh r5, [r0] - ldr r0, _08111E40 @ =gUnknown_03004280 - strh r5, [r0] - ldr r1, _08111E44 @ =gUnknown_030041B0 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08111E48 @ =gUnknown_030041B8 - strh r5, [r0] - ldr r0, _08111E4C @ =gUnknown_03004210 - adds r1, r4, 0 - bl InitWindowFromConfig - ldr r1, _08111E50 @ =gBattleTerrain - movs r0, 0x9 - strb r0, [r1] - bl sub_800D6D4 - bl sub_800DAB8 - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r1, _08111E54 @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - lsls r0, r6, 3 - ldr r1, _08111E58 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08111E5C @ =gMonFrontPicCoords - lsls r2, r6, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08111E60 @ =gUnknown_081FAF4C - ldr r4, [r4, 0xC] - str r4, [sp] - str r6, [sp, 0x4] - bl DecompressPicFromTable_2 - adds r0, r6, 0 - mov r1, r10 - mov r2, r8 - bl sub_80409C8 - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - adds r0, r6, 0 - movs r1, 0x3 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08111E64 @ =gUnknown_02024E8C - ldr r1, _08111E68 @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - lsls r2, r0, 24 - lsrs r2, 24 - mov r1, r9 - strb r0, [r1, 0x1] - ldr r3, _08111E6C @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _08111E70 @ =nullsub_37 - 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, 0x80 - lsls r1, 19 - movs r2, 0xFA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08111E74 @ =HBlankCB_EvolutionScene - bl SetHBlankCallback - ldr r0, _08111E78 @ =VBlankCB_EvolutionScene - bl SetVBlankCallback - ldr r0, _08111E7C @ =CB2_EvolutionSceneUpdate_0 - bl SetMainCallback2 - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08111E14: .4byte gTasks -_08111E18: .4byte 0x02014800 -_08111E1C: .4byte gPlayerParty -_08111E20: .4byte 0x05006000 -_08111E24: .4byte REG_MOSAIC -_08111E28: .4byte gWindowConfig_81E6C58 -_08111E2C: .4byte gUnknown_030042A4 -_08111E30: .4byte gUnknown_030042A0 -_08111E34: .4byte gUnknown_030042C0 -_08111E38: .4byte gUnknown_030041B4 -_08111E3C: .4byte gUnknown_03004288 -_08111E40: .4byte gUnknown_03004280 -_08111E44: .4byte gUnknown_030041B0 -_08111E48: .4byte gUnknown_030041B8 -_08111E4C: .4byte gUnknown_03004210 -_08111E50: .4byte gBattleTerrain -_08111E54: .4byte gReservedSpritePaletteCount -_08111E58: .4byte gMonFrontPicTable -_08111E5C: .4byte gMonFrontPicCoords -_08111E60: .4byte gUnknown_081FAF4C -_08111E64: .4byte gUnknown_02024E8C -_08111E68: .4byte gDummySpriteAffineAnimTable -_08111E6C: .4byte gSprites -_08111E70: .4byte nullsub_37 -_08111E74: .4byte HBlankCB_EvolutionScene -_08111E78: .4byte VBlankCB_EvolutionScene -_08111E7C: .4byte CB2_EvolutionSceneUpdate_0 - thumb_func_end CB2_EvolutionSceneLoadGraphics - - thumb_func_start CB2_TradeEvolutionSceneLoadGraphics -CB2_TradeEvolutionSceneLoadGraphics: @ 8111E80 - push {r4-r7,lr} - sub sp, 0x8 - ldr r2, _08111EB8 @ =gTasks - ldr r0, _08111EBC @ =0x02014800 - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0x20 - ldrsh r2, [r0, r1] - movs r1, 0x64 - muls r2, r1 - ldr r1, _08111EC0 @ =gPlayerParty - adds r4, r2, r1 - ldrh r7, [r0, 0x10] - ldr r0, _08111EC4 @ =gMain - ldr r2, _08111EC8 @ =0x0000043c - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x6 - bls _08111EAE - b _081120D6 -_08111EAE: - lsls r0, 2 - ldr r1, _08111ECC @ =_08111ED0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08111EB8: .4byte gTasks -_08111EBC: .4byte 0x02014800 -_08111EC0: .4byte gPlayerParty -_08111EC4: .4byte gMain -_08111EC8: .4byte 0x0000043c -_08111ECC: .4byte _08111ED0 - .align 2, 0 -_08111ED0: - .4byte _08111EEC - .4byte _08111F68 - .4byte _08111F88 - .4byte _08111FDC - .4byte _08111FE2 - .4byte _08112048 - .4byte _081120B4 -_08111EEC: - movs r0, 0x80 - lsls r0, 19 - movs r4, 0 - strh r4, [r0] - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r1, _08111F3C @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, _08111F40 @ =gUnknown_030042A4 - strh r4, [r0] - ldr r0, _08111F44 @ =gUnknown_030042A0 - strh r4, [r0] - ldr r0, _08111F48 @ =gUnknown_030042C0 - strh r4, [r0] - ldr r0, _08111F4C @ =gUnknown_030041B4 - strh r4, [r0] - ldr r0, _08111F50 @ =gUnknown_03004288 - strh r4, [r0] - ldr r0, _08111F54 @ =gUnknown_03004280 - strh r4, [r0] - ldr r1, _08111F58 @ =gUnknown_030041B0 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08111F5C @ =gUnknown_030041B8 - strh r4, [r0] - ldr r1, _08111F60 @ =gMain - ldr r0, _08111F64 @ =0x0000043c - adds r1, r0 - b _0811208E - .align 2, 0 -_08111F3C: .4byte gReservedSpritePaletteCount -_08111F40: .4byte gUnknown_030042A4 -_08111F44: .4byte gUnknown_030042A0 -_08111F48: .4byte gUnknown_030042C0 -_08111F4C: .4byte gUnknown_030041B4 -_08111F50: .4byte gUnknown_03004288 -_08111F54: .4byte gUnknown_03004280 -_08111F58: .4byte gUnknown_030041B0 -_08111F5C: .4byte gUnknown_030041B8 -_08111F60: .4byte gMain -_08111F64: .4byte 0x0000043c -_08111F68: - ldr r4, _08111F80 @ =gWindowConfig_81E6F84 - adds r0, r4, 0 - bl SetUpWindowConfig - ldr r0, _08111F84 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0x4 - adds r1, r4, 0 - bl InitWindowFromConfig - b _08112088 - .align 2, 0 -_08111F80: .4byte gWindowConfig_81E6F84 -_08111F84: .4byte gUnknown_03004828 -_08111F88: - ldr r4, _08111FC8 @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0x4 - bl LoadTextWindowGraphics - movs r0, 0x2 - bl SetTextWindowBaseTileNum - ldr r1, [r4] - adds r1, 0x34 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x4 - bl LoadTextWindowGraphics - bl MenuZeroFillScreen - bl ResetPaletteFade - ldr r1, _08111FCC @ =gMain - ldr r0, _08111FD0 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, _08111FD4 @ =HBlankCB_EvolutionScene - bl SetHBlankCallback - ldr r0, _08111FD8 @ =VBlankCB_TradeEvolutionScene - bl SetVBlankCallback - b _081120D6 - .align 2, 0 -_08111FC8: .4byte gUnknown_03004828 -_08111FCC: .4byte gMain -_08111FD0: .4byte 0x0000043c -_08111FD4: .4byte HBlankCB_EvolutionScene -_08111FD8: .4byte VBlankCB_TradeEvolutionScene -_08111FDC: - bl sub_804E22C - b _08112088 -_08111FE2: - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - adds r6, r0, 0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r5, r0, 0 - lsls r0, r7, 3 - ldr r1, _08112034 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08112038 @ =gMonFrontPicCoords - lsls r2, r7, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _0811203C @ =gUnknown_081FAF4C - ldr r4, [r4, 0xC] - str r4, [sp] - str r7, [sp, 0x4] - bl DecompressPicFromTable_2 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_80409C8 - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, _08112040 @ =gMain - ldr r0, _08112044 @ =0x0000043c - adds r1, r0 - b _0811208E - .align 2, 0 -_08112034: .4byte gMonFrontPicTable -_08112038: .4byte gMonFrontPicCoords -_0811203C: .4byte gUnknown_081FAF4C -_08112040: .4byte gMain -_08112044: .4byte 0x0000043c -_08112048: - adds r0, r7, 0 - movs r1, 0x3 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08112098 @ =gUnknown_02024E8C - ldr r1, _0811209C @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - ldr r1, _081120A0 @ =0x02014800 - lsls r2, r0, 24 - lsrs r2, 24 - strb r0, [r1, 0x1] - ldr r3, _081120A4 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _081120A8 @ =nullsub_37 - 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] -_08112088: - ldr r1, _081120AC @ =gMain - ldr r2, _081120B0 @ =0x0000043c - adds r1, r2 -_0811208E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _081120D6 - .align 2, 0 -_08112098: .4byte gUnknown_02024E8C -_0811209C: .4byte gDummySpriteAffineAnimTable -_081120A0: .4byte 0x02014800 -_081120A4: .4byte gSprites -_081120A8: .4byte nullsub_37 -_081120AC: .4byte gMain -_081120B0: .4byte 0x0000043c -_081120B4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _081120E0 @ =CB2_EvolutionSceneUpdate_1 - bl SetMainCallback2 - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] -_081120D6: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081120E0: .4byte CB2_EvolutionSceneUpdate_1 - thumb_func_end CB2_TradeEvolutionSceneLoadGraphics - - thumb_func_start TradeEvolutionScene -TradeEvolutionScene: @ 81120E4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r0, [sp, 0x1C] - adds r5, r1, 0 - adds r4, r2, 0 - mov r10, r3 - lsls r5, 16 - lsrs r5, 16 - lsls r4, 24 - lsrs r4, 24 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, [sp, 0x1C] - movs r1, 0x2 - add r2, sp, 0x8 - bl GetMonData - ldr r0, _08112234 @ =gStringVar1 - add r1, sp, 0x8 - bl StringCopy10 - ldr r0, _08112238 @ =gStringVar2 - movs r1, 0xB - muls r1, r5 - ldr r2, _0811223C @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r1, _08112240 @ =gAffineAnimsDisabled - movs r0, 0x1 - strb r0, [r1] - ldr r0, [sp, 0x1C] - movs r1, 0xB - bl GetMonData - mov r8, r0 - mov r1, r8 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - ldr r0, [sp, 0x1C] - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - ldr r0, [sp, 0x1C] - movs r1, 0x1 - bl GetMonData - adds r7, r0, 0 - ldr r2, _08112244 @ =0x02014800 - mov r9, r2 - strb r4, [r2] - lsls r0, r5, 3 - ldr r1, _08112248 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _0811224C @ =gMonFrontPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08112250 @ =gUnknown_081FAF4C - ldr r4, [r4, 0x4] - str r4, [sp] - str r5, [sp, 0x4] - bl DecompressPicFromTable_2 - adds r0, r5, 0 - adds r1, r7, 0 - adds r2, r6, 0 - bl sub_80409C8 - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - adds r0, r5, 0 - movs r1, 0x1 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08112254 @ =gUnknown_02024E8C - ldr r1, _08112258 @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - lsls r1, r0, 24 - lsrs r2, r1, 24 - mov r1, r9 - strb r0, [r1, 0x1] - ldr r3, _0811225C @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _08112260 @ =nullsub_37 - 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, _08112264 @ =Task_TradeEvolutionScene - movs r1, 0 - bl CreateTask - lsls r1, r0, 24 - lsrs r2, r1, 24 - mov r1, r9 - strb r0, [r1, 0x2] - ldr r1, _08112268 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - strh r2, [r0, 0x8] - mov r1, r8 - strh r1, [r0, 0xE] - strh r5, [r0, 0x10] - mov r2, sp - ldrh r2, [r2, 0x1C] - strh r2, [r0, 0xA] - ldr r1, [sp, 0x1C] - lsrs r1, 16 - str r1, [sp, 0x20] - strh r1, [r0, 0xC] - movs r1, 0x1 - strh r1, [r0, 0x14] - movs r1, 0 - strh r1, [r0, 0x1E] - mov r2, r10 - strh r2, [r0, 0x20] - ldr r0, _0811226C @ =CB2_EvolutionSceneUpdate_1 - 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 -_08112234: .4byte gStringVar1 -_08112238: .4byte gStringVar2 -_0811223C: .4byte gSpeciesNames -_08112240: .4byte gAffineAnimsDisabled -_08112244: .4byte 0x02014800 -_08112248: .4byte gMonFrontPicTable -_0811224C: .4byte gMonFrontPicCoords -_08112250: .4byte gUnknown_081FAF4C -_08112254: .4byte gUnknown_02024E8C -_08112258: .4byte gDummySpriteAffineAnimTable -_0811225C: .4byte gSprites -_08112260: .4byte nullsub_37 -_08112264: .4byte Task_TradeEvolutionScene -_08112268: .4byte gTasks -_0811226C: .4byte CB2_EvolutionSceneUpdate_1 - thumb_func_end TradeEvolutionScene - - thumb_func_start CB2_EvolutionSceneUpdate_0 -CB2_EvolutionSceneUpdate_0: @ 8112270 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - ldr r0, _0811228C @ =gUnknown_03004210 - bl sub_800374C - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - .align 2, 0 -_0811228C: .4byte gUnknown_03004210 - thumb_func_end CB2_EvolutionSceneUpdate_0 - - thumb_func_start CB2_EvolutionSceneUpdate_1 -CB2_EvolutionSceneUpdate_1: @ 8112290 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - ldr r0, _081122B0 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0x4 - bl sub_80035AC - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - .align 2, 0 -_081122B0: .4byte gUnknown_03004828 - thumb_func_end CB2_EvolutionSceneUpdate_1 - - thumb_func_start CreateShedinja -CreateShedinja: @ 81122B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r10, r1 - lsls r0, 16 - lsrs r7, r0, 16 - movs r0, 0 - str r0, [sp] - ldr r0, _081123F4 @ =gEvolutionTable - mov r8, r0 - lsls r1, r7, 2 - mov r9, r1 - adds r0, r1, r7 - lsls r4, r0, 3 - mov r0, r8 - adds r6, r4, r0 - ldrh r0, [r6] - cmp r0, 0xD - beq _081122E2 - b _081123E2 -_081122E2: - ldr r1, _081123F8 @ =gPlayerPartyCount - ldrb r0, [r1] - cmp r0, 0x5 - bhi _081123E2 - adds r1, r0, 0 - movs r0, 0x64 - muls r1, r0 - ldr r0, _081123FC @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - mov r1, r10 - movs r2, 0x64 - bl CopyMon - mov r1, r8 - adds r2, r1, r4 - adds r2, 0xC - adds r0, r5, 0 - movs r1, 0xB - bl SetMonData - ldrh r1, [r6, 0xC] - movs r0, 0xB - adds r2, r1, 0 - muls r2, r0 - ldr r0, _08112400 @ =gSpeciesNames - adds r2, r0 - adds r0, r5, 0 - movs r1, 0x2 - bl SetMonData - adds r0, r5, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData - adds r0, r5, 0 - movs r1, 0x8 - mov r2, sp - bl SetMonData - adds r0, r5, 0 - movs r1, 0xA - mov r2, sp - bl SetMonData - movs r4, 0x32 - mov r6, r9 -_08112342: - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, sp - bl SetMonData - adds r4, 0x1 - cmp r4, 0x36 - ble _08112342 - movs r4, 0x43 -_08112354: - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, sp - bl SetMonData - adds r4, 0x1 - cmp r4, 0x4F - ble _08112354 - adds r0, r5, 0 - movs r1, 0x37 - mov r2, sp - bl SetMonData - movs r0, 0xFF - str r0, [sp] - adds r0, r5, 0 - movs r1, 0x40 - mov r2, sp - bl SetMonData - adds r0, r5, 0 - bl CalculateMonStats - bl CalculatePlayerPartyCount - ldr r0, _081123F4 @ =gEvolutionTable - adds r4, r6, r7 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0xC] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetNationalPokedexFlag - ldrh r0, [r4, 0xC] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl GetNationalPokedexFlag - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - ldr r1, _08112404 @ =0x0000012f - cmp r0, r1 - bne _081123E2 - adds r0, r5, 0 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - bne _081123E2 - mov r0, r10 - movs r1, 0xB - bl GetMonData - movs r1, 0x97 - lsls r1, 1 - cmp r0, r1 - bne _081123E2 - ldr r2, _08112408 @ =gUnknown_083F868C - adds r0, r5, 0 - movs r1, 0x2 - bl SetMonData -_081123E2: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081123F4: .4byte gEvolutionTable -_081123F8: .4byte gPlayerPartyCount -_081123FC: .4byte gPlayerParty -_08112400: .4byte gSpeciesNames -_08112404: .4byte 0x0000012f -_08112408: .4byte gUnknown_083F868C - thumb_func_end CreateShedinja - - thumb_func_start Task_EvolutionScene -Task_EvolutionScene: @ 811240C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, _08112490 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r3, r0, r2 - movs r1, 0xA - ldrsh r0, [r3, r1] - mov r9, r0 - movs r1, 0xC - ldrsh r0, [r3, r1] - lsls r0, 16 - mov r1, r9 - orrs r1, r0 - mov r9, r1 - ldr r0, _08112494 @ =gMain - ldrh r1, [r0, 0x2C] - adds r6, r2, 0 - adds r4, r0, 0 - cmp r1, 0x2 - bne _0811246E - movs r2, 0x8 - ldrsh r0, [r3, r2] - cmp r0, 0x8 - bne _0811246E - ldrh r1, [r3, 0x12] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0811246E - movs r0, 0x10 - strh r0, [r3, 0x8] - ldr r0, _08112498 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _0811246E - strh r2, [r1, 0x18] -_0811246E: - lsls r1, r7, 2 - adds r0, r1, r7 - lsls r0, 3 - adds r0, r6 - movs r3, 0x8 - ldrsh r0, [r0, r3] - mov r8, r1 - cmp r0, 0x15 - bls _08112484 - bl _08112FD0 -_08112484: - lsls r0, 2 - ldr r1, _0811249C @ =_081124A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08112490: .4byte gTasks -_08112494: .4byte gMain -_08112498: .4byte gBattleCommunication -_0811249C: .4byte _081124A0 - .align 2, 0 -_081124A0: - .4byte _081124F8 - .4byte _0811253C - .4byte _08112588 - .4byte _08112594 - .4byte _081125BC - .4byte _081125FC - .4byte _08112630 - .4byte _0811266C - .4byte _081126A0 - .4byte _081126E0 - .4byte _081126FC - .4byte _08112728 - .4byte _08112754 - .4byte _081127A0 - .4byte _0811284C - .4byte _081128E4 - .4byte _08112934 - .4byte _08112974 - .4byte _081129A0 - .4byte _081129E8 - .4byte _08112A4C - .4byte _08112A88 -_081124F8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _08112530 @ =gSprites - ldr r0, _08112534 @ =0x02014800 - 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, _08112538 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_08112530: .4byte gSprites -_08112534: .4byte 0x02014800 -_08112538: .4byte gTasks -_0811253C: - ldr r0, _08112574 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0811254C - bl _08112FD0 -_0811254C: - ldr r4, _08112578 @ =gStringVar4 - ldr r1, _0811257C @ =gUnknown_08400C4A - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _08112580 @ =gUnknown_03004210 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112584 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_08112574: .4byte gPaletteFade -_08112578: .4byte gStringVar4 -_0811257C: .4byte gUnknown_08400C4A -_08112580: .4byte gUnknown_03004210 -_08112584: .4byte gTasks -_08112588: - ldr r0, _08112590 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - b _0811297C - .align 2, 0 -_08112590: .4byte gUnknown_03004210 -_08112594: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _081125A2 - bl _08112FD0 -_081125A2: - movs r0, 0xBC - lsls r0, 1 - bl PlaySE - ldr r0, _081125B8 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_081125B8: .4byte gTasks -_081125BC: - bl IsSEPlaying - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _081125CC - bl _08112FD0 -_081125CC: - ldr r0, _081125F4 @ =0x00000179 - bl PlayNewMapMusic - ldr r0, _081125F8 @ =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 _08112FD0 - .align 2, 0 -_081125F4: .4byte 0x00000179 -_081125F8: .4byte gTasks -_081125FC: - ldr r0, _08112624 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0811260C - bl _08112FD0 -_0811260C: - movs r0, 0x11 - bl LaunchTask_PreEvoSparklesSet1 - ldr r1, _08112628 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r0, _0811262C @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_08112624: .4byte gPaletteFade -_08112628: .4byte gBattleCommunication -_0811262C: .4byte gTasks -_08112630: - ldr r4, _08112664 @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08112646 - bl _08112FD0 -_08112646: - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r6 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, _08112668 @ =0x02014800 - movs r0, 0x1 - strb r0, [r1, 0x3] - bl LaunchTask_PreEvoSparklesSet2 - strb r0, [r4, 0x2] - bl _08112FD0 - .align 2, 0 -_08112664: .4byte gBattleCommunication -_08112668: .4byte 0x02014800 -_0811266C: - ldr r4, _08112698 @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08112682 - bl _08112FD0 -_08112682: - ldr r1, _0811269C @ =0x02014800 - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - bl sub_8149E7C - strb r0, [r4, 0x2] - mov r0, r8 - adds r1, r0, r7 - lsls r1, 3 - adds r1, r6 - b _08112A2E - .align 2, 0 -_08112698: .4byte gBattleCommunication -_0811269C: .4byte 0x02014800 -_081126A0: - ldr r1, _081126D8 @ =0x02014800 - ldrb r0, [r1, 0x3] - subs r0, 0x1 - strb r0, [r1, 0x3] - lsls r0, 24 - cmp r0, 0 - beq _081126B2 - bl _08112FD0 -_081126B2: - movs r0, 0x3 - strb r0, [r1, 0x3] - ldr r0, _081126DC @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _081126CC - bl _08112FD0 -_081126CC: - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r6 - b _08112A2E - .align 2, 0 -_081126D8: .4byte 0x02014800 -_081126DC: .4byte gBattleCommunication -_081126E0: - bl LaunchTask_PostEvoSparklesSet1 - ldr r1, _081126F4 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r0, _081126F8 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_081126F4: .4byte gBattleCommunication -_081126F8: .4byte gTasks -_081126FC: - ldr r5, _08112724 @ =gBattleCommunication - ldrb r0, [r5, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08112712 - bl _08112FD0 -_08112712: - mov r0, r8 - adds r4, r0, r7 - lsls r4, 3 - adds r4, r6 - ldrh r0, [r4, 0x10] - bl LaunchTask_PostEvoSparklesSet2AndFlash - strb r0, [r5, 0x2] - b _08112992 - .align 2, 0 -_08112724: .4byte gBattleCommunication -_08112728: - ldr r0, _08112750 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _0811273E - bl _08112FD0 -_0811273E: - movs r0, 0x21 - bl PlaySE - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r6 - b _08112A2E - .align 2, 0 -_08112750: .4byte gBattleCommunication -_08112754: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08112762 - bl _08112FD0 -_08112762: - bl m4aMPlayAllStop - ldr r0, _08112794 @ =gTasks - mov r3, r8 - adds r4, r3, r7 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0x10] - movs r1, 0 - bl PlayCry1 - ldr r0, _08112798 @ =gPlttBufferUnfaded + 0x40 - ldr r1, _0811279C @ =0x02009000 - movs r2, 0x60 - bl memcpy - movs r0, 0 - str r0, [sp] - movs r0, 0x1C - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08112992 - .align 2, 0 -_08112794: .4byte gTasks -_08112798: .4byte gPlttBufferUnfaded + 0x40 -_0811279C: .4byte 0x02009000 -_081127A0: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _081127AE - bl _08112FD0 -_081127AE: - ldr r0, _08112834 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081127BE - bl _08112FD0 -_081127BE: - ldr r4, _08112838 @ =gStringVar4 - ldr r1, _0811283C @ =gUnknown_08400C60 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _08112840 @ =gUnknown_03004210 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112844 @ =0x00000173 - bl PlayBGM - ldr r2, _08112848 @ =gTasks - mov r0, r8 - adds r1, r0, r7 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - adds r2, r1 - adds r2, 0x10 - mov r0, r9 - movs r1, 0xB - bl SetMonData - mov r0, r9 - bl CalculateMonStats - ldrh r1, [r4, 0xE] - ldrh r2, [r4, 0x10] - mov r0, r9 - bl EvolutionRenameMon - ldrh r0, [r4, 0x10] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetNationalPokedexFlag - ldrh r0, [r4, 0x10] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl GetNationalPokedexFlag - movs r0, 0xE - bl IncrementGameStat - b _08112FD0 - .align 2, 0 -_08112834: .4byte gPaletteFade -_08112838: .4byte gStringVar4 -_0811283C: .4byte gUnknown_08400C60 -_08112840: .4byte gUnknown_03004210 -_08112844: .4byte 0x00000173 -_08112848: .4byte gTasks -_0811284C: - ldr r0, _081128A4 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - beq _08112856 - b _08112FD0 -_08112856: - mov r1, r8 - adds r0, r1, r7 - lsls r0, 3 - adds r5, r0, r6 - ldrb r1, [r5, 0x14] - mov r0, r9 - bl sub_803B7C8 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0 - beq _081128C4 - movs r2, 0x1E - ldrsh r4, [r5, r2] - cmp r4, 0 - bne _081128C4 - bl sub_8053E90 - ldrh r1, [r5, 0x12] - movs r0, 0x80 - orrs r0, r1 - strh r0, [r5, 0x12] - strh r4, [r5, 0x14] - strh r4, [r5, 0x18] - mov r0, r9 - movs r1, 0x2 - add r2, sp, 0x4 - bl GetMonData - ldr r0, _081128A8 @ =gBattleTextBuff1 - add r1, sp, 0x4 - bl StringCopy10 - ldr r0, _081128AC @ =0x0000ffff - cmp r6, r0 - bne _081128B0 - movs r0, 0x15 - strh r0, [r5, 0x8] - b _08112FD0 - .align 2, 0 -_081128A4: .4byte gUnknown_03004210 -_081128A8: .4byte gBattleTextBuff1 -_081128AC: .4byte 0x0000ffff -_081128B0: - ldr r0, _081128C0 @ =0x0000fffe - cmp r6, r0 - bne _081128B8 - b _08112FD0 -_081128B8: - movs r0, 0x13 - strh r0, [r5, 0x8] - b _08112FD0 - .align 2, 0 -_081128C0: .4byte 0x0000fffe -_081128C4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _081128E0 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - b _08112A2E - .align 2, 0 -_081128E0: .4byte gTasks -_081128E4: - ldr r0, _0811292C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _081128F4 - b _08112FD0 -_081128F4: - mov r1, r8 - adds r0, r1, r7 - lsls r0, 3 - adds r4, r0, r6 - ldrh r1, [r4, 0x12] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0811290A - bl sub_8053E90 -_0811290A: - movs r2, 0x1E - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0811291A - ldrh r0, [r4, 0xE] - mov r1, r9 - bl CreateShedinja -_0811291A: - adds r0, r7, 0 - bl DestroyTask - ldr r0, _08112930 @ =gUnknown_03005E94 - ldr r0, [r0] - bl SetMainCallback2 - b _08112FD0 - .align 2, 0 -_0811292C: .4byte gPaletteFade -_08112930: .4byte gUnknown_03005E94 -_08112934: - ldr r0, _08112968 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08112948 - b _08112FD0 -_08112948: - bl m4aMPlayAllStop - ldr r0, _0811296C @ =0x0006001c - ldr r1, _08112970 @ =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 - adds r1, r6 - b _08112A2E - .align 2, 0 -_08112968: .4byte gBattleCommunication -_0811296C: .4byte 0x0006001c -_08112970: .4byte 0x00007fff -_08112974: - ldr r0, _0811299C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 -_0811297C: - cmp r0, 0 - beq _08112982 - b _08112FD0 -_08112982: - mov r0, r8 - adds r4, r0, r7 - lsls r4, 3 - adds r4, r6 - ldrh r0, [r4, 0xE] - movs r1, 0 - bl PlayCry1 -_08112992: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08112FD0 - .align 2, 0 -_0811299C: .4byte gPaletteFade -_081129A0: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _081129AC - b _08112FD0 -_081129AC: - ldr r4, _081129D8 @ =gStringVar4 - ldr r1, _081129DC @ =gUnknown_08400C8D - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _081129E0 @ =gUnknown_03004210 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _081129E4 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0x1E] - b _08112F9A - .align 2, 0 -_081129D8: .4byte gStringVar4 -_081129DC: .4byte gUnknown_08400C8D -_081129E0: .4byte gUnknown_03004210 -_081129E4: .4byte gTasks -_081129E8: - ldr r4, _08112A38 @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - beq _081129F2 - b _08112FD0 -_081129F2: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _081129FE - b _08112FD0 -_081129FE: - bl sub_8024CEC - ldr r0, _08112A3C @ =0x0000016f - bl PlayFanfare - ldr r0, _08112A40 @ =gBattleStringsTable - ldr r0, [r0, 0xC] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112A44 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112A48 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x40 - strh r0, [r1, 0x14] -_08112A2E: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _08112FD0 - .align 2, 0 -_08112A38: .4byte gUnknown_03004210 -_08112A3C: .4byte 0x0000016f -_08112A40: .4byte gBattleStringsTable -_08112A44: .4byte gDisplayedStringBattle -_08112A48: .4byte gTasks -_08112A4C: - ldr r0, _08112A80 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - beq _08112A56 - b _08112FD0 -_08112A56: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08112A62 - b _08112FD0 -_08112A62: - ldr r0, _08112A84 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - subs r0, 0x1 - strh r0, [r1, 0x14] - lsls r0, 16 - cmp r0, 0 - beq _08112A7A - b _08112FD0 -_08112A7A: - movs r0, 0xE - strh r0, [r1, 0x8] - b _08112FD0 - .align 2, 0 -_08112A80: .4byte gUnknown_03004210 -_08112A84: .4byte gTasks -_08112A88: - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r0, r6 - movs r1, 0x18 - ldrsh r0, [r0, r1] - cmp r0, 0xB - bls _08112A9A - b _08112FD0 -_08112A9A: - lsls r0, 2 - ldr r1, _08112AA4 @ =_08112AA8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08112AA4: .4byte _08112AA8 - .align 2, 0 -_08112AA8: - .4byte _08112AD8 - .4byte _08112B2C - .4byte _08112B7C - .4byte _08112BC0 - .4byte _08112C0C - .4byte _08112D3C - .4byte _08112D8C - .4byte _08112E98 - .4byte _08112EE8 - .4byte _08112F38 - .4byte _08112F78 - .4byte _08112FB0 -_08112AD8: - ldr r4, _08112B1C @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - beq _08112AE2 - b _08112FD0 -_08112AE2: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08112AEE - b _08112FD0 -_08112AEE: - bl sub_8024CEC - ldr r0, _08112B20 @ =gBattleStringsTable - ldr r0, [r0, 0x10] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112B24 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112B28 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08112FCE - .align 2, 0 -_08112B1C: .4byte gUnknown_03004210 -_08112B20: .4byte gBattleStringsTable -_08112B24: .4byte gDisplayedStringBattle -_08112B28: .4byte gTasks -_08112B2C: - ldr r4, _08112B6C @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - beq _08112B36 - b _08112FD0 -_08112B36: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08112B42 - b _08112FD0 -_08112B42: - ldr r0, _08112B70 @ =gBattleStringsTable - ldr r0, [r0, 0x14] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112B74 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112B78 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08112FCE - .align 2, 0 -_08112B6C: .4byte gUnknown_03004210 -_08112B70: .4byte gBattleStringsTable -_08112B74: .4byte gDisplayedStringBattle -_08112B78: .4byte gTasks -_08112B7C: - ldr r4, _08112BF8 @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - beq _08112B86 - b _08112FD0 -_08112B86: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08112BC0 - ldr r0, _08112BFC @ =gBattleStringsTable - ldr r0, [r0, 0x18] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112C00 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112C04 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 - strh r0, [r1, 0x1A] - movs r0, 0x9 - strh r0, [r1, 0x1C] - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] -_08112BC0: - ldr r0, _08112BF8 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - beq _08112BCA - b _08112FD0 -_08112BCA: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08112BD6 - b _08112FD0 -_08112BD6: - bl sub_8023A80 - ldr r0, _08112C04 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - movs r2, 0 - strh r0, [r1, 0x18] - ldr r0, _08112C08 @ =gBattleCommunication - strb r2, [r0, 0x1] - bl sub_802BC6C - b _08112FD0 - .align 2, 0 -_08112BF8: .4byte gUnknown_03004210 -_08112BFC: .4byte gBattleStringsTable -_08112C00: .4byte gDisplayedStringBattle -_08112C04: .4byte gTasks -_08112C08: .4byte gBattleCommunication -_08112C0C: - ldr r0, _08112CA4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08112C32 - ldr r4, _08112CA8 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08112C32 - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0 - strb r0, [r4, 0x1] - bl sub_802BC6C -_08112C32: - ldr r0, _08112CA4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08112C58 - ldr r4, _08112CA8 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08112C58 - movs r0, 0x5 - bl PlaySE - bl nullsub_6 - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_802BC6C -_08112C58: - ldr r0, _08112CA4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08112CE2 - bl sub_8023AD8 - ldr r0, _08112CAC @ =gBattleStringsTable - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112CB0 @ =gUnknown_03004210 - ldr r1, _08112CB4 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - movs r0, 0x5 - bl PlaySE - ldr r0, _08112CA8 @ =gBattleCommunication - ldrb r2, [r0, 0x1] - cmp r2, 0 - beq _08112CBC - ldr r0, _08112CB8 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1C] - strh r0, [r1, 0x18] - b _08112CE2 - .align 2, 0 -_08112CA4: .4byte gMain -_08112CA8: .4byte gBattleCommunication -_08112CAC: .4byte gBattleStringsTable -_08112CB0: .4byte gUnknown_03004210 -_08112CB4: .4byte gDisplayedStringBattle -_08112CB8: .4byte gTasks -_08112CBC: - ldr r0, _08112D28 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1A] - strh r0, [r1, 0x18] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _08112CE2 - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_08112CE2: - ldr r0, _08112D2C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08112CF0 - b _08112FD0 -_08112CF0: - bl sub_8023AD8 - ldr r0, _08112D30 @ =gBattleStringsTable - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112D34 @ =gUnknown_03004210 - ldr r1, _08112D38 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - movs r0, 0x5 - bl PlaySE - ldr r1, _08112D28 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x1C] - strh r1, [r0, 0x18] - b _08112FD0 - .align 2, 0 -_08112D28: .4byte gTasks -_08112D2C: .4byte gMain -_08112D30: .4byte gBattleStringsTable -_08112D34: .4byte gUnknown_03004210 -_08112D38: .4byte gDisplayedStringBattle -_08112D3C: - ldr r0, _08112D78 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08112D4A - b _08112FD0 -_08112D4A: - ldr r0, _08112D7C @ =gPlayerParty - mov r3, r8 - adds r5, r3, r7 - lsls r5, 3 - adds r5, r6 - ldrh r1, [r5, 0x20] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08112D80 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08112D84 @ =CB2_EvolutionSceneLoadGraphics - ldr r4, _08112D88 @ =word_2024E82 - ldrh r4, [r4] - str r4, [sp] - bl sub_809D9F0 - ldrh r0, [r5, 0x18] - adds r0, 0x1 - strh r0, [r5, 0x18] - b _08112FD0 - .align 2, 0 -_08112D78: .4byte gPaletteFade -_08112D7C: .4byte gPlayerParty -_08112D80: .4byte gPlayerPartyCount -_08112D84: .4byte CB2_EvolutionSceneLoadGraphics -_08112D88: .4byte word_2024E82 -_08112D8C: - ldr r0, _08112DC0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08112D9A - b _08112FD0 -_08112D9A: - ldr r1, [r4, 0x4] - ldr r0, _08112DC4 @ =CB2_EvolutionSceneUpdate_0 - cmp r1, r0 - beq _08112DA4 - b _08112FD0 -_08112DA4: - bl sub_809FA30 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bne _08112DCC - ldr r0, _08112DC8 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x9 - b _08112FCE - .align 2, 0 -_08112DC0: .4byte gPaletteFade -_08112DC4: .4byte CB2_EvolutionSceneUpdate_0 -_08112DC8: .4byte gTasks -_08112DCC: - 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 _08112E24 - ldr r0, _08112E10 @ =gBattleStringsTable - ldr r3, _08112E14 @ =0x000004cc - adds r0, r3 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112E18 @ =gUnknown_03004210 - ldr r1, _08112E1C @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08112E20 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0xB - strh r1, [r0, 0x18] - b _08112FD0 - .align 2, 0 -_08112E10: .4byte gBattleStringsTable -_08112E14: .4byte 0x000004cc -_08112E18: .4byte gUnknown_03004210 -_08112E1C: .4byte gDisplayedStringBattle -_08112E20: .4byte gTasks -_08112E24: - ldr r1, _08112E80 @ =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, _08112E84 @ =word_2024E82 - ldrh r1, [r0] - mov r0, r9 - adds r2, r4, 0 - bl SetMonMoveSlot - ldr r0, _08112E88 @ =gBattleStringsTable - movs r3, 0xCF - lsls r3, 2 - adds r0, r3 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112E8C @ =gUnknown_03004210 - ldr r1, _08112E90 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112E94 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08112FCE - .align 2, 0 -_08112E80: .4byte gBattleTextBuff2 -_08112E84: .4byte word_2024E82 -_08112E88: .4byte gBattleStringsTable -_08112E8C: .4byte gUnknown_03004210 -_08112E90: .4byte gDisplayedStringBattle -_08112E94: .4byte gTasks -_08112E98: - ldr r4, _08112ED8 @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - beq _08112EA2 - b _08112FD0 -_08112EA2: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08112EAE - b _08112FD0 -_08112EAE: - ldr r0, _08112EDC @ =gBattleStringsTable - ldr r0, [r0, 0x1C] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112EE0 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08112EE4 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08112FCE - .align 2, 0 -_08112ED8: .4byte gUnknown_03004210 -_08112EDC: .4byte gBattleStringsTable -_08112EE0: .4byte gDisplayedStringBattle -_08112EE4: .4byte gTasks -_08112EE8: - ldr r4, _08112F28 @ =gUnknown_03004210 - ldrh r0, [r4, 0x16] - cmp r0, 0 - bne _08112FD0 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08112FD0 - ldr r0, _08112F2C @ =gBattleStringsTable - movs r1, 0xD0 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r1, _08112F30 @ =gDisplayedStringBattle - movs r0, 0xF - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08112F34 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x13 - strh r1, [r0, 0x8] - b _08112FD0 - .align 2, 0 -_08112F28: .4byte gUnknown_03004210 -_08112F2C: .4byte gBattleStringsTable -_08112F30: .4byte gDisplayedStringBattle -_08112F34: .4byte gTasks -_08112F38: - ldr r0, _08112F68 @ =gBattleStringsTable - ldr r0, [r0, 0x20] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112F6C @ =gUnknown_03004210 - ldr r1, _08112F70 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08112F74 @ =gTasks - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0xA - strh r1, [r0, 0x1A] - strh r2, [r0, 0x1C] - movs r1, 0x3 - strh r1, [r0, 0x18] - b _08112FD0 - .align 2, 0 -_08112F68: .4byte gBattleStringsTable -_08112F6C: .4byte gUnknown_03004210 -_08112F70: .4byte gDisplayedStringBattle -_08112F74: .4byte gTasks -_08112F78: - ldr r0, _08112FA0 @ =gBattleStringsTable - ldr r0, [r0, 0x24] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08112FA4 @ =gUnknown_03004210 - ldr r1, _08112FA8 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08112FAC @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 -_08112F9A: - movs r1, 0xE - strh r1, [r0, 0x8] - b _08112FD0 - .align 2, 0 -_08112FA0: .4byte gBattleStringsTable -_08112FA4: .4byte gUnknown_03004210 -_08112FA8: .4byte gDisplayedStringBattle -_08112FAC: .4byte gTasks -_08112FB0: - ldr r0, _08112FE0 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - bne _08112FD0 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08112FD0 - ldr r0, _08112FE4 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 -_08112FCE: - strh r0, [r1, 0x18] -_08112FD0: - add sp, 0x18 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08112FE0: .4byte gUnknown_03004210 -_08112FE4: .4byte gTasks - thumb_func_end Task_EvolutionScene - - thumb_func_start Task_TradeEvolutionScene -Task_TradeEvolutionScene: @ 8112FE8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, _0811302C @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r2 - movs r3, 0xA - ldrsh r0, [r1, r3] - mov r8, r0 - movs r3, 0xC - ldrsh r0, [r1, r3] - lsls r0, 16 - mov r3, r8 - orrs r3, r0 - mov r8, r3 - movs r3, 0x8 - ldrsh r0, [r1, r3] - adds r6, r2, 0 - cmp r0, 0x11 - bls _08113020 - bl _08113B3A -_08113020: - lsls r0, 2 - ldr r1, _08113030 @ =_08113034 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811302C: .4byte gTasks -_08113030: .4byte _08113034 - .align 2, 0 -_08113034: - .4byte _0811307C - .4byte _081130B8 - .4byte _081130DC - .4byte _0811310C - .4byte _0811314C - .4byte _0811318C - .4byte _081131C8 - .4byte _081131F4 - .4byte _0811322C - .4byte _08113248 - .4byte _08113274 - .4byte _081132A8 - .4byte _081132F8 - .4byte _081133A8 - .4byte _0811346C - .4byte _08113490 - .4byte _081134F8 - .4byte _08113538 -_0811307C: - ldr r4, _081130A8 @ =gStringVar4 - ldr r1, _081130AC @ =gUnknown_08400C4A - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _081130B0 @ =gUnknown_03004828 - ldr r1, [r0] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _081130B4 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - b _08113298 - .align 2, 0 -_081130A8: .4byte gStringVar4 -_081130AC: .4byte gUnknown_08400C4A -_081130B0: .4byte gUnknown_03004828 -_081130B4: .4byte gTasks -_081130B8: - ldr r0, _081130D8 @ =gUnknown_03004828 - ldr r0, [r0] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _081130C6 - bl _08113B3A -_081130C6: - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r6 - ldrh r0, [r4, 0xE] - movs r1, 0 - bl PlayCry1 - b _081132E2 - .align 2, 0 -_081130D8: .4byte gUnknown_03004828 -_081130DC: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _081130EA - bl _08113B3A -_081130EA: - ldr r0, _08113104 @ =0x00000179 - bl m4aSongNumStop - movs r0, 0xBC - lsls r0, 1 - bl PlaySE - ldr r1, _08113108 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - b _08113298 - .align 2, 0 -_08113104: .4byte 0x00000179 -_08113108: .4byte gTasks -_0811310C: - bl IsSEPlaying - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _0811311C - bl _08113B3A -_0811311C: - ldr r0, _08113144 @ =0x00000179 - bl PlayBGM - ldr r1, _08113148 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - str r5, [sp] - movs r0, 0x1C - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl _08113B3A - .align 2, 0 -_08113144: .4byte 0x00000179 -_08113148: .4byte gTasks -_0811314C: - ldr r0, _08113180 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0811315C - bl _08113B3A -_0811315C: - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0x11 - bl LaunchTask_PreEvoSparklesSet1 - ldr r1, _08113184 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r1, _08113188 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - b _08113298 - .align 2, 0 -_08113180: .4byte gPaletteFade -_08113184: .4byte gBattleCommunication -_08113188: .4byte gTasks -_0811318C: - ldr r4, _081131C0 @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _081131A2 - bl _08113B3A -_081131A2: - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r6 - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - ldr r1, _081131C4 @ =0x02014800 - movs r0, 0x1 - strb r0, [r1, 0x3] - bl LaunchTask_PreEvoSparklesSet2 - strb r0, [r4, 0x2] - bl _08113B3A - .align 2, 0 -_081131C0: .4byte gBattleCommunication -_081131C4: .4byte 0x02014800 -_081131C8: - ldr r4, _081131EC @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _081131DE - bl _08113B3A -_081131DE: - ldr r1, _081131F0 @ =0x02014800 - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - bl sub_8149E7C - strb r0, [r4, 0x2] - b _08113290 - .align 2, 0 -_081131EC: .4byte gBattleCommunication -_081131F0: .4byte 0x02014800 -_081131F4: - ldr r1, _08113224 @ =0x02014800 - ldrb r0, [r1, 0x3] - subs r0, 0x1 - strb r0, [r1, 0x3] - lsls r0, 24 - cmp r0, 0 - beq _08113206 - bl _08113B3A -_08113206: - movs r0, 0x3 - strb r0, [r1, 0x3] - ldr r0, _08113228 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08113220 - bl _08113B3A -_08113220: - b _08113290 - .align 2, 0 -_08113224: .4byte 0x02014800 -_08113228: .4byte gBattleCommunication -_0811322C: - bl LaunchTask_PostEvoSparklesSet1 - ldr r1, _08113240 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r1, _08113244 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - b _08113298 - .align 2, 0 -_08113240: .4byte gBattleCommunication -_08113244: .4byte gTasks -_08113248: - ldr r5, _08113270 @ =gBattleCommunication - ldrb r0, [r5, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _0811325E - bl _08113B3A -_0811325E: - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r6 - ldrh r0, [r4, 0x10] - bl LaunchTask_PostEvoSparklesSet2AndFlash_Trade - strb r0, [r5, 0x2] - b _081132E2 - .align 2, 0 -_08113270: .4byte gBattleCommunication -_08113274: - ldr r0, _081132A4 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _0811328A - bl _08113B3A -_0811328A: - movs r0, 0x21 - bl PlaySE -_08113290: - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r6 -_08113298: - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - bl _08113B3A - .align 2, 0 -_081132A4: .4byte gBattleCommunication -_081132A8: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _081132B6 - bl _08113B3A -_081132B6: - ldr r0, _081132EC @ =gTasks - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0x10] - movs r1, 0 - bl PlayCry1 - ldr r0, _081132F0 @ =gPlttBufferUnfaded + 0x40 - ldr r1, _081132F4 @ =0x02009000 - movs r2, 0x60 - bl memcpy - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_081132E2: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - bl _08113B3A - .align 2, 0 -_081132EC: .4byte gTasks -_081132F0: .4byte gPlttBufferUnfaded + 0x40 -_081132F4: .4byte 0x02009000 -_081132F8: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _08113306 - bl _08113B3A -_08113306: - ldr r0, _08113390 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08113316 - bl _08113B3A -_08113316: - ldr r4, _08113394 @ =gStringVar4 - ldr r1, _08113398 @ =gUnknown_08400C60 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _0811339C @ =gUnknown_03004828 - ldr r1, [r0] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _081133A0 @ =0x00000173 - bl PlayFanfare - ldr r2, _081133A4 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - adds r2, r1 - adds r2, 0x10 - mov r0, r8 - movs r1, 0xB - bl SetMonData - mov r0, r8 - bl CalculateMonStats - ldrh r1, [r4, 0xE] - ldrh r2, [r4, 0x10] - mov r0, r8 - bl EvolutionRenameMon - ldrh r0, [r4, 0x10] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetNationalPokedexFlag - ldrh r0, [r4, 0x10] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl GetNationalPokedexFlag - movs r0, 0xE - bl IncrementGameStat - b _08113B3A - .align 2, 0 -_08113390: .4byte gPaletteFade -_08113394: .4byte gStringVar4 -_08113398: .4byte gUnknown_08400C60 -_0811339C: .4byte gUnknown_03004828 -_081133A0: .4byte 0x00000173 -_081133A4: .4byte gTasks -_081133A8: - ldr r0, _08113410 @ =gUnknown_03004828 - ldr r0, [r0] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _081133B4 - b _08113B3A -_081133B4: - bl IsFanfareTaskInactive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081133C2 - b _08113B3A -_081133C2: - ldr r1, _08113414 @ =gTasks - lsls r4, r7, 2 - adds r0, r4, r7 - lsls r0, 3 - adds r5, r0, r1 - ldrb r1, [r5, 0x14] - mov r0, r8 - bl sub_803B7C8 - lsls r0, 16 - lsrs r6, r0, 16 - mov r9, r4 - cmp r6, 0 - beq _08113434 - movs r3, 0x1E - ldrsh r2, [r5, r3] - cmp r2, 0 - bne _08113434 - ldrh r1, [r5, 0x12] - movs r0, 0x80 - orrs r0, r1 - strh r0, [r5, 0x12] - strh r2, [r5, 0x14] - strh r2, [r5, 0x18] - mov r0, r8 - movs r1, 0x2 - add r2, sp, 0x4 - bl GetMonData - ldr r0, _08113418 @ =gBattleTextBuff1 - add r1, sp, 0x4 - bl StringCopy10 - ldr r0, _0811341C @ =0x0000ffff - cmp r6, r0 - bne _08113420 - movs r0, 0x11 - strh r0, [r5, 0x8] - b _08113B3A - .align 2, 0 -_08113410: .4byte gUnknown_03004828 -_08113414: .4byte gTasks -_08113418: .4byte gBattleTextBuff1 -_0811341C: .4byte 0x0000ffff -_08113420: - ldr r0, _08113430 @ =0x0000fffe - cmp r6, r0 - bne _08113428 - b _08113B3A -_08113428: - movs r0, 0xF - strh r0, [r5, 0x8] - b _08113B3A - .align 2, 0 -_08113430: .4byte 0x0000fffe -_08113434: - ldr r0, _0811345C @ =0x00000179 - bl PlayBGM - ldr r0, _08113460 @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _08113464 @ =gOtherText_LinkStandby2 - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08113468 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _081134DC - .align 2, 0 -_0811345C: .4byte 0x00000179 -_08113460: .4byte gUnknown_03004828 -_08113464: .4byte gOtherText_LinkStandby2 -_08113468: .4byte gTasks -_0811346C: - ldr r0, _08113488 @ =gUnknown_03004828 - ldr r0, [r0] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _08113478 - b _08113B3A -_08113478: - adds r0, r7, 0 - bl DestroyTask - ldr r0, _0811348C @ =gUnknown_03005E94 - ldr r0, [r0] - bl SetMainCallback2 - b _08113B3A - .align 2, 0 -_08113488: .4byte gUnknown_03004828 -_0811348C: .4byte gUnknown_03005E94 -_08113490: - ldr r4, _081134E4 @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _0811349C - b _08113B3A -_0811349C: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _081134A8 - b _08113B3A -_081134A8: - bl sub_8024CEC - ldr r0, _081134E8 @ =0x0000016f - bl PlayFanfare - ldr r0, _081134EC @ =gBattleStringsTable - ldr r0, [r0, 0xC] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _081134F0 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _081134F4 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x40 - strh r0, [r1, 0x14] -_081134DC: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _08113B3A - .align 2, 0 -_081134E4: .4byte gUnknown_03004828 -_081134E8: .4byte 0x0000016f -_081134EC: .4byte gBattleStringsTable -_081134F0: .4byte gDisplayedStringBattle -_081134F4: .4byte gTasks -_081134F8: - ldr r0, _08113530 @ =gUnknown_03004828 - ldr r0, [r0] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _08113504 - b _08113B3A -_08113504: - bl IsFanfareTaskInactive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08113512 - b _08113B3A -_08113512: - ldr r0, _08113534 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - subs r0, 0x1 - strh r0, [r1, 0x14] - lsls r0, 16 - cmp r0, 0 - beq _0811352A - b _08113B3A -_0811352A: - movs r0, 0xD - strh r0, [r1, 0x8] - b _08113B3A - .align 2, 0 -_08113530: .4byte gUnknown_03004828 -_08113534: .4byte gTasks -_08113538: - lsls r1, r7, 2 - adds r0, r1, r7 - lsls r0, 3 - adds r0, r6 - movs r3, 0x18 - ldrsh r0, [r0, r3] - mov r9, r1 - cmp r0, 0xB - bls _0811354C - b _08113B3A -_0811354C: - lsls r0, 2 - ldr r1, _08113558 @ =_0811355C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08113558: .4byte _0811355C - .align 2, 0 -_0811355C: - .4byte _0811358C - .4byte _081135E4 - .4byte _08113638 - .4byte _08113682 - .4byte _0811371C - .4byte _0811387C - .4byte _081138CC - .4byte _081139E8 - .4byte _08113A3C - .4byte _08113A90 - .4byte _08113AD8 - .4byte _08113B18 -_0811358C: - ldr r4, _081135D4 @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _08113598 - b _08113B3A -_08113598: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _081135A4 - b _08113B3A -_081135A4: - bl sub_8024CEC - ldr r0, _081135D8 @ =gBattleStringsTable - ldr r0, [r0, 0x10] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _081135DC @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _081135E0 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08113B38 - .align 2, 0 -_081135D4: .4byte gUnknown_03004828 -_081135D8: .4byte gBattleStringsTable -_081135DC: .4byte gDisplayedStringBattle -_081135E0: .4byte gTasks -_081135E4: - ldr r4, _08113628 @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _081135F0 - b _08113B3A -_081135F0: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _081135FC - b _08113B3A -_081135FC: - ldr r0, _0811362C @ =gBattleStringsTable - ldr r0, [r0, 0x14] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _08113630 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08113634 @ =gTasks - mov r3, r9 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08113B38 - .align 2, 0 -_08113628: .4byte gUnknown_03004828 -_0811362C: .4byte gBattleStringsTable -_08113630: .4byte gDisplayedStringBattle -_08113634: .4byte gTasks -_08113638: - ldr r4, _081136FC @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _08113644 - b _08113B3A -_08113644: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08113682 - ldr r0, _08113700 @ =gBattleStringsTable - ldr r0, [r0, 0x18] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _08113704 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08113708 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 - strh r0, [r1, 0x1A] - movs r0, 0x9 - strh r0, [r1, 0x1C] - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] -_08113682: - ldr r5, _081136FC @ =gUnknown_03004828 - ldr r0, [r5] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _0811368E - b _08113B3A -_0811368E: - bl IsSEPlaying - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _0811369C - b _08113B3A -_0811369C: - ldr r0, [r5] - adds r0, 0x4 - movs r1, 0xD - str r1, [sp] - movs r1, 0x18 - movs r2, 0x8 - movs r3, 0x1D - bl DrawTextWindow - ldr r4, _0811370C @ =gBattleCommunication - strb r6, [r4, 0x1] - ldr r2, [r5] - adds r0, r2, 0x4 - ldr r1, _08113710 @ =gOtherText_YesNoAndPlayer - adds r2, 0x34 - ldrb r2, [r2] - adds r2, 0x80 - movs r3, 0x9 - str r3, [sp] - movs r3, 0x19 - bl InitWindow - ldr r0, [r5] - adds r0, 0x4 - bl sub_8002F44 - ldr r1, _08113714 @ =0x0000ffff - ldr r3, _08113718 @ =0x00002d9f - movs r0, 0x20 - str r0, [sp] - movs r0, 0 - movs r2, 0xC - bl sub_814A5C0 - bl sub_81150D8 - ldr r0, _08113708 @ =gTasks - mov r3, r9 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - movs r2, 0 - strh r0, [r1, 0x18] - strb r2, [r4, 0x1] - b _08113B3A - .align 2, 0 -_081136FC: .4byte gUnknown_03004828 -_08113700: .4byte gBattleStringsTable -_08113704: .4byte gDisplayedStringBattle -_08113708: .4byte gTasks -_0811370C: .4byte gBattleCommunication -_08113710: .4byte gOtherText_YesNoAndPlayer -_08113714: .4byte 0x0000ffff -_08113718: .4byte 0x00002d9f -_0811371C: - ldr r0, _081137CC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08113742 - ldr r4, _081137D0 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08113742 - movs r0, 0x5 - bl PlaySE - bl HBlankCB_TradeEvolutionScene - movs r0, 0 - strb r0, [r4, 0x1] - bl sub_81150D8 -_08113742: - ldr r0, _081137CC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08113768 - ldr r4, _081137D0 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08113768 - movs r0, 0x5 - bl PlaySE - bl HBlankCB_TradeEvolutionScene - movs r0, 0x1 - strb r0, [r4, 0x1] - bl sub_81150D8 -_08113768: - ldr r0, _081137CC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0811380A - ldr r4, _081137D4 @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0x4 - movs r1, 0xD - str r1, [sp] - movs r1, 0x18 - movs r2, 0x8 - movs r3, 0x1D - bl ZeroFillWindowRect - bl DestroyMenuCursor - ldr r0, _081137D8 @ =gBattleStringsTable - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _081137DC @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - movs r0, 0x5 - bl PlaySE - ldr r0, _081137D0 @ =gBattleCommunication - ldrb r2, [r0, 0x1] - cmp r2, 0 - beq _081137E4 - ldr r0, _081137E0 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1C] - strh r0, [r1, 0x18] - b _0811380A - .align 2, 0 -_081137CC: .4byte gMain -_081137D0: .4byte gBattleCommunication -_081137D4: .4byte gUnknown_03004828 -_081137D8: .4byte gBattleStringsTable -_081137DC: .4byte gDisplayedStringBattle -_081137E0: .4byte gTasks -_081137E4: - ldr r0, _08113868 @ =gTasks - mov r3, r9 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1A] - strh r0, [r1, 0x18] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _0811380A - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0811380A: - ldr r0, _0811386C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08113818 - b _08113B3A -_08113818: - ldr r4, _08113870 @ =gUnknown_03004828 - ldr r0, [r4] - adds r0, 0x4 - movs r1, 0xD - str r1, [sp] - movs r1, 0x18 - movs r2, 0x8 - movs r3, 0x1D - bl ZeroFillWindowRect - bl DestroyMenuCursor - ldr r0, _08113874 @ =gBattleStringsTable - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _08113878 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - movs r0, 0x5 - bl PlaySE - ldr r1, _08113868 @ =gTasks - mov r2, r9 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x1C] - strh r1, [r0, 0x18] - b _08113B3A - .align 2, 0 -_08113868: .4byte gTasks -_0811386C: .4byte gMain -_08113870: .4byte gUnknown_03004828 -_08113874: .4byte gBattleStringsTable -_08113878: .4byte gDisplayedStringBattle -_0811387C: - ldr r0, _081138B8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0811388A - b _08113B3A -_0811388A: - ldr r0, _081138BC @ =gPlayerParty - mov r3, r9 - adds r5, r3, r7 - lsls r5, 3 - adds r5, r6 - ldrh r1, [r5, 0x20] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _081138C0 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _081138C4 @ =CB2_TradeEvolutionSceneLoadGraphics - ldr r4, _081138C8 @ =word_2024E82 - ldrh r4, [r4] - str r4, [sp] - bl sub_809D9F0 - ldrh r0, [r5, 0x18] - adds r0, 0x1 - strh r0, [r5, 0x18] - b _08113B3A - .align 2, 0 -_081138B8: .4byte gPaletteFade -_081138BC: .4byte gPlayerParty -_081138C0: .4byte gPlayerPartyCount -_081138C4: .4byte CB2_TradeEvolutionSceneLoadGraphics -_081138C8: .4byte word_2024E82 -_081138CC: - ldr r0, _08113900 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081138DA - b _08113B3A -_081138DA: - ldr r0, _08113904 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _08113908 @ =CB2_EvolutionSceneUpdate_1 - cmp r1, r0 - beq _081138E6 - b _08113B3A -_081138E6: - bl sub_809FA30 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bne _08113910 - ldr r0, _0811390C @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x9 - b _08113B38 - .align 2, 0 -_08113900: .4byte gPaletteFade -_08113904: .4byte gMain -_08113908: .4byte CB2_EvolutionSceneUpdate_1 -_0811390C: .4byte gTasks -_08113910: - adds r1, r6, 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 _08113970 - ldr r0, _0811395C @ =gBattleStringsTable - ldr r3, _08113960 @ =0x000004cc - adds r0, r3 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08113964 @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _08113968 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _0811396C @ =gTasks - mov r2, r9 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0xB - strh r1, [r0, 0x18] - b _08113B3A - .align 2, 0 -_0811395C: .4byte gBattleStringsTable -_08113960: .4byte 0x000004cc -_08113964: .4byte gUnknown_03004828 -_08113968: .4byte gDisplayedStringBattle -_0811396C: .4byte gTasks -_08113970: - ldr r1, _081139D0 @ =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, r8 - adds r1, r4, 0 - bl RemoveMonPPBonus - ldr r0, _081139D4 @ =word_2024E82 - ldrh r1, [r0] - mov r0, r8 - adds r2, r4, 0 - bl SetMonMoveSlot - ldr r0, _081139D8 @ =gBattleStringsTable - movs r3, 0xCF - lsls r3, 2 - adds r0, r3 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _081139DC @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _081139E0 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _081139E4 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08113B38 - .align 2, 0 -_081139D0: .4byte gBattleTextBuff2 -_081139D4: .4byte word_2024E82 -_081139D8: .4byte gBattleStringsTable -_081139DC: .4byte gUnknown_03004828 -_081139E0: .4byte gDisplayedStringBattle -_081139E4: .4byte gTasks -_081139E8: - ldr r4, _08113A2C @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - beq _081139F4 - b _08113B3A -_081139F4: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08113A00 - b _08113B3A -_08113A00: - ldr r0, _08113A30 @ =gBattleStringsTable - ldr r0, [r0, 0x1C] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _08113A34 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r0, _08113A38 @ =gTasks - mov r3, r9 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - b _08113B38 - .align 2, 0 -_08113A2C: .4byte gUnknown_03004828 -_08113A30: .4byte gBattleStringsTable -_08113A34: .4byte gDisplayedStringBattle -_08113A38: .4byte gTasks -_08113A3C: - ldr r4, _08113A80 @ =gUnknown_03004828 - ldr r0, [r4] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - bne _08113B3A - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08113B3A - ldr r0, _08113A84 @ =gBattleStringsTable - movs r1, 0xD0 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - bl StrCpyDecodeToDisplayedStringBattle - ldr r2, [r4] - adds r0, r2, 0x4 - ldr r1, _08113A88 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r4, 0xF - str r4, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08113A8C @ =gTasks - mov r2, r9 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x8] - b _08113B3A - .align 2, 0 -_08113A80: .4byte gUnknown_03004828 -_08113A84: .4byte gBattleStringsTable -_08113A88: .4byte gDisplayedStringBattle -_08113A8C: .4byte gTasks -_08113A90: - ldr r0, _08113AC8 @ =gBattleStringsTable - ldr r0, [r0, 0x20] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08113ACC @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _08113AD0 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08113AD4 @ =gTasks - mov r3, r9 - adds r0, r3, r7 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0xA - strh r1, [r0, 0x1A] - strh r2, [r0, 0x1C] - movs r1, 0x3 - strh r1, [r0, 0x18] - b _08113B3A - .align 2, 0 -_08113AC8: .4byte gBattleStringsTable -_08113ACC: .4byte gUnknown_03004828 -_08113AD0: .4byte gDisplayedStringBattle -_08113AD4: .4byte gTasks -_08113AD8: - ldr r0, _08113B08 @ =gBattleStringsTable - ldr r0, [r0, 0x24] - bl StrCpyDecodeToDisplayedStringBattle - ldr r0, _08113B0C @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0x4 - ldr r1, _08113B10 @ =gDisplayedStringBattle - adds r2, 0x34 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08113B14 @ =gTasks - mov r2, r9 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0xD - strh r1, [r0, 0x8] - b _08113B3A - .align 2, 0 -_08113B08: .4byte gBattleStringsTable -_08113B0C: .4byte gUnknown_03004828 -_08113B10: .4byte gDisplayedStringBattle -_08113B14: .4byte gTasks -_08113B18: - ldr r0, _08113B48 @ =gUnknown_03004828 - ldr r0, [r0] - ldrh r0, [r0, 0x1A] - cmp r0, 0 - bne _08113B3A - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08113B3A - ldr r0, _08113B4C @ =gTasks - mov r3, r9 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 -_08113B38: - strh r0, [r1, 0x18] -_08113B3A: - add sp, 0x18 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08113B48: .4byte gUnknown_03004828 -_08113B4C: .4byte gTasks - thumb_func_end Task_TradeEvolutionScene thumb_func_start unref_sub_8113B50 unref_sub_8113B50: @ 8113B50 diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h index c217f22af..a960f637b 100644 --- a/include/evolution_graphics.h +++ b/include/evolution_graphics.h @@ -6,8 +6,10 @@ void LoadEvoSparkleSpriteAndPal(void); u8 LaunchTask_PreEvoSparklesSet1(u16 arg0); u8 LaunchTask_PreEvoSparklesSet2(void); u8 LaunchTask_PostEvoSparklesSet1(void); -u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 arg0); -u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 arg0); +u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species); +u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species); u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID); +#define EvoGraphicsTaskEvoStop data[8] + #endif // GUARD_EVOLUTION_GRAPHICS_H diff --git a/include/trade.h b/include/trade.h new file mode 100644 index 000000000..a4f05e8ed --- /dev/null +++ b/include/trade.h @@ -0,0 +1,18 @@ +#ifndef GUARD_TRADE_H +#define GUARD_TRADE_H + +struct SomeTradeStruct +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + struct Window field_4; + u8 field_34; +}; + +extern struct SomeTradeStruct* gUnknown_03004828; + +void sub_804E22C(void); + +#endif // GUARD_TRADE_H diff --git a/ld_script.txt b/ld_script.txt index 7ad3c3ddb..e43de493d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -218,6 +218,7 @@ SECTIONS { src/field_specials.o(.text); src/battle_records.o(.text); asm/pokedex_area_screen.o(.text); + src/evolution_scene.o(.text); asm/evolution_scene.o(.text); asm/roulette.o(.text); asm/pokedex_cry_screen.o(.text); diff --git a/shared_syms.txt b/shared_syms.txt index 884f0e89d..571e0633e 100644 --- a/shared_syms.txt +++ b/shared_syms.txt @@ -3,6 +3,8 @@ ewram = 0x2000000; unk_2004000 = 0x2004000; +gUnk_2009000 = 0x2009000; + unk_2007800 = 0x2007800; unk_2007900 = 0x2007900; diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c index a47e63a59..1fd5bf8fa 100644 --- a/src/evolution_graphics.c +++ b/src/evolution_graphics.c @@ -1,4 +1,5 @@ #include "global.h" +#include "evolution_graphics.h" #include "sprite.h" #include "trig.h" #include "rng.h" @@ -376,10 +377,10 @@ static void EvoTask_DestroyPostSet1Task(u8 taskID) DestroyTask(taskID); } -u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 arg0) +u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species) { u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash, 0); - gTasks[taskID].data[2] = arg0; + gTasks[taskID].data[2] = species; return taskID; } @@ -424,10 +425,10 @@ static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID) DestroyTask(taskID); } -u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 arg0) +u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species) { u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash_Trade, 0); - gTasks[taskID].data[2] = arg0; + gTasks[taskID].data[2] = species; return taskID; } diff --git a/src/evolution_scene.c b/src/evolution_scene.c new file mode 100644 index 000000000..77054c233 --- /dev/null +++ b/src/evolution_scene.c @@ -0,0 +1,1184 @@ +#include "global.h" +#include "task.h" +#include "evolution_graphics.h" +#include "palette.h" +#include "main.h" +#include "text.h" +#include "text_window.h" +#include "pokemon.h" +#include "string_util.h" +#include "battle.h" +#include "unknown_task.h" +#include "data2.h" +#include "decompress.h" +#include "m4a.h" +#include "trade.h" +#include "menu.h" +#include "pokedex.h" +#include "species.h" +#include "sound.h" +#include "songs.h" +#include "rom4.h" +#include "battle_message.h" +#include "pokemon_summary_screen.h" +#include "menu_cursor.h" +#include "strings2.h" + +struct EvoInfo +{ + u8 preEvoSpriteID; + u8 postEvoSpriteID; + u8 evoTaskID; + u8 field_3; +}; + +#define sEvoInfo (*(struct EvoInfo *)(ewram + 0x14800)) + +void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); +void sub_8024CEC(void); +void sub_8023A80(void); +void sub_802BC6C(void); +void sub_8023AD8(void); +void sub_81150D8(void); +void nullsub_6(void); +bool32 IsHMMove2(u16 move); + +extern struct Window gUnknown_03004210; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_03004288; +extern u16 gUnknown_03004280; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B8; +extern u8 gBattleTerrain; +extern u8 gReservedSpritePaletteCount; +extern u16 word_2024E82; + +extern void * const gUnknown_081FAF4C[]; +extern const u8* const gBattleStringsTable[]; + +extern struct SpriteTemplate gUnknown_02024E8C; +extern u8 gUnk_2009000[]; // won't match if I 'ewram' it +extern bool8 gAffineAnimsDisabled; +extern MainCallback gUnknown_03005E94; +extern u8 gDisplayedStringBattle[]; +extern u8 gBattleTextBuff2[]; + +extern u8 gBattleCommunication[]; +#define sEvoCursorPos gBattleCommunication[1] // when learning a new move +#define sEvoGraphicsTaskID gBattleCommunication[2] + +// this file's functions +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void Task_EvolutionScene(u8 taskID); +void Task_TradeEvolutionScene(u8 taskID); +void VBlankCB_EvolutionScene(void); +void VBlankCB_TradeEvolutionScene(void); +void HBlankCB_EvolutionScene(void); +void CB2_EvolutionSceneUpdate(void); +void CB2_TradeEvolutionSceneUpdate(void); +void HBlankCB_TradeEvolutionScene(void); + +void CB2_BeginEvolutionScene(void) +{ + UpdatePaletteFade(); + RunTasks(); +} + +#define tState data[0] +#define tMonPtrHI data[1] +#define tMonPtrLO data[2] +#define tPreEvoSpecies data[3] +#define tPostEvoSpecies data[4] +#define tCanStop data[5] // in first fast data[5] only checks that +#define tBits data[5] // in the second task, it works as a bitfield +#define tData6 data[6] +#define tLearnMoveState data[8] +#define tData9 data[9] +#define tData10 data[10] +#define tEvoWasStopped data[11] +#define tPartyID data[12] + +#define TASK_BIT_CAN_STOP 0x1 +#define TASK_BIT_LEARN_MOVE 0x80 + +void Task_BeginEvolutionScene(u8 taskID) +{ + struct Pokemon* mon = NULL; + switch (gTasks[taskID].tState) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].tState++; + break; + case 1: + if (!gPaletteFade.active) + { + u16 speciesToEvolve; + bool8 canStopEvo; + u8 partyID; + + mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + speciesToEvolve = gTasks[taskID].tPostEvoSpecies; + canStopEvo = gTasks[taskID].tCanStop; + partyID = gTasks[taskID].tPartyID; + + DestroyTask(taskID); + EvolutionScene(mon, speciesToEvolve, canStopEvo, partyID); + } + break; + } +} + +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) +{ + u8 taskID = CreateTask(Task_BeginEvolutionScene, 0); + gTasks[taskID].tState = 0; + gTasks[taskID].tMonPtrHI = (u32)(mon); + gTasks[taskID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[taskID].tPostEvoSpecies = speciesToEvolve; + gTasks[taskID].tCanStop = canStopEvo; + gTasks[taskID].tPartyID = partyID; + SetMainCallback2(CB2_BeginEvolutionScene); +} + +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) +{ + u8 name[20]; + u16 currSpecies; + u32 TiD, PiD; + const struct CompressedSpritePalette** pokePal; + u8 ID; + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); + + REG_MOSAIC = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 256; + gUnknown_030041B8 = 0; + + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + gBattleTerrain = 9; + + sub_800D6D4(); + sub_800DAB8(); + ResetSpriteData(); + remove_some_task(); + ResetTasks(); + FreeAllSpritePalettes(); + + gReservedSpritePaletteCount = 4; + + GetMonData(mon, MON_DATA_NICKNAME, name); + StringCopy10(gStringVar1, name); + StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]); + + // preEvo sprite + currSpecies = GetMonData(mon, MON_DATA_SPECIES); + TiD = GetMonData(mon, MON_DATA_OT_ID); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + DecompressPicFromTable_2(&gMonFrontPicTable[currSpecies], + gMonFrontPicCoords[currSpecies].coords, + gMonFrontPicCoords[currSpecies].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[1], currSpecies); + pokePal = (void*) sub_80409C8(currSpecies, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x110, 0x20); + + GetMonSpriteTemplate_803C56C(currSpecies, 1); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.preEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 1; + gSprites[ID].invisible = 1; + + // postEvo sprite + DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve], + gMonFrontPicCoords[speciesToEvolve].coords, + gMonFrontPicCoords[speciesToEvolve].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[3], speciesToEvolve); + pokePal = (void*) sub_80409C8(speciesToEvolve, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + + GetMonSpriteTemplate_803C56C(speciesToEvolve, 3); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + gSprites[ID].invisible = 1; + + LoadEvoSparkleSpriteAndPal(); + + sEvoInfo.evoTaskID = ID = CreateTask(Task_EvolutionScene, 0); + gTasks[ID].tState = 0; + gTasks[ID].tPreEvoSpecies = currSpecies; + gTasks[ID].tPostEvoSpecies = speciesToEvolve; + gTasks[ID].tMonPtrHI = (u32)(mon); + gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[ID].tCanStop = canStopEvo; + gTasks[ID].tData6 = 1; + gTasks[ID].tEvoWasStopped = FALSE; + gTasks[ID].tPartyID = partyID; + + memcpy(gUnk_2009000, &gPlttBufferUnfaded[0x20], 0x60); + + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP; + SetHBlankCallback(HBlankCB_EvolutionScene); + SetVBlankCallback(VBlankCB_EvolutionScene); + m4aMPlayAllStop(); + SetMainCallback2(CB2_EvolutionSceneUpdate); +} + +void CB2_EvolutionSceneLoadGraphics(void) +{ + u8 ID; + const struct CompressedSpritePalette** pokePal; + u16 postEvoSpecies; + u32 TiD, PiD; + struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID]; + + postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies; + TiD = GetMonData(Mon, MON_DATA_OT_ID); + PiD = GetMonData(Mon, MON_DATA_PERSONALITY); + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); + + REG_MOSAIC = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 256; + gUnknown_030041B8 = 0; + + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + gBattleTerrain = 9; + + sub_800D6D4(); + sub_800DAB8(); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + + DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies], + gMonFrontPicCoords[postEvoSpecies].coords, + gMonFrontPicCoords[postEvoSpecies].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[3], postEvoSpecies); + pokePal = (void*) sub_80409C8(postEvoSpecies, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + + GetMonSpriteTemplate_803C56C(postEvoSpecies, 3); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP; + SetHBlankCallback(HBlankCB_EvolutionScene); + SetVBlankCallback(VBlankCB_EvolutionScene); + SetMainCallback2(CB2_EvolutionSceneUpdate); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); +} + +void CB2_TradeEvolutionSceneLoadGraphics(void) +{ + struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID]; + u16 postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies; + + switch (gMain.state) + { + case 0: + REG_DISPCNT = 0; + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 256; + gUnknown_030041B8 = 0; + gMain.state++; + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gUnknown_03004828->field_4, &gWindowConfig_81E6F84); + gMain.state++; + break; + case 2: + LoadTextWindowGraphics(&gUnknown_03004828->field_4); + gUnknown_03004828->field_34 = SetTextWindowBaseTileNum(2); + LoadTextWindowGraphics(&gUnknown_03004828->field_4); + MenuZeroFillScreen(); + ResetPaletteFade(); + gMain.state++; + SetHBlankCallback(HBlankCB_EvolutionScene); + SetVBlankCallback(VBlankCB_TradeEvolutionScene); + break; + case 3: + sub_804E22C(); + gMain.state++; + break; + case 4: + { + const struct CompressedSpritePalette** pokePal; + u32 TiD = GetMonData(Mon, MON_DATA_OT_ID); + u32 PiD = GetMonData(Mon, MON_DATA_PERSONALITY); + DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies], + gMonFrontPicCoords[postEvoSpecies].coords, + gMonFrontPicCoords[postEvoSpecies].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[3], postEvoSpecies); + pokePal = (void*) sub_80409C8(postEvoSpecies, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + gMain.state++; + } + break; + case 5: + { + u8 ID; + + GetMonSpriteTemplate_803C56C(postEvoSpecies, 3); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + gMain.state++; + } + break; + case 6: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + SetMainCallback2(CB2_TradeEvolutionSceneUpdate); + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP; + break; + } +} + +void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID) +{ + u8 name[20]; + u16 currSpecies; + u32 TiD, PiD; + const struct CompressedSpritePalette** pokePal; + u8 ID; + + GetMonData(mon, MON_DATA_NICKNAME, name); + StringCopy10(gStringVar1, name); + StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]); + + gAffineAnimsDisabled = TRUE; + + // preEvo sprite + currSpecies = GetMonData(mon, MON_DATA_SPECIES); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + TiD = GetMonData(mon, MON_DATA_OT_ID); + sEvoInfo.preEvoSpriteID = preEvoSpriteID; + DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve], + gMonFrontPicCoords[speciesToEvolve].coords, + gMonFrontPicCoords[speciesToEvolve].y_offset, + (void*)(0x2000000), + gUnknown_081FAF4C[1], speciesToEvolve); + pokePal = (void*) sub_80409C8(speciesToEvolve, TiD, PiD); + LoadCompressedPalette(*pokePal, 0x120, 0x20); + + GetMonSpriteTemplate_803C56C(speciesToEvolve, 1); + gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable; + sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30); + + gSprites[ID].callback = nullsub_37; + gSprites[ID].oam.paletteNum = 2; + gSprites[ID].invisible = 1; + + LoadEvoSparkleSpriteAndPal(); + + sEvoInfo.evoTaskID = ID = CreateTask(Task_TradeEvolutionScene, 0); + gTasks[ID].tState = 0; + gTasks[ID].tPreEvoSpecies = currSpecies; + gTasks[ID].tPostEvoSpecies = speciesToEvolve; + gTasks[ID].tMonPtrHI = (u32)(mon); + gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[ID].tData6 = 1; + gTasks[ID].tEvoWasStopped = FALSE; + gTasks[ID].tPartyID = partyID; + + SetMainCallback2(CB2_TradeEvolutionSceneUpdate); +} + +void CB2_EvolutionSceneUpdate(void) +{ + AnimateSprites(); + BuildOamBuffer(); + sub_800374C(&gUnknown_03004210); + UpdatePaletteFade(); + RunTasks(); +} + +void CB2_TradeEvolutionSceneUpdate(void) +{ + AnimateSprites(); + BuildOamBuffer(); + sub_80035AC(&gUnknown_03004828->field_4); + UpdatePaletteFade(); + RunTasks(); +} + +extern const u8 gUnknown_083F868C[]; + +void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) +{ + u32 data = 0; + if (gEvolutionTable[preEvoSpecies].evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6) + { + s32 i; + struct Pokemon* Shedinja = &gPlayerParty[gPlayerPartyCount]; + const struct EvolutionData* EvoTable; + const struct EvolutionData* Evos; + + CopyMon(Shedinja, mon, sizeof(struct Pokemon)); + SetMonData(Shedinja, MON_DATA_SPECIES, (void*)(&gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies)); + SetMonData(Shedinja, MON_DATA_NICKNAME, (void*)(gSpeciesNames[gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies])); + SetMonData(Shedinja, MON_DATA_HELD_ITEM, (void*)(&data)); + SetMonData(Shedinja, MON_DATA_MARKINGS, (void*)(&data)); + SetMonData(Shedinja, MON_DATA_10, (void*)(&data)); + for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++) + SetMonData(Shedinja, i, (void*)(&data)); + for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FATEFUL_ENCOUNTER; i++) + SetMonData(Shedinja, i, (void*)(&data)); + SetMonData(Shedinja, MON_DATA_STATUS, (void*)(&data)); + data = 0xFF; + SetMonData(Shedinja, MON_DATA_MAIL, (void*)(&data)); + + CalculateMonStats(Shedinja); + CalculatePlayerPartyCount(); + + // can't match it otherwise, ehh + EvoTable = gEvolutionTable; + Evos = EvoTable + preEvoSpecies; + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 2); + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 3); + + if (GetMonData(Shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA + && GetMonData(Shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE + && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK) + SetMonData(Shedinja, MON_DATA_NICKNAME, gUnknown_083F868C); + } +} + +extern const u8 gUnknown_08400C4A[]; +extern const u8 gUnknown_08400C60[]; +extern const u8 gUnknown_08400C8D[]; + +void Task_EvolutionScene(u8 taskID) +{ + u32 var; + struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + + // check if B Button was held, so the evolution gets stopped + if (gMain.heldKeys == B_BUTTON && gTasks[taskID].tState == 8 && gTasks[taskID].tBits & TASK_BIT_CAN_STOP) + { + gTasks[taskID].tState = 16; + if (gTasks[sEvoGraphicsTaskID].isActive) + gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE; + } + switch (gTasks[taskID].tState) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gSprites[sEvoInfo.preEvoSpriteID].invisible = 0; + gTasks[taskID].tState++; + break; + case 1: // print 'whoa, poke is evolving!!!' msg + if (!gPaletteFade.active) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A); + sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + gTasks[taskID].tState++; + } + break; + case 2: // wait for string, play cry + if (gUnknown_03004210.state == 0) + { + PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); + gTasks[taskID].tState++; + } + break; + case 3: // wait for cry, play tu du SE + if (IsCryFinished()) + { + PlaySE(BGM_ME_SHINKA); + gTasks[taskID].tState++; + } + break; + case 4: // play evolution music and fade screen black + if (!IsSEPlaying()) + { + PlayNewMapMusic(BGM_SHINKA); + gTasks[taskID].tState++; + BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0); + } + break; + case 5: // after screen fade, preapre evo sparkles + if (!gPaletteFade.active) + { + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17); + gTasks[taskID].tState++; + } + break; + case 6: // another set of evo sparkles + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + gTasks[taskID].tState++; + sEvoInfo.field_3 = 1; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); + } + break; + case 7: // launch task that flashes pre evo with post evo sprites + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID); + gTasks[taskID].tState++; + } + break; + case 8: // wait for the above task to finish + if (--sEvoInfo.field_3 == 0) + { + sEvoInfo.field_3 = 3; + if (!gTasks[sEvoGraphicsTaskID].isActive) + gTasks[taskID].tState++; + } + break; + case 9: // post evo sparkles + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); + gTasks[taskID].tState++; + break; + case 10: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash(gTasks[taskID].tPostEvoSpecies); + gTasks[taskID].tState++; + } + break; + case 11: // play tu du sound after evolution + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + PlaySE(SE_EXP); + gTasks[taskID].tState++; + } + break; + case 12: // play poke cry after evolution and return screed to pre-fade state + if (IsSEPlaying()) + { + m4aMPlayAllStop(); + PlayCry1(gTasks[taskID].tPostEvoSpecies, 0); + memcpy(&gPlttBufferUnfaded[0x20], gUnk_2009000, 0x60); + BeginNormalPaletteFade(0x1C, 0, 0x10, 0, 0); + gTasks[taskID].tState++; + } + break; + case 13: // congratulations string and rename prompt + if (IsCryFinished() && !gPaletteFade.active) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C60); + sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + PlayBGM(BGM_FANFA5); + gTasks[taskID].tState++; + SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); + CalculateMonStats(mon); + EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); + IncrementGameStat(14); + } + break; + case 14: // check if it wants to learn a new move + if (gUnknown_03004210.state == 0) + { + var = sub_803B7C8(mon, gTasks[taskID].tData6); + if (var != 0 && !gTasks[taskID].tEvoWasStopped) + { + u8 text[20]; + + sub_8053E90(); + gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE; + gTasks[taskID].tData6 = 0; + gTasks[taskID].tLearnMoveState = 0; + GetMonData(mon, MON_DATA_NICKNAME, text); + StringCopy10(gBattleTextBuff1, text); + if (var == 0xFFFF) // no place to learn it + gTasks[taskID].tState = 21; + else if (var == 0xFFFE) // it already knows that move + break; + else + gTasks[taskID].tState = 19; // has less than 4 moves, so it's been learned + } + else // no move to learn + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].tState++; + } + } + break; + case 15: // task has finished, return + if (!gPaletteFade.active) + { + if (!(gTasks[taskID].tBits & TASK_BIT_LEARN_MOVE)) + sub_8053E90(); + if (!gTasks[taskID].tEvoWasStopped) + CreateShedinja(gTasks[taskID].tPreEvoSpecies, mon); + DestroyTask(taskID); + SetMainCallback2(gUnknown_03005E94); + } + break; + case 16: // evolution has been canceled, stop music and re-fade palette + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + m4aMPlayAllStop(); + BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, 0x7FFF); + gTasks[taskID].tState++; + } + break; + case 17: // play cry of the pokemon trying to evolve again, evolution has been stopped + if (!gPaletteFade.active) + { + PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); + gTasks[taskID].tState++; + } + break; + case 18: // after the cry, print the string 'WHOA IT DID NOT EVOLVE!!!' + if (IsCryFinished()) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C8D); + sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + gTasks[taskID].tEvoWasStopped = TRUE; + gTasks[taskID].tState = 14; + } + break; + case 19: // pokemon learned a new move, print string and play a fanfare + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + PlayFanfare(BGM_FANFA1); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tData6 = 0x40; + gTasks[taskID].tState++; + } + break; + case 20: // wait a bit and check if can learn another move + if (gUnknown_03004210.state == 0 && !IsSEPlaying() && --gTasks[taskID].tData6 == 0) + gTasks[taskID].tState = 14; + break; + case 21: // try to learn a new move + switch (gTasks[taskID].tLearnMoveState) + { + case 0: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 1: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 2: + if (gUnknown_03004210.state != 0) + break; + if (!IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tData9 = 5; + gTasks[taskID].tData10 = 9; + gTasks[taskID].tLearnMoveState++; + } + case 3: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + sub_8023A80(); + gTasks[taskID].tLearnMoveState++; + sEvoCursorPos = 0; + sub_802BC6C(); + } + break; + case 4: + if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + sEvoCursorPos = 0; + sub_802BC6C(); + } + if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0) + { + PlaySE(SE_SELECT); + nullsub_6(); + sEvoCursorPos = 1; + sub_802BC6C(); + } + if (gMain.newKeys & A_BUTTON) + { + sub_8023AD8(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + PlaySE(SE_SELECT); + if (sEvoCursorPos != 0) + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + else + { + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9; + if (gTasks[taskID].tLearnMoveState == 5) + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + } + if (gMain.newKeys & B_BUTTON) + { + sub_8023AD8(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + PlaySE(SE_SELECT); + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + } + break; + case 5: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID, + gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics, + word_2024E82); + gTasks[taskID].tLearnMoveState++; + } + break; + case 6: + if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate) + { + var = sub_809FA30(); // moveID + if (var == 4) + gTasks[taskID].tLearnMoveState = 9; + else + { + u16 move = GetMonData(mon, var + MON_DATA_MOVE1); + if (IsHMMove2(move)) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState = 11; + } + else + { + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 2; + gBattleTextBuff2[2] = move; + gBattleTextBuff2[3] = (move & 0xFF00) >> 8; + gBattleTextBuff2[4] = EOS; + RemoveMonPPBonus(mon, var); + SetMonMoveSlot(mon, word_2024E82, var); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + } + } + break; + case 7: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 8: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tState = 19; + } + break; + case 9: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tData9 = 10; + gTasks[taskID].tData10 = 0; + gTasks[taskID].tLearnMoveState = 3; + break; + case 10: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gTasks[taskID].tState = 14; + break; + case 11: + if (gUnknown_03004210.state == 0 && !IsSEPlaying()) + gTasks[taskID].tLearnMoveState = 5; + break; + } + break; + } +} + +void Task_TradeEvolutionScene(u8 taskID) +{ + u32 var; + struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + + switch (gTasks[taskID].tState) + { + case 0: + StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A); + sub_8002EB0(&gUnknown_03004828->field_4, gStringVar4, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tState++; + break; + case 1: + if (gUnknown_03004828->field_4.state == 0) + { + PlayCry1(gTasks[taskID].tPreEvoSpecies, 0); + gTasks[taskID].tState++; + } + break; + case 2: + if (IsCryFinished()) + { + m4aSongNumStop(BGM_SHINKA); + PlaySE(BGM_ME_SHINKA); + gTasks[taskID].tState++; + } + break; + case 3: + if (!IsSEPlaying()) + { + PlayBGM(BGM_SHINKA); + gTasks[taskID].tState++; + BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0); + } + break; + case 4: + if (!gPaletteFade.active) + { + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17); + gTasks[taskID].tState++; + } + break; + case 5: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + gTasks[taskID].tState++; + sEvoInfo.field_3 = 1; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); + } + break; + case 6: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID); + gTasks[taskID].tState++; + } + break; + case 7: + if (--sEvoInfo.field_3 == 0) + { + sEvoInfo.field_3 = 3; + if (!gTasks[sEvoGraphicsTaskID].isActive) + gTasks[taskID].tState++; + } + break; + case 8: + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); + gTasks[taskID].tState++; + break; + case 9: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash_Trade(gTasks[taskID].tPostEvoSpecies); + gTasks[taskID].tState++; + } + break; + case 10: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + PlaySE(SE_EXP); + gTasks[taskID].tState++; + } + break; + case 11: + if (IsSEPlaying()) + { + PlayCry1(gTasks[taskID].tPostEvoSpecies, 0); + memcpy(&gPlttBufferUnfaded[0x20], gUnk_2009000, 0x60); + BeginNormalPaletteFade(1, 0, 0x10, 0, 0); + gTasks[taskID].tState++; + } + break; + case 12: + if (IsCryFinished() && !gPaletteFade.active) + { + StringExpandPlaceholders(gStringVar4, gUnknown_08400C60); + sub_8002EB0(&gUnknown_03004828->field_4, gStringVar4, gUnknown_03004828->field_34, 2, 15); + PlayFanfare(BGM_FANFA5); + gTasks[taskID].tState++; + SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); + CalculateMonStats(mon); + EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); + IncrementGameStat(14); + } + break; + case 13: + if (gUnknown_03004828->field_4.state == 0 && IsFanfareTaskInactive() == TRUE) + { + var = sub_803B7C8(mon, gTasks[taskID].tData6); + if (var != 0 && !gTasks[taskID].tEvoWasStopped) + { + u8 text[20]; + + gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE; + gTasks[taskID].tData6 = 0; + gTasks[taskID].tLearnMoveState = 0; + GetMonData(mon, MON_DATA_NICKNAME, text); + StringCopy10(gBattleTextBuff1, text); + if (var == 0xFFFF) + gTasks[taskID].tState = 17; + else if (var == 0xFFFE) + break; + else + gTasks[taskID].tState = 15; + } + else + { + PlayBGM(BGM_SHINKA); + sub_8002EB0(&gUnknown_03004828->field_4, gOtherText_LinkStandby2, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tState++; + } + } + break; + case 14: + if (gUnknown_03004828->field_4.state == 0) + { + DestroyTask(taskID); + SetMainCallback2(gUnknown_03005E94); + } + break; + case 15: + if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + PlayFanfare(BGM_FANFA1); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tData6 = 0x40; + gTasks[taskID].tState++; + } + break; + case 16: + if (gUnknown_03004828->field_4.state == 0 && IsFanfareTaskInactive() == TRUE && --gTasks[taskID].tData6 == 0) + gTasks[taskID].tState = 13; + break; + case 17: + switch (gTasks[taskID].tLearnMoveState) + { + case 0: + if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying()) + { + sub_8024CEC(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 1: + if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 2: + if (gUnknown_03004828->field_4.state != 0) + break; + if (!IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tData9 = 5; + gTasks[taskID].tData10 = 9; + gTasks[taskID].tLearnMoveState++; + } + case 3: + if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying()) + { + DrawTextWindow(&gUnknown_03004828->field_4, 24, 8, 29, 13); + sEvoCursorPos = 0; + InitWindow(&gUnknown_03004828->field_4, gOtherText_YesNoAndPlayer, gUnknown_03004828->field_34 + 128, 25, 9); + sub_8002F44(&gUnknown_03004828->field_4); + sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); + sub_81150D8(); + gTasks[taskID].tLearnMoveState++; + sEvoCursorPos = 0; + } + break; + case 4: + if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0) + { + PlaySE(SE_SELECT); + HBlankCB_TradeEvolutionScene(); + sEvoCursorPos = 0; + sub_81150D8(); + } + if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0) + { + PlaySE(SE_SELECT); + HBlankCB_TradeEvolutionScene(); + sEvoCursorPos = 1; + sub_81150D8(); + } + if (gMain.newKeys & A_BUTTON) + { + ZeroFillWindowRect(&gUnknown_03004828->field_4, 0x18, 8, 0x1D, 0xD); + DestroyMenuCursor(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + PlaySE(SE_SELECT); + if (sEvoCursorPos != 0) + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + else + { + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9; + if (gTasks[taskID].tLearnMoveState == 5) + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + } + if (gMain.newKeys & B_BUTTON) + { + ZeroFillWindowRect(&gUnknown_03004828->field_4, 0x18, 8, 0x1D, 0xD); + DestroyMenuCursor(); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + PlaySE(SE_SELECT); + gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10; + } + break; + case 5: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID, + gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics, + word_2024E82); + gTasks[taskID].tLearnMoveState++; + } + break; + case 6: + if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate) + { + var = sub_809FA30(); // moveID + if (var == 4) + gTasks[taskID].tLearnMoveState = 9; + else + { + u16 move = GetMonData(mon, var + MON_DATA_MOVE1); + if (IsHMMove2(move)) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tLearnMoveState = 11; + } + else + { + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 2; + gBattleTextBuff2[2] = move; + gBattleTextBuff2[3] = (move & 0xFF00) >> 8; + gBattleTextBuff2[4] = EOS; + RemoveMonPPBonus(mon, var); + SetMonMoveSlot(mon, word_2024E82, var); + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + } + } + break; + case 7: + if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tLearnMoveState++; + } + break; + case 8: + if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying()) + { + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tState = 15; + } + break; + case 9: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tData9 = 10; + gTasks[taskID].tData10 = 0; + gTasks[taskID].tLearnMoveState = 3; + break; + case 10: + StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); + sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15); + gTasks[taskID].tState = 13; + break; + case 11: + if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying()) + gTasks[taskID].tLearnMoveState = 5; + break; + } + break; + } +} diff --git a/src/pokemon_3.c b/src/pokemon_3.c index e449af0a1..306119be2 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1197,7 +1197,7 @@ const struct CompressedSpritePalette *sub_80409C8(u16 species, u32 otId , u32 pe return &gMonPaletteTable[species]; } -bool8 IsHMMove2(u16 move) +bool32 IsHMMove2(u16 move) { int i = 0; while (gHMMoves[i] != 0xFFFF) |