: ttHit ? tte->move() : MOVE_NONE;
ttPv = (ttHit && tte->is_pv()) || (PvNode && depth > 4 * ONE_PLY);
- // if position has been searched at higher depths and we are shuffling, return value_draw
- if (pos.rule50_count() > 36
- && ss->ply > 36
- && depth < 3 * ONE_PLY
- && ttHit
- && tte->depth() > depth
- && pos.count<PAWN>() > 0)
- return VALUE_DRAW;
-
// At non-PV nodes we check for an early TT cutoff
if ( !PvNode
&& ttHit
if (!pos.capture_or_promotion(ttMove))
update_quiet_stats(pos, ss, ttMove, nullptr, 0, stat_bonus(depth));
- // Extra penalty for a quiet TT or main killer move in previous ply when it gets refuted
- if ( ((ss-1)->moveCount == 1 || (ss-1)->currentMove == (ss-1)->killers[0])
- && !pos.captured_piece())
+ // Extra penalty for early quiet moves of the previous ply
+ if ((ss-1)->moveCount <= 2 && !pos.captured_piece())
update_continuation_histories(ss-1, pos.piece_on(prevSq), prevSq, -stat_bonus(depth + ONE_PLY));
}
// Penalty for a quiet ttMove that fails low
&& (pos.blockers_for_king(~us) & from_sq(move) || pos.see_ge(move)))
extension = ONE_PLY;
- // Shuffle extension
- else if(pos.rule50_count() > 14 && ss->ply > 14 && depth < 3 * ONE_PLY && PvNode)
- extension = ONE_PLY;
-
// Castling extension
else if (type_of(move) == CASTLING)
extension = ONE_PLY;
Thread* thisThread = pos.this_thread();
(ss+1)->ply = ss->ply + 1;
- ss->currentMove = bestMove = MOVE_NONE;
- ss->continuationHistory = &thisThread->continuationHistory[NO_PIECE][0];
+ bestMove = MOVE_NONE;
inCheck = pos.checkers();
moveCount = 0;