1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-05-01 01:03:09 +00:00

Fix TB after capture_stage fix

5c75c1c2fb
introduced a capture_stage() function, but TB usage needs a pure capture() function.

closes https://github.com/official-stockfish/Stockfish/pull/4428

No functional change.
This commit is contained in:
Joost VandeVondele 2023-03-05 17:26:12 +01:00
parent 70dfa141d5
commit 6ce225bb4c
2 changed files with 10 additions and 5 deletions

View file

@ -125,6 +125,7 @@ public:
// Properties of moves // Properties of moves
bool legal(Move m) const; bool legal(Move m) const;
bool pseudo_legal(const Move m) const; bool pseudo_legal(const Move m) const;
bool capture(Move m) const;
bool capture_stage(Move m) const; bool capture_stage(Move m) const;
bool gives_check(Move m) const; bool gives_check(Move m) const;
Piece moved_piece(Move m) const; Piece moved_piece(Move m) const;
@ -381,14 +382,18 @@ inline bool Position::is_chess960() const {
return chess960; return chess960;
} }
inline bool Position::capture(Move m) const {
assert(is_ok(m));
return (!empty(to_sq(m)) && type_of(m) != CASTLING)
|| type_of(m) == EN_PASSANT;
}
// returns true if a move is generated from the capture stage // returns true if a move is generated from the capture stage
// having also queen promotions covered, i.e. consistency with the capture stage move generation // having also queen promotions covered, i.e. consistency with the capture stage move generation
// is needed to avoid the generation of duplicate moves. // is needed to avoid the generation of duplicate moves.
inline bool Position::capture_stage(Move m) const { inline bool Position::capture_stage(Move m) const {
assert(is_ok(m)); assert(is_ok(m));
return (!empty(to_sq(m)) && type_of(m) != CASTLING) return capture(m) || (type_of(m) == PROMOTION && promotion_type(m) == QUEEN);
|| (type_of(m) == PROMOTION && promotion_type(m) == QUEEN)
|| type_of(m) == EN_PASSANT;
} }
inline Piece Position::captured_piece() const { inline Piece Position::captured_piece() const {

View file

@ -1203,7 +1203,7 @@ WDLScore search(Position& pos, ProbeState* result) {
for (const Move move : moveList) for (const Move move : moveList)
{ {
if ( !pos.capture_stage(move) if ( !pos.capture(move)
&& (!CheckZeroingMoves || type_of(pos.moved_piece(move)) != PAWN)) && (!CheckZeroingMoves || type_of(pos.moved_piece(move)) != PAWN))
continue; continue;
@ -1472,7 +1472,7 @@ int Tablebases::probe_dtz(Position& pos, ProbeState* result) {
for (const Move move : MoveList<LEGAL>(pos)) for (const Move move : MoveList<LEGAL>(pos))
{ {
bool zeroing = pos.capture_stage(move) || type_of(pos.moved_piece(move)) == PAWN; bool zeroing = pos.capture(move) || type_of(pos.moved_piece(move)) == PAWN;
pos.do_move(move, st); pos.do_move(move, st);