home / fornax / fornax-v4-0 / src / eval / eval_piecetables.h

eval_piecetables.h



//
//  eval_piecetables.h
//  fornax3
//
//  Created by Anders on 11/04/2020.
//

#ifndef eval_piecetables_h
#define eval_piecetables_h

typedef int8_t piecetable[6][64];

#define KINGS___MG_PIECETABLE_R8 -20, -20, -20, -20, -20, -20, -20, -20
#define KINGS___MG_PIECETABLE_R7 -20, -20, -30, -30, -30, -30, -20, -20
#define KINGS___MG_PIECETABLE_R6 -20, -30, -30, -40, -40, -30, -30, -20
#define KINGS___MG_PIECETABLE_R5 -20, -30, -40, -40, -40, -40, -30, -20
#define KINGS___MG_PIECETABLE_R4 -15, -30, -30, -40, -40, -30, -30, -15
#define KINGS___MG_PIECETABLE_R3 -10, -15, -30, -30, -30, -30, -15, -10
#define KINGS___MG_PIECETABLE_R2   5,   0,  -5, -20, -20, -20,   5,  10
#define KINGS___MG_PIECETABLE_R1  15,  15,   5, -10, -10, -15,  20,  20

#define PAWNS___MG_PIECETABLE_R8   0,   0,   0,   0,   0,   0,   0,   0
#define PAWNS___MG_PIECETABLE_R7  25,  20,  20,  20,  20,  20,  20,  25
#define PAWNS___MG_PIECETABLE_R6  20,  15,  15,  15,  15,  15,  15,  20
#define PAWNS___MG_PIECETABLE_R5  10,  10,  18,  20,  20,  10,   8,  10
#define PAWNS___MG_PIECETABLE_R4   3,   3,  12,  18,  18,   5,   0,   3
#define PAWNS___MG_PIECETABLE_R3   0,   0,   0,   5,   5,   0,   0,   0
#define PAWNS___MG_PIECETABLE_R2   3,   3,   0,  -3,  -3,   4,   3,   3
#define PAWNS___MG_PIECETABLE_R1   0,   0,   0,   0,   0,   0,   0,   0

#define KNIGHTS_MG_PIECETABLE_R8 -16,  -8,  -8,  -4,  -4,  -8,  -8, -16
#define KNIGHTS_MG_PIECETABLE_R7  -8,  -4,   0,   4,   4,   0,  -4,  -8
#define KNIGHTS_MG_PIECETABLE_R6  -4,   0,   8,  12,  12,   8,   0,  -4
#define KNIGHTS_MG_PIECETABLE_R4  -4,   4,  16,  20,  20,  20,   4,   0
#define KNIGHTS_MG_PIECETABLE_R5  -8,   4,  16,  20,  20,  16,   4,  -8
#define KNIGHTS_MG_PIECETABLE_R3  -8,   4,   8,  12,  12,   8,   4,  -8
#define KNIGHTS_MG_PIECETABLE_R2  -8,  -8,  -4,   0,   0,  -4,  -8,  -8
#define KNIGHTS_MG_PIECETABLE_R1 -16, -12,  -8,  -4,  -4,  -8, -12, -16

#define BISHOPS_MG_PIECETABLE_R8 -12,  -4,  -4,   0,   0,  -4,  -4, -12
#define BISHOPS_MG_PIECETABLE_R7  -4,   6,   4,   4,   4,   4,   6,  -4
#define BISHOPS_MG_PIECETABLE_R6  -4,   4,   6,   4,   4,   6,   4,  -4
#define BISHOPS_MG_PIECETABLE_R5  -4,   2,   4,   8,   8,   4,   2,  -4
#define BISHOPS_MG_PIECETABLE_R4  -4,   0,   4,   8,   8,   4,   0,  -4
#define BISHOPS_MG_PIECETABLE_R3  -4,   4,   4,   4,   4,   4,   4,  -4
#define BISHOPS_MG_PIECETABLE_R2  -8,  12,   4,   4,   4,   4,  12,  -8
#define BISHOPS_MG_PIECETABLE_R1 -12,  -8,  -4,   0,   0,  -4,  -8, -12

