// colored bishop endgames, and use a lower scale for those
if ( phase < PHASE_MIDGAME
&& pos.opposite_colored_bishops()
- && ( (factor[WHITE] == SCALE_FACTOR_NORMAL && eg_value(ei.value) > Value(0))
- || (factor[BLACK] == SCALE_FACTOR_NORMAL && eg_value(ei.value) < Value(0))))
+ && ( (factor[WHITE] == SCALE_FACTOR_NORMAL && eg_value(ei.value) > VALUE_ZERO)
+ || (factor[BLACK] == SCALE_FACTOR_NORMAL && eg_value(ei.value) < VALUE_ZERO)))
{
ScaleFactor sf;
const Color Them = (Us == WHITE ? BLACK : WHITE);
Bitboard b;
- Score bonus = make_score(0, 0);
+ Score bonus = SCORE_ZERO;
// Enemy pieces not defended by a pawn and under our attack
Bitboard weakEnemies = pos.pieces_of_color(Them)
// add all X-ray attacks by the rook or queen. Otherwise consider only
// the squares in the pawn's path attacked or occupied by the enemy.
if ( (squares_behind(Us, s) & pos.pieces(ROOK, QUEEN, Them))
- && (squares_behind(Us, s) & pos.pieces(ROOK, QUEEN, Them) & pos.attacks_from<QUEEN>(s)))
+ && (squares_behind(Us, s) & pos.pieces(ROOK, QUEEN, Them) & pos.attacks_from<ROOK>(s)))
unsafeSquares = squaresToQueen;
else
unsafeSquares = squaresToQueen & (ei.attacked_by(Them) | pos.pieces_of_color(Them));
if (d < 0 || pathDefended)
{
- int mtg = RANK_8 - relative_rank(c, s);
+ int mtg = RANK_8 - relative_rank(c, s) - int(relative_rank(c, s) == RANK_2);
int blockerCount = count_1s_max_15(squares_in_front_of(c, s) & pos.occupied_squares());
mtg += blockerCount;
d += blockerCount;
assert(ph >= PHASE_ENDGAME && ph <= PHASE_MIDGAME);
Value eg = eg_value(v);
- ScaleFactor f = sf[eg > Value(0) ? WHITE : BLACK];
- Value ev = Value((eg * f) / SCALE_FACTOR_NORMAL);
+ ScaleFactor f = sf[eg > VALUE_ZERO ? WHITE : BLACK];
+ Value ev = Value((eg * int(f)) / SCALE_FACTOR_NORMAL);
- int result = (mg_value(v) * ph + ev * (128 - ph)) / 128;
+ int result = (mg_value(v) * int(ph) + ev * int(128 - ph)) / 128;
return Value(result & ~(GrainSize - 1));
}