X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovegen.cpp;h=3d736b255952537f26515f97b5118116b9b1fce9;hp=d821f0fad2e0ce56ccf6e03e6d22850b02ddb0b5;hb=c2a4856f9e9aad8122f2386acdacf7aa385cfc1b;hpb=c9b24c3358a26afdec5e33e369b6192039562971 diff --git a/src/movegen.cpp b/src/movegen.cpp index d821f0fa..3d736b25 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -178,12 +178,12 @@ MoveStack* generate(const Position& pos, MoveStack* mlist) { mlist = generate_piece_moves(pos, mlist, us, target); mlist = generate_piece_moves(pos, mlist, us, target); - if (Type != MV_CAPTURE) + if (Type != MV_CAPTURE && pos.can_castle(us)) { - if (pos.can_castle_kingside(us)) + if (pos.can_castle(us == WHITE ? WHITE_OO : BLACK_OO)) mlist = generate_castle_moves(pos, mlist, us); - if (pos.can_castle_queenside(us)) + if (pos.can_castle(us == WHITE ? WHITE_OOO : BLACK_OOO)) mlist = generate_castle_moves(pos, mlist, us); } @@ -503,10 +503,11 @@ namespace { Color them = opposite_color(us); Square ksq = pos.king_square(us); + CastleRight f = CastleRight((Side == KING_SIDE ? WHITE_OO : WHITE_OOO) << us); assert(pos.piece_on(ksq) == make_piece(us, KING)); - Square rsq = (Side == KING_SIDE ? pos.initial_kr_square(us) : pos.initial_qr_square(us)); + Square rsq = pos.castle_rook_square(f); Square s1 = relative_square(us, Side == KING_SIDE ? SQ_G1 : SQ_C1); Square s2 = relative_square(us, Side == KING_SIDE ? SQ_F1 : SQ_D1); Square s;