/// Version used for pawns, where the 'from' square is given as a delta from the 'to' square
#define SERIALIZE_PAWNS(b, d) while (b) { Square to = pop_1st_bit(&b); \
- (*mlist++).move = make_move(to + (d), to); }
+ (*mlist++).move = make_move(to - (d), to); }
namespace {
enum CastlingSide { KING_SIDE, QUEEN_SIDE };
}
}
- SERIALIZE_PAWNS(b1, -UP);
- SERIALIZE_PAWNS(b2, -UP -UP);
+ SERIALIZE_PAWNS(b1, UP);
+ SERIALIZE_PAWNS(b2, UP + UP);
}
// Promotions and underpromotions
b1 = move_pawns<RIGHT>(pawnsNotOn7) & enemies;
b2 = move_pawns<LEFT >(pawnsNotOn7) & enemies;
- SERIALIZE_PAWNS(b1, -RIGHT);
- SERIALIZE_PAWNS(b2, -LEFT);
+ SERIALIZE_PAWNS(b1, RIGHT);
+ SERIALIZE_PAWNS(b2, LEFT);
if (pos.ep_square() != SQ_NONE)
{