#define ROOKS___MG_PIECETABLE_R8   0,   0,   0,   0,   0,   0,   0,   0
#define ROOKS___MG_PIECETABLE_R7   4,   4,   8,   8,   8,   8,   8,   8
#define ROOKS___MG_PIECETABLE_R6   0,   0,   0,   0,   0,   0,   0,   0
#define ROOKS___MG_PIECETABLE_R5   0,   0,   0,   0,   0,   0,   0,   0
#define ROOKS___MG_PIECETABLE_R4   0,   0,   0,   0,   0,   0,   0,   0
#define ROOKS___MG_PIECETABLE_R3  -4,   0,   0,   0,   0,   0,   0,  -4
#define ROOKS___MG_PIECETABLE_R2  -8,   0,   4,   4,   4,   4,   0,  -8
#define ROOKS___MG_PIECETABLE_R1 -12,   0,   4,   6,   6,   4,   0, -12

#define QUEENS__MG_PIECETABLE_R8 -12,  -8,  -4,   0,   0,  -4,  -8, -12
#define QUEENS__MG_PIECETABLE_R7  -8,  -4,   0,   4,   4,   4,   0,  -4
#define QUEENS__MG_PIECETABLE_R6  -4,   0,   4,   8,   8,   8,   4,   0
#define QUEENS__MG_PIECETABLE_R5   0,   4,   8,  12,  12,   8,   4,   0
#define QUEENS__MG_PIECETABLE_R4   0,   4,   8,  12,  12,   8,   4,   0
#define QUEENS__MG_PIECETABLE_R3  -4,   0,   4,   8,   8,   4,   0,  -4
#define QUEENS__MG_PIECETABLE_R2  -8,  -4,   0,   4,   4,   0,  -4,  -8
#define QUEENS__MG_PIECETABLE_R1 -12,  -8,  -4,   0,   0,  -4,  -8, -12

//#####################################################################

#define KINGS___EG_PIECETABLE_R8 -40, -24, -16,  -8,  -8, -16, -24, -40
#define KINGS___EG_PIECETABLE_R7 -24, -12,  -8,   0,   0,  -8, -12, -20
#define KINGS___EG_PIECETABLE_R6 -16,  -6,  10,  28,  28,  10,  -6, -16
#define KINGS___EG_PIECETABLE_R5  -8,   0,  24,  42,  42,  24,   0,  -8
#define KINGS___EG_PIECETABLE_R4  -8,   0,  24,  40,  40,  24,   0,  -8
#define KINGS___EG_PIECETABLE_R3 -16,  -8,   8,  24,  24,   8,  -8, -16
#define KINGS___EG_PIECETABLE_R2 -24, -12,  -8,   0,   0,  -8, -12, -24
#define KINGS___EG_PIECETABLE_R1 -40, -24, -16,  -8,  -8,  -8, -24, -40

#define PAWNS___EG_PIECETABLE_R8   0,   0,   0,   0,   0,   0,   0,   0
#define PAWNS___EG_PIECETABLE_R7  75,  65,  60,  60,  60,  60,  65,  75
#define PAWNS___EG_PIECETABLE_R6  48,  42,  36,  36,  36,  36,  42,  48
#define PAWNS___EG_PIECETABLE_R5  40,  34,  28,  28,  28,  28,  34,  40
#define PAWNS___EG_PIECETABLE_R4  30,  26,  22,  22,  22,  22,  26,  30
#define PAWNS___EG_PIECETABLE_R3  28,  24,  20,  20,  20,  20,  24,  28
#define PAWNS___EG_PIECETABLE_R2  30,  26,  22,  22,  22,  22,  26,  30
#define PAWNS___EG_PIECETABLE_R1   0,   0,   0,   0,   0,   0,   0,   0

