X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=5c9bc86addca4d870f26241fcaea0b99236fd568;hp=a1a120435a8d38194bc306a1f7b2917a77f779b9;hb=600234f2e23d1244fd38a31ac08a77f00b85a087;hpb=e6310b3469b07b6bbecf8d8f75367a655090f22b diff --git a/src/evaluate.cpp b/src/evaluate.cpp index a1a12043..5c9bc86a 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -124,8 +124,8 @@ namespace { S( 94, 99), S( 96,100), S(99,111), S(99,112) } }; - // Outpost[knight/bishop][supported by pawn] contains bonuses for knights and bishops - // outposts, bigger if outpost piece is supported by a pawn. + // Outpost[knight/bishop][supported by pawn] contains bonuses for knights and + // bishops outposts, bigger if outpost piece is supported by a pawn. const Score Outpost[][2] = { { S(28, 7), S(42,11) }, // Knights { S(12, 3), S(18, 5) } // Bishops @@ -146,6 +146,13 @@ namespace { S(0, 0), S(0, 0), S(107, 138), S(84, 122), S(114, 203), S(121, 217) }; + // Passed[mg/eg][rank] contains midgame and endgame bonuses for passed pawns. + // We don't use a Score because we process the two components independently. + const Value Passed[][RANK_NB] = { + { V(0), V( 1), V(34), V(90), V(214), V(328) }, + { V(7), V(14), V(37), V(63), V(134), V(189) } + }; + const Score ThreatenedByHangingPawn = S(40, 60); // Assorted bonuses and penalties used by evaluation @@ -567,8 +574,7 @@ namespace { int r = relative_rank(Us, s) - RANK_2; int rr = r * (r - 1); - // Base bonus based on rank - Value mbonus = Value(17 * rr), ebonus = Value(7 * (rr + r + 1)); + Value mbonus = Passed[MG][r], ebonus = Passed[EG][r]; if (rr) {