e->kingSquares[WHITE] = e->kingSquares[BLACK] = SQ_NONE;
e->halfOpenFiles[WHITE] = e->halfOpenFiles[BLACK] = 0xFF;
- Bitboard wPawns = pos.pieces(PAWN, WHITE);
- Bitboard bPawns = pos.pieces(PAWN, BLACK);
+ Bitboard wPawns = pos.pieces(WHITE, PAWN);
+ Bitboard bPawns = pos.pieces(BLACK, PAWN);
e->pawnAttacks[WHITE] = ((wPawns & ~FileHBB) << 9) | ((wPawns & ~FileABB) << 7);
e->pawnAttacks[BLACK] = ((bPawns & ~FileHBB) >> 7) | ((bPawns & ~FileABB) >> 9);
// chain (but not the backward one).
chain = ourPawns & adjacent_files_bb(f) & b;
isolated = !(ourPawns & adjacent_files_bb(f));
- doubled = ourPawns & squares_in_front_of(Us, s);
- opposed = theirPawns & squares_in_front_of(Us, s);
+ doubled = ourPawns & forward_bb(Us, s);
+ opposed = theirPawns & forward_bb(Us, s);
passed = !(theirPawns & passed_pawn_mask(Us, s));
// Test for backward pawn
Score PawnEntry::update_safety(const Position& pos, Square ksq) {
kingSquares[Us] = ksq;
+ castleRights[Us] = pos.can_castle(Us);
if (relative_rank(Us, ksq) > RANK_4)
return kingSafety[Us] = SCORE_ZERO;