#include <vectrex.h> #define SCALE (127/14) #define SPACING 30 #define XOFFSET (107) #define YOFFSET (30) const int pawn[] = { -1,0*SCALE,-10*SCALE, -1,2*SCALE,3*SCALE, -1,6*SCALE,0*SCALE, -1,2*SCALE,-2*SCALE, -1,3*SCALE,4*SCALE, -1,-3*SCALE,4*SCALE, -1,-2*SCALE,-2*SCALE, -1,-6*SCALE,0*SCALE, -1,-2*SCALE,3*SCALE, 1 }; const int castle[] = { -1,0*SCALE,-10*SCALE, -1,2*SCALE,2*SCALE, -1,10*SCALE,0*SCALE, -1,1*SCALE,-2*SCALE, -1,3*SCALE,0*SCALE, -1,0*SCALE,2*SCALE, -1,-2*SCALE,0*SCALE, -1,0*SCALE,2*SCALE, -1,2*SCALE,0*SCALE, -1,0*SCALE,2*SCALE, -1,-2*SCALE,0*SCALE, -1,0*SCALE, 2*SCALE, -1,2*SCALE,0*SCALE, -1,0*SCALE,2*SCALE, -1,-3*SCALE,0*SCALE, -1,-1*SCALE,-2*SCALE, -1,-10*SCALE,0*SCALE, -1,-2*SCALE,2*SCALE, 1 }; const int knight[] = { -1,0*SCALE,-10*SCALE, -1,2*SCALE,2*SCALE, -1,1*SCALE,-2*SCALE, -1,11*SCALE,3*SCALE, -1,2*SCALE,3*SCALE, -1,-1*SCALE,0*SCALE, -1,-2*SCALE,4*SCALE, -1,-2*SCALE,0*SCALE, -1,0*SCALE,-4*SCALE, -1,-8*SCALE,4*SCALE, -1,-1*SCALE,-2*SCALE, -1,-2*SCALE,2*SCALE, 1 }; const int bishop[] = { -1,0*SCALE,-10*SCALE, -1,2*SCALE,3*SCALE, -1,12*SCALE,-2*SCALE, -1,4*SCALE,4*SCALE, -1,-4*SCALE,4*SCALE, -1,-4*SCALE,-4*SCALE, -1,2*SCALE,4*SCALE, -1,-10*SCALE,-2*SCALE, -1,-2*SCALE,3*SCALE, 1 }; const int queen[] = { -1,0*SCALE,-10*SCALE, -1,2*SCALE,3*SCALE, -1,10*SCALE,0*SCALE, -1,0*SCALE,-2*SCALE, -1,10*SCALE,0*SCALE, -1,-4*SCALE,2*SCALE, -1,4*SCALE,2*SCALE, -1,-4*SCALE,2*SCALE, -1,4*SCALE,2*SCALE, -1,-10*SCALE,0*SCALE, -1,0*SCALE,-2*SCALE, -1,-10*SCALE,0*SCALE, -1,-2*SCALE,3*SCALE, 1 }; const int king[] = { -1,0*SCALE,-10*SCALE, -1,2*SCALE,3*SCALE, -1,14*SCALE,1*SCALE, -1,1*SCALE,-4*SCALE, -1,1*SCALE,4*SCALE, -1,4*SCALE,1*SCALE, -1,-4*SCALE,1*SCALE, -1,-1*SCALE,4*SCALE, -1,-1*SCALE,-4*SCALE, -1,-14*SCALE,1*SCALE, -1,-2*SCALE,3*SCALE, 1 }; static inline void set_scale(unsigned int s) { VIA_t1_cnt_lo = s; } #define WHITE 3 #define BLACK 0 int row, col, colour; static inline void draw(const int *piece) { // black pieces are darker and do not have a base line Reset0Ref(); set_scale(127); Moveto_d(row,col); set_scale(16); col += SPACING; if (colour == BLACK) Moveto_d(0,10*SCALE); Draw_VLp((int *)piece+colour); } const int *piece[8] = {castle, knight, bishop, queen, king, bishop, knight, castle}; int main(void) { int i; for (;;) { Wait_Recal(); Intensity_a(80); row = (SPACING<<2)-YOFFSET; col = -XOFFSET; colour = WHITE; for (i = 0; i < 8; i++) draw(pawn); row += SPACING; col = -XOFFSET; for (i = 0; i < 8; i++) draw(piece[i]); Intensity_a(120); row = (int)SPACING*-2-YOFFSET; col = -XOFFSET; colour = BLACK; for (i = 0; i < 8; i++) draw(pawn); row -= SPACING; col = -XOFFSET; for (i = 0; i < 8; i++) draw(piece[i]); } return 0; }