// Sprites from Vector Kong converted to Vectrex format.

// Co-ordinate range from Vector Kong code is -128:127

// We don't support colours but will keep the info just in case...
#define BR -128


// I need a new line drawing procedure. Doesn't use existing conventions.
#define LINE {BR,0}
#define MOVE {BR,1}
#define END  {BR,2}
#define TEMPHACK {BR,BR}  // intermediate data during port from one format to other

// rather than use a count of vectors, all these arrays overload the points
// with pairs beginning with -128. The second member of the tuple being the
// control code.  This means we can't have any sprites containing a first
// coordinate of 255.  Fortunately since the sprites are static, this is not
// a problem and can be confirmed by inspection of the arrays below.  Note that
// this constraint does not apply to other contexts such as moves.

#ifdef COLOR_SUPPORT
#define RED ,
#define GRY ,
#define BLU ,
#define LBR ,
#define MBR ,
#define YEL ,
#define PNK ,
#else
// Might as well keep this range compact to allow for an efficient switch statement
#define RED ,{BR,3},
#define GRY ,{BR,4},
#define BLU ,{BR,5},
#define LBR ,{BR,6},
#define MBR ,{BR,7},
#define YEL ,{BR,9},
#define PNK ,{BR,9},
#endif

// All these are relative to the starting position where the sprite
// is to be plotted.  There is an implicit MOVE, {0,0} at the start
// of each sprite.  Coordinate pairs are {y,x}.

// All sprites are at the same scale and no pre-scaling for Vectrex
// has been applied here. This is something else that will have to
// be worked on as we see what they look like in practice.

// Likewise there is no realignment, which will have to be done in
// two steps, using the initial absolute positioning followed by the
// relative offset of the points within the sprite.  (At least on
// a native Vectrex - the Pitrex handles this behind the scenes in
// the system library)

// BIG PROBLEM!  Some vectors here exceed the -127:127 range!  These
// sprites may need to be broken into parts, with extra parts being
// positioned explicitly by the caller.

const points8 sprite_00[] = { // 0
  LINE, {0,2},{0,4},{2,6},{4,6},{6,4},{6,2},{4,0},{2,0},{0,2},
  END
};

// Having said that, not sure why there is an explicit MOVE, {0,0}
// at the start of this and some other sprites :-/  I guess it will
// become clear when I write some test code to plot them on the Vectrex.

// (It may just be that they're redundant and that I can remove them...)

const points8 sprite_01[] = { // 1
  LINE, {0,0},{0,6},
  MOVE, {0,3},
  LINE, {6,3},{5,1},
  END
};

const points8 sprite_02[] = { // 2
  LINE, {0,6},{0,0},{5,6},{6,3},{5,0},
  END
};

const points8 sprite_03[] = { // 3
  LINE, {1,0},{0,1},{0,5},{1,6},{2,6},{3,5},{3,2},{6,6},{6,1},
  END
};

const points8 sprite_04[] = { // 4
  LINE, {0,5},{6,5},{2,0},{2,7},
  END
};

const points8 sprite_05[] = { // 5
  LINE, {1,0},{0,1},{0,5},{2,6},{4,5},{4,0},{6,0},{6,5},
  END
};

const points8 sprite_06[] = { // 6
  LINE, {3,0},{1,0},{0,1},{0,5},{1,6},{2,6},{3,5},{3,0},{6,2},{6,5},
  END
};

const points8 sprite_07[] = { // 7
  LINE, {6,0},{6,6},{0,2},
  END
};

const points8 sprite_08[] = { // 8
  LINE, {2,0},{0,1},{0,5},{2,6},{5,0},{6,1},{6,4},{5,5},{2,0},
  END
};

const points8 sprite_09[] = { // 9
  LINE, {0,1},{0,4},{2,6},{5,6},{6,5},{6,1},{5,0},{4,0},{3,1},{3,6},
  END
};

const points8 sprite_10[] = { // space
  END
};

const points8 sprite_11[] = { // A
  LINE, {0,0},{4,0},{6,3},{4,6},{0,6},
  MOVE, {2,6},
  LINE, {2,0},
  END
};

const points8 sprite_12[] = { // B
  LINE, {0,0},{6,0},{6,5},{5,6},{4,6},{3,5},{2,6},{1,6},{0,5},{0,0},
  MOVE, {3,0},
  LINE, {3,5},
  END
};

const points8 sprite_13[] = { // C
  LINE, {1,6},{0,5},{0,2},{2,0},{4,0},{6,2},{6,5},{5,6},
  END
};

const points8 sprite_14[] = { // D
  LINE, {0,0},{6,0},{6,4},{4,6},{2,6},{0,4},{0,0},
  END
};

const points8 sprite_15[] = { // E
  LINE, {0,5},{0,0},{6,0},{6,5},
  MOVE, {3,0},
  LINE, {3,4},
  END
};

const points8 sprite_16[] = { // F
  LINE, {0,0},{6,0},{6,6},
  MOVE, {3,0},
  LINE, {3,5},
  END
};

const points8 sprite_17[] = { // G
  LINE, {3,4},{3,6},{0,6},{0,2},{2,0},{4,0},{6,2},{6,6},
  END
};

const points8 sprite_18[] = { // H
  LINE, {0,0},{6,0},
  MOVE, {3,0},
  LINE, {3,6},
  MOVE, {0,6},
  LINE, {6,6},
  END
};

const points8 sprite_19[] = { // I
  LINE, {0,0},{0,6},
  MOVE, {0,3},
  LINE, {6,3},
  MOVE, {6,0},
  LINE, {6,6},
  END
};

const points8 sprite_1a[] = { // J
  LINE, {1,0},{0,1},{0,5},{1,6},{6,6},
  END
};

const points8 sprite_1b[] = { // K
  LINE, {0,0},{6,0},
  MOVE, {3,0},
  LINE, {0,6},
  MOVE, {3,0},
  LINE, {6,6},
  END
};

const points8 sprite_1c[] = { // L
  LINE, {6,0},{0,0},{0,5},
  END
};

const points8 sprite_1d[] = { // M
  LINE, {0,0},{6,0},{2,3},{6,6},{0,6},
  END
};

const points8 sprite_1e[] = { // N
  LINE, {0,0},{6,0},{0,6},{6,6},
  END
};

const points8 sprite_1f[] = { // O
  LINE, {1,0},{5,0},{6,1},{6,5},{5,6},{1,6},{0,5},{0,1},{1,0},
  END
};

const points8 sprite_20[] = { // P
  LINE, {0,0},{6,0},{6,5},{5,6},{3,6},{2,5},{2,0},
  END
};

const points8 sprite_21[] = { // Q
  LINE, {1,0},{5,0},{6,1},{6,5},{5,6},{2,6},{0,4},{0,1},{1,0},
  MOVE, {0,6},
  LINE, {2,3},
  END
};

const points8 sprite_22[] = { // R
  LINE, {0,0},{6,0},{6,5},{5,6},{4,6},{2,3},{2,0},{2,3},{0,6},
  END
};

const points8 sprite_23[] = { // S
  LINE, {1,0},{0,1},{0,5},{1,6},{2,6},{4,0},{5,0},{6,1},{6,4},{5,5},
  END
};

const points8 sprite_24[] = { // T
  LINE, {6,0},{6,6},
  MOVE, {6,3},
  LINE, {0,3},
  END
};

const points8 sprite_25[] = { // U
  LINE, {6,0},{1,0},{0,1},{0,5},{1,6},{6,6},
  END
};

const points8 sprite_26[] = { // V
  LINE, {6,0},{3,0},{0,3},{3,6},{6,6},
  END
};

const points8 sprite_27[] = { // W
  LINE, {6,0},{2,0},{0,1},{4,3},{0,5},{2,6},{6,6},
  END
};

const points8 sprite_28[] = { // X
  LINE, {0,0},{6,6},{3,3},{6,0},{0,6},
  END
};

const points8 sprite_29[] = { // Y
  LINE, {6,0},{3,3},{6,6},
  MOVE, {3,3},
  LINE, {0,3},
  END
};

const points8 sprite_2a[] = { // Z
  LINE, {6,0},{6,6},{0,0},{0,6},
  END
};

const points8 sprite_2b[] = { // dot
  LINE, {0,0},{1,0},{1,1},{0,1},{0,0},
  END
};

const points8 sprite_2c[] = { // dash
  LINE, {3,0},{3,5},
  END
};

const points8 sprite_2d[] = { // underscore
  LINE, {5,0},{5,6},
  END
};

const points8 sprite_2e[] = { // colon
  LINE, {4,3},{4,3},
  MOVE, {2,3},
  LINE, {2,3},
  END
};

const points8 sprite_2f[] = { // Alt underscore
  LINE, {5,0},{5,6},
  END
};

const points8 sprite_30[] = { // Left bracket
  LINE, {0,2},{2,0},{4,0},{6,2},
  END
};

const points8 sprite_31[] = { // Right bracket
  LINE, {0,2},{2,4},{4,4},{6,2},
  END
};

const points8 sprite_32[] = { // I
  LINE, {0,0},{0,4},
  MOVE, {6,0},
  LINE, {6,4},
  MOVE, {0,2},
  LINE, {6,2},
  END
};

const points8 sprite_33[] = { // II
  LINE, {0,-1},{0,6},
  MOVE, {6,-1},
  LINE, {6,6},
  MOVE, {0,1},
  LINE, {6,1},
  MOVE, {0,4},
  LINE, {6,4},
  END
};

