X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovegen.cpp;h=7273ca9ad6ebbf50a1aca42734381446a8e948e5;hp=7c59f5e3084f841572b580eaa22d49a486b9f598;hb=c97104e8540b72ee2c6c9c13d3773d2c0f9ec32f;hpb=4397e6c03e72881a0a477c61c7d17c040c6fdb92 diff --git a/src/movegen.cpp b/src/movegen.cpp index 7c59f5e3..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 @@ -616,7 +617,7 @@ namespace { template - MoveStack* do_generate_pawn_captures(const Position& pos, MoveStack* mlist) { + MoveStack* do_generate_pawn_captures(const Position& pos, MoveStack* mlist) { Square to; Bitboard pawns = pos.pawns(Us); @@ -689,7 +690,7 @@ namespace { template - MoveStack* do_generate_pawn_noncaptures(const Position& pos, MoveStack* mlist) { + MoveStack* do_generate_pawn_noncaptures(const Position& pos, MoveStack* mlist) { Bitboard pawns = pos.pawns(Us); Bitboard enemyPieces = pos.pieces_of_color(Them);