1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 16:53: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
bool legal(Move m) const;
bool pseudo_legal(const Move m) const;
bool capture(Move m) const;
bool capture_stage(Move m) const;
bool gives_check(Move m) const;
Piece moved_piece(Move m) const;
@ -381,14 +382,18 @@ inline bool Position::is_chess960() const {
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
// having also queen promotions covered, i.e. consistency with the capture stage move generation
// is needed to avoid the generation of duplicate moves.
inline bool Position::capture_stage(Move m) const {
assert(is_ok(m));
return (!empty(to_sq(m)) && type_of(m) != CASTLING)
|| (type_of(m) == PROMOTION && promotion_type(m) == QUEEN)
|| type_of(m) == EN_PASSANT;
return capture(m) || (type_of(m) == PROMOTION && promotion_type(m) == QUEEN);
}
inline Piece Position::captured_piece() const {

View file

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