// inspired by FabGL example code - <http://www.fabgl.com>

#include "fabgl.h"

#define joystick_xpin 39
#define joystick_ypin 34

fabgl::VGA16Controller DisplayController;
fabgl::Terminal        Terminal;

void xprintf(const char * format, ...)
{
  va_list ap;
  va_start(ap, format);
  int size = vsnprintf(nullptr, 0, format, ap) + 1;
  if (size > 0) {
    va_end(ap);
    va_start(ap, format);
    char buf[size + 1];
    vsnprintf(buf, size, format, ap);
    Serial.write(buf);
    Terminal.write(buf);
  }
  va_end(ap);
}

void setup()
{
  DisplayController.begin();
  DisplayController.setResolution(VGA_640x480_60Hz);
  Terminal.begin(&DisplayController);
}

void loop()
{
  Terminal.write("\e[40;92m"); // background: black, foreground: green
  Terminal.write("\e[2J");     // clear screen
  Terminal.write("\e[5;10H");   // move cursor to 5,10
  xprintf("X=%d  Y=%d", analogRead(joystick_xpin), analogRead(joystick_ypin));
  delay(50);
}
