X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpawns.cpp;h=d2ef33e61e499cef4a466d91a1d076de7d36830d;hp=24abec0c4f20cc09c9d1a72d403b10c0fba824f2;hb=82f7d507eaf83e27a33bf0b433be08d23320b6fe;hpb=29070bd01a5a8e37658866ead1fbdeacc60ce9a6 diff --git a/src/pawns.cpp b/src/pawns.cpp index 24abec0c..d2ef33e6 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -151,7 +151,7 @@ namespace { // not attacked more times than defended. if ( !(stoppers ^ lever ^ leverPush) && !(ourPawns & forward_file_bb(Us, s)) - && popcount(supported) >= popcount(lever) + && popcount(supported) >= popcount(lever) - 1 && popcount(phalanx) >= popcount(leverPush)) e->passedPawns[Us] |= s; @@ -236,18 +236,17 @@ Entry* probe(const Position& pos) { template Value Entry::shelter_storm(const Position& pos, Square ksq) { - constexpr Color Them = (Us == WHITE ? BLACK : WHITE); + constexpr Color Them = (Us == WHITE ? BLACK : WHITE); + constexpr Direction Down = (Us == WHITE ? SOUTH : NORTH); enum { BlockedByKing, Unopposed, BlockedByPawn, Unblocked }; - File center = std::max(FILE_B, std::min(FILE_G, file_of(ksq))); - Bitboard b = pos.pieces(PAWN) - & (forward_ranks_bb(Us, ksq) | rank_bb(ksq)) - & (adjacent_files_bb(center) | file_bb(center)); + Bitboard b = pos.pieces(PAWN) & (forward_ranks_bb(Us, ksq) | rank_bb(ksq)); Bitboard ourPawns = b & pos.pieces(Us); Bitboard theirPawns = b & pos.pieces(Them); Value safety = MaxSafetyBonus; + File center = std::max(FILE_B, std::min(FILE_G, file_of(ksq))); for (File f = File(center - 1); f <= File(center + 1); ++f) { b = ourPawns & file_bb(f); @@ -259,9 +258,9 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) { int d = std::min(f, ~f); safety -= ShelterWeakness[f == file_of(ksq)][d][rkUs] + StormDanger - [f == file_of(ksq) && rkThem == relative_rank(Us, ksq) + 1 ? BlockedByKing : - rkUs == RANK_1 ? Unopposed : - rkThem == rkUs + 1 ? BlockedByPawn : Unblocked] + [(shift(b) & ksq) ? BlockedByKing : + rkUs == RANK_1 ? Unopposed : + rkThem == (rkUs + 1) ? BlockedByPawn : Unblocked] [d][rkThem]; }