const points8 sprite_34[] = { // equals
  LINE, {2,0},{2,5},
  MOVE, {4,0},
  LINE, {4,5},
  END
};

const points8 sprite_35[] = { // dash
  LINE, {3,0},{3,5},
  END
};

const points8 sprite_39[] = { // smash
  LINE, {0,0},{7,0},{7,7},{0,7},{0,0},
  END
};

const points8 sprite_44[] = { // rub / end
  LINE, {0,5},{4,5},{4,7},{2,7},{0,8},
  MOVE, {2,5},
  LINE, {2,7},
  MOVE, {4,10},
  LINE, {1,10},{0,11},{0,12},{1,13},{4,13},
  MOVE, {0,15},
  LINE, {4,15},{4,17},{2,17},{2,18},{0,18},{0,15},
  MOVE, {2,15},
  LINE, {2,17},
  MOVE, {0,23},
  LINE, {0,21},{4,21},{4,23},
  MOVE, {2,21},
  LINE, {2,22},
  MOVE, {0,25},
  LINE, {4,25},{0,28},{4,28},
  MOVE, {0,30},
  LINE, {4,30},{4,32},{3,33},{1,33},{0,32},{0,30},
  END
};

const points8 sprite_49[] = { // copyright
  LINE, {0,4},{2,2},{5,2},{7,4},{7,8},{5,10},{2,10},{0,8},{0,4},
  MOVE, {2,7},
  LINE, {2,5},{5,5},{5,7},
  END
};

const points8 sprite_6c[] = { // bonus
  LINE, {2,0},{2,4},{3,5},{4,4},{5,5},{6,4},{6,0},{2,0},
  MOVE, {4,4},
  LINE, {4,0},
  MOVE, {3,7},
  LINE, {2,8},{2,11},{3,12},{5,12},{6,11},{6,8},{5,7},{3,7},
  MOVE, {2,14},
  LINE, {6,14},{2,19},{6,19},
  MOVE, {6,21},
  LINE, {3,21},{2,22},{2,25},{3,26},{6,26},
  MOVE, {2,28},
  LINE, {2,31},{4,31},{4,28},{5,28},{6,29},{6,31},
  MOVE, {6,-2},
  LINE, {6,-5},{-12,-5},{-12,36},{6,36},{6,33},
  MOVE, {0,-3},
  LINE, {-10,-3},{-10,34},{0,34},{0,-3},
  END
};

const points8 sprite_70[] = { // Alternative 0-9 coloured red
  LINE  RED{0,2},{0,4},{2,6},{4,6},{6,4},{6,2},{4,0},{2,0},{0,2},
  END
};

const points8 sprite_71[] = {
  LINE  RED{0,0},{0,6},
  MOVE, {0,3},
  LINE, {6,3},{5,1},
  END
};

const points8 sprite_72[] = {
  LINE  RED{0,6},{0,0},{5,6},{6,3},{5,0},
  END
};

const points8 sprite_73[] = {
  LINE  RED{1,0},{0,1},{0,5},{1,6},{2,6},{3,5},{3,2},{6,6},{6,1},
  END
};

const points8 sprite_74[] = {
  LINE  RED{0,5},{6,5},{2,0},{2,7},
  END
};

const points8 sprite_75[] = {
  LINE  RED{1,0},{0,1},{0,5},{2,6},{4,5},{4,0},{6,0},{6,5},
  END
};

const points8 sprite_76[] = {
  LINE  RED{3,0},{1,0},{0,1},{0,5},{1,6},{2,6},{3,5},{3,0},{6,2},{6,5},
  END
};

const points8 sprite_77[] = {
  LINE  RED{6,0},{6,6},{0,2},
  END
};

const points8 sprite_78[] = {
  LINE  RED{2,0},{0,1},{0,5},{2,6},{5,0},{6,1},{6,4},{5,5},{2,0},
  END
};

const points8 sprite_79[] = {
  LINE  RED{0,1},{0,4},{2,6},{5,6},{6,5},{6,1},{5,0},{4,0},{3,1},{3,6},
  END
};

const points8 sprite_9f[] = { // TM (default logo is cleared)
  // 2,0,0,2,0,13,2,15,5,15,7,13,7,2,5,0,2,0, MOVE,5,3,5,7, MOVE,5,5,2,5, MOVE,2,8,5,8,4,10,5,12,2,12, 
  END
};

const points8 sprite_b0[] = { // basic block used for title screen (default logo is cleared)
  END
};

const points8 sprite_b1[] = { // Box
  LINE, {0,0},{7,0},{7,7},{0,7},{0,0},
  END
};

const points8 sprite_b7[] = { // Rivet
  LINE  YEL{0,0},{1,0},{1,1},{6,1},{6,0},{7,0},{7,6},{6,6},{6,5},{1,5},{1,6},{0,6},{0,0},
  END
};

const points8 sprite_dd[] = { // Help (big H)
  LINE, {0,0},{7,0},
  MOVE, {4,0},
  LINE, {4,4},
  MOVE, {1,4},
  LINE, {7,4},
  MOVE, {2,9},
  LINE, {1,6},{7,6},{7,9},
  MOVE, {5,6},
  LINE, {5,9},
  MOVE, {7,11},
  LINE, {2,11},{3,14},
  MOVE, {3,16},
  LINE, {7,16},{7,18},{6,19},{5,18},{5,16},
  MOVE, {7,22},
  LINE, {5,21},
  MOVE, {3,21},
  LINE, {3,21},
  END
};

const points8 sprite_ed[] = { // Help (little H)
  LINE, {7,1},{5,1},
  MOVE, {6,1},
  LINE, {6,5},
  MOVE, {7,5},
  LINE, {4,5},
  MOVE, {7,10},
  LINE, {7,7},{4,7},{3,10},
  MOVE, {5,7},
  LINE, {5,10},
  MOVE, {7,12},
  LINE, {3,12},{2,15},
  MOVE, {1,17},
  LINE, {7,17},{7,20},{3,20},{3,17},
  MOVE, {7,23},
  LINE, {2,22},
  MOVE, {0,21},
  LINE, {0,22},
  END
};

const points8 sprite_fb[] = { // question mark
  LINE, {5,1},{6,2},{6,5},{5,6},{4,6},{2,3},
  MOVE, {0,3},
  LINE, {1,4},
  MOVE, {1,3},
  LINE, {0,4},
  END
};

const points8 sprite_fd[] = { // vertical line
  LINE, {-1,0},{8,0},
  MOVE, {-1,-1},
  LINE, {8,-1},
  END
};

const points8 sprite_fe[] = { // cross
  LINE, {0,0},{7,0},{7,7},{0,7},{0,0},
  END
};

const points8 sprite_ff[] = { // jumpman / stick man
  LINE, {5,2},{7,2},{7,4},{5,4},{5,2},
  MOVE, {5,3},
  LINE, {2,3},{0,1},
  MOVE, {2,3},
  LINE, {0,5},
  MOVE, {4,0},
  LINE, {3,1},{3,5},{4,6},
  END
};

// Bonus points

const points8 sprite_7b[] = { // 100 Points
  LINE, {5,0},{6,1},{0,1},
  MOVE, {0,0},
  LINE, {0,2},
  MOVE, {0,4},
  LINE, {0,8},{6,8},{6,4},{0,4},
  MOVE, {0,10},
  LINE, {0,14},{6,14},{6,10},{0,10},
  END
};

const points8 sprite_f7d[] = { // 300 Points
  LINE, {0,0},{0,4},{2,4},{3,1},{6,4},{6,0},
  MOVE, {0,6},
  LINE, {0,9},{6,9},{6,6},{0,6},
  MOVE, {0,11},
  LINE, {0,14},{6,14},{6,11},{0,11},
  END
};

const points8 sprite_f7e[] = { // 500 Points
  LINE, {1,0},{0,1},{0,3},{1,4},{3,4},{4,0},{6,0},{6,4},
  MOVE, {0,6},
  LINE, {0,9},{6,9},{6,6},{0,6},
  MOVE, {0,11},
  LINE, {0,14},{6,14},{6,11},{0,11},
  END
};

const points8 sprite_f7f[] = { // 800 Points
  LINE, {1,0},{2,0},{4,4},{5,4},{6,3},{6,1},{5,0},{4,0},{2,4},{1,4},{0,3},{0,1},{1,0},
  MOVE, {0,6},
  LINE, {0,9},{6,9},{6,6},{0,6},
  MOVE, {0,11},
  LINE, {0,14},{6,14},{6,11},{0,11},
  END
};

// Love heart

const points8 sprite_f76[] = { // full heart
  LINE, {0,8},{5,2},{7,1},{10,1},{12,3},{12,6},{10,8},{12,10},{12,13},{10,15},{7,15},{5,14},{0,8},
  END
};

const points8 sprite_f77[] = { // broken heart
  LINE, {0,7},{5,1},{7,0},{10,0},{12,5},{11,6},{10,5},{8,7},{5,4},{2,7},{0,7},
  MOVE, {1,9},
  LINE, {2,9},{5,7},{8,10},{10,8},{12,10},{12,13},{10,15},{7,15},{5,14},{1,9},
  END
};

// Item was smashed

const points8 sprite_f60[] = {
  LINE, {6,1},{9,1},{13,5},{13,10},{9,14},{6,14},{2,10},{2,5},{6,1} YEL {6,2},{9,2},{12,5},{12,10},{9,13},{6,13},{3,10},{3,5},{6,2},
  END
};

