X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovegen.cpp;h=7273ca9ad6ebbf50a1aca42734381446a8e948e5;hp=397732b522b8ed96e5bce3a1eb1d578acfb2bc49;hb=c97104e8540b72ee2c6c9c13d3773d2c0f9ec32f;hpb=74f1efee263aadcceb1df716ebd87776b932238a diff --git a/src/movegen.cpp b/src/movegen.cpp index 397732b5..7273ca9a 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -122,15 +122,16 @@ int generate_captures(const Position& pos, MoveStack* mlist) { Bitboard target = pos.pieces_of_color(opposite_color(us)); MoveStack* mlist_start = mlist; + mlist = generate_piece_moves(pos, mlist, us, target); + mlist = generate_piece_moves(pos, mlist, us, target); + mlist = generate_piece_moves(pos, mlist, us, target); + mlist = generate_piece_moves(pos, mlist, us, target); + if (us == WHITE) mlist = generate_pawn_captures(pos, mlist); else mlist = generate_pawn_captures(pos, mlist); - mlist = generate_piece_moves(pos, mlist, us, target); - mlist = generate_piece_moves(pos, mlist, us, target); - mlist = generate_piece_moves(pos, mlist, us, target); - mlist = generate_piece_moves(pos, mlist, us, target); mlist = generate_piece_moves(pos, mlist, us, target); return int(mlist - mlist_start); } @@ -306,26 +307,26 @@ int generate_evasions(const Position& pos, MoveStack* mlist) { // Pawn moves. Because a blocking evasion can never be a capture, we // only generate pawn pushes. if (us == WHITE) - generate_pawn_blocking_evasions(pos, not_pinned, blockSquares, mlist); + mlist = generate_pawn_blocking_evasions(pos, not_pinned, blockSquares, mlist); else - generate_pawn_blocking_evasions(pos, not_pinned, blockSquares, mlist); + mlist = generate_pawn_blocking_evasions(pos, not_pinned, blockSquares, mlist); // Pieces moves b1 = pos.knights(us) & not_pinned; if (b1) - generate_piece_blocking_evasions(pos, b1, blockSquares, mlist); + mlist = generate_piece_blocking_evasions(pos, b1, blockSquares, mlist); b1 = pos.bishops(us) & not_pinned; if (b1) - generate_piece_blocking_evasions(pos, b1, blockSquares, mlist); + mlist = generate_piece_blocking_evasions(pos, b1, blockSquares, mlist); b1 = pos.rooks(us) & not_pinned; if (b1) - generate_piece_blocking_evasions(pos, b1, blockSquares, mlist); + mlist = generate_piece_blocking_evasions(pos, b1, blockSquares, mlist); b1 = pos.queens(us) & not_pinned; if (b1) - generate_piece_blocking_evasions(pos, b1, blockSquares, mlist); + mlist = generate_piece_blocking_evasions(pos, b1, blockSquares, mlist); } // Finally, the ugly special case of en passant captures. An en passant