X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpawns.cpp;h=e2b26344986ad51d129aafbf9fba91ba8d2857fc;hp=7edaa6e1bb786bfa42ff341352f3d153b280e417;hb=ca6ce6398b1bd21ff2ac29b2dc27d7c25abbb509;hpb=784e7d91455246361871f2f950dfb05e428c2c58 diff --git a/src/pawns.cpp b/src/pawns.cpp index 7edaa6e1..e2b26344 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -36,7 +36,7 @@ namespace { constexpr Score Isolated = S( 5, 15); // Connected pawn bonus - constexpr int Connected[RANK_NB] = { 0, 13, 24, 18, 65, 100, 175, 330 }; + constexpr int Connected[RANK_NB] = { 0, 13, 17, 24, 59, 96, 171 }; // Strength of pawn shelter for our king by [distance from edge][rank]. // RANK_1 = 0 is used for files where we have no pawn, or pawn is behind our king. @@ -77,11 +77,8 @@ namespace { Bitboard theirPawns = pos.pieces(Them, PAWN); e->passedPawns[Us] = e->pawnAttacksSpan[Us] = e->weakUnopposed[Us] = 0; - e->semiopenFiles[Us] = 0xFF; e->kingSquares[Us] = SQ_NONE; e->pawnAttacks[Us] = pawn_attacks_bb(ourPawns); - e->pawnsOnSquares[Us][BLACK] = popcount(ourPawns & DarkSquares); - e->pawnsOnSquares[Us][WHITE] = pos.count(Us) - e->pawnsOnSquares[Us][BLACK]; // Loop through all pawns of the current color and score each pawn while ((s = *pl++) != SQ_NONE) @@ -89,8 +86,8 @@ namespace { assert(pos.piece_on(s) == make_piece(Us, PAWN)); File f = file_of(s); + Rank r = relative_rank(Us, s); - e->semiopenFiles[Us] &= ~(1 << f); e->pawnAttacksSpan[Us] |= pawn_attack_span(Us, s); // Flag the pawn @@ -117,8 +114,7 @@ namespace { && popcount(phalanx) >= popcount(leverPush)) e->passedPawns[Us] |= s; - else if ( stoppers == square_bb(s + Up) - && relative_rank(Us, s) >= RANK_5) + else if (stoppers == square_bb(s + Up) && r >= RANK_5) { b = shift(support) & ~theirPawns; while (b) @@ -129,8 +125,7 @@ namespace { // Score this pawn if (support | phalanx) { - int r = relative_rank(Us, s); - int v = phalanx ? Connected[r] + Connected[r + 1] : 2 * Connected[r]; + int v = (phalanx ? 3 : 2) * Connected[r]; v = 17 * popcount(support) + (v >> (opposed + 1)); score += make_score(v, v * (r - 2) / 4); } @@ -167,7 +162,6 @@ Entry* probe(const Position& pos) { e->key = key; e->scores[WHITE] = evaluate(pos, e); e->scores[BLACK] = evaluate(pos, e); - e->passedCount= popcount(e->passedPawns[WHITE] | e->passedPawns[BLACK]); return e; }