X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=3ac52f8c0f9cbd0910b00ab1a05532c198c291b1;hp=b9ff56fbd2d2b3297fdd9e416efa7d03fcfda37b;hb=a2410227cc8df5373d6970bfe63bbd3df5287c8c;hpb=1d977aa79ecaf410f4b2065eb8f11e0a5e689db4 diff --git a/src/search.cpp b/src/search.cpp index b9ff56fb..3ac52f8c 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -553,7 +553,7 @@ namespace { goto moves_loop; } - moveCount = quietCount = 0; + moveCount = quietCount = ss->moveCount = 0; bestValue = -VALUE_INFINITE; ss->ply = (ss-1)->ply + 1; @@ -749,7 +749,7 @@ namespace { assert((ss-1)->currentMove != MOVE_NONE); assert((ss-1)->currentMove != MOVE_NULL); - MovePicker mp(pos, ttMove, History, CounterMovesHistory, pos.captured_piece_type()); + MovePicker mp(pos, ttMove, History, CounterMovesHistory, PieceValue[MG][pos.captured_piece_type()]); CheckInfo ci(pos); while ((move = mp.next_move()) != MOVE_NONE) @@ -826,6 +826,8 @@ moves_loop: // When in check and at SpNode search starts from here } else ++moveCount; + + ss->moveCount = moveCount; if (RootNode) { @@ -934,6 +936,7 @@ moves_loop: // When in check and at SpNode search starts from here if (!RootNode && !SpNode && !pos.legal(move, ci.pinned)) { moveCount--; + ss->moveCount = moveCount; continue; } @@ -959,8 +962,8 @@ moves_loop: // When in check and at SpNode search starts from here ss->reduction += ONE_PLY; if ( History[pos.piece_on(to_sq(move))][to_sq(move)] > VALUE_ZERO - && CounterMovesHistory[pos.piece_on(prevMoveSq)][prevMoveSq] - [pos.piece_on(to_sq(move))][to_sq(move)] > VALUE_ZERO) + && CounterMovesHistory[pos.piece_on(prevMoveSq)][prevMoveSq] + [pos.piece_on(to_sq(move))][to_sq(move)] > VALUE_ZERO) ss->reduction = std::max(DEPTH_ZERO, ss->reduction - ONE_PLY); // Decrease reduction for moves that escape a capture @@ -1425,8 +1428,8 @@ moves_loop: // When in check and at SpNode search starts from here cmh.update(pos.moved_piece(quiets[i]), to_sq(quiets[i]), -bonus); } - // Extra penalty for TT move in previous ply when it gets refuted - if (is_ok((ss-2)->currentMove) && (ss-1)->currentMove == (ss-1)->ttMove && !pos.captured_piece_type()) + // Extra penalty for PV move in previous ply when it gets refuted + if (is_ok((ss-2)->currentMove) && (ss-1)->moveCount==1 && !pos.captured_piece_type()) { Square prevPrevSq = to_sq((ss-2)->currentMove); HistoryStats& ttMoveCmh = CounterMovesHistory[pos.piece_on(prevPrevSq)][prevPrevSq];