const points8 sprite_f61[] = {
  LINE, {7,3},{4,6},{4,9},{7,12},{8,12},{11,9},{11,6},{8,3},{7,3} YEL {7,4},{5,6},{5,9},{7,11},{8,11},{10,9},{10,6},{8,4},{7,4} RED {7,5},{6,6},{6,9},{7,10},{8,10},{9,9},{9,6},{8,5},{7,5},
  END
};

// Non_character objects:

const points8 logo[] = { // vectorkong logo     WARNING! Some of these are out of range -127:127
  LINE, {0,32},{39,32},
  MOVE, {20,32},
  LINE, {0,55},
  MOVE, {20,32},
  LINE, {39,55},
  MOVE, {0,64},
  LINE, {0,87},{39,87},{39,64},{0,64},
  MOVE, {0,96},
  LINE, {39,96},{0,119},{39,119},
  MOVE, {20,140},
  LINE, {20,151},{0,151},{0,128},{39,128},{39,151},
  MOVE, {95,0},
  LINE, {56,12},{95,23},
  MOVE, {56,55},
  LINE, {56,32},{95,32},{95,55},
  MOVE, {76,32},
  LINE, {76,55},
  MOVE, {56,87},
  LINE, {56,64},{95,64},{95,87},
  MOVE, {95,96},
  LINE, {95,119},
  MOVE, {95,108},
  LINE, {56,108},
  MOVE, {56,128},
  LINE, {56,151},{95,151},{95,128},{56,128},
  MOVE, {56,160},
  LINE, {95,160},{95,183},{76,183},{76,160},{56,183},
  END
};

const points8 select_[] = { // selection box
  LINE, {0,0},{16,0},{16,16},{0,16},{0,0},
  END
};

const points8 zigzag[] = { // zig zags for girders
  LINE, {3,4},{4,8},{3,12},
  END
};

const points8 oilcan[] = {
  LINE, {1,1},{15,1},
  MOVE, {1,15},
  LINE, {15,15},
  MOVE, {5,1},
  LINE, {5,15},
  MOVE, {12,1},
  LINE, {12,15},
  MOVE, {7,4},
  LINE, {10,4},{10,7},{7,7},{7,4},
  MOVE, {7,9},
  LINE, {10,9},
  MOVE, {7,13},
  LINE, {7,11},{10,11},
  MOVE, {15,0},
  LINE, {16,0},{16,16},{15,16},{15,0},
  MOVE, {1,0},
  LINE, {0,0},{0,16},{1,16},{1,0},
  END
};

const points8 flames[] = {
  LINE, {0,4},{2,2},{3,3},{8,0},{4,5},{5,6},{9,4},{5,8},{4,7},{2,10},{2,11},{4,12},{9,10},{4,14},{0,12},
  END
};

const points8 stacked[] = {
  LINE, {3,0},{12,0},{15,2},{15,7},{12,9},{3,9},{0,7},{0,7},{0,2},{3,0},
  MOVE, {1,2},
  LINE, {1,7},
  MOVE, {14,2},
  LINE, {14,7} MBR {2,3},{13,3},
  MOVE, {2,6},
  LINE, {13,6},
  END
};

const points8 rolling[] = { // barrel outline
  LINE, {3,0},{6,0},{8,2},{9,4},{9,7},{8,9},{6,11},{3,11},{1,9},{0,7},{0,4},{1,2},{3,0},
  END
};

const points8 roll_1[] = { // regular barrel
  LINE, {2,3},{3,4},
  MOVE, {3,3},
  LINE, {2,4},
  MOVE, {6,5},
  LINE, {3,8},
  END
};

const points8 roll_2[] = {
  LINE, {2,7},{3,8},
  MOVE, {3,7},
  LINE, {2,8},
  MOVE, {3,3},
  LINE, {6,6},
  END
};

const points8 roll_3[] = {
  LINE, {6,7},{7,8},
  MOVE, {7,7},
  LINE, {6,8},
  MOVE, {6,3},
  LINE, {3,6},
  END
};

const points8 roll_4[] = {
  LINE, {6,3},{7,4},
  MOVE, {7,3},
  LINE, {6,4},
  MOVE, {3,5},
  LINE, {6,8},
  END
};

const points8 skull_1[] = { // skull/blue barrel
  LINE, {3,3},{5,3},{6,4},{6,7},{7,8},{6,9},{5,8},{3,8},{2,7},{2,4},{3,3},
  MOVE, {5,4},
  LINE, {3,6},
  END
};

const points8 skull_2[] = {
  LINE, {5,8},{3,8},{2,7},{2,4},{3,3},{5,3},{6,2},{7,3},{6,4},{6,7},{5,8},
  MOVE, {3,5},
  LINE, {5,7},
  END
};

const points8 skull_3[] = {
  LINE, {7,4},{7,7},{6,8},{4,8},{3,7},{3,4},{2,3},{3,2},{4,3},{6,3},{7,4},
  MOVE, {6,5},
  LINE, {4,7},
  END
};

const points8 skull_4[] = {
  LINE, {4,3},{6,3},{7,4},{7,7},{6,8},{4,8},{3,9},{2,8},{3,7},{3,4},{4,3},
  MOVE, {6,6},
  LINE, {4,4},
  END
};

const points8 down[] = { // barrel going down ladder or crazy barrel
  LINE, {2,0},{7,0},{9,3},{9,12},{7,15},{2,15},{0,12},{0,3},{2,0},
  MOVE, {1,1},
  LINE, {8,1},
  MOVE, {1,14},
  LINE, {8,14},
  END
};

const points8 down_1[] = {
  LINE, {3,3},{3,12},
  MOVE, {6,3},
  LINE, {6,12},
  END
};

const points8 down_2[] = {
  LINE, {2,3},{2,12},
  MOVE, {7,3},
  LINE, {7,12},
  END
};

const points8 pauline[] = {
  LINE, {14,11},{1,12},{4,0},{10,7},{15,6},{15,7},{13,9},{14,11} BLU {10,7},{9,12} PNK {20,14},{21,13},{21,8},{15,1},{15,6},{15,7},{20,10},{20,14},{18,14},{16,12},{16,10},{14,10},
  MOVE, {19,12},
  LINE, {19,13},
  MOVE, {2,5},
  LINE, {0,6},{1,2},{3,3},{2,5},
  MOVE, {13,6},
  LINE, {12,2},{11,2},{11,7},
  MOVE, {10,12},
  LINE, {9,15},{10,15},{12,11},
  MOVE, {1,12},
  LINE, {0,13},{0,9},{2,9},{1,12},
  END
};

const points8 hammer_up[] = {
  LINE, {5,0},{7,0},{8,1},{8,8},{7,9},{5,9},{4,8},{4,1},{5,0},
  MOVE, {4,4},
  LINE, {0,4},{0,5},{4,5},
  MOVE, {8,4},
  LINE, {9,4},{9,5},{8,5},
  END
};

const points8 hammer_down[] = {
  LINE, {8,/**/1},{9,0},{9,2},{8,3},{1,3},{0,2},{0,0},{1,/**/1},{8,/**/1},
  MOVE, {5,/**/1},
  LINE, {5,/**/2},{4,/**/2},{4,/**/1},
  MOVE, {5,3},
  LINE, {5,9},{4,9},{4,3} GRY {/**/2,3},{0,5},
  MOVE, {/**/2,/**/2},
  LINE, {0,/**/4},
  END
};

const points8 fireball[] = {
  LINE, {12,2},{5,0},{3,0},{1,1},{0,3},{0,8},{1,10},{3,11},{6,12},{11,13},{9,10},{13,12},{10,9},{15,11},{10,7},{13,8},{10,5},{14,7},{9,3},{12,2} RED {6,3},{7,4},{6,5},{5,4},{6,3},
  MOVE, {6,6},
  LINE, {7,7},{6,8},{5,7},{6,6},
  END
};

const points8 fb_flame[] = {
  LINE, {12,2},{5,0},
  MOVE, {6,12},
  LINE, {11,13},{9,10},{13,12},{10,9},{15,11},{10,7},{13,8},{10,5},{14,7},{9,3},{12,2},
  END
};

const points8 dk_front[] = {
  LINE, {31,20},{31,17},{27,13},{25,13},{25,15},{28,15},{29,16},{30,18},{30,19},{29,20},
  MOVE, {25,20},
  LINE, {25,18},{24,18},{24,20},
  MOVE, {21,15},
  LINE, {22,16},{22,20},
  MOVE, {26,18},
  LINE, {27,18},{27,19},{26,19},{26,18},
  MOVE, {6,20},
  LINE, {6,16},{2,12},
  MOVE, {2,4},
  LINE, {4,4},{5,3},{7,3},{11,7},{13,7},{13,4},{16,1},{19,1},{23,6},{24,8},{24,10},
  MOVE, {7,15},
  LINE, {8,14},{10,14},
  MOVE, {19,6},
  LINE, {17,10},{16,13},
  MOVE, {10,13},
  LINE, {11,10} MBR {27,13},{27,11},{26,10},{25,10},{21,11},{20,14},{19,14},{18,16},{18,20},
  MOVE, {2,12},
  LINE, {0,11},{0,0},{2,2},{2,4},
  MOVE, {16,13},
  LINE, {16,15},{15,18},{14,19},{12,19},{10,17},{10,13},
  MOVE, {6,17},
  LINE, {7,17},{8,16},
  MOVE, {6,19},
  LINE, {7,19},{8,18},
  MOVE, {1,10},
  LINE, {2,11},
  MOVE, {1,5},
  LINE, {2,6},
  MOVE, {28,17},
  LINE, {28,19},{26,19},{26,17},{28,17} LBR {26,18},{27,18},{27,19},{26,19},{26,18},
  END
};

