- // Pieces moves
- mlist = generate_piece_checks<PAWN>(pos, mlist, us, dc, ksq);
- mlist = generate_piece_checks<KNIGHT>(pos, mlist, us, dc, ksq);
- mlist = generate_piece_checks<BISHOP>(pos, mlist, us, dc, ksq);
- mlist = generate_piece_checks<ROOK>(pos, mlist, us, dc, ksq);
- mlist = generate_piece_checks<QUEEN>(pos, mlist, us, dc, ksq);
- mlist = generate_piece_checks<KING>(pos, mlist, us, dc, ksq);
-
- // Castling moves that give check. Very rare but nice to have!
- if ( pos.can_castle_queenside(us)
- && (square_rank(ksq) == square_rank(pos.king_square(us)) || square_file(ksq) == FILE_D)
- && castling_is_check(pos, QUEEN_SIDE))
- mlist = generate_castle_moves<QUEEN_SIDE>(pos, mlist);
-
- if ( pos.can_castle_kingside(us)
- && (square_rank(ksq) == square_rank(pos.king_square(us)) || square_file(ksq) == FILE_F)
- && castling_is_check(pos, KING_SIDE))
- mlist = generate_castle_moves<KING_SIDE>(pos, mlist);
-
- return mlist;
+ mlist = generate_piece_moves<KNIGHT>(pos, mlist, us, target);
+ mlist = generate_piece_moves<BISHOP>(pos, mlist, us, target);
+ mlist = generate_piece_moves<ROOK>(pos, mlist, us, target);
+ mlist = generate_piece_moves<QUEEN>(pos, mlist, us, target);
+ mlist = generate_piece_moves<KING>(pos, mlist, us, target);
+ mlist = generate_castle_moves<KING_SIDE>(pos, mlist);
+ return generate_castle_moves<QUEEN_SIDE>(pos, mlist);