- template<Color Us, Color Them, Bitboard TRank8BB, Bitboard TRank3BB,
- SquareDelta TDELTA_NE, SquareDelta TDELTA_NW, SquareDelta TDELTA_N
- >
- MoveStack* generate_pawn_noncaptures(const Position& pos, MoveStack* mlist) {
-
- Bitboard pawns = pos.pawns(Us);
- Bitboard enemyPieces = pos.pieces_of_color(Them);
- Bitboard emptySquares = pos.empty_squares();
- Bitboard b1, b2;
- Square to;
-
- // Underpromotion captures in the a1-h8 (a8-h1 for black) direction
- b1 = move_pawns<Us, DELTA_NE>(pawns) & ~FileABB & enemyPieces & TRank8BB;
- while (b1)
- {
- to = pop_1st_bit(&b1);
- (*mlist++).move = make_promotion_move(to - TDELTA_NE, to, ROOK);
- (*mlist++).move = make_promotion_move(to - TDELTA_NE, to, BISHOP);
- (*mlist++).move = make_promotion_move(to - TDELTA_NE, to, KNIGHT);
- }
+ template<Color Us, bool GenerateChecks>
+ MoveStack* generate_pawn_noncaptures(const Position& pos, MoveStack* mlist, Bitboard dc, Square ksq) {