X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovepick.cpp;h=d9fe8d2cf329c2cf4fe109efec6f0225f329611d;hp=59b134532e4ec5318884c9b2810d902d0af337cb;hb=c02613860a3836bb85da25ae2fed9f1351ba27a5;hpb=9b6b9e67fe767a83837ff4cbf3954a8cf70eee59;ds=sidebyside diff --git a/src/movepick.cpp b/src/movepick.cpp index 59b13453..d9fe8d2c 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -96,6 +96,9 @@ MovePicker::MovePicker(const Position& p, bool pv, Move ttm, else phaseIndex = (noCaptures ? NoMovesPhaseIndex : QsearchWithoutChecksPhaseIndex); + dc = p.discovered_check_candidates(us); + pinned = p.pinned_pieces(us); + finished = false; } @@ -127,7 +130,7 @@ Move MovePicker::get_next_move() { if (ttMove != MOVE_NONE) { assert(move_is_ok(ttMove)); - if (move_is_legal(pos, ttMove)) + if (move_is_legal(pos, ttMove, pinned)) return ttMove; } break; @@ -136,7 +139,7 @@ Move MovePicker::get_next_move() { if (mateKiller != MOVE_NONE) { assert(move_is_ok(mateKiller)); - if (move_is_legal(pos, mateKiller)) + if (move_is_legal(pos, mateKiller, pinned)) return mateKiller; } break; @@ -159,7 +162,7 @@ Move MovePicker::get_next_move() { case PH_EVASIONS: assert(pos.is_check()); - numOfMoves = generate_evasions(pos, moves); + numOfMoves = generate_evasions(pos, moves, pinned); score_evasions(); movesPicked = 0; break; @@ -171,7 +174,7 @@ Move MovePicker::get_next_move() { break; case PH_QCHECKS: - numOfMoves = generate_checks(pos, moves); + numOfMoves = generate_checks(pos, moves, dc); movesPicked = 0; break; @@ -391,7 +394,7 @@ Move MovePicker::pick_move_from_list() { moves[bestIndex] = moves[movesPicked++]; if ( move != ttMove && move != mateKiller - && pos.pl_move_is_legal(move)) + && pos.pl_move_is_legal(move, pinned)) return move; } break; @@ -411,7 +414,7 @@ Move MovePicker::pick_move_from_list() { moves[bestIndex] = moves[movesPicked++]; if ( move != ttMove && move != mateKiller - && pos.pl_move_is_legal(move)) + && pos.pl_move_is_legal(move, pinned)) return move; } break; @@ -439,7 +442,7 @@ Move MovePicker::pick_move_from_list() { move = badCaptures[movesPicked++].move; if ( move != ttMove && move != mateKiller - && pos.pl_move_is_legal(move)) + && pos.pl_move_is_legal(move, pinned)) return move; } break; @@ -454,7 +457,7 @@ Move MovePicker::pick_move_from_list() { moves[bestIndex] = moves[movesPicked++]; // Remember to change the line below if we decide to hash the qsearch! // Maybe also postpone the legality check until after futility pruning? - if (/* move != ttMove && */ pos.pl_move_is_legal(move)) + if (/* move != ttMove && */ pos.pl_move_is_legal(move, pinned)) return move; } break; @@ -468,7 +471,7 @@ Move MovePicker::pick_move_from_list() { { move = moves[movesPicked++].move; // Remember to change the line below if we decide to hash the qsearch! - if (/* move != ttMove && */ pos.pl_move_is_legal(move)) + if (/* move != ttMove && */ pos.pl_move_is_legal(move, pinned)) return move; } break;