#define KNIGHTS_EG_PIECETABLE_R8 -24, -20, -16,  -8,  -8, -16, -20, -24
#define KNIGHTS_EG_PIECETABLE_R7 -20, -16,  -8,   0,   0,  -8, -16, -20
#define KNIGHTS_EG_PIECETABLE_R6 -16,  -8,   4,  16,  16,   4,  -8, -16
#define KNIGHTS_EG_PIECETABLE_R5  -8,   0,  16,  24,  24,  16,   0,  -8
#define KNIGHTS_EG_PIECETABLE_R4  -8,   0,  16,  24,  24,  16,   0,  -8
#define KNIGHTS_EG_PIECETABLE_R3 -16,  -8,   4,  16,  16,   4,  -8, -16
#define KNIGHTS_EG_PIECETABLE_R2 -20, -16,  -8,   0,   0,  -8, -16, -20
#define KNIGHTS_EG_PIECETABLE_R1 -24, -20, -16,  -8,  -8,  -8, -20, -24

#define BISHOPS_EG_PIECETABLE_R8 -20, -16,  -8,   0,   0,  -8, -16, -20
#define BISHOPS_EG_PIECETABLE_R7 -16,   4,   0,   8,   8,   0,   4, -16
#define BISHOPS_EG_PIECETABLE_R6  -8,   0,  20,  16,  16,  20,   0,  -4
#define BISHOPS_EG_PIECETABLE_R5   0,   8,  16,  20,  20,  16,   8,   0
#define BISHOPS_EG_PIECETABLE_R4   0,   8,  16,  20,  20,  16,   8,   0
#define BISHOPS_EG_PIECETABLE_R3  -8,   0,  20,  16,  16,  20,   0,  -8
#define BISHOPS_EG_PIECETABLE_R2 -16,   4,   0,   8,   8,   0,   4, -16
#define BISHOPS_EG_PIECETABLE_R1 -20, -16,  -8,   0,   0,  -8, -16, -20

#define ROOKS___EG_PIECETABLE_R8   0,   0,   0,   0,   0,   0,   0,   0
#define ROOKS___EG_PIECETABLE_R7   0,   0,   0,   0,   0,   0,   0,   0
#define ROOKS___EG_PIECETABLE_R6   0,   0,   0,   0,   0,   0,   0,   0
#define ROOKS___EG_PIECETABLE_R5   0,   0,   0,   0,   0,   0,   0,   0
#define ROOKS___EG_PIECETABLE_R4   0,   0,   0,   0,   0,   0,   0,   0
#define ROOKS___EG_PIECETABLE_R3   0,   0,   0,   0,   0,   0,   0,   0
#define ROOKS___EG_PIECETABLE_R2   0,   0,   0,   0,   0,   0,   0,   0
#define ROOKS___EG_PIECETABLE_R1   0,   0,   0,   0,   0,   0,   0,   0

#define QUEENS__EG_PIECETABLE_R8 -20, -16,  -8,   0,   0,  -8, -16, -20
#define QUEENS__EG_PIECETABLE_R7 -16,  -8,   0,   8,   8,   0,  -8, -16
#define QUEENS__EG_PIECETABLE_R6  -8,   0,   8,  16,  16,   8,   0,  -4
#define QUEENS__EG_PIECETABLE_R5   0,   8,  16,  20,  20,  16,   8,   0
#define QUEENS__EG_PIECETABLE_R4   0,   8,  16,  20,  20,  16,   8,   0
#define QUEENS__EG_PIECETABLE_R3  -8,   0,   8,  16,  16,  16,   0,  -8
#define QUEENS__EG_PIECETABLE_R2 -16,  -8,   0,   8,   8,   0,  -8, -16
#define QUEENS__EG_PIECETABLE_R1 -20, -16,  -8,   0,   0,  -8, -16, -20

#define PASSEDPAWN_PIECETABLE_R8   0,   0,   0,   0,   0,   0,   0,   0
#define PASSEDPAWN_PIECETABLE_R7 100,  80,  65,  60,  60,  65,  80, 100
#define PASSEDPAWN_PIECETABLE_R6  75,  55,  45,  40,  40,  45,  55,  75
#define PASSEDPAWN_PIECETABLE_R5  50,  35,  35,  35,  35,  35,  35,  50
#define PASSEDPAWN_PIECETABLE_R4  35,  30,  25,  25,  25,  25,  30,  35
#define PASSEDPAWN_PIECETABLE_R3  24,  19,  14,  14,  14,  14,  19,  24
#define PASSEDPAWN_PIECETABLE_R2  25,  20,  15,  15,  15,  15,  20,  25
#define PASSEDPAWN_PIECETABLE_R1   0,   0,   0,   0,   0,   0,   0,   0


//#####################################################################

constexpr int8_t WHITE_MG_PIECETABLE[6][64] = {
   {
    KINGS___MG_PIECETABLE_R1,KINGS___MG_PIECETABLE_R2,KINGS___MG_PIECETABLE_R3,KINGS___MG_PIECETABLE_R4,
    KINGS___MG_PIECETABLE_R5,KINGS___MG_PIECETABLE_R6,KINGS___MG_PIECETABLE_R7,KINGS___MG_PIECETABLE_R8
  },
  {
    QUEENS__MG_PIECETABLE_R1,QUEENS__MG_PIECETABLE_R2,QUEENS__MG_PIECETABLE_R3,QUEENS__MG_PIECETABLE_R4,
    QUEENS__MG_PIECETABLE_R5,QUEENS__MG_PIECETABLE_R6,QUEENS__MG_PIECETABLE_R7,QUEENS__MG_PIECETABLE_R8
  },
  {
    ROOKS___MG_PIECETABLE_R1,ROOKS___MG_PIECETABLE_R2,ROOKS___MG_PIECETABLE_R3,ROOKS___MG_PIECETABLE_R4,
    ROOKS___MG_PIECETABLE_R5,ROOKS___MG_PIECETABLE_R6,ROOKS___MG_PIECETABLE_R7,ROOKS___MG_PIECETABLE_R8,
  },
  {
    BISHOPS_MG_PIECETABLE_R1,BISHOPS_MG_PIECETABLE_R2,BISHOPS_MG_PIECETABLE_R3,BISHOPS_MG_PIECETABLE_R4,
    BISHOPS_MG_PIECETABLE_R5,BISHOPS_MG_PIECETABLE_R6,BISHOPS_MG_PIECETABLE_R7,BISHOPS_MG_PIECETABLE_R8,
  },
  {
    KNIGHTS_MG_PIECETABLE_R1,KNIGHTS_MG_PIECETABLE_R2,KNIGHTS_MG_PIECETABLE_R3,KNIGHTS_MG_PIECETABLE_R4,
    KNIGHTS_MG_PIECETABLE_R5,KNIGHTS_MG_PIECETABLE_R6,KNIGHTS_MG_PIECETABLE_R7,KNIGHTS_MG_PIECETABLE_R8,
  },
  {
    PAWNS___MG_PIECETABLE_R1,PAWNS___MG_PIECETABLE_R2,PAWNS___MG_PIECETABLE_R3,PAWNS___MG_PIECETABLE_R4,
    PAWNS___MG_PIECETABLE_R5,PAWNS___MG_PIECETABLE_R6,PAWNS___MG_PIECETABLE_R7,PAWNS___MG_PIECETABLE_R8
  }
};
 
