From: Marco Costalba Date: Sun, 25 Jul 2010 20:47:54 +0000 (+0100) Subject: Fix KBNK endgame X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=5ee7dfebf7a8c969e45cba632d21e2fd5727ba60 Fix KBNK endgame Broken by recent patch. Also better document what's happening there. Verified to restore original behaviour. Signed-off-by: Marco Costalba --- diff --git a/src/endgame.cpp b/src/endgame.cpp index 1be38441..24c8c5d4 100644 --- a/src/endgame.cpp +++ b/src/endgame.cpp @@ -152,7 +152,10 @@ Value EvaluationFunction::apply(const Position& pos) const { Square loserKSq = pos.king_square(weakerSide); Square bishopSquare = pos.piece_list(strongerSide, BISHOP, 0); - if (same_color_squares(bishopSquare, SQ_A1)) + // kbnk_mate_table() tries to drive toward corners A1 or H8, + // if we have a bishop that cannot reach the above squares we + // mirror the kings so to drive enemy toward corners A8 or H1. + if (!same_color_squares(bishopSquare, SQ_A1)) { winnerKSq = flop_square(winnerKSq); loserKSq = flop_square(loserKSq); diff --git a/src/position.cpp b/src/position.cpp index 879e9690..183530fc 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -400,7 +400,7 @@ void Position::print(Move move) const { char c = (color_of_piece_on(sq) == BLACK ? '=' : ' '); Piece piece = piece_on(sq); - if (piece == NO_PIECE && same_color_squares(sq, SQ_A1)) + if (piece == NO_PIECE && square_color(sq) == DARK) piece = NO_PIECE_DARK_SQ; cout << c << pieceLetters.from_piece(piece) << c << '|';