mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33:09 +00:00
Change hidden checkers API
After previous patch is no more needed to pass the color, becuase it is always the side to move. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
4894231ff7
commit
69f4954df1
4 changed files with 22 additions and 25 deletions
|
@ -213,7 +213,7 @@ MoveStack* generate<MV_NON_CAPTURE_CHECK>(const Position& pos, MoveStack* mlist)
|
|||
assert(pos.piece_on(ksq) == make_piece(opposite_color(us), KING));
|
||||
|
||||
// Discovered non-capture checks
|
||||
b = dc = pos.discovered_check_candidates(us);
|
||||
b = dc = pos.discovered_check_candidates();
|
||||
|
||||
while (b)
|
||||
{
|
||||
|
@ -318,7 +318,7 @@ MoveStack* generate<MV_LEGAL>(const Position& pos, MoveStack* mlist) {
|
|||
assert(pos.is_ok());
|
||||
|
||||
MoveStack *last, *cur = mlist;
|
||||
Bitboard pinned = pos.pinned_pieces(pos.side_to_move());
|
||||
Bitboard pinned = pos.pinned_pieces();
|
||||
|
||||
last = pos.in_check() ? generate<MV_EVASION>(pos, mlist)
|
||||
: generate<MV_NON_EVASION>(pos, mlist);
|
||||
|
|
|
@ -78,12 +78,11 @@ namespace {
|
|||
|
||||
CheckInfo::CheckInfo(const Position& pos) {
|
||||
|
||||
Color us = pos.side_to_move();
|
||||
Color them = opposite_color(us);
|
||||
Color them = opposite_color(pos.side_to_move());
|
||||
Square ksq = pos.king_square(them);
|
||||
|
||||
dcCandidates = pos.discovered_check_candidates(us);
|
||||
pinned = pos.pinned_pieces(us);
|
||||
pinned = pos.pinned_pieces();
|
||||
dcCandidates = pos.discovered_check_candidates();
|
||||
|
||||
checkSq[PAWN] = pos.attacks_from<PAWN>(ksq, them);
|
||||
checkSq[KNIGHT] = pos.attacks_from<KNIGHT>(ksq);
|
||||
|
@ -366,12 +365,12 @@ void Position::print(Move move) const {
|
|||
/// discovery check against the enemy king.
|
||||
|
||||
template<bool FindPinned>
|
||||
Bitboard Position::hidden_checkers(Color c) const {
|
||||
Bitboard Position::hidden_checkers() const {
|
||||
|
||||
// Pinned pieces protect our king, dicovery checks attack the enemy king
|
||||
Bitboard b, result = EmptyBoardBB;
|
||||
Bitboard pinners = pieces(FindPinned ? opposite_color(c) : c);
|
||||
Square ksq = king_square(FindPinned ? c : opposite_color(c));
|
||||
Bitboard pinners = pieces(FindPinned ? opposite_color(sideToMove) : sideToMove);
|
||||
Square ksq = king_square(FindPinned ? sideToMove : opposite_color(sideToMove));
|
||||
|
||||
// Pinners are sliders, that give check when candidate pinned is removed
|
||||
pinners &= (pieces(ROOK, QUEEN) & RookPseudoAttacks[ksq])
|
||||
|
@ -382,7 +381,7 @@ Bitboard Position::hidden_checkers(Color c) const {
|
|||
b = squares_between(ksq, pop_1st_bit(&pinners)) & occupied_squares();
|
||||
|
||||
// Only one bit set and is an our piece?
|
||||
if (b && !(b & (b - 1)) && (b & pieces(c)))
|
||||
if (b && !(b & (b - 1)) && (b & pieces(sideToMove)))
|
||||
result |= b;
|
||||
}
|
||||
return result;
|
||||
|
@ -390,23 +389,21 @@ Bitboard Position::hidden_checkers(Color c) const {
|
|||
|
||||
|
||||
/// Position:pinned_pieces() returns a bitboard of all pinned (against the
|
||||
/// king) pieces for the given color. Note that checkersBB bitboard must
|
||||
/// be already updated.
|
||||
/// king) pieces for the side to move.
|
||||
|
||||
Bitboard Position::pinned_pieces(Color c) const {
|
||||
Bitboard Position::pinned_pieces() const {
|
||||
|
||||
return hidden_checkers<true>(c);
|
||||
return hidden_checkers<true>();
|
||||
}
|
||||
|
||||
|
||||
/// Position:discovered_check_candidates() returns a bitboard containing all
|
||||
/// pieces for the given side which are candidates for giving a discovered
|
||||
/// check. Contrary to pinned_pieces() here there is no need of checkersBB
|
||||
/// to be already updated.
|
||||
/// pieces for the side to move which are candidates for giving a discovered
|
||||
/// check.
|
||||
|
||||
Bitboard Position::discovered_check_candidates(Color c) const {
|
||||
Bitboard Position::discovered_check_candidates() const {
|
||||
|
||||
return hidden_checkers<false>(c);
|
||||
return hidden_checkers<false>();
|
||||
}
|
||||
|
||||
/// Position::attackers_to() computes a bitboard containing all pieces which
|
||||
|
@ -497,7 +494,7 @@ bool Position::pl_move_is_legal(Move m, Bitboard pinned) const {
|
|||
|
||||
assert(is_ok());
|
||||
assert(move_is_ok(m));
|
||||
assert(pinned == pinned_pieces(side_to_move()));
|
||||
assert(pinned == pinned_pieces());
|
||||
|
||||
Color us = side_to_move();
|
||||
Square from = move_from(m);
|
||||
|
@ -688,7 +685,7 @@ bool Position::move_gives_check(Move m, const CheckInfo& ci) const {
|
|||
|
||||
assert(is_ok());
|
||||
assert(move_is_ok(m));
|
||||
assert(ci.dcCandidates == discovered_check_candidates(side_to_move()));
|
||||
assert(ci.dcCandidates == discovered_check_candidates());
|
||||
assert(piece_color(piece_on(move_from(m))) == side_to_move());
|
||||
|
||||
Square from = move_from(m);
|
||||
|
|
|
@ -133,8 +133,8 @@ public:
|
|||
Square castle_rook_square(CastleRight f) const;
|
||||
|
||||
// Bitboards for pinned pieces and discovered check candidates
|
||||
Bitboard discovered_check_candidates(Color c) const;
|
||||
Bitboard pinned_pieces(Color c) const;
|
||||
Bitboard discovered_check_candidates() const;
|
||||
Bitboard pinned_pieces() const;
|
||||
|
||||
// Checking pieces and under check information
|
||||
Bitboard checkers() const;
|
||||
|
@ -230,7 +230,7 @@ private:
|
|||
void undo_castle_move(Move m);
|
||||
|
||||
template<bool FindPinned>
|
||||
Bitboard hidden_checkers(Color c) const;
|
||||
Bitboard hidden_checkers() const;
|
||||
|
||||
// Computing hash keys from scratch (for initialization and debugging)
|
||||
Key compute_key() const;
|
||||
|
|
|
@ -2023,7 +2023,7 @@ split_point_start: // At split points actual search starts from here
|
|||
while ( (tte = TT.probe(pos.get_key())) != NULL
|
||||
&& tte->move() != MOVE_NONE
|
||||
&& pos.move_is_pl(tte->move())
|
||||
&& pos.pl_move_is_legal(tte->move(), pos.pinned_pieces(pos.side_to_move()))
|
||||
&& pos.pl_move_is_legal(tte->move(), pos.pinned_pieces())
|
||||
&& ply < PLY_MAX
|
||||
&& (!pos.is_draw<false>() || ply < 2))
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue