#ifndef __BALL_H__
#define __BALL_H__ 1

#define int16_t long int
#define int8_t int
#define sint16_t signed long int
#define sint8_t signed int
#define uint16_t unsigned long int
#define uint8_t unsigned int

extern void draw_synced_list_c(const signed char *u,
                        sint8_t y,
                        sint8_t x,
                        uint8_t scaleMove,
                        uint8_t scaleList);

#define S 1
const signed char Down[] = {
    0, -39*S, -56*S, /* Reset0Ref and move to y,x at scaleMove */

    -1, 78*S, 0*S, /* relative draw at scaleList */
    0, 0*S, 16*S, /* relative move at scaleList */
    -1, -78*S, 0*S, /* relative draw at scaleList */
    0, 0*S, 16*S, /* relative move at scaleList */


    -1, 78*S, 0*S, /* relative draw at scaleList */
    0, 0*S, 16*S, /* relative move at scaleList */
    -1, -78*S, 0*S, /* relative draw at scaleList */
    0, 0*S, 16*S, /* relative move at scaleList */

    -1, 78*S, 0*S, /* relative draw at scaleList */
    0, 0*S, 16*S, /* relative move at scaleList */
    -1, -78*S, 0*S, /* relative draw at scaleList */
    0, 0*S, 16*S, /* relative move at scaleList */

    -1, 78*S, 0*S, /* relative draw at scaleList */
    0, 0*S, 16*S, /* relative move at scaleList */
    -1, -78*S, 0*S, /* relative draw at scaleList */
    //0, 0*S, 16*S, /* relative move at scaleList */

    2
};

const signed char Across[] = {
    0, -39*S, -56*S, /* Reset0Ref and move to y,x at scaleMove */

    -1, 0*S, 112*S, /* relative draw at scaleList */
    0, 13*S, 0*S, /* relative move at scaleList */
    -1, 0*S, -112*S, /* relative draw at scaleList */
    0, 13*S, 0*S, /* relative move at scaleList */

    -1, 0*S, 112*S, /* relative draw at scaleList */
    0, 13*S, 0*S, /* relative move at scaleList */
    -1, 0*S, -112*S, /* relative draw at scaleList */
    0, 13*S, 0*S, /* relative move at scaleList */

    -1, 0*S, 112*S, /* relative draw at scaleList */
    0, 13*S, 0*S, /* relative move at scaleList */
    -1, 0*S, -112*S, /* relative draw at scaleList */
    0, 13*S, 0*S, /* relative move at scaleList */

    -1, 0*S, 112*S, /* relative draw at scaleList */
    //0, 13*S, 0*S, /* relative move at scaleList */
    2
};
#undef S