constexpr int8_t BLACK_MG_PIECETABLE[6][64] = {
  {
    KINGS___MG_PIECETABLE_R8,KINGS___MG_PIECETABLE_R7,KINGS___MG_PIECETABLE_R6,KINGS___MG_PIECETABLE_R5,
    KINGS___MG_PIECETABLE_R4,KINGS___MG_PIECETABLE_R3,KINGS___MG_PIECETABLE_R2,KINGS___MG_PIECETABLE_R1
  },
  {
    QUEENS__MG_PIECETABLE_R8,QUEENS__MG_PIECETABLE_R7,QUEENS__MG_PIECETABLE_R6,QUEENS__MG_PIECETABLE_R5,
    QUEENS__MG_PIECETABLE_R4,QUEENS__MG_PIECETABLE_R3,QUEENS__MG_PIECETABLE_R2,QUEENS__MG_PIECETABLE_R1
  },
  {
    ROOKS___MG_PIECETABLE_R8,ROOKS___MG_PIECETABLE_R7,ROOKS___MG_PIECETABLE_R6,ROOKS___MG_PIECETABLE_R5,
    ROOKS___MG_PIECETABLE_R4,ROOKS___MG_PIECETABLE_R3,ROOKS___MG_PIECETABLE_R2,ROOKS___MG_PIECETABLE_R1,
  },
  {
    BISHOPS_MG_PIECETABLE_R8,BISHOPS_MG_PIECETABLE_R7,BISHOPS_MG_PIECETABLE_R6,BISHOPS_MG_PIECETABLE_R5,
    BISHOPS_MG_PIECETABLE_R4,BISHOPS_MG_PIECETABLE_R3,BISHOPS_MG_PIECETABLE_R2,BISHOPS_MG_PIECETABLE_R1,
  },
  {
    KNIGHTS_MG_PIECETABLE_R8,KNIGHTS_MG_PIECETABLE_R7,KNIGHTS_MG_PIECETABLE_R6,KNIGHTS_MG_PIECETABLE_R5,
    KNIGHTS_MG_PIECETABLE_R4,KNIGHTS_MG_PIECETABLE_R3,KNIGHTS_MG_PIECETABLE_R2,KNIGHTS_MG_PIECETABLE_R1,
  },
  {
    PAWNS___MG_PIECETABLE_R8,PAWNS___MG_PIECETABLE_R7,PAWNS___MG_PIECETABLE_R6,PAWNS___MG_PIECETABLE_R5,
    PAWNS___MG_PIECETABLE_R4,PAWNS___MG_PIECETABLE_R3,PAWNS___MG_PIECETABLE_R2,PAWNS___MG_PIECETABLE_R1
  }
};

constexpr int8_t WHITE_EG_PIECETABLE[6][64] = {
   {
    KINGS___EG_PIECETABLE_R1,KINGS___EG_PIECETABLE_R2,KINGS___EG_PIECETABLE_R3,KINGS___EG_PIECETABLE_R4,
    KINGS___EG_PIECETABLE_R5,KINGS___EG_PIECETABLE_R6,KINGS___EG_PIECETABLE_R7,KINGS___EG_PIECETABLE_R8
  },
  {
    QUEENS__EG_PIECETABLE_R1,QUEENS__EG_PIECETABLE_R2,QUEENS__EG_PIECETABLE_R3,QUEENS__EG_PIECETABLE_R4,
    QUEENS__EG_PIECETABLE_R5,QUEENS__EG_PIECETABLE_R6,QUEENS__EG_PIECETABLE_R7,QUEENS__EG_PIECETABLE_R8
  },
  {
    ROOKS___EG_PIECETABLE_R1,ROOKS___EG_PIECETABLE_R2,ROOKS___EG_PIECETABLE_R3,ROOKS___EG_PIECETABLE_R4,
    ROOKS___EG_PIECETABLE_R5,ROOKS___EG_PIECETABLE_R6,ROOKS___EG_PIECETABLE_R7,ROOKS___EG_PIECETABLE_R8,
  },
  {
    BISHOPS_EG_PIECETABLE_R1,BISHOPS_EG_PIECETABLE_R2,BISHOPS_EG_PIECETABLE_R3,BISHOPS_EG_PIECETABLE_R4,
    BISHOPS_EG_PIECETABLE_R5,BISHOPS_EG_PIECETABLE_R6,BISHOPS_EG_PIECETABLE_R7,BISHOPS_EG_PIECETABLE_R8,
  },
  {
    KNIGHTS_EG_PIECETABLE_R1,KNIGHTS_EG_PIECETABLE_R2,KNIGHTS_EG_PIECETABLE_R3,KNIGHTS_EG_PIECETABLE_R4,
    KNIGHTS_EG_PIECETABLE_R5,KNIGHTS_EG_PIECETABLE_R6,KNIGHTS_EG_PIECETABLE_R7,KNIGHTS_EG_PIECETABLE_R8,
  },
  {
    PAWNS___EG_PIECETABLE_R1,PAWNS___EG_PIECETABLE_R2,PAWNS___EG_PIECETABLE_R3,PAWNS___EG_PIECETABLE_R4,
    PAWNS___EG_PIECETABLE_R5,PAWNS___EG_PIECETABLE_R6,PAWNS___EG_PIECETABLE_R7,PAWNS___EG_PIECETABLE_R8
  }
};

