   Serial.begin(1000000);    // JCB
   GD.begin(~GD_STORAGE);
   LOAD_ASSETS();
+  if (dazzler) {
+    GD.cmd_setrotate(2);
+    GD.BitmapHandle(BACKGROUND_HANDLE);
+    GD.BitmapSize(NEAREST, BORDER, BORDER, GD.w, GD.h);
+    GD.BitmapHandle(SPRITES_HANDLE);
+    GD.BitmapSize(NEAREST, BORDER, BORDER, 3 * 16, 3 * 16);
+  }
   game_setup();
 }

#define PADX(x) (480 + (x - 3) * 48)
#define PADY(y) (272 + (y - 3) * 48)

  GD.Tag(CONTROL_RIGHT);
  GD.Vertex2ii(PADX(2), PADY(1), ARROW_HANDLE, 0);
  rotate_around(24, 24, 3 * 0x4000);

  GD.Tag(CONTROL_UP);
  GD.Vertex2ii(PADX(1), PADY(0), ARROW_HANDLE, 0);
  rotate_around(24, 24, 2 * 0x4000);

  GD.Tag(CONTROL_LEFT);
  GD.Vertex2ii(PADX(0), PADY(1), ARROW_HANDLE, 0);
  rotate_around(24, 24, 1 * 0x4000);

  GD.Tag(CONTROL_DOWN);
  GD.Vertex2ii(PADX(1), PADY(2), ARROW_HANDLE, 0);
  GD.RestoreContext();

  GD.ColorRGB(255, 85, 0);
  draw_score(3, 1, score);
  draw_score(11, 1, hiscore);

  GD.ColorRGB(255, 255, 255);
  for (byte i = 0; i < lives; i++)
    GD.Vertex2ii(8 * i, 30 * 8, LIFE_HANDLE, 0);

  // for (byte i = 0; i < 16; i++)
  //  GD.wr(atxy(i, 30), (i < lives) ? BG_LIFE : BG_BLACK);

  ti = max(0, ti - 1);
  if ((ti == 0) && (dying == 0))
    dying = 1;

  // Draw 'time remaining' by clearing a black rectangle
  {
    byte tw = 120 - (ti >> 7);
    byte tx = 72;
    GD.SaveContext();
    GD.ScissorXY(sf * tx, sf * 248);
    GD.ScissorSize(sf * tw, sf * 8);
    GD.Clear();
    GD.RestoreContext();
  }