#define S 2
const signed char Ball[26][31] = {
  // 0 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, -5*S, 10*S, /* relative draw at scaleList */
    -1, -8*S, 6*S, /* relative draw at scaleList */
    -1, -10*S, 4*S, /* relative draw at scaleList */
    -1, -9*S, -3*S, /* relative draw at scaleList */
    -1, -9*S, -7*S, /* relative draw at scaleList */
    -1, -4*S, -11*S, /* relative draw at scaleList */
    -1, -3*S, -11*S, /* relative draw at scaleList */
    -1, 2*S, -12*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 1 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, -4*S, 9*S, /* relative draw at scaleList */
    -1, -9*S, 6*S, /* relative draw at scaleList */
    -1, -9*S, 4*S, /* relative draw at scaleList */
    -1, -9*S, -3*S, /* relative draw at scaleList */
    -1, -9*S, -7*S, /* relative draw at scaleList */
    -1, -5*S, -11*S, /* relative draw at scaleList */
    -1, -2*S, -11*S, /* relative draw at scaleList */
    -1, 1*S, -11*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 2 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, -4*S, 8*S, /* relative draw at scaleList */
    -1, -8*S, 6*S, /* relative draw at scaleList */
    -1, -10*S, 3*S, /* relative draw at scaleList */
    -1, -9*S, -3*S, /* relative draw at scaleList */
    -1, -9*S, -7*S, /* relative draw at scaleList */
    -1, -4*S, -10*S, /* relative draw at scaleList */
    -1, -3*S, -11*S, /* relative draw at scaleList */
    -1, 1*S, -10*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 3 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, -4*S, 7*S, /* relative draw at scaleList */
    -1, -8*S, 5*S, /* relative draw at scaleList */
    -1, -9*S, 2*S, /* relative draw at scaleList */
    -1, -9*S, -3*S, /* relative draw at scaleList */
    -1, -9*S, -7*S, /* relative draw at scaleList */
    -1, -5*S, -9*S, /* relative draw at scaleList */
    -1, -3*S, -10*S, /* relative draw at scaleList */
    -1, 1*S, -9*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 4 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, -3*S, 6*S, /* relative draw at scaleList */
    -1, -8*S, 3*S, /* relative draw at scaleList */
    -1, -9*S, 2*S, /* relative draw at scaleList */
    -1, -8*S, -4*S, /* relative draw at scaleList */
    -1, -10*S, -6*S, /* relative draw at scaleList */
    -1, -5*S, -9*S, /* relative draw at scaleList */
    -1, -3*S, -8*S, /* relative draw at scaleList */
    -1, 0*S, -8*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 5 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, -3*S, 4*S, /* relative draw at scaleList */
    -1, -7*S, 2*S, /* relative draw at scaleList */
    -1, -8*S, 1*S, /* relative draw at scaleList */
    -1, -9*S, -4*S, /* relative draw at scaleList */
    -1, -9*S, -6*S, /* relative draw at scaleList */
    -1, -6*S, -8*S, /* relative draw at scaleList */
    -1, -4*S, -7*S, /* relative draw at scaleList */
    -1, 0*S, -6*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 6 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, -2*S, 3*S, /* relative draw at scaleList */
    -1, -7*S, 0*S, /* relative draw at scaleList */
    -1, -8*S, 0*S, /* relative draw at scaleList */
    -1, -9*S, -5*S, /* relative draw at scaleList */
    -1, -9*S, -5*S, /* relative draw at scaleList */
    -1, -6*S, -7*S, /* relative draw at scaleList */
    -1, -4*S, -5*S, /* relative draw at scaleList */
    -1, -1*S, -5*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 7 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, -2*S, 1*S, /* relative draw at scaleList */
    -1, -5*S, -2*S, /* relative draw at scaleList */
    -1, -8*S, -1*S, /* relative draw at scaleList */
    -1, -9*S, -5*S, /* relative draw at scaleList */
    -1, -9*S, -5*S, /* relative draw at scaleList */
    -1, -6*S, -6*S, /* relative draw at scaleList */
    -1, -6*S, -3*S, /* relative draw at scaleList */
    -1, -1*S, -3*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 8 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, -1*S, -1*S, /* relative draw at scaleList */
    -1, -5*S, -3*S, /* relative draw at scaleList */
    -1, -8*S, -3*S, /* relative draw at scaleList */
    -1, -9*S, -5*S, /* relative draw at scaleList */
    -1, -9*S, -5*S, /* relative draw at scaleList */
    -1, -6*S, -4*S, /* relative draw at scaleList */
    -1, -6*S, -2*S, /* relative draw at scaleList */
    -1, -2*S, -1*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 9 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, 0*S, -3*S, /* relative draw at scaleList */
    -1, -5*S, -4*S, /* relative draw at scaleList */
    -1, -7*S, -5*S, /* relative draw at scaleList */
    -1, -9*S, -5*S, /* relative draw at scaleList */
    -1, -9*S, -5*S, /* relative draw at scaleList */
    -1, -7*S, -2*S, /* relative draw at scaleList */
    -1, -6*S, -1*S, /* relative draw at scaleList */
    -1, -3*S, 1*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 10 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, 0*S, -5*S, /* relative draw at scaleList */
    -1, -4*S, -6*S, /* relative draw at scaleList */
    -1, -6*S, -6*S, /* relative draw at scaleList */
    -1, -9*S, -5*S, /* relative draw at scaleList */
    -1, -9*S, -5*S, /* relative draw at scaleList */
    -1, -8*S, -1*S, /* relative draw at scaleList */
    -1, -7*S, 1*S, /* relative draw at scaleList */
    -1, -3*S, 3*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 11 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, 1*S, -6*S, /* relative draw at scaleList */
    -1, -4*S, -8*S, /* relative draw at scaleList */
    -1, -6*S, -7*S, /* relative draw at scaleList */
    -1, -9*S, -6*S, /* relative draw at scaleList */
    -1, -9*S, -4*S, /* relative draw at scaleList */
    -1, -8*S, 0*S, /* relative draw at scaleList */
    -1, -7*S, 3*S, /* relative draw at scaleList */
    -1, -4*S, 4*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 12 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, 1*S, -8*S, /* relative draw at scaleList */
    -1, -3*S, -9*S, /* relative draw at scaleList */
    -1, -6*S, -8*S, /* relative draw at scaleList */
    -1, -9*S, -6*S, /* relative draw at scaleList */
    -1, -9*S, -4*S, /* relative draw at scaleList */
    -1, -8*S, 1*S, /* relative draw at scaleList */
    -1, -8*S, 4*S, /* relative draw at scaleList */
    -1, -4*S, 6*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 13 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, 2*S, -9*S, /* relative draw at scaleList */
    -1, -3*S, -11*S, /* relative draw at scaleList */
    -1, -6*S, -8*S, /* relative draw at scaleList */
    -1, -8*S, -7*S, /* relative draw at scaleList */
    -1, -10*S, -3*S, /* relative draw at scaleList */
    -1, -8*S, 1*S, /* relative draw at scaleList */
    -1, -8*S, 6*S, /* relative draw at scaleList */
    -1, -5*S, 7*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 14 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, 2*S, -10*S, /* relative draw at scaleList */
    -1, -2*S, -12*S, /* relative draw at scaleList */
    -1, -6*S, -9*S, /* relative draw at scaleList */
    -1, -8*S, -7*S, /* relative draw at scaleList */
    -1, -10*S, -3*S, /* relative draw at scaleList */
    -1, -8*S, 2*S, /* relative draw at scaleList */
    -1, -9*S, 7*S, /* relative draw at scaleList */
    -1, -5*S, 8*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 15 meridians
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, 2*S, -11*S, /* relative draw at scaleList */
    -1, -2*S, -12*S, /* relative draw at scaleList */
    -1, -5*S, -10*S, /* relative draw at scaleList */
    -1, -9*S, -7*S, /* relative draw at scaleList */
    -1, -9*S, -3*S, /* relative draw at scaleList */
    -1, -9*S, 3*S, /* relative draw at scaleList */
    -1, -9*S, 7*S, /* relative draw at scaleList */
    -1, -5*S, 9*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 16 West terminator
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, -5*S, 10*S, /* relative draw at scaleList */
    -1, -9*S, 7*S, /* relative draw at scaleList */
    -1, -9*S, 3*S, /* relative draw at scaleList */
    -1, -9*S, -3*S, /* relative draw at scaleList */
    -1, -9*S, -7*S, /* relative draw at scaleList */
    -1, -5*S, -10*S, /* relative draw at scaleList */
    -1, -2*S, -12*S, /* relative draw at scaleList */
    -1, 2*S, -12*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 17 latitudes
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 25*S, -32*S, /* relative move at scaleList */
    -1, -7*S, 22*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 18 latitudes
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -44*S, /* relative move at scaleList */
    -1, -14*S, 41*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 19 latitudes
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 18*S, -54*S, /* relative move at scaleList */
    -1, -18*S, 54*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 20 latitudes
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 9*S, -61*S, /* relative move at scaleList */
    -1, -18*S, 58*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 21 latitudes
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 0*S, -64*S, /* relative move at scaleList */
    -1, -18*S, 54*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 22 latitudes
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, -9*S, -61*S, /* relative move at scaleList */
    -1, -14*S, 41*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 23 latitudes
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, -18*S, -54*S, /* relative move at scaleList */
    -1, -7*S, 22*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 24 latitudes
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, -23*S, -44*S, /* relative move at scaleList */
    -1, 0*S, 0*S, /* relative draw at scaleList */
    2 /* End */
  },

  // 25 East terminator
  { 0, 0*S, 32*S, /* Reset0Ref and move to y,x at scaleMove */
    0, 23*S, -20*S, /* relative move at scaleList */
    -1, 2*S, -12*S, /* relative draw at scaleList */
    -1, -2*S, -12*S, /* relative draw at scaleList */
    -1, -5*S, -10*S, /* relative draw at scaleList */
    -1, -9*S, -7*S, /* relative draw at scaleList */
    -1, -9*S, -3*S, /* relative draw at scaleList */
    -1, -9*S, 3*S, /* relative draw at scaleList */
    -1, -9*S, 7*S, /* relative draw at scaleList */
    -1, -5*S, 10*S, /* relative draw at scaleList */
    2 /* End */
  },

};

#undef S
#endif
