From 05d1624cd740796c91ca4fb7822c8efd0c04113a Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Tue, 20 Aug 2019 23:25:59 +0200 Subject: [PATCH] Fix pawn double-step move validation --- src/movegen.cpp | 2 +- src/position.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/movegen.cpp b/src/movegen.cpp index 7542044..17ec978 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -134,7 +134,7 @@ namespace { if (dcCandidateQuiets) { Bitboard dc1 = shift(dcCandidateQuiets) & emptySquares & ~file_bb(ksq); - Bitboard dc2 = shift(dc1 & TRank3BB) & emptySquares; + Bitboard dc2 = pos.double_step_enabled() ? shift(dc1 & TRank3BB) & emptySquares : Bitboard(0); b1 |= dc1; b2 |= dc2; diff --git a/src/position.cpp b/src/position.cpp index 5a3e197..b2aee5a 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -920,8 +920,8 @@ bool Position::pseudo_legal(const Move m) const { if ( !(attacks_from(us, from) & pieces(~us) & to) // Not a capture && !((from + pawn_push(us) == to) && empty(to)) // Not a single push && !( (from + 2 * pawn_push(us) == to) // Not a double push - && (rank_of(from) == relative_rank(us, double_step_rank()) - || (first_rank_double_steps() && rank_of(from) == relative_rank(us, RANK_1))) + && (rank_of(from) == relative_rank(us, double_step_rank(), max_rank()) + || (first_rank_double_steps() && rank_of(from) == relative_rank(us, RANK_1, max_rank()))) && empty(to) && empty(to - pawn_push(us)) && double_step_enabled())) -- 1.7.0.4