const points8 dk_hold[] = {
  LINE, {31,20},{31,17},{27,13},{25,13},{25,15},{28,15},{29,16},{30,18},{30,19},{29,20},
  MOVE, {25,20},
  LINE, {25,18},{24,18},{24,20},
  MOVE, {21,15},
  LINE, {22,16},{22,20},
  MOVE, {26,18},
  LINE, {27,18},{27,19},{26,19},{26,18},
  MOVE, {2,4},
  LINE, {4,4},{5,3},{7,3},{11,1},{14,0},{17,0},{21,1},{26,6},{26,8},{25,10},
  MOVE, {7,3},
  LINE, {4,6},
  MOVE, {15,11},
  LINE, {17,10},{15,8},{11,8},
  MOVE, {11,12},
  LINE, {11,16},{13,18},{15,18},{16,17},{16,12},{15,11},{12,11},{11,12} MBR
  MOVE, {13,14},
  LINE, {14,15},
  MOVE, {14,14},
  LINE, {13,15},
  MOVE, {27,13},
  LINE, {27,11},{26,10},{25,10},{21,11},{20,14},{19,14},{18,16},{18,20},
  MOVE, {2,12},
  LINE, {0,11},{0,0},{2,2},{2,4},
  MOVE, {1,10},
  LINE, {2,11},
  MOVE, {1,5},
  LINE, {2,6},
  MOVE, {28,17},
  LINE, {28,19},{26,19},{26,17},{28,17},
  MOVE, {4,6},
  LINE, {3,9},{3,11},{4,11},{5,10},{8,10},{9,12},{10,12},{10,11},{11,8} LBR {26,18},{27,18},{27,19},{26,19},{26,18},
  END
};

const points8 dk_side[] = {
  LINE, {7,1},{7,5},{9,7},{11,7},{17,13},{23,15},{26,18},{28,23},{28,26},{30,28},{31,30},{31,35},{30,36},
  MOVE, {2,6},
  LINE, {3,7},{3,13},{5,15},{5,23},{4,23},{2,22},
  MOVE, {2,30},
  LINE, {5,31},{10,28},
  MOVE, {3,35},
  LINE, {10,28},{18,21},{23,21},{24,22},
  MOVE, {7,39},
  LINE, {13,35},{17,32},
  MOVE, {19,35},
  LINE, {21,37},{21,41},
  MOVE, {26,38},
  LINE, {26,40},{25,40},{25,38},{26,38},
  MOVE, {6,16},
  LINE, {7,17},{10,23},{10,25},
  MOVE, {6,22},
  LINE, {8,24},{9,26},
  MOVE, {30,36},
  LINE, {30,35},{27,31},{24,34},{22,34},{21,33},{21,32} MBR {7,1},{1,1},{0,2},{0,8},{2,6},
  MOVE, {5,2},
  LINE, {5,3},
  MOVE, {1,2},
  LINE, {2,3},
  MOVE, {2,22},
  LINE, {0,22},{0,34},{2,32},{2,30},
  MOVE, {1,24},
  LINE, {2,24},
  MOVE, {1,29},
  LINE, {2,28},
  MOVE, {3,35},
  LINE, {0,39},{0,41},{1,42},{2,42},{4,40},{5,40},{6,42},{7,42},{7,39},
  MOVE, {17,32},
  LINE, {17,36},{18,39},{21,42},{22,42},{24,41},{25,40},
  MOVE, {26,38},
  LINE, {30,36},
  MOVE, {21,32},
  LINE, {23,30},{25,30},{26,29},{26,28},{25,27},{24,27},{20,31},{17,32},
  MOVE, {28,36},
  LINE, {28,34},{26,34},{26,36},{28,36} LBR {27,36},{27,35},{26,35},{26,36},{27,36},
  END
};

const points8 dk_growl[] = {
  LINE, {22,20},{22,16},{23,15},{23,14},{22,13},{20,14},{19,17},{19,20} LBR {21,15},{21,17},
  MOVE, {22,16},
  LINE, {20,16},
  MOVE, {21,19},
  LINE, {21,20},
  MOVE, {22,20},
  LINE, {20,20},
  END
};

const points8 jm_0[] = {
  LINE, {6,6},{6,7},{5,7},{5,6},{6,6},
  MOVE, {8,6},
  LINE, {7,5},
  MOVE, {2,5},
  LINE, {1,5},{1,4},{0,4},{0,7},{2,7},{2,5},
  MOVE, {2,10},
  LINE, {1,10},{1,9},{0,9},{0,12},{2,12},{2,10},
  MOVE, {10,3},
  LINE, {11,3},{11,5},{10,5},{10,3},
  MOVE, {11,3},
  LINE, {10,5},
  MOVE, {10,3},
  LINE, {11,5},
  MOVE, {14,8},
  LINE, {13,9},{11,8},{11,9},{12,10},{12,11},{10,11},{10,13},{14,11},
  MOVE, {8,10},
  LINE, {8,11},{7,12},{5,12},{3,10},
  MOVE, {7,9},
  LINE, {6,10},{5,9} RED {14,3},{14,11},{16,10},{16,8},{14,5},
  MOVE, {6,9},
  LINE, {7,8},{7,5},{5,4},{3,4},{2,5},
  MOVE, {2,7},
  LINE, {3,8},{3,9},{2,10},
  MOVE, {4,11},
  LINE, {2,12} GRY {14,6},{13,5},{12,3},{11,2},{11,3},{10,4},{9,4},{8,6},
  MOVE, {8,10},
  LINE, {10,11},
  MOVE, {5,9},
  LINE, {4,8},{3,9},{3,10},
  MOVE, {13,6},
  LINE, {13,7},{12,7},{12,6},{13,6},
  END
};

const points8 jm_1[] = {
  LINE, {10,3},{11,3},{11,5},{10,5},{10,3},
  MOVE, {11,3},
  LINE, {10,5},
  MOVE, {10,3},
  LINE, {11,5},
  MOVE, {14,8},
  LINE, {13,9},{11,8},{11,9},{12,10},{12,11},{10,11},{10,13},{14,11},
  MOVE, {8,2},
  LINE, {8,6},
  MOVE, {6,3},
  LINE, {6,5},
  MOVE, {8,10},
  LINE, {8,12},
  MOVE, {6,11},
  LINE, {6,12},{5,14},
  MOVE, {6,7},
  LINE, {6,8},{5,8},{5,7},{6,7},
  MOVE, {5,2},
  LINE, {2,2},{2,4},{4,4},{4,3},{5,3},{5,2},
  MOVE, {3,13},
  LINE, {2,14},{0,13},{0,12},{1,12},{2,11},{3,13} RED {14,3},{14,11},{16,10},{16,8},{14,5},
  MOVE, {4,4},
  LINE, {7,6},{7,9},{6,11},{3,13},
  MOVE, {2,4},
  LINE, {3,7},{3,8},{2,11} GRY {14,6},{13,5},{12,3},{11,2},{11,3},{10,4},{9,4},{8,6},
  MOVE, {8,10},
  LINE, {10,11},
  MOVE, {13,6},
  LINE, {13,7},{12,7},{12,6},{13,6},
  MOVE, {8,2},
  LINE, {8,1},{7,1},{6,2},{6,3},
  MOVE, {7,14},
  LINE, {7,15},{5,15},{5,14},
  END
};

const points8 jm_2[] = {
  LINE, {9,2},{10,2},{10,4},{9,4},{9,2},
  MOVE, {10,2},
  LINE, {9,4},
  MOVE, {9,2},
  LINE, {10,4},
  MOVE, {13,7},
  LINE, {12,8},{10,7},{10,8},{11,9},{11,10},{9,10},{9,12},{13,10},
  MOVE, {6,4},
  LINE, {7,9},{7,11},{6,12},{5,11},{4,4},
  MOVE, {2,6},
  LINE, {2,8},{0,8},{0,5},{1,5},{1,6},{2,6},
  MOVE, {4,13},
  LINE, {4,15},{1,15},{1,14},{2,14},{2,13},{4,13} RED {13,2},{13,10},{15,9},{15,7},{13,4},
  MOVE, {4,4},
  LINE, {2,6},
  MOVE, {2,8},
  LINE, {3,8},{3,9},{2,13},
  MOVE, {6,12},
  LINE, {4,13} GRY {13,5},{12,4},{11,2},{10,1},{10,2},{9,3},{8,3},{7,5},
  MOVE, {7,9},
  LINE, {9,10},
  MOVE, {12,5},
  LINE, {12,6},{11,6},{11,5},{12,5},
  MOVE, {6,4},
  LINE, {6,2},{5,2},{4,4},
  END
};

const points8 jm_3[] = {
  LINE, {14,2},{11,1},{8,3},{7,3},
  MOVE, {14,4},
  LINE, {11,3},{9,5},
  MOVE, {9,10},
  LINE, {10,12},{10,13},{9,14},{7,12},
  MOVE, {4,3},
  LINE, {4,6},{3,6},{3,2},{4,3},
  MOVE, {2,7},
  LINE, {2,10},{1,11},{1,7},{2,7},
  MOVE, {14,5},
  LINE, {13,4},{10,4},{9,6},{9,9},{10,11},{13,11},{14,10} RED {15,5},{15,10},{14,10},{13,9},{13,6},{14,5},{15,5},
  MOVE, {4,3},
  LINE, {5,2},{6,2},{7,3},{8,5},{9,5},{9,6},{8,6},{8,7},{7,8},{8,9},{9,9},{9,10},{8,10},{7,12},{4,12},{2,10} GRY {14,2},{15,3},{15,4},{14,4},
  END
};

const points8 jm_4[] = {
  LINE, {15,6},{13,6},{14,5},{12,2},{11,1},{10,1},{10,2},{11,4},
  MOVE, {15,11},
  LINE, {13,11},{14,12},{13,14},{10,14},
  MOVE, {6,4},
  LINE, {6,7},{5,7},{5,3},{6,4},
  MOVE, {3,7},
  LINE, {3,10},{2,11},{2,7},{3,7} RED {15,6},{15,11},{14,10},{14,7},{15,6},
  MOVE, {6,4},
  LINE, {8,2},{9,2},{11,4},{12,6},{13,6},{13,7},{12,7},{11,8},{11,9},{12,10},{13,10},{13,11},{12,11},{11,13},{10,14},{7,14},{3,10},
  END
};

const points8 jm_5[] = {
  LINE, {7,1},{7,5},{6,5},{6,1},{7,1},
  MOVE, {3,7},
  LINE, {3,10},{2,11},{2,7},{3,7},
  MOVE, {11,12},
  LINE, {9,14},{7,15},{6,15} RED {7,1},{8,0},{9,0},{11,2},{12,4},{12,6},{11,7},{11,8},{12,9},{12,10},{11,12},{9,13},{5,13},{3,10},
  MOVE, {3,7},
  LINE, {5,9},{6,9},{7,7},{7,5} GRY {6,13},{5,14},{5,15},{6,15},
  END
};

const points8 jm_6[] = {
  LINE, {14,5},{13,4},{10,4},{9,6},{9,9},{10,11},{13,11},{14,10},
  MOVE, {5,1},
  LINE, {7,1},{9,3},{9,5},
  MOVE, {9,10},
  LINE, {9,12},{7,14},{4,14},
  MOVE, {0,3},
  LINE, {0,7},{1,7},{1,4},{0,3},
  MOVE, {1,8},
  LINE, {0,8},{0,12},{1,11},{1,8} RED {15,5},{15,10},{14,10},{13,9},{13,6},{14,5},{15,5},
  MOVE, {1,7},
  LINE, {2,6},{3,7},{3,8},{2,9},{1,8},
  MOVE, {1,4},
  LINE, {2,3},{6,3},{8,5},{9,5},{9,6},{7,6},{6,7},{6,8},{7,9},{9,9},{9,10},{8,10},{6,12},{2,12},{1,11} GRY {5,1},{4,1},{4,2},{5,3},
  MOVE, {5,12},
  LINE, {4,13},{4,14},{5,14},
  END
};

const points8 jm_8[] = {
  LINE, {11,3},{11,5},{10,5},{10,3},{11,3},
  MOVE, {10,3},
  LINE, {11,5},
  MOVE, {11,3},
  LINE, {10,5},
  MOVE, {14,11},
  LINE, {10,13},{10,10},{12,11},{12,9},
  MOVE, {14,7},
  LINE, {9,7},{7,9},{6,11},{7,12},{8,11},{9,9},{14,9},
  MOVE, {8,6},
  LINE, {7,5} RED {16,9},{16,10},{14,11},{14,9},
  MOVE, {14,3},
  LINE, {14,7},
  MOVE, {14,5},
  LINE, {16,8} GRY {14,7},{16,8},{16,9},{14,9},
  MOVE, {13,6},
  LINE, {13,7},{12,7},{12,6},{13,6},
  MOVE, {14,6},
  LINE, {13,5},{12,3},{11,2},
  MOVE, {10,4},
  LINE, {9,4},{8,6},
  MOVE, {10,10},
  LINE, {9,10} RED {7,9},{7,5},{5,4},{3,4},{2,5},
  MOVE, {7,12},
  LINE, {2,12},
  MOVE, {2,7},
  LINE, {3,8},{3,9},{2,10} BLU {6,6},{6,7},{5,7},{5,6},{6,6},
  MOVE, {2,5},
  LINE, {2,7},{0,7},{0,4},{1,4},{1,5},{2,5},
  MOVE, {2,10},
  LINE, {2,12},{0,12},{0,9},{1,9},{1,10},{2,10},
  END
};

const points8 jm_9[] = {
  LINE, {11,3},{11,5},{10,5},{10,3},{11,3},
  MOVE, {11,3},
  LINE, {10,5},
  MOVE, {10,3},
  LINE, {11,5},
  MOVE, {14,8},
  LINE, {13,9},{11,8},{11,9},{12,10},{12,11},{10,11},{10,13},{14,11},
  MOVE, {8,2},
  LINE, {8,10},{7,11},{6,10},{6,2} RED {14,3},{14,11},{16,10},{16,8},{14,5} GRY {13,6},{13,7},{12,7},{12,6},{13,6},
  MOVE, {14,6},
  LINE, {13,5},{12,3},{11,2},{11,3},
  MOVE, {10,4},
  LINE, {9,4},{8,5},
  MOVE, {8,10},
  LINE, {10,10},
  MOVE, {8,2},
  LINE, {8,0},{7,0},{6,2} RED {6,4},{3,4},{2,5},
  MOVE, {2,7},
  LINE, {3,8},{3,9},{2,10},
  MOVE, {2,12},
  LINE, {5,11},{7,11} BLU {6,6},{5,6},{5,7},{6,7},
  MOVE, {2,5},
  LINE, {2,7},{0,7},{0,4},{1,4},{1,5},{2,5},
  MOVE, {2,10},
  LINE, {2,12},{0,12},{0,9},{1,9},{1,10},{2,10},
  END
};

const points8 jm_10[] = {
  LINE, {11,3},{11,5},{10,5},{10,3},{11,3},
  MOVE, {10,3},
  LINE, {11,5},
  MOVE, {11,3},
  LINE, {10,5},
  MOVE, {14,11},
  LINE, {10,13},{10,10},{12,11},{12,9},
  MOVE, {14,7},
  LINE, {9,7},{7,9},{6,11},{7,12},{8,11},{9,9},{14,9},
  MOVE, {8,6},
  LINE, {7,5} RED {16,9},{16,10},{14,11},{14,9},
  MOVE, {14,3},
  LINE, {14,7},
  MOVE, {14,5},
  LINE, {16,8} GRY {14,7},{16,8},{16,9},{14,9},
  MOVE, {13,6},  
  LINE, {13,7},{12,7},{12,6},{13,6},
  MOVE, {14,6},
  LINE, {13,5},{12,3},{11,2},
  MOVE, {10,4},
  LINE, {9,4},{8,6},
  MOVE, {10,10},
  LINE, {9,10} RED {7,9},{7,5},{4,4},
  MOVE, {2,4},
  LINE, {3,7},{3,8},{2,11},
  MOVE, {7,12},
  LINE, {5,11},{3,13} BLU {4,4},{4,3},{5,3},{5,2},{2,2},{2,4},{4,4},
  MOVE, {2,11},
  LINE, {3,13},{2,14},{0,13},{0,12},{1,12},{2,11},
  MOVE, {6,6},
  LINE, {6,7},{5,7},{5,6},{6,6},
  END
};

const points8 jm_11[] = {
  LINE, {11,3},{11,5},{10,5},{10,3},{11,3},
  MOVE, {11,3},
  LINE, {10,5},
  MOVE, {10,3},
  LINE, {11,5},
  MOVE, {14,8},
  LINE, {13,9},{11,8},{11,9},{12,10},{12,11},{10,11},{10,13},{14,11},
  MOVE, {8,2},
  LINE, {8,10},{7,11},{6,10},{6,2} RED {14,3},{14,11},{16,10},{16,8},{14,5} GRY {13,6},{13,7},{12,7},{12,6},{13,6},
  MOVE, {14,6},
  LINE, {13,5},{12,3},{11,2},{11,3},
  MOVE, {10,4},
  LINE, {9,4},{8,5},
  MOVE, {8,10},
  LINE, {10,10},
  MOVE, {8,2},
  LINE, {8,0},{7,0},{6,2} RED {6,5},{4,4},
  MOVE, {2,4},
  LINE, {3,7},{3,8},{2,11},
  MOVE, {7,11},
  LINE, {5,11},{3,13} BLU {6,6},{5,6},{5,7},{6,7},
  MOVE, {5,2},
  LINE, {5,3},{4,3},{4,4},{2,4},{2,2},{5,2},
  MOVE, {2,11},
  LINE, {3,13},{2,14},{0,13},{0,12},{1,12},{2,11},
  END
};

