enum { Unopposed, BlockedByPawn, Unblocked };
constexpr Color Them = (Us == WHITE ? BLACK : WHITE);
- constexpr Direction Up = (Us == WHITE ? NORTH : SOUTH);
- constexpr Bitboard BlockRanks = (Us == WHITE ? Rank2BB | Rank3BB : Rank7BB | Rank6BB);
+ constexpr Direction Down = (Us == WHITE ? SOUTH : NORTH);
+ constexpr Bitboard BlockRanks = (Us == WHITE ? Rank1BB | Rank2BB : Rank8BB | Rank7BB);
Bitboard b = pos.pieces(PAWN) & (forward_ranks_bb(Us, ksq) | rank_bb(ksq));
Bitboard ourPawns = b & pos.pieces(Us);
Value safety = (ourPawns & file_bb(ksq)) ? Value(5) : Value(-5);
- if ((theirPawns & (FileABB | FileHBB) & BlockRanks) & (ksq + Up))
+ if ((shift<Down>(theirPawns) & (FileABB | FileHBB) & BlockRanks) & ksq)
safety += 374;
File center = std::max(FILE_B, std::min(FILE_G, file_of(ksq)));