//
// 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 */