X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.cpp;h=9fa7c7294fdb3425da5cdfffd9be792850fd94f8;hp=5ee0107f4252ec59f7dedbbea6ab85aa60e07292;hb=7b4b65d7a95b3c8b40a11fe5b3efe959d5129008;hpb=a492a9dd079d95faf136a744ff6d47a3d109ad68 diff --git a/src/position.cpp b/src/position.cpp index 5ee0107f..9fa7c729 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -386,8 +386,8 @@ Bitboard Position::attackers_to(Square s, Bitboard occ) const { return (attacks_from(s, BLACK) & pieces(PAWN, WHITE)) | (attacks_from(s, WHITE) & pieces(PAWN, BLACK)) | (attacks_from(s) & pieces(KNIGHT)) - | (rook_attacks_bb(s, occ) & pieces(ROOK, QUEEN)) - | (bishop_attacks_bb(s, occ) & pieces(BISHOP, QUEEN)) + | (attacks_bb(s, occ) & pieces(ROOK, QUEEN)) + | (attacks_bb(s, occ) & pieces(BISHOP, QUEEN)) | (attacks_from(s) & pieces(KING)); } @@ -401,9 +401,9 @@ Bitboard Position::attacks_from(Piece p, Square s, Bitboard occ) { switch (type_of(p)) { - case BISHOP: return bishop_attacks_bb(s, occ); - case ROOK : return rook_attacks_bb(s, occ); - case QUEEN : return bishop_attacks_bb(s, occ) | rook_attacks_bb(s, occ); + case BISHOP: return attacks_bb(s, occ); + case ROOK : return attacks_bb(s, occ); + case QUEEN : return attacks_bb(s, occ) | attacks_bb(s, occ); default : return StepAttacksBB[p][s]; } } @@ -434,8 +434,8 @@ bool Position::move_attacks_square(Move m, Square s) const { return true; // Scan for possible X-ray attackers behind the moved piece - xray = (rook_attacks_bb(s, occ) & pieces(ROOK, QUEEN, color_of(piece))) - |(bishop_attacks_bb(s, occ) & pieces(BISHOP, QUEEN, color_of(piece))); + xray = (attacks_bb(s, occ) & pieces(ROOK, QUEEN, color_of(piece))) + |(attacks_bb(s, occ) & pieces(BISHOP, QUEEN, color_of(piece))); // Verify attackers are triggered by our move and not already existing return xray && (xray ^ (xray & attacks_from(s))); @@ -475,8 +475,8 @@ bool Position::pl_move_is_legal(Move m, Bitboard pinned) const { b ^= capsq; b |= to; - return !(rook_attacks_bb(ksq, b) & pieces(ROOK, QUEEN, them)) - && !(bishop_attacks_bb(ksq, b) & pieces(BISHOP, QUEEN, them)); + return !(attacks_bb(ksq, b) & pieces(ROOK, QUEEN, them)) + && !(attacks_bb(ksq, b) & pieces(BISHOP, QUEEN, them)); } // If the moving piece is a king, check whether the destination @@ -684,8 +684,8 @@ bool Position::move_gives_check(Move m, const CheckInfo& ci) const { b ^= from; b ^= capsq; b |= to; - return (rook_attacks_bb(ksq, b) & pieces(ROOK, QUEEN, us)) - ||(bishop_attacks_bb(ksq, b) & pieces(BISHOP, QUEEN, us)); + return (attacks_bb(ksq, b) & pieces(ROOK, QUEEN, us)) + ||(attacks_bb(ksq, b) & pieces(BISHOP, QUEEN, us)); } // Castling with check ? @@ -707,7 +707,7 @@ bool Position::move_gives_check(Move m, const CheckInfo& ci) const { b ^= rfrom; b |= rto; b |= kto; - return rook_attacks_bb(rto, b) & ksq; + return attacks_bb(rto, b) & ksq; } return false; @@ -752,7 +752,7 @@ void Position::do_move(Move m, StateInfo& newSt, const CheckInfo& ci, bool moveI k ^= zobSideToMove; // Increment the 50 moves rule draw counter. Resetting it to zero in the - // case of non-reversible moves is taken care of later. + // case of a capture or a pawn move is taken care of later. st->rule50++; st->pliesFromNull++; @@ -1155,9 +1155,6 @@ void Position::do_castle_move(Move m) { st->castleRights &= castleRightsMask[kfrom]; st->key ^= zobCastle[st->castleRights]; - // Reset rule 50 counter - st->rule50 = 0; - // Update checkers BB st->checkersBB = attackers_to(king_square(~us)) & pieces(us); @@ -1304,8 +1301,8 @@ int Position::see(Move m) const { // and scan for new X-ray attacks behind the attacker. b = stmAttackers & pieces(pt); occ ^= (b & (~b + 1)); - attackers |= (rook_attacks_bb(to, occ) & pieces(ROOK, QUEEN)) - | (bishop_attacks_bb(to, occ) & pieces(BISHOP, QUEEN)); + attackers |= (attacks_bb(to, occ) & pieces(ROOK, QUEEN)) + | (attacks_bb(to, occ) & pieces(BISHOP, QUEEN)); attackers &= occ; // Cut out pieces we've already done