const points8 jm_12[] = {
  LINE, {11,2},{11,4},{10,4},{10,2},{11,2},
  MOVE, {10,2},
  LINE, {11,4},
  MOVE, {11,2},
  LINE, {10,4},
  MOVE, {14,10},
  LINE, {10,12},{10,9},{12,10},{12,8},
  MOVE, {14,6},
  LINE, {9,6},{7,8},{6,10},{7,11},{8,10},{9,8},{14,8},
  MOVE, {8,5},
  LINE, {7,4} RED {16,8},{16,9},{14,10},{14,8},
  MOVE, {14,2},
  LINE, {14,6},
  MOVE, {14,4},
  LINE, {16,7} GRY {14,6},{16,7},{16,8},{14,8},
  MOVE, {13,5},
  LINE, {13,6},{12,6},{12,5},{13,5},
  MOVE, {14,5},
  LINE, {13,4},{12,2},{11,1},
  MOVE, {10,3},
  LINE, {9,3},{8,6},
  MOVE, {10,9},
  LINE, {9,9} RED {7,8},{7,4},{4,4},{2,6},
  MOVE, {2,8},
  LINE, {3,8},{3,9},{2,13},
  MOVE, {7,11},
  LINE, {6,11},{4,13} BLU {6,6},{6,7},{5,7},{5,6},{6,6},
  MOVE, {0,5},
  LINE, {0,8},{2,8},{2,6},{1,6},{1,5},{0,5},
  MOVE, {4,13},
  LINE, {4,15},{1,15},{1,14},{2,14},{2,13},{4,13},
  END
};

const points8 jm_13[] = {
  LINE, {11,2},{11,4},{10,4},{10,2},{11,2},
  MOVE, {11,2},
  LINE, {10,4},
  MOVE, {10,2},
  LINE, {11,4},
  MOVE, {14,7},
  LINE, {13,8},{11,7},{11,8},{12,9},{12,10},{10,10},{10,12},{14,10},
  MOVE, {8,2},
  LINE, {8,10},{7,11},{6,10},{6,2} RED {14,2},{14,10},{16,9},{16,7},{14,4} GRY {13,5},{13,6},{12,6},{12,5},{13,5},
  MOVE, {14,5},
  LINE, {13,4},{12,2},{11,1},{11,2},
  MOVE, {10,3},
  LINE, {9,3},{8,4},
  MOVE, {8,10},
  LINE, {10,10},
  MOVE, {8,2},
  LINE, {8,0},{7,0},{6,2} RED {6,4},{4,4},{2,6},
  MOVE, {2,8},
  LINE, {3,8},{3,9},{2,13},
  MOVE, {4,13},
  LINE, {6,11},{7,11} BLU {6,6},{5,6},{5,7},{6,7},
  MOVE, {2,6},
  LINE, {1,6},{1,5},{0,5},{0,8},{2,8},{2,6},
  MOVE, {4,13},
  LINE, {4,15},{1,15},{1,14},{2,14},{2,13},{4,13},
  END
};

const points8 jm_14[] = {
  LINE, {9,3},{10,3},{10,5},{9,5},{9,3},
  MOVE, {10,3},
  LINE, {9,5},
  MOVE, {9,3},
  LINE, {10,5},
  MOVE, {13,8},
  LINE, {12,9},{10,8},{10,9},{11,10},{11,11},{9,11},{9,13},{13,11},
  MOVE, {1,1},
  LINE, {4,1},{4,2},{3,2},{3,3},{1,3},{1,1},
  MOVE, {3,12},
  LINE, {5,13},{3,15},{2,15},{3,14},{2,13},{3,12},
  MOVE, {7,3},
  LINE, {7,6},
  MOVE, {5,2},
  LINE, {5,5},
  MOVE, {7,10},
  LINE, {8,13},
  MOVE, {5,11},
  LINE, {6,14},
  MOVE, {5,7},
  LINE, {5,8},{4,8},{4,7},{5,7} RED {13,3},{13,11},{15,10},{15,8},{13,5},
  MOVE, {3,3},
  LINE, {6,6},{6,9},{5,11},{3,11},{3,12},
  MOVE, {1,3},
  LINE, {2,7},{2,8},{0,10},{0,11},{2,13} GRY {13,6},{12,5},{11,3},{10,2},{10,3},{9,4},{8,4},{7,6},
  MOVE, {7,10},
  LINE, {9,11},
  MOVE, {12,6},
  LINE, {12,7},{11,7},{11,6},{12,6},
  MOVE, {7,3},
  LINE, {7,1},{6,1},{5,2},
  MOVE, {8,13},
  LINE, {8,15},{7,15},{6,14},
  END
};

const points8 jm_15[] = {
  LINE, {10,4},{11,4},{11,6},{10,6},{10,4},
  MOVE, {11,4},
  LINE, {10,6},
  MOVE, {10,4},
  LINE, {11,6},
  MOVE, {14,9},
  LINE, {13,10},{11,9},{11,10},{12,11},{12,12},{10,12},{10,14},{14,12},
  MOVE, {9,11},
  LINE, {9,13},{7,16},{6,16},
  MOVE, {6,12},
  LINE, {7,13},{6,14},
  MOVE, {7,3},
  LINE, {8,4},{9,6},{9,8},
  MOVE, {5,4},
  LINE, {6,5},{7,7},{7,8},
  MOVE, {2,1},
  LINE, {3,2},{2,3},{3,4},{1,5},{0,3},{2,1},
  MOVE, {2,6},
  LINE, {3,7},{2,8},{3,9},{1,10},{0,8},{2,6} RED {14,4},{14,12},{16,11},{16,9},{14,6},
  MOVE, {3,4},
  LINE, {4,5},{6,6},{7,8},{7,10},{6,12},{3,13},{1,10},
  MOVE, {1,5},
  LINE, {2,6},
  MOVE, {3,9},
  LINE, {4,10} GRY {14,7},{13,6},{12,4},{11,3},{11,4},{10,5},{9,5},{9,6},
  MOVE, {8,11},
  LINE, {10,12},
  MOVE, {13,7},
  LINE, {13,8},{12,8},{12,7},{13,7},
  MOVE, {7,3},
  LINE, {6,2},{5,2},{4,3},{5,4},
  MOVE, {6,14},
  LINE, {5,14},{4,15},{4,16},{6,16},
  MOVE, {0,12},
  LINE, {1,13},{2,15},
  MOVE, {0,14},
  LINE, {1,16},
  END
};

const points8 jm_120[] = {
  LINE, {14,4},{10,3},{10,4},{14,6},
  MOVE, {14,11},
  LINE, {10,12},{14,9},
  MOVE, {11,5},
  LINE, {11,6},{10,7},{10,8},{11,9},{11,11},{10,10},{10,9},{9,8},{9,7},{10,6},{10,5},{11,5},
  MOVE, {9,5},
  LINE, {8,4},{9,2},
  MOVE, {9,10},
  LINE, {8,11},{9,13},
  MOVE, {6,4},
  LINE, {6,3},{8,1},
  MOVE, {6,11},
  LINE, {6,12},{8,14},
  MOVE, {6,5},
  LINE, {6,6},{5,6},{5,5},{6,5},
  MOVE, {6,9},
  LINE, {6,10},{5,10},{5,9},{6,9},
  MOVE, {4,3},
  LINE, {2,5},{1,4},{2,1},{3,1},{4,3},
  MOVE, {2,10},
  LINE, {4,12},{3,13},{3,14},{2,14},{1,11},{2,10} RED {14,4},{15,5},{16,7},{16,8},{15,10},{14,11},{14,4},
  MOVE, {4,3},
  LINE, {6,4},{7,5},{8,5},{8,6},{7,6},{6,7},{6,8},{7,9},{8,9},{8,10},{7,10},{6,11},{4,12},
  MOVE, {2,5},
  LINE, {3,7},{3,8},{2,10} GRY {13,6},{13,7},{12,7},{12,6},{13,6},
  MOVE, {13,8},
  LINE, {13,9},{12,9},{12,8},{13,8},
  MOVE, {10,4},
  LINE, {8,6},
  MOVE, {10,11},
  LINE, {8,9},
  MOVE, {8,1},
  LINE, {9,0},{10,0},{10,1},{9,2},
  MOVE, {9,13},
  LINE, {10,14},{10,15},{9,15},{8,14},
  MOVE, {10,4},
  LINE, {12,4},
  MOVE, {10,11},
  LINE, {12,11},
  END
};

const points8 jm_121[] = {
  LINE, {10,2},{11,1},{14,2},{14,3},{13,3},{12,4},{10,2},
  MOVE, {5,2},
  LINE, {3,4},{2,3},{1,3},{1,2},{4,1},{5,2},
  MOVE, {10,5},
  LINE, {10,6},{9,6},{9,5},{10,5},
  MOVE, {6,5},
  LINE, {6,6},{5,6},{5,5},{6,5},
  MOVE, {11,6},
  LINE, {12,6},{14,8},
  MOVE, {10,9},
  LINE, {11,8},{13,9},
  MOVE, {4,6},
  LINE, {3,6},{1,8},
  MOVE, {5,9},
  LINE, {4,8},{2,9},
  MOVE, {9,14},
  LINE, {11,10},{12,10},{11,14},
  MOVE, {6,14},
  LINE, {4,10},{3,10},{4,14},
  MOVE, {10,11},
  LINE, {9,11},{8,10},{7,10},{6,11},{4,11},{5,10},{6,10},{7,9},{8,9},{9,10},{10,10},{10,11} RED {11,14},{10,15},{8,16},{7,16},{5,15},{4,14},{11,14},
  MOVE, {12,4},
  LINE, {11,6},{10,7},{10,8},{9,8},{9,7},{8,6},{7,6},{6,7},{6,8},{5,8},{5,7},{4,6},{3,4},
  MOVE, {10,2},
  LINE, {8,3},{7,3},{5,2} GRY {14,8},{15,9},{15,10},{14,10},{13,9},
  MOVE, {2,9},
  LINE, {1,10},{0,10},{0,9},{1,8},
  MOVE, {9,8},
  LINE, {11,10},
  MOVE, {6,8},
  LINE, {4,10},
  MOVE, {9,12},
  LINE, {9,13},{8,13},{8,12},{9,12},
  MOVE, {7,12},
  LINE, {7,13},{6,13},{6,12},{7,12},
  END
};

