- mlist = generate_piece_moves<QUEEN>(pos, mlist, us, target);
- mlist = generate_piece_moves<ROOK>(pos, mlist, us, target);
- mlist = generate_piece_moves<BISHOP>(pos, mlist, us, target);
- mlist = generate_piece_moves<KNIGHT>(pos, mlist, us, target);
- mlist = generate_piece_moves<PAWN, CAPTURE>(pos, mlist, us, target);
- return generate_piece_moves<KING>(pos, mlist, us, target);
-}
-
-
-/// generate_noncaptures() generates all pseudo-legal non-captures and
-/// underpromotions. Returns a pointer to the end of the move list.
-
-MoveStack* generate_noncaptures(const Position& pos, MoveStack* mlist) {
-
- assert(pos.is_ok());
- assert(!pos.is_check());
+ if (Type == MV_CAPTURE || Type == MV_NON_EVASION)
+ target = pos.pieces_of_color(opposite_color(us));
+ else if (Type == MV_NON_CAPTURE)
+ target = pos.empty_squares();
+ else
+ assert(false);