// Only move extension
if ( moveCount == 1
&& ext < OnePly
- && depth >= 8 * OnePly
+ && depth >= 4 * OnePly
&& tte
&& (tte->type() & VALUE_TYPE_LOWER)
&& tte->move() != MOVE_NONE
Value ttValue = value_from_tt(tte->value(), ply);
if (abs(ttValue) < VALUE_KNOWN_WIN)
{
- Value excValue = search(pos, ss, ttValue - OnlyMoveMargin, depth / 2, ply, false, threadID, tte->move());
+ Value excValue = search(pos, ss, ttValue - OnlyMoveMargin, Max(Min(depth / 2, depth - 4 * OnePly), OnePly), ply, false, threadID, tte->move());
if (excValue < ttValue - OnlyMoveMargin)
- ext = OnePly;
+ ext = (depth >= 8 * OnePly)? OnePly : ext + OnePly / 2;
}
}
if ( forbiddenMove == MOVE_NONE
&& moveCount == 1
&& ext < OnePly
- && depth >= 8 * OnePly
+ && depth >= 4 * OnePly
&& tte
&& (tte->type() & VALUE_TYPE_LOWER)
&& tte->move() != MOVE_NONE
Value ttValue = value_from_tt(tte->value(), ply);
if (abs(ttValue) < VALUE_KNOWN_WIN)
{
- Value excValue = search(pos, ss, ttValue - OnlyMoveMargin, depth / 2, ply, false, threadID, tte->move());
+ Value excValue = search(pos, ss, ttValue - OnlyMoveMargin, Max(Min(depth / 2, depth - 4 * OnePly), OnePly), ply, false, threadID, tte->move());
if (excValue < ttValue - OnlyMoveMargin)
- ext = OnePly;
+ ext = (depth >= 8 * OnePly)? OnePly : ext + OnePly / 2;
}
}