const points8 jm_122[] = {
  LINE, {10,2},{12,3},{11,7},{10,7},{10,6},{9,5},{10,2},
  MOVE, {6,5},
  LINE, {6,6},{5,6},{5,5},{6,5},
  MOVE, {2,2},
  LINE, {2,5},{4,7},{3,8},{2,8},{0,6},{0,0},{1,0},{2,2},
  MOVE, {8,10},
  LINE, {8,11},{5,11},{5,10},{8,10},
  MOVE, {8,10},
  LINE, {5,11},
  MOVE, {8,11},
  LINE, {5,10},
  MOVE, {0,14},
  LINE, {0,9},{1,8},{1,11},{2,11},{1,13},{2,14} RED {0,14},{8,14},
  MOVE, {0,14},
  LINE, {1,16},{3,16},{6,14},
  MOVE, {10,2},
  LINE, {9,1},{6,0},{4,0},{2,1},
  MOVE, {9,5},
  LINE, {8,4},{7,4},{6,7},{5,8} GRY {2,2},{2,1},{1,0},{0,0},{0,2},
  MOVE, {5,8},
  LINE, {5,9},{6,10},
  MOVE, {8,11},
  LINE, {9,11},{8,12},{6,13},{5,14},
  MOVE, {5,12},
  LINE, {5,13},{4,13},{4,12},{5,12},
  END
};

const points8 const *lib[] = {
  sprite_00,
  sprite_01,
  sprite_02,
  sprite_03,
  sprite_04,
  sprite_05,
  sprite_06,
  sprite_07,
  sprite_08,
  sprite_09,
  sprite_10,
  sprite_11,
  sprite_12,
  sprite_13,
  sprite_14,
  sprite_15,
  sprite_16,
  sprite_17,
  sprite_18,
  sprite_19,
  sprite_1a,
  sprite_1b,
  sprite_1c,
  sprite_1d,
  sprite_1e,
  sprite_1f,
  sprite_20,
  sprite_21,
  sprite_22,
  sprite_23,
  sprite_24,
  sprite_25,
  sprite_26,
  sprite_27,
  sprite_28,
  sprite_29,
  sprite_2a,
  sprite_2b,
  sprite_2c,
  sprite_2d,
  sprite_2e,
  sprite_2f,
  sprite_30,
  sprite_31,
  sprite_32,
  sprite_33,
  sprite_34,
  sprite_35,
  sprite_39,
  sprite_44,
  sprite_49,
  sprite_6c,
  sprite_70,
  sprite_71,
  sprite_72,
  sprite_73,
  sprite_74,
  sprite_75,
  sprite_76,
  sprite_77,
  sprite_78,
  sprite_79,
  sprite_7b,
  /*sprite_80*/ sprite_00, // Alternative 0-9
  /*sprite_81*/ sprite_01, //
  /*sprite_82*/ sprite_02, //
  /*sprite_83*/ sprite_03, //
  /*sprite_84*/ sprite_04, //
  /*sprite_85*/ sprite_05, //
  /*sprite_86*/ sprite_06, //
  /*sprite_87*/ sprite_07, //
  /*sprite_88*/ sprite_08, //
  /*sprite_89*/ sprite_09, //
  /*sprite_8a*/ sprite_1d, // Alternative M's
  /*sprite_8b*/ sprite_1d, //
  sprite_9f,
  sprite_b0,
  sprite_b1,
  sprite_b7,
  sprite_dd,
  sprite_ed,
  sprite_fb,
  sprite_fd,
  sprite_fe,
  sprite_ff,
  sprite_f60,
  sprite_f61,
  /*sprite_f62, */ sprite_f60,  // simplify smash animation  {  7,5,5,7,5,8,7,10,8,10,10,8,10,7,8,5,7,5,YEL 7,6,6,7,6,8,7,9,8,9,9,8,9,7,8,6,7,6,RED 7,7,7,8,8,8,8,7,7,7, END};
  /*sprite_f63, */ sprite_f61,  // simplify smash animation  {  YEL 8,3,8,0, MOVE,5,4, 1,0, MOVE,4,7, 1,7, MOVE,5,11, 1,15, MOVE,8,12, 8,15, MOVE,10,11, 14,15, MOVE,11,7, 14,7, MOVE,10,4, 14,0,RED 8,6,8,8, MOVE,7,7, 9,7, END};
  sprite_f76,
  sprite_f77,
  sprite_f7d,
  sprite_f7e,
  sprite_f7f,
  logo,
  select_,
  zigzag,
  oilcan,
  flames,
  stacked,
  rolling,
  roll_1,
  roll_2,
  roll_3,
  roll_4,
  skull_1,
  skull_2,
  skull_3,
  skull_4,
  down,
  down_1,
  down_2,
  pauline,
  hammer_up,
  hammer_down,
  fireball,
  fb_flame,
  dk_front,
  dk_hold,
  dk_side,
  dk_growl,
  jm_0,
  jm_1,
  jm_2,
  jm_3,
  jm_4,
  jm_5,
  jm_6,
  jm_8,
  jm_9,
  jm_10,
  jm_11,
  jm_12,
  jm_13,
  jm_14,
  jm_15,
  jm_120,
  jm_121,
  jm_122,
};

