/// move ordering is at the current node.
MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const History& h,
- SearchStack* ss, Value beta) : pos(p), H(h) {
+ SearchStack* ss, Value beta) : pos(p), H(h), depth(d) {
captureThreshold = 0;
badCaptures = moves + MAX_MOVES;
case PH_NONCAPTURES_2:
curMove = lastMove;
lastMove = lastNonCapture;
- insertion_sort<MoveStack>(curMove, lastMove);
+ if (depth >= 3 * ONE_PLY)
+ insertion_sort<MoveStack>(curMove, lastMove);
return;
case PH_BAD_CAPTURES:
for (MoveStack* cur = moves; cur != lastMove; cur++)
{
m = cur->move;
+ cur->score = pos.midgame_value_of_piece_on(move_to(m))
+ - pos.type_of_piece_on(move_from(m));
+
if (move_is_promotion(m))
- cur->score = QueenValueMidgame;
- else
- cur->score = pos.midgame_value_of_piece_on(move_to(m))
- - pos.type_of_piece_on(move_from(m));
+ cur->score += QueenValueMidgame;
}
}