Los ficheros fuente se descargan de https://marlinfw.org/meta/download/

Se han de descargar, para la versión elegida, el fichero base del programa y el fichero configurations.

Una vez descomprimidos ambos ficheros, buscaremos en el fichero de configurations los ficheros de nuestra impresora y placa base. Para una Ender 3 con placa base 4.2.7 iremos a

config/examples/Creality/Ender-3/CrealityV427

Los ficheros de esta carpeta los copiaremos en la carpeta .\Marlin-2.1.2.4\Marlin\ , sobreescribiendo los que ya existiesen.

Luego instalaremos Visual Studio y el plugin para utilizar Platformio. Abriremos el proyecto situado en la carpeta marlin del fichero zip del programa base.

A partir de aquí es modificar la configuración con las opciones deseadas de nuestra impresora y darle a compilar.

En el fichero de configuración de Platformio hay que definir la máquina de trabajo a

default_envs = STM32F103RE_creality

Para cambiar el sentido de giro de un motor 

En config.h

Buscar INVERT_E0_DIR y pasarlo de false a true en el caso de que el extrusor no empuje el filamento, sino lo saque

Para cambiar el idioma a español

En config.h

Buscar LCD_LANGUAGE y cambiar la línea a 

#define LCD_LANGUAGE es

Para modificar los pasos por defecto de los motores

En config.h buscar

DEFAULT_AXIS_STEPS_PER_UNIT

y modificar en sus llaves los pasos {X, Y, Z, extrusor}

Para una Ender 3 con motores en los ejes X,Y y Z de serie, y un extrusor directo de doble engranaje HGX-LITE, tras calibrarlo me da

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 79.29, 80, 402.82, 576.64 }

Para realizar la pausa en el cambio de bobina de una pieza con multicolor

En Configuration.h, habilitar la opción NOZZLE_PARK_FEATURE descomentando la línea #define NOZZLE_PARK_FEATURE

En Configuration_adv.h: Busca y descomenta (quita las //) la línea #define ADVANCED_PAUSE_FEATURE. Aquí también puedes ajustar distancias de carga/descarga y la posición de aparcado