const int spritesize[] = {
  sizeof(sprite_00)/sizeof(sprite_00[0]),
  sizeof(sprite_01)/sizeof(sprite_01[0]),
  sizeof(sprite_02)/sizeof(sprite_02[0]),
  sizeof(sprite_03)/sizeof(sprite_03[0]),
  sizeof(sprite_04)/sizeof(sprite_04[0]),
  sizeof(sprite_05)/sizeof(sprite_05[0]),
  sizeof(sprite_06)/sizeof(sprite_06[0]),
  sizeof(sprite_07)/sizeof(sprite_07[0]),
  sizeof(sprite_08)/sizeof(sprite_08[0]),
  sizeof(sprite_09)/sizeof(sprite_09[0]),
  sizeof(sprite_10)/sizeof(sprite_10[0]),
  sizeof(sprite_11)/sizeof(sprite_11[0]),
  sizeof(sprite_12)/sizeof(sprite_12[0]),
  sizeof(sprite_13)/sizeof(sprite_13[0]),
  sizeof(sprite_14)/sizeof(sprite_14[0]),
  sizeof(sprite_15)/sizeof(sprite_15[0]),
  sizeof(sprite_16)/sizeof(sprite_16[0]),
  sizeof(sprite_17)/sizeof(sprite_17[0]),
  sizeof(sprite_18)/sizeof(sprite_18[0]),
  sizeof(sprite_19)/sizeof(sprite_19[0]),
  sizeof(sprite_1a)/sizeof(sprite_1a[0]),
  sizeof(sprite_1b)/sizeof(sprite_1b[0]),
  sizeof(sprite_1c)/sizeof(sprite_1c[0]),
  sizeof(sprite_1d)/sizeof(sprite_1d[0]),
  sizeof(sprite_1e)/sizeof(sprite_1e[0]),
  sizeof(sprite_1f)/sizeof(sprite_1f[0]),
  sizeof(sprite_20)/sizeof(sprite_20[0]),
  sizeof(sprite_21)/sizeof(sprite_21[0]),
  sizeof(sprite_22)/sizeof(sprite_22[0]),
  sizeof(sprite_23)/sizeof(sprite_23[0]),
  sizeof(sprite_24)/sizeof(sprite_24[0]),
  sizeof(sprite_25)/sizeof(sprite_25[0]),
  sizeof(sprite_26)/sizeof(sprite_26[0]),
  sizeof(sprite_27)/sizeof(sprite_27[0]),
  sizeof(sprite_28)/sizeof(sprite_28[0]),
  sizeof(sprite_29)/sizeof(sprite_29[0]),
  sizeof(sprite_2a)/sizeof(sprite_2a[0]),
  sizeof(sprite_2b)/sizeof(sprite_2b[0]),
  sizeof(sprite_2c)/sizeof(sprite_2c[0]),
  sizeof(sprite_2d)/sizeof(sprite_2d[0]),
  sizeof(sprite_2e)/sizeof(sprite_2e[0]),
  sizeof(sprite_2f)/sizeof(sprite_2f[0]),
  sizeof(sprite_30)/sizeof(sprite_30[0]),
  sizeof(sprite_31)/sizeof(sprite_31[0]),
  sizeof(sprite_32)/sizeof(sprite_32[0]),
  sizeof(sprite_33)/sizeof(sprite_33[0]),
  sizeof(sprite_34)/sizeof(sprite_34[0]),
  sizeof(sprite_35)/sizeof(sprite_35[0]),
  sizeof(sprite_39)/sizeof(sprite_39[0]),
  sizeof(sprite_44)/sizeof(sprite_44[0]),
  sizeof(sprite_49)/sizeof(sprite_49[0]),
  sizeof(sprite_6c)/sizeof(sprite_6c[0]),
  sizeof(sprite_70)/sizeof(sprite_70[0]),
  sizeof(sprite_71)/sizeof(sprite_71[0]),
  sizeof(sprite_72)/sizeof(sprite_72[0]),
  sizeof(sprite_73)/sizeof(sprite_73[0]),
  sizeof(sprite_74)/sizeof(sprite_74[0]),
  sizeof(sprite_75)/sizeof(sprite_75[0]),
  sizeof(sprite_76)/sizeof(sprite_76[0]),
  sizeof(sprite_77)/sizeof(sprite_77[0]),
  sizeof(sprite_78)/sizeof(sprite_78[0]),
  sizeof(sprite_79)/sizeof(sprite_79[0]),
  sizeof(sprite_7b)/sizeof(sprite_7b[0]),
  sizeof(sprite_00)/sizeof(sprite_00[0]),
  sizeof(sprite_01)/sizeof(sprite_01[0]),
  sizeof(sprite_02)/sizeof(sprite_02[0]),
  sizeof(sprite_03)/sizeof(sprite_03[0]),
  sizeof(sprite_04)/sizeof(sprite_04[0]),
  sizeof(sprite_05)/sizeof(sprite_05[0]),
  sizeof(sprite_06)/sizeof(sprite_06[0]),
  sizeof(sprite_07)/sizeof(sprite_07[0]),
  sizeof(sprite_08)/sizeof(sprite_08[0]),
  sizeof(sprite_09)/sizeof(sprite_09[0]),
  sizeof(sprite_1d)/sizeof(sprite_1d[0]),
  sizeof(sprite_1d)/sizeof(sprite_1d[0]),
  sizeof(sprite_9f)/sizeof(sprite_9f[0]),
  sizeof(sprite_b0)/sizeof(sprite_b0[0]),
  sizeof(sprite_b1)/sizeof(sprite_b1[0]),
  sizeof(sprite_b7)/sizeof(sprite_b7[0]),
  sizeof(sprite_dd)/sizeof(sprite_dd[0]),
  sizeof(sprite_ed)/sizeof(sprite_ed[0]),
  sizeof(sprite_fb)/sizeof(sprite_fb[0]),
  sizeof(sprite_fd)/sizeof(sprite_fd[0]),
  sizeof(sprite_fe)/sizeof(sprite_fe[0]),
  sizeof(sprite_ff)/sizeof(sprite_ff[0]),
  sizeof(sprite_f60)/sizeof(sprite_f60[0]),
  sizeof(sprite_f61)/sizeof(sprite_f61[0]),
  sizeof(sprite_f60)/sizeof(sprite_f60[0]),
  sizeof(sprite_f61)/sizeof(sprite_f61[0]),
  sizeof(sprite_f76)/sizeof(sprite_f76[0]),
  sizeof(sprite_f77)/sizeof(sprite_f77[0]),
  sizeof(sprite_f7d)/sizeof(sprite_f7d[0]),
  sizeof(sprite_f7e)/sizeof(sprite_f7e[0]),
  sizeof(sprite_f7f)/sizeof(sprite_f7f[0]),
  sizeof(logo)/sizeof(logo[0]),
  sizeof(select_)/sizeof(select_[0]),
  sizeof(zigzag)/sizeof(zigzag[0]),
  sizeof(oilcan)/sizeof(oilcan[0]),
  sizeof(flames)/sizeof(flames[0]),
  sizeof(stacked)/sizeof(stacked[0]),
  sizeof(rolling)/sizeof(rolling[0]),
  sizeof(roll_1)/sizeof(roll_1[0]),
  sizeof(roll_2)/sizeof(roll_2[0]),
  sizeof(roll_3)/sizeof(roll_3[0]),
  sizeof(roll_4)/sizeof(roll_4[0]),
  sizeof(skull_1)/sizeof(skull_1[0]),
  sizeof(skull_2)/sizeof(skull_2[0]),
  sizeof(skull_3)/sizeof(skull_3[0]),
  sizeof(skull_4)/sizeof(skull_4[0]),
  sizeof(down)/sizeof(down[0]),
  sizeof(down_1)/sizeof(down_1[0]),
  sizeof(down_2)/sizeof(down_2[0]),
  sizeof(pauline)/sizeof(pauline[0]),
  sizeof(hammer_up)/sizeof(hammer_up[0]),
  sizeof(hammer_down)/sizeof(hammer_down[0]),
  sizeof(fireball)/sizeof(fireball[0]),
  sizeof(fb_flame)/sizeof(fb_flame[0]),
  sizeof(dk_front)/sizeof(dk_front[0]),
  sizeof(dk_hold)/sizeof(dk_hold[0]),
  sizeof(dk_side)/sizeof(dk_side[0]),
  sizeof(dk_growl)/sizeof(dk_growl[0]),
  sizeof(jm_0)/sizeof(jm_0[0]),
  sizeof(jm_1)/sizeof(jm_1[0]),
  sizeof(jm_2)/sizeof(jm_2[0]),
  sizeof(jm_3)/sizeof(jm_3[0]),
  sizeof(jm_4)/sizeof(jm_4[0]),
  sizeof(jm_5)/sizeof(jm_5[0]),
  sizeof(jm_6)/sizeof(jm_6[0]),
  sizeof(jm_8)/sizeof(jm_8[0]),
  sizeof(jm_9)/sizeof(jm_9[0]),
  sizeof(jm_10)/sizeof(jm_10[0]),
  sizeof(jm_11)/sizeof(jm_11[0]),
  sizeof(jm_12)/sizeof(jm_12[0]),
  sizeof(jm_13)/sizeof(jm_13[0]),
  sizeof(jm_14)/sizeof(jm_14[0]),
  sizeof(jm_15)/sizeof(jm_15[0]),
  sizeof(jm_120)/sizeof(jm_120[0]),
  sizeof(jm_121)/sizeof(jm_121[0]),
  sizeof(jm_122)/sizeof(jm_122[0]),
};

// This sprite range is compressed.  However the range used in the
// DK code is not, so we may need a mapping function to convert
// from DK sprite number to internal sprite number in some cases.
// (i.e. the cases where we are not handed a literal constant from
//  the list below.)

enum sprite {
  SPRITE_00,
  SPRITE_01,
  SPRITE_02,
  SPRITE_03,
  SPRITE_04,
  SPRITE_05,
  SPRITE_06,
  SPRITE_07,
  SPRITE_08,
  SPRITE_09,
  SPRITE_10,
  SPRITE_11,
  SPRITE_12,
  SPRITE_13,
  SPRITE_14,
  SPRITE_15,
  SPRITE_16,
  SPRITE_17,
  SPRITE_18,
  SPRITE_19,
  SPRITE_1A,
  SPRITE_1B,
  SPRITE_1C,
  SPRITE_1D,
  SPRITE_1E,
  SPRITE_1F,
  SPRITE_20,
  SPRITE_21,
  SPRITE_22,
  SPRITE_23,
  SPRITE_24,
  SPRITE_25,
  SPRITE_26,
  SPRITE_27,
  SPRITE_28,
  SPRITE_29,
  SPRITE_2A,
  SPRITE_2B,
  SPRITE_2C,
  SPRITE_2D,
  SPRITE_2E,
  SPRITE_2F,
  SPRITE_30,
  SPRITE_31,
  SPRITE_32,
  SPRITE_33,
  SPRITE_34,
  SPRITE_35,
  SPRITE_39,
  SPRITE_44,
  SPRITE_49,
  SPRITE_6C,
  SPRITE_70,
  SPRITE_71,
  SPRITE_72,
  SPRITE_73,
  SPRITE_74,
  SPRITE_75,
  SPRITE_76,
  SPRITE_77,
  SPRITE_78,
  SPRITE_79,
  SPRITE_7B,
  SPRITE_80,
  SPRITE_81,
  SPRITE_82,
  SPRITE_83,
  SPRITE_84,
  SPRITE_85,
  SPRITE_86,
  SPRITE_87,
  SPRITE_88,
  SPRITE_89,
  SPRITE_8A,
  SPRITE_8B,
  SPRITE_9F,
  SPRITE_B0,
  SPRITE_B1,
  SPRITE_B7,
  SPRITE_DD,
  SPRITE_ED,
  SPRITE_FB,
  SPRITE_FD,
  SPRITE_FE,
  SPRITE_FF,
  SPRITE_F60,
  SPRITE_F61,
  SPRITE_F62,
  SPRITE_F63,
  SPRITE_F76,
  SPRITE_F77,
  SPRITE_F7D,
  SPRITE_F7E,
  SPRITE_F7F,
  LOGO,
  SELECT,
  ZIGZAG,
  OILCAN,
  FLAMES,
  STACKED,
  ROLLING,
  ROLL_1,
  ROLL_2,
  ROLL_3,
  ROLL_4,
  SKULL_1,
  SKULL_2,
  SKULL_3,
  SKULL_4,
  DOWN,
  DOWN_1,
  DOWN_2,
  PAULINE,
  HAMMER_UP,
  HAMMER_DOWN,
  FIREBALL,
  FB_FLAME,
  DK_FRONT,
  DK_HOLD,
  DK_SIDE,
  DK_GROWL,
  JM_0,
  JM_1,
  JM_2,
  JM_3,
  JM_4,
  JM_5,
  JM_6,
  JM_8,
  JM_9,
  JM_10,
  JM_11,
  JM_12,
  JM_13,
  JM_14,
  JM_15,
  JM_120,
  JM_121,
  JM_122,
};

#undef RED
#undef GRY
#undef BLU
#undef LBR
#undef MBR
#undef YEL
#undef PNK