constexpr int8_t BLACK_EG_PIECETABLE[6][64] = {
  {
    KINGS___EG_PIECETABLE_R8,KINGS___EG_PIECETABLE_R7,KINGS___EG_PIECETABLE_R6,KINGS___EG_PIECETABLE_R5,
    KINGS___EG_PIECETABLE_R4,KINGS___EG_PIECETABLE_R3,KINGS___EG_PIECETABLE_R2,KINGS___EG_PIECETABLE_R1
  },
  {
    QUEENS__EG_PIECETABLE_R8,QUEENS__EG_PIECETABLE_R7,QUEENS__EG_PIECETABLE_R6,QUEENS__EG_PIECETABLE_R5,
    QUEENS__EG_PIECETABLE_R4,QUEENS__EG_PIECETABLE_R3,QUEENS__EG_PIECETABLE_R2,QUEENS__EG_PIECETABLE_R1
  },
  {
    ROOKS___EG_PIECETABLE_R8,ROOKS___EG_PIECETABLE_R7,ROOKS___EG_PIECETABLE_R6,ROOKS___EG_PIECETABLE_R5,
    ROOKS___EG_PIECETABLE_R4,ROOKS___EG_PIECETABLE_R3,ROOKS___EG_PIECETABLE_R2,ROOKS___EG_PIECETABLE_R1,
  },
  {
    BISHOPS_EG_PIECETABLE_R8,BISHOPS_EG_PIECETABLE_R7,BISHOPS_EG_PIECETABLE_R6,BISHOPS_EG_PIECETABLE_R5,
    BISHOPS_EG_PIECETABLE_R4,BISHOPS_EG_PIECETABLE_R3,BISHOPS_EG_PIECETABLE_R2,BISHOPS_EG_PIECETABLE_R1,
  },
  {
    KNIGHTS_EG_PIECETABLE_R8,KNIGHTS_EG_PIECETABLE_R7,KNIGHTS_EG_PIECETABLE_R6,KNIGHTS_EG_PIECETABLE_R5,
    KNIGHTS_EG_PIECETABLE_R4,KNIGHTS_EG_PIECETABLE_R3,KNIGHTS_EG_PIECETABLE_R2,KNIGHTS_EG_PIECETABLE_R1,
  },
  {
    PAWNS___EG_PIECETABLE_R8,PAWNS___EG_PIECETABLE_R7,PAWNS___EG_PIECETABLE_R6,PAWNS___EG_PIECETABLE_R5,
    PAWNS___EG_PIECETABLE_R4,PAWNS___EG_PIECETABLE_R3,PAWNS___EG_PIECETABLE_R2,PAWNS___EG_PIECETABLE_R1
  },
};


constexpr int8_t WHITE_PASSEDPAWN_PIECETABLE[64] = {
  PASSEDPAWN_PIECETABLE_R1,PASSEDPAWN_PIECETABLE_R2,PASSEDPAWN_PIECETABLE_R3,PASSEDPAWN_PIECETABLE_R4,
  PASSEDPAWN_PIECETABLE_R5,PASSEDPAWN_PIECETABLE_R6,PASSEDPAWN_PIECETABLE_R7,PASSEDPAWN_PIECETABLE_R8
};

constexpr int8_t BLACK_PASSEDPAWN_PIECETABLE[64] = {
  PASSEDPAWN_PIECETABLE_R8,PASSEDPAWN_PIECETABLE_R7,PASSEDPAWN_PIECETABLE_R6,PASSEDPAWN_PIECETABLE_R5,
  PASSEDPAWN_PIECETABLE_R4,PASSEDPAWN_PIECETABLE_R3,PASSEDPAWN_PIECETABLE_R2,PASSEDPAWN_PIECETABLE_R1
};


#endif /* eval_piecetables_h */