X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpsqtab.h;h=7b34258725a2d049ff384429fc7613987207fae9;hp=0607c2d33796dfc3c2ea3896b6a7c9237af063fc;hb=d39ddb90775bcec7f3080002fc18c45f292d67b3;hpb=bb751d6c890f5c50c642366d601740366cfae8d0 diff --git a/src/psqtab.h b/src/psqtab.h index 0607c2d3..7b342587 100644 --- a/src/psqtab.h +++ b/src/psqtab.h @@ -1,17 +1,18 @@ /* - Glaurung, a UCI chess playing engine. - Copyright (C) 2004-2008 Tord Romstad + Stockfish, a UCI chess playing engine derived from Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2009 Marco Costalba - Glaurung is free software: you can redistribute it and/or modify + Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - - Glaurung is distributed in the hope that it will be useful, + + Stockfish is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -24,139 +25,162 @@ //// Includes //// -#include "position.h" +#include "value.h" //// -//// Variables +//// Constants modified by Joona Kiiski //// +static const Value MP = PawnValueMidgame; +static const Value MK = KnightValueMidgame; +static const Value MB = BishopValueMidgame; +static const Value MR = RookValueMidgame; +static const Value MQ = QueenValueMidgame; + static const int MgPST[][64] = { { }, - { // Pawn - 0, 0, 0, 0, 0, 0, 0, 0, - 166, 192, 204, 216, 216, 204, 192, 166, - 166, 192, 210, 242, 242, 210, 192, 166, - 166, 192, 220, 268, 268, 220, 192, 166, - 166, 192, 220, 242, 242, 220, 192, 166, - 166, 192, 210, 216, 216, 210, 192, 166, - 166, 192, 204, 216, 216, 204, 192, 166, - 0, 0, 0, 0, 0, 0, 0, 0 - }, - { // Knight - 704, 730, 756, 768, 768, 756, 730, 704, - 743, 768, 794, 807, 807, 794, 768, 743, - 781, 807, 832, 844, 844, 832, 807, 781, - 807, 832, 857, 870, 870, 857, 832, 807, - 820, 844, 870, 883, 883, 870, 844, 820, - 820, 844, 870, 883, 883, 870, 844, 820, - 781, 807, 832, 844, 844, 832, 807, 781, - 650, 768, 794, 807, 807, 794, 768, 650 - }, - { // Bishop - 786, 786, 792, 797, 797, 792, 786, 786, - 812, 832, 827, 832, 832, 827, 832, 812, - 817, 827, 842, 837, 837, 842, 827, 817, - 822, 832, 837, 852, 852, 837, 832, 822, - 822, 832, 837, 852, 852, 837, 832, 822, - 817, 827, 842, 837, 837, 842, 827, 817, - 812, 832, 827, 832, 832, 827, 832, 812, - 812, 812, 817, 822, 822, 817, 812, 812 - }, - { // Rook - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267 - }, - { // Queen - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560 - }, - { // King - 302, 328, 276, 225, 225, 276, 328, 302, - 276, 302, 251, 200, 200, 251, 302, 276, - 225, 251, 200, 149, 149, 200, 251, 225, - 200, 225, 175, 124, 124, 175, 225, 200, - 175, 200, 149, 98, 98, 149, 200, 175, - 149, 175, 124, 72, 72, 124, 175, 149, - 124, 149, 98, 47, 47, 98, 149, 124, - 98, 124, 72, 21, 21, 72, 124, 98, + {// Pawn + // A B C D E F G H + 0, 0, 0, 0, 0, 0, 0, 0, + MP-28, MP-6, MP+ 4, MP+14, MP+14, MP+ 4, MP-6, MP-28, + MP-28, MP-6, MP+ 9, MP+36, MP+36, MP+ 9, MP-6, MP-28, + MP-28, MP-6, MP+17, MP+58, MP+58, MP+17, MP-6, MP-28, + MP-28, MP-6, MP+17, MP+36, MP+36, MP+17, MP-6, MP-28, + MP-28, MP-6, MP+ 9, MP+14, MP+14, MP+ 9, MP-6, MP-28, + MP-28, MP-6, MP+ 4, MP+14, MP+14, MP+ 4, MP-6, MP-28, + 0, 0, 0, 0, 0, 0, 0, 0 + }, + {// Knight + // A B C D E F G H + MK-135, MK-107, MK-80, MK-67, MK-67, MK-80, MK-107, MK-135, + MK- 93, MK- 67, MK-39, MK-25, MK-25, MK-39, MK- 67, MK- 93, + MK- 53, MK- 25, MK+ 1, MK+13, MK+13, MK+ 1, MK- 25, MK- 53, + MK- 25, MK+ 1, MK+27, MK+41, MK+41, MK+27, MK+ 1, MK- 25, + MK- 11, MK+ 13, MK+41, MK+55, MK+55, MK+41, MK+ 13, MK- 11, + MK- 11, MK+ 13, MK+41, MK+55, MK+55, MK+41, MK+ 13, MK- 11, + MK- 53, MK- 25, MK+ 1, MK+13, MK+13, MK+ 1, MK- 25, MK- 53, + MK-193, MK- 67, MK-39, MK-25, MK-25, MK-39, MK- 67, MK-193 + }, + {// Bishop + // A B C D E F G H + MB-40, MB-40, MB-35, MB-30, MB-30, MB-35, MB-40, MB-40, + MB-17, MB+ 0, MB- 4, MB+ 0, MB+ 0, MB- 4, MB+ 0, MB-17, + MB-13, MB- 4, MB+ 8, MB+ 4, MB+ 4, MB+ 8, MB- 4, MB-13, + MB- 8, MB+ 0, MB+ 4, MB+17, MB+17, MB+ 4, MB+ 0, MB- 8, + MB- 8, MB+ 0, MB+ 4, MB+17, MB+17, MB+ 4, MB+ 0, MB- 8, + MB-13, MB- 4, MB+ 8, MB+ 4, MB+ 4, MB+ 8, MB- 4, MB-13, + MB-17, MB+ 0, MB- 4, MB+ 0, MB+ 0, MB- 4, MB+ 0, MB-17, + MB-17, MB-17, MB-13, MB- 8, MB- 8, MB-13, MB-17, MB-17 + }, + {// Rook + // A B C D E F G H + MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12, + MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12, + MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12, + MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12, + MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12, + MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12, + MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12, + MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12 + }, + {// Queen + // A B C D E F G H + MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, + MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, + MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, + MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, + MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, + MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, + MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, + MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8 + }, + {// King + //A B C D E F G H + 287, 311, 262, 214, 214, 262, 311, 287, + 262, 287, 238, 190, 190, 238, 287, 262, + 214, 238, 190, 142, 142, 190, 238, 214, + 190, 214, 167, 119, 119, 167, 214, 190, + 167, 190, 142, 94, 94, 142, 190, 167, + 142, 167, 119, 69, 69, 119, 167, 142, + 119, 142, 94, 46, 46, 94, 142, 119, + 94, 119, 69, 21, 21, 69, 119, 94 } }; +static const Value EP = PawnValueEndgame; +static const Value EK = KnightValueEndgame; +static const Value EB = BishopValueEndgame; +static const Value ER = RookValueEndgame; +static const Value EQ = QueenValueEndgame; static const int EgPST[][64] = { { }, - { // Pawn - 0, 0, 0, 0, 0, 0, 0, 0, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 0, 0, 0, 0, 0, 0, 0, 0 + {// Pawn + // A B C D E F G H + 0, 0, 0, 0, 0, 0, 0, 0, + EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, + EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, + EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, + EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, + EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, + EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, + 0, 0, 0, 0, 0, 0, 0, 0 }, - { // Knight - 730, 756, 781, 794, 794, 781, 756, 730, - 756, 781, 807, 820, 820, 807, 781, 756, - 781, 807, 832, 844, 844, 832, 807, 781, - 794, 820, 844, 857, 857, 844, 820, 794, - 794, 820, 844, 857, 857, 844, 820, 794, - 781, 807, 832, 844, 844, 832, 807, 781, - 756, 781, 807, 820, 820, 807, 781, 756, - 730, 756, 781, 794, 794, 781, 756, 730 + {// Knight + // A B C D E F G H + EK-104, EK-79, EK-55, EK-42, EK-42, EK-55, EK-79, EK-104, + EK- 79, EK-55, EK-30, EK-17, EK-17, EK-30, EK-55, EK- 79, + EK- 55, EK-30, EK- 6, EK+ 5, EK+ 5, EK- 6, EK-30, EK- 55, + EK- 42, EK-17, EK+ 5, EK+18, EK+18, EK+ 5, EK-17, EK- 42, + EK- 42, EK-17, EK+ 5, EK+18, EK+18, EK+ 5, EK-17, EK- 42, + EK- 55, EK-30, EK- 6, EK+ 5, EK+ 5, EK- 6, EK-30, EK- 55, + EK- 79, EK-55, EK-30, EK-17, EK-17, EK-30, EK-55, EK- 79, + EK-104, EK-79, EK-55, EK-42, EK-42, EK-55, EK-79, EK-104 }, - { // Bishop - 786, 802, 809, 817, 817, 809, 802, 786, - 802, 817, 825, 832, 832, 825, 817, 802, - 809, 825, 832, 839, 839, 832, 825, 809, - 817, 832, 839, 847, 847, 839, 832, 817, - 817, 832, 839, 847, 847, 839, 832, 817, - 809, 825, 832, 839, 839, 832, 825, 809, - 802, 817, 825, 832, 832, 825, 817, 802, - 786, 802, 809, 817, 817, 809, 802, 786 + {// Bishop + // A B C D E F G H + EB-59, EB-42, EB-35, EB-26, EB-26, EB-35, EB-42, EB-59, + EB-42, EB-26, EB-18, EB-11, EB-11, EB-18, EB-26, EB-42, + EB-35, EB-18, EB-11, EB- 4, EB- 4, EB-11, EB-18, EB-35, + EB-26, EB-11, EB- 4, EB+ 4, EB+ 4, EB- 4, EB-11, EB-26, + EB-26, EB-11, EB- 4, EB+ 4, EB+ 4, EB- 4, EB-11, EB-26, + EB-35, EB-18, EB-11, EB- 4, EB- 4, EB-11, EB-18, EB-35, + EB-42, EB-26, EB-18, EB-11, EB-11, EB-18, EB-26, EB-42, + EB-59, EB-42, EB-35, EB-26, EB-26, EB-35, EB-42, EB-59 }, - { // Rook - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282 + {// Rook + // A B C D E F G H + ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, + ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, + ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, + ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, + ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, + ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, + ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, + ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3, ER+3 }, - { // Queen - 2499, 2520, 2530, 2540, 2540, 2530, 2520, 2499, - 2520, 2540, 2550, 2560, 2560, 2550, 2540, 2520, - 2530, 2550, 2560, 2570, 2570, 2560, 2550, 2530, - 2540, 2560, 2570, 2580, 2580, 2570, 2560, 2540, - 2540, 2560, 2570, 2580, 2580, 2570, 2560, 2540, - 2530, 2550, 2560, 2570, 2570, 2560, 2550, 2530, - 2520, 2540, 2550, 2560, 2560, 2550, 2540, 2520, - 2499, 2520, 2530, 2540, 2540, 2530, 2520, 2499 + {// Queen + // A B C D E F G H + EQ-80, EQ-54, EQ-42, EQ-30, EQ-30, EQ-42, EQ-54, EQ-80, + EQ-54, EQ-30, EQ-18, EQ- 6, EQ- 6, EQ-18, EQ-30, EQ-54, + EQ-42, EQ-18, EQ- 6, EQ+ 6, EQ+ 6, EQ- 6, EQ-18, EQ-42, + EQ-30, EQ- 6, EQ+ 6, EQ+18, EQ+18, EQ+ 6, EQ- 6, EQ-30, + EQ-30, EQ- 6, EQ+ 6, EQ+18, EQ+18, EQ+ 6, EQ- 6, EQ-30, + EQ-42, EQ-18, EQ- 6, EQ+ 6, EQ+ 6, EQ- 6, EQ-18, EQ-42, + EQ-54, EQ-30, EQ-18, EQ- 6, EQ- 6, EQ-18, EQ-30, EQ-54, + EQ-80, EQ-54, EQ-42, EQ-30, EQ-30, EQ-42, EQ-54, EQ-80 }, - { // King - 16, 78, 108, 139, 139, 108, 78, 16, - 78, 139, 170, 200, 200, 170, 139, 78, - 108, 170, 200, 230, 230, 200, 170, 108, - 139, 200, 230, 261, 261, 230, 200, 139, - 139, 200, 230, 261, 261, 230, 200, 139, - 108, 170, 200, 230, 230, 200, 170, 108, - 78, 139, 170, 200, 200, 170, 139, 78, - 16, 78, 108, 139, 139, 108, 78, 16 + {// King + //A B C D E F G H + 18, 77, 105, 135, 135, 105, 77, 18, + 77, 135, 165, 193, 193, 165, 135, 77, + 105, 165, 193, 222, 222, 193, 165, 105, + 135, 193, 222, 251, 251, 222, 193, 135, + 135, 193, 222, 251, 251, 222, 193, 135, + 105, 165, 193, 222, 222, 193, 165, 105, + 77, 135, 165, 193, 193, 165, 135, 77, + 18, 77, 105, 135, 135, 105, 77, 18 } };