 #define GREEN 1
 #define BLUE 2
 void runBlobs(bool initialize) {
-  static float xPos[] = { (float)width / 2.0, (float)width / 2.0, (float)width / 2.0 };
-  static float yPos[] = { (float)height / 2.0, (float)height / 2.0, (float)height / 2.0 };
+  static float xPos[] = { (float)WIDTH / 2.0, (float)WIDTH / 2.0, (float)WIDTH / 2.0 };
+  static float yPos[] = { (float)HEIGHT / 2.0, (float)HEIGHT / 2.0, (float)HEIGHT / 2.0 };
   static float xIncrement[3];
   static float yIncrement[3];
   static int steps[] = { 0, 0, 0 };

#define SRAM_SIZE 2048
// Assume we need this much for everything else
#define VAR_ALLOWANCE (NUM_LEDS * 3 + 850)
#define MAX_FRAMES (BASE_WIDTH == 1 ? (SRAM_SIZE - VAR_ALLOWANCE) / NUM_LEDS : 0)

#define width (STAGGERED ? BASE_WIDTH * 2 + 1 : BASE_WIDTH)
#define logical_num_leds (STAGGERED ? NUM_LEDS * 2 : NUM_LEDS)
// Add extra row if there's a remainder.
#define height (logical_num_leds / width + (logical_num_leds % width ? 1 : 0))
int eepromStart;
long saveTarget;
long lastFrameTime;

  // Two-dimensional displays want one of (x,y) to be zero sometimes so
  // the movement isn't always diagonal. One-dimensional displays always want
  // movement in whichever is the meaningful dimension.
  bool allowZero = WIDTH > 1 || HEIGHT > 1;
  for (byte c = RED; c <= BLUE; c++) {
    if (!steps[c]) {
      xIncrement[c] = (float)(random(allowZero ? 0 : WIDTH * settings.hue / 2, WIDTH * settings.hue) + 100) / 10000.0;
      yIncrement[c] = (float)(random(allowZero ? 0 : HEIGHT * settings.hue / 2, HEIGHT * settings.hue) + 100) / 10000.0;
      if (random(2)) {
        xIncrement[c] *= -1;
      }
