// Step 1. Initialize node
Thread* thisThread = pos.this_thread();
inCheck = pos.checkers();
- excludedMove = ss->excludedMove;
if (SpNode)
{
threatMove = splitPoint->threatMove;
bestValue = splitPoint->bestValue;
tte = NULL;
- ttMove = MOVE_NONE;
+ ttMove = excludedMove = MOVE_NONE;
ttValue = VALUE_NONE;
assert(splitPoint->bestValue > -VALUE_INFINITE && splitPoint->moveCount > 0);
// Step 4. Transposition table lookup
// We don't want the score of a partial search to overwrite a previous full search
// TT value, so we use a different position key in case of an excluded move.
+ excludedMove = ss->excludedMove;
posKey = excludedMove ? pos.exclusion_key() : pos.key();
tte = TT.probe(posKey);
ttMove = RootNode ? RootMoves[PVIdx].pv[0] : tte ? tte->move() : MOVE_NONE;
givesCheck = pos.gives_check(move, ci);
dangerous = givesCheck
|| pos.passed_pawn_push(move)
- || type_of(move) == CASTLE;
+ || type_of(move) == CASTLING;
// Step 12. Extend checks
if (givesCheck && pos.see_sign(move) >= 0)
assert(is_ok(first));
assert(is_ok(second));
assert(color_of(pos.piece_on(from_sq(second))) == ~pos.side_to_move());
- assert(type_of(first) == CASTLE || color_of(pos.piece_on(to_sq(first))) == ~pos.side_to_move());
+ assert(type_of(first) == CASTLING || color_of(pos.piece_on(to_sq(first))) == ~pos.side_to_move());
Square m1from = from_sq(first);
Square m2from = from_sq(second);
return true;
// Second's destination is defended by the first move's piece
- Bitboard m1att = pos.attacks_from(pos.piece_on(m1to), m1to, pos.pieces() ^ m2from);
+ Bitboard m1att = attacks_bb(pos.piece_on(m1to), m1to, pos.pieces() ^ m2from);
if (m1att & m2to)
return true;
Piece pc = pos.piece_on(m1from);
// The moved piece attacks the square 'tto' ?
- if (pos.attacks_from(pc, m1to, occ) & m2to)
+ if (attacks_bb(pc, m1to, occ) & m2to)
return true;
// Scan for possible X-ray attackers behind the moved piece