]> git.sesse.net Git - stockfish/blobdiff - src/movepick.cpp
LMR dynamic reduction
[stockfish] / src / movepick.cpp
index 4c75b0fe2c00dfb0e464f113e9ad911cb53b57a6..6a7fd4ebce3e50bcc8d598b5d04702ad4fe7a455 100644 (file)
@@ -97,7 +97,7 @@ MovePicker::MovePicker(const Position& p, bool pv, Move ttm,
       phaseIndex = (noCaptures ? NoMovesPhaseIndex : QsearchWithoutChecksPhaseIndex);
 
   dc = p.discovered_check_candidates(us);
-  pinned = p.pinned_pieces(p.side_to_move());
+  pinned = p.pinned_pieces(us);
 
   finished = false;
 }
@@ -130,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;
@@ -139,10 +139,10 @@ 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;
+        }
+        break;
 
     case PH_GOOD_CAPTURES:
         numOfMoves = generate_captures(pos, moves);
@@ -162,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;
@@ -174,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;
 
@@ -394,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;
@@ -414,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;
@@ -442,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;
@@ -457,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;
@@ -471,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;