From c68ce8667d86617ec1aa760990cf6b32ef9eb061 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Sun, 21 Jan 2018 01:54:19 -0600
Subject: [PATCH] Fix and improve Creality configs

---
 .../examples/Creality/CR-10S/Configuration.h  |   4 +-
 .../Creality/CR-10S/Configuration_adv.h       |  16 +-
 .../examples/Creality/CR-10S/_Statusscreen.h  | 112 +++++++++++++
 .../examples/Creality/Ender/Configuration.h   |   6 +-
 .../examples/Creality/Ender/_Statusscreen.h   | 154 ++++++++++++------
 5 files changed, 229 insertions(+), 63 deletions(-)
 create mode 100644 Marlin/src/config/examples/Creality/CR-10S/_Statusscreen.h

diff --git a/Marlin/src/config/examples/Creality/CR-10S/Configuration.h b/Marlin/src/config/examples/Creality/CR-10S/Configuration.h
index 0c769a3e0e..c9c4cb850e 100644
--- a/Marlin/src/config/examples/Creality/CR-10S/Configuration.h
+++ b/Marlin/src/config/examples/Creality/CR-10S/Configuration.h
@@ -93,7 +93,7 @@
 //#define SHOW_CUSTOM_BOOTSCREEN
 
 // Enable to show the bitmap in Marlin/_Statusscreen.h on the status screen.
-//#define CUSTOM_STATUS_SCREEN_IMAGE
+#define CUSTOM_STATUS_SCREEN_IMAGE
 
 // @section machine
 
@@ -428,7 +428,7 @@
 // This option prevents a single extrusion longer than EXTRUDE_MAXLENGTH.
 // Note that for Bowden Extruders a too-small value here may prevent loading.
 #define PREVENT_LENGTHY_EXTRUDE
-#define EXTRUDE_MAXLENGTH 200
+#define EXTRUDE_MAXLENGTH 435
 
 //===========================================================================
 //======================== Thermal Runaway Protection =======================
diff --git a/Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h b/Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h
index 81d4b597b0..8a296a3eb4 100644
--- a/Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h
+++ b/Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h
@@ -392,7 +392,7 @@
 // @section lcd
 
 #if ENABLED(ULTIPANEL)
-  #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
+  #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 1*60} // Feedrates (mm/m) for manual moves along X, Y, Z, E from panel
   #define ULTIPANEL_FEEDMULTIPLY  // Comment to disable setting feedrate multiplier via encoder
 #endif
 
@@ -891,25 +891,25 @@
   #define PAUSE_PARK_RETRACT_FEEDRATE 60      // (mm/s) Initial retract feedrate.
   #define PAUSE_PARK_RETRACT_LENGTH 4         // (mm) Initial retract.
                                               // This short retract is done immediately, before parking the nozzle.
-  #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // (mm/s) Unload filament feedrate. This can be pretty fast.
-  #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // (mm) The length of filament for a complete unload.
+  #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 41  // (mm/s) Unload filament feedrate. This can be pretty fast.
+  #define FILAMENT_CHANGE_UNLOAD_LENGTH 430   // (mm) The length of filament for a complete unload.
                                               //   For Bowden, the full length of the tube and nozzle.
                                               //   For direct drive, the full length of the nozzle.
                                               //   Set to 0 for manual unloading.
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // (mm/s) Load filament feedrate. This can be pretty fast.
-  #define FILAMENT_CHANGE_LOAD_LENGTH 0       // (mm) Load length of filament, from extruder gear to nozzle.
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 41    // (mm/s) Load filament feedrate. This can be pretty fast.
+  #define FILAMENT_CHANGE_LOAD_LENGTH 430     // (mm) Load length of filament, from extruder gear to nozzle.
                                               //   For Bowden, the full length of the tube and nozzle.
                                               //   For direct drive, the full length of the nozzle.
   #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3   // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
-  #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50    // (mm) Length to extrude after loading.
+  #define ADVANCED_PAUSE_EXTRUDE_LENGTH 20    // (mm) Length to extrude after loading.
                                               //   Set to 0 for manual extrusion.
                                               //   Filament can be extruded repeatedly from the Filament Change menu
                                               //   until extrusion is consistent, and to purge old filament.
 
                                               // Filament Unload does a Retract, Delay, and Purge first:
-  #define FILAMENT_UNLOAD_RETRACT_LENGTH 2    // (mm) Unload initial retract length.
+  #define FILAMENT_UNLOAD_RETRACT_LENGTH 4    // (mm) Unload initial retract length.
   #define FILAMENT_UNLOAD_DELAY 5000          // (ms) Delay for the filament to cool after retract.
-  #define FILAMENT_UNLOAD_PURGE_LENGTH 8      // (mm) An unretract is done, then this length is purged.
+  #define FILAMENT_UNLOAD_PURGE_LENGTH 0      // (mm) An unretract is done, then this length is purged.
 
   #define PAUSE_PARK_NOZZLE_TIMEOUT 45        // (seconds) Time limit before the nozzle is turned off for safety.
   #define FILAMENT_CHANGE_ALERT_BEEPS 6       // Number of alert beeps to play when a response is needed.
diff --git a/Marlin/src/config/examples/Creality/CR-10S/_Statusscreen.h b/Marlin/src/config/examples/Creality/CR-10S/_Statusscreen.h
new file mode 100644
index 0000000000..c785ca632b
--- /dev/null
+++ b/Marlin/src/config/examples/Creality/CR-10S/_Statusscreen.h
@@ -0,0 +1,112 @@
+#ifndef _STATUSSCREEN_H_
+#define _STATUSSCREEN_H_
+
+#define STATUS_SCREENWIDTH 128 // Width in pixels
+
+#define STATUS_SCREEN_X 0
+#define STATUS_SCREEN_HOTEND_TEXT_X(E) (38 + (E) * 20)
+#define STATUS_SCREEN_FAN_TEXT_X 103
+
+#include "MarlinConfig.h"
+
+#if HOTENDS < 2
+
+  const unsigned char status_screen0_bmp[] PROGMEM = {
+    //-----"CR-10S 300"-----|-nozzle--|---------|-----bed------|----|-----fan------|
+    0x3D,0xF0,0x02,0x38,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,
+    0x44,0x88,0x06,0x45,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x80,0x88,0x02,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x87,0x30,
+    0x80,0xF0,0x02,0x44,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x87,0x90,
+    0x80,0xA3,0xF2,0x44,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x87,0xD0,
+    0x80,0x90,0x02,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x87,0xD0,
+    0x80,0x90,0x02,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x03,0xD0,
+    0x44,0x88,0x02,0x45,0x10,0x1F,0xE0,0x00,0x00,0x08,0x20,0x80,0x00,0x20,0x30,0x10,
+    0x39,0xCC,0x07,0x39,0xE0,0x3F,0xF0,0x00,0x00,0x04,0x10,0x40,0x00,0x20,0x78,0x10,
+    0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0x00,0x04,0x10,0x40,0x00,0x20,0x78,0x10,
+    0x00,0x38,0x70,0xE0,0x00,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x20,0x30,0x10,
+    0x00,0x44,0x89,0x10,0x00,0x1F,0xE0,0x00,0x00,0x10,0x41,0x00,0x00,0x2F,0x03,0xD0,
+    0x00,0x04,0x89,0x10,0x00,0x1F,0xE0,0x00,0x00,0x20,0x82,0x00,0x00,0x2F,0x87,0xD0,
+    0x00,0x18,0x89,0x10,0x00,0x3F,0xF0,0x00,0x00,0x20,0x82,0x00,0x00,0x2F,0x87,0xD0,
+    0x00,0x04,0x89,0x10,0x00,0x3F,0xF0,0x00,0x00,0x10,0x41,0x00,0x00,0x27,0x87,0x90,
+    0x00,0x04,0x89,0x10,0x00,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x33,0x87,0x30,
+    0x00,0x04,0x89,0x10,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x44,0x89,0x10,0x00,0x07,0x80,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x3F,0xFF,0xF0,
+    0x00,0x38,0x70,0xE0,0x00,0x03,0x00,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00
+  };
+  const unsigned char status_screen1_bmp[] PROGMEM = {
+    //-----"CR-10S 300"-----|-nozzle--|---------|-----bed------|----|-----fan------|
+    0x3D,0xF0,0x02,0x38,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,
+    0x44,0x88,0x06,0x45,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x80,0x88,0x02,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xFC,0x30,
+    0x80,0xF0,0x02,0x44,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xFC,0x10,
+    0x80,0xA3,0xF2,0x44,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x78,0x10,
+    0x80,0x90,0x02,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x10,
+    0x80,0x90,0x02,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00,0xD0,
+    0x44,0x88,0x02,0x45,0x10,0x1F,0xE0,0x00,0x00,0x08,0x20,0x80,0x00,0x2E,0x31,0xD0,
+    0x39,0xCC,0x07,0x39,0xE0,0x3F,0xF0,0x00,0x00,0x04,0x10,0x40,0x00,0x2F,0x7B,0xD0,
+    0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0x00,0x04,0x10,0x40,0x00,0x2F,0x7B,0xD0,
+    0x00,0x38,0x70,0xE0,0x00,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x2E,0x31,0xD0,
+    0x00,0x44,0x89,0x10,0x00,0x1F,0xE0,0x00,0x00,0x10,0x41,0x00,0x00,0x2C,0x00,0xD0,
+    0x00,0x04,0x89,0x10,0x00,0x1F,0xE0,0x00,0x00,0x20,0x82,0x00,0x00,0x20,0x30,0x10,
+    0x00,0x18,0x89,0x10,0x00,0x3F,0xF0,0x00,0x00,0x20,0x82,0x00,0x00,0x20,0x78,0x10,
+    0x00,0x04,0x89,0x10,0x00,0x3F,0xF0,0x00,0x00,0x10,0x41,0x00,0x00,0x20,0xFC,0x10,
+    0x00,0x04,0x89,0x10,0x00,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x30,0xFC,0x30,
+    0x00,0x04,0x89,0x10,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x44,0x89,0x10,0x00,0x07,0x80,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x3F,0xFF,0xF0,
+    0x00,0x38,0x70,0xE0,0x00,0x03,0x00,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00
+  };
+
+  #define STATUS_SCREEN_BED_TEXT_X 73
+
+#else // HOTENDS >= 2
+
+  const unsigned char status_screen0_bmp[] PROGMEM = {
+    //-----"CR-10S 300"------|nozzle|----|nozzle|----|-----bed-----|------fan------|
+    0x3D,0xF0,0x02,0x38,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,
+    0x44,0x88,0x06,0x45,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x80,0x88,0x02,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x87,0x30,
+    0x80,0xF0,0x02,0x44,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x87,0x90,
+    0x80,0xA3,0xF2,0x44,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x87,0xD0,
+    0x80,0x90,0x02,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x87,0xD0,
+    0x80,0x90,0x02,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x03,0xD0,
+    0x44,0x88,0x02,0x45,0x10,0x1F,0xE0,0x01,0xFE,0x00,0x08,0x20,0x80,0x20,0x30,0x10,
+    0x39,0xCC,0x07,0x39,0xE0,0x3F,0xF0,0x03,0xFF,0x00,0x04,0x10,0x40,0x20,0x78,0x10,
+    0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x04,0x10,0x40,0x20,0x78,0x10,
+    0x00,0x38,0x70,0xE0,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x08,0x20,0x80,0x20,0x30,0x10,
+    0x00,0x44,0x89,0x10,0x00,0x1F,0xE0,0x01,0xFE,0x00,0x10,0x41,0x00,0x2F,0x03,0xD0,
+    0x00,0x04,0x89,0x10,0x00,0x1F,0xE0,0x01,0xFE,0x00,0x20,0x82,0x00,0x2F,0x87,0xD0,
+    0x00,0x18,0x89,0x10,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x20,0x82,0x00,0x2F,0x87,0xD0,
+    0x00,0x04,0x89,0x10,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x10,0x41,0x00,0x27,0x87,0x90,
+    0x00,0x04,0x89,0x10,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x08,0x20,0x80,0x33,0x87,0x30,
+    0x00,0x04,0x89,0x10,0x00,0x0F,0xC0,0x00,0xFC,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x44,0x89,0x10,0x00,0x07,0x80,0x00,0x78,0x00,0xFF,0xFF,0xC0,0x3F,0xFF,0xF0,
+    0x00,0x38,0x70,0xE0,0x00,0x03,0x00,0x00,0x30,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00
+  };
+  const unsigned char status_screen1_bmp[] PROGMEM = {
+    //-----"CR-10S 300"------|nozzle|----|nozzle|----|-----bed-----|------fan------|
+    0x3D,0xF0,0x02,0x38,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,
+    0x44,0x88,0x06,0x45,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x80,0x88,0x02,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xFC,0x30,
+    0x80,0xF0,0x02,0x44,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xFC,0x10,
+    0x80,0xA3,0xF2,0x44,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x78,0x10,
+    0x80,0x90,0x02,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x10,
+    0x80,0x90,0x02,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00,0xD0,
+    0x44,0x88,0x02,0x45,0x10,0x1F,0xE0,0x01,0xFE,0x00,0x08,0x20,0x80,0x2E,0x31,0xD0,
+    0x39,0xCC,0x07,0x39,0xE0,0x3F,0xF0,0x03,0xFF,0x00,0x04,0x10,0x40,0x2F,0x7B,0xD0,
+    0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x04,0x10,0x40,0x2F,0x7B,0xD0,
+    0x00,0x38,0x70,0xE0,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x08,0x20,0x80,0x2E,0x31,0xD0,
+    0x00,0x44,0x89,0x10,0x00,0x1F,0xE0,0x01,0xFE,0x00,0x10,0x41,0x00,0x2C,0x00,0xD0,
+    0x00,0x04,0x89,0x10,0x00,0x1F,0xE0,0x01,0xFE,0x00,0x20,0x82,0x00,0x20,0x30,0x10,
+    0x00,0x18,0x89,0x10,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x20,0x82,0x00,0x20,0x78,0x10,
+    0x00,0x04,0x89,0x10,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x10,0x41,0x00,0x20,0xFC,0x10,
+    0x00,0x04,0x89,0x10,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x08,0x20,0x80,0x30,0xFC,0x30,
+    0x00,0x04,0x89,0x10,0x00,0x0F,0xC0,0x00,0xFC,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x44,0x89,0x10,0x00,0x07,0x80,0x00,0x78,0x00,0xFF,0xFF,0xC0,0x3F,0xFF,0xF0,
+    0x00,0x38,0x70,0xE0,0x00,0x03,0x00,0x00,0x30,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00
+  };
+
+  #define STATUS_SCREEN_BED_TEXT_X 81
+
+#endif // HOTENDS >= 2
+
+#endif // _STATUSSCREEN_H_
diff --git a/Marlin/src/config/examples/Creality/Ender/Configuration.h b/Marlin/src/config/examples/Creality/Ender/Configuration.h
index d3047cc9b5..fd7ae2cabe 100644
--- a/Marlin/src/config/examples/Creality/Ender/Configuration.h
+++ b/Marlin/src/config/examples/Creality/Ender/Configuration.h
@@ -93,11 +93,7 @@
 #define SHOW_CUSTOM_BOOTSCREEN
 
 // Enable to show the bitmap in Marlin/_Statusscreen.h on the status screen.
-//#define CUSTOM_STATUS_SCREEN_IMAGE
-
-// Set this to a file name (relative the ultralcd_impl_DOGM.h file) to read a
-// customized status screen bitmap.
-#define CUSTOM_STATUS_SCREEN_FILE "_Statusscreen.h"
+#define CUSTOM_STATUS_SCREEN_IMAGE
 
 // @section machine
 
diff --git a/Marlin/src/config/examples/Creality/Ender/_Statusscreen.h b/Marlin/src/config/examples/Creality/Ender/_Statusscreen.h
index a5c769d62d..692cc7ceb4 100644
--- a/Marlin/src/config/examples/Creality/Ender/_Statusscreen.h
+++ b/Marlin/src/config/examples/Creality/Ender/_Statusscreen.h
@@ -1,54 +1,112 @@
-#ifndef STATUSSCREEN_H_
-#define STATUSSCREEN_H_
+#ifndef _STATUSSCREEN_H_
+#define _STATUSSCREEN_H_
 
 #define STATUS_SCREENWIDTH 128 // Width in pixels
 
-const unsigned char status_screen0_bmp[] PROGMEM = {
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x87,0x30,
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x87,0x90,
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x87,0xD0,
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x87,0xD0,
-  0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x03,0xD0,
-  0xFE,0x00,0x02,0x00,0x00,0x1F,0xE0,0x00,0x00,0x08,0x20,0x80,0x00,0x20,0x30,0x10,
-  0x42,0x00,0x02,0x00,0x00,0x3F,0xF0,0x00,0x00,0x04,0x10,0x40,0x00,0x20,0x78,0x10,
-  0x48,0x00,0x02,0x00,0x00,0x3F,0xF0,0x00,0x00,0x04,0x10,0x40,0x00,0x20,0x78,0x10,
-  0x48,0xDC,0x3E,0x3C,0xEE,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x20,0x30,0x10,
-  0x78,0x62,0x42,0x42,0x32,0x1F,0xE0,0x00,0x00,0x10,0x41,0x00,0x00,0x2F,0x03,0xD0,
-  0x48,0x42,0x42,0x42,0x20,0x1F,0xE0,0x00,0x00,0x20,0x82,0x00,0x00,0x2F,0x87,0xD0,
-  0x48,0x42,0x42,0x7E,0x20,0x3F,0xF0,0x00,0x00,0x20,0x82,0x00,0x00,0x2F,0x87,0xD0,
-  0x40,0x42,0x42,0x40,0x20,0x3F,0xF0,0x00,0x00,0x10,0x41,0x00,0x00,0x27,0x87,0x90,
-  0x42,0x42,0x46,0x42,0x20,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x33,0x87,0x30,
-  0xFE,0xE7,0x3B,0x3C,0xF8,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
-  0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x3F,0xFF,0xF0,
-  0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00
-};
-const unsigned char status_screen1_bmp[] PROGMEM = {
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xFC,0x30,
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xFC,0x10,
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x78,0x10,
-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x10,
-  0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00,0xD0,
-  0xFE,0x00,0x02,0x00,0x00,0x1F,0xE0,0x00,0x00,0x10,0x41,0x00,0x00,0x2E,0x31,0xD0,
-  0x42,0x00,0x02,0x00,0x00,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x2F,0x7B,0xD0,
-  0x48,0x00,0x02,0x00,0x00,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x2F,0x7B,0xD0,
-  0x48,0xDC,0x3E,0x3C,0xEE,0x3F,0xF0,0x00,0x00,0x10,0x41,0x00,0x00,0x2E,0x31,0xD0,
-  0x78,0x62,0x42,0x42,0x32,0x1F,0xE0,0x00,0x00,0x20,0x82,0x00,0x00,0x2C,0x00,0xD0,
-  0x48,0x42,0x42,0x42,0x20,0x1F,0xE0,0x00,0x00,0x41,0x04,0x00,0x00,0x20,0x30,0x10,
-  0x48,0x42,0x42,0x7E,0x20,0x3F,0xF0,0x00,0x00,0x41,0x04,0x00,0x00,0x20,0x78,0x10,
-  0x40,0x42,0x42,0x40,0x20,0x3F,0xF0,0x00,0x00,0x20,0x82,0x00,0x00,0x20,0xFC,0x10,
-  0x42,0x42,0x46,0x42,0x20,0x3F,0xF0,0x00,0x00,0x10,0x41,0x00,0x00,0x30,0xFC,0x30,
-  0xFE,0xE7,0x3B,0x3C,0xF8,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
-  0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x3F,0xFF,0xF0,
-  0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00
-};
-
 #define STATUS_SCREEN_X 0
-#define STATUS_SCREEN_HOTEND_TEXT_X(i) (39 + (i) * 25)
-#define STATUS_SCREEN_BED_TEXT_X 72
+#define STATUS_SCREEN_HOTEND_TEXT_X(E) (38 + (E) * 20)
 #define STATUS_SCREEN_FAN_TEXT_X 103
 
-#endif // STATUSSCREEN_H_
+#include "MarlinConfig.h"
+
+#if HOTENDS < 2
+
+  const unsigned char status_screen0_bmp[] PROGMEM = {
+    //-------"ender"--------|-nozzle--|---------|-----bed------|----|-----fan------|
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x87,0x30,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x87,0x90,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x87,0xD0,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x87,0xD0,
+    0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x03,0xD0,
+    0xFE,0x00,0x02,0x00,0x00,0x1F,0xE0,0x00,0x00,0x08,0x20,0x80,0x00,0x20,0x30,0x10,
+    0x42,0x00,0x02,0x00,0x00,0x3F,0xF0,0x00,0x00,0x04,0x10,0x40,0x00,0x20,0x78,0x10,
+    0x48,0x00,0x02,0x00,0x00,0x3F,0xF0,0x00,0x00,0x04,0x10,0x40,0x00,0x20,0x78,0x10,
+    0x48,0xDC,0x3E,0x3C,0xEE,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x20,0x30,0x10,
+    0x78,0x62,0x42,0x42,0x32,0x1F,0xE0,0x00,0x00,0x10,0x41,0x00,0x00,0x2F,0x03,0xD0,
+    0x48,0x42,0x42,0x42,0x20,0x1F,0xE0,0x00,0x00,0x20,0x82,0x00,0x00,0x2F,0x87,0xD0,
+    0x48,0x42,0x42,0x7E,0x20,0x3F,0xF0,0x00,0x00,0x20,0x82,0x00,0x00,0x2F,0x87,0xD0,
+    0x40,0x42,0x42,0x40,0x20,0x3F,0xF0,0x00,0x00,0x10,0x41,0x00,0x00,0x27,0x87,0x90,
+    0x42,0x42,0x46,0x42,0x20,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x33,0x87,0x30,
+    0xFE,0xE7,0x3B,0x3C,0xF8,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x3F,0xFF,0xF0,
+    0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00
+  };
+  const unsigned char status_screen1_bmp[] PROGMEM = {
+    //-------"ender"--------|-nozzle--|---------|-----bed------|----|-----fan------|
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xFC,0x30,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xFC,0x10,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x78,0x10,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x10,
+    0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00,0xD0,
+    0xFE,0x00,0x02,0x00,0x00,0x1F,0xE0,0x00,0x00,0x08,0x20,0x80,0x00,0x2E,0x31,0xD0,
+    0x42,0x00,0x02,0x00,0x00,0x3F,0xF0,0x00,0x00,0x04,0x10,0x40,0x00,0x2F,0x7B,0xD0,
+    0x48,0x00,0x02,0x00,0x00,0x3F,0xF0,0x00,0x00,0x04,0x10,0x40,0x00,0x2F,0x7B,0xD0,
+    0x48,0xDC,0x3E,0x3C,0xEE,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x2E,0x31,0xD0,
+    0x78,0x62,0x42,0x42,0x32,0x1F,0xE0,0x00,0x00,0x10,0x41,0x00,0x00,0x2C,0x00,0xD0,
+    0x48,0x42,0x42,0x42,0x20,0x1F,0xE0,0x00,0x00,0x20,0x82,0x00,0x00,0x20,0x30,0x10,
+    0x48,0x42,0x42,0x7E,0x20,0x3F,0xF0,0x00,0x00,0x20,0x82,0x00,0x00,0x20,0x78,0x10,
+    0x40,0x42,0x42,0x40,0x20,0x3F,0xF0,0x00,0x00,0x10,0x41,0x00,0x00,0x20,0xFC,0x10,
+    0x42,0x42,0x46,0x42,0x20,0x3F,0xF0,0x00,0x00,0x08,0x20,0x80,0x00,0x30,0xFC,0x30,
+    0xFE,0xE7,0x3B,0x3C,0xF8,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x3F,0xFF,0xF0,
+    0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00
+  };
+
+  #define STATUS_SCREEN_BED_TEXT_X 73
+
+#else // HOTENDS >= 2
+
+  const unsigned char status_screen0_bmp[] PROGMEM = {
+    //-------"ender"---------|nozzle|----|nozzle|----|-----bed-----|------fan------|
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x87,0x30,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x87,0x90,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x87,0xD0,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x87,0xD0,
+    0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x03,0xD0,
+    0xFE,0x00,0x02,0x00,0x00,0x1F,0xE0,0x01,0xFE,0x00,0x08,0x20,0x80,0x20,0x30,0x10,
+    0x42,0x00,0x02,0x00,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x04,0x10,0x40,0x20,0x78,0x10,
+    0x48,0x00,0x02,0x00,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x04,0x10,0x40,0x20,0x78,0x10,
+    0x48,0xDC,0x3E,0x3C,0xEE,0x3F,0xF0,0x03,0xFF,0x00,0x08,0x20,0x80,0x20,0x30,0x10,
+    0x78,0x62,0x42,0x42,0x32,0x1F,0xE0,0x01,0xFE,0x00,0x10,0x41,0x00,0x2F,0x03,0xD0,
+    0x48,0x42,0x42,0x42,0x20,0x1F,0xE0,0x01,0xFE,0x00,0x20,0x82,0x00,0x2F,0x87,0xD0,
+    0x48,0x42,0x42,0x7E,0x20,0x3F,0xF0,0x03,0xFF,0x00,0x20,0x82,0x00,0x2F,0x87,0xD0,
+    0x40,0x42,0x42,0x40,0x20,0x3F,0xF0,0x03,0xFF,0x00,0x10,0x41,0x00,0x27,0x87,0x90,
+    0x42,0x42,0x46,0x42,0x20,0x3F,0xF0,0x03,0xFF,0x00,0x08,0x20,0x80,0x33,0x87,0x30,
+    0xFE,0xE7,0x3B,0x3C,0xF8,0x0F,0xC0,0x00,0xFC,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x78,0x00,0xFF,0xFF,0xC0,0x3F,0xFF,0xF0,
+    0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x30,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00
+  };
+  const unsigned char status_screen1_bmp[] PROGMEM = {
+    //-------"ender"---------|nozzle|----|nozzle|----|-----bed-----|------fan------|
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xFC,0x30,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xFC,0x10,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x78,0x10,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x10,
+    0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00,0xD0,
+    0xFE,0x00,0x02,0x00,0x00,0x1F,0xE0,0x01,0xFE,0x00,0x08,0x20,0x80,0x2E,0x31,0xD0,
+    0x42,0x00,0x02,0x00,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x04,0x10,0x40,0x2F,0x7B,0xD0,
+    0x48,0x00,0x02,0x00,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x04,0x10,0x40,0x2F,0x7B,0xD0,
+    0x48,0xDC,0x3E,0x3C,0xEE,0x3F,0xF0,0x03,0xFF,0x00,0x08,0x20,0x80,0x2E,0x31,0xD0,
+    0x78,0x62,0x42,0x42,0x32,0x1F,0xE0,0x01,0xFE,0x00,0x10,0x41,0x00,0x2C,0x00,0xD0,
+    0x48,0x42,0x42,0x42,0x20,0x1F,0xE0,0x01,0xFE,0x00,0x20,0x82,0x00,0x20,0x30,0x10,
+    0x48,0x42,0x42,0x7E,0x20,0x3F,0xF0,0x03,0xFF,0x00,0x20,0x82,0x00,0x20,0x78,0x10,
+    0x40,0x42,0x42,0x40,0x20,0x3F,0xF0,0x03,0xFF,0x00,0x10,0x41,0x00,0x20,0xFC,0x10,
+    0x42,0x42,0x46,0x42,0x20,0x3F,0xF0,0x03,0xFF,0x00,0x08,0x20,0x80,0x30,0xFC,0x30,
+    0xFE,0xE7,0x3B,0x3C,0xF8,0x0F,0xC0,0x00,0xFC,0x00,0x00,0x00,0x00,0x38,0x00,0x70,
+    0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x78,0x00,0xFF,0xFF,0xC0,0x3F,0xFF,0xF0,
+    0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x30,0x00,0xFF,0xFF,0xC0,0x00,0x00,0x00
+  };
+
+  #define STATUS_SCREEN_BED_TEXT_X 81
+
+#endif // HOTENDS >= 2
+
+#endif // _STATUSSCREEN_H_
-- 
GitLab