{
m = cur->move;
cur->score = PieceValueMidgame[pos.piece_on(to_sq(m))]
- - type_of(pos.piece_on(from_sq(m)));
+ - type_of(pos.piece_moved(m));
if (is_promotion(m))
cur->score += PieceValueMidgame[Piece(promotion_piece_type(m))];
cur->score = seeScore - History::MaxValue; // Be sure we are at the bottom
else if (pos.is_capture(m))
cur->score = PieceValueMidgame[pos.piece_on(to_sq(m))]
- - type_of(pos.piece_on(from_sq(m))) + History::MaxValue;
+ - type_of(pos.piece_moved(m)) + History::MaxValue;
else
- cur->score = H.value(pos.piece_on(from_sq(m)), to_sq(m));
+ cur->score = H.value(pos.piece_moved(m), to_sq(m));
}
}
// The piece on a given square
Piece piece_on(Square s) const;
+ Piece piece_moved(Move m) const;
bool square_is_empty(Square s) const;
// Side to move
return board[s];
}
+inline Piece Position::piece_moved(Move m) const {
+ return board[from_sq(m)];
+}
+
inline bool Position::square_is_empty(Square s) const {
return board[s] == NO_PIECE;
}
FORCE_INLINE bool is_dangerous(const Position& pos, Move m, bool captureOrPromotion) {
// Test for a pawn pushed to 7th or a passed pawn move
- if (type_of(pos.piece_on(from_sq(m))) == PAWN)
+ if (type_of(pos.piece_moved(m)) == PAWN)
{
Color c = pos.side_to_move();
if ( relative_rank(c, to_sq(m)) == RANK_7
// but fixing this made program slightly weaker.
Depth predictedDepth = newDepth - reduction<PvNode>(depth, moveCount);
futilityValue = futilityBase + futility_margin(predictedDepth, moveCount)
- + H.gain(pos.piece_on(from_sq(move)), to_sq(move));
+ + H.gain(pos.piece_moved(move), to_sq(move));
if (futilityValue < beta)
{
// Increase history value of the cut-off move
Value bonus = Value(int(depth) * int(depth));
- H.add(pos.piece_on(from_sq(move)), to_sq(move), bonus);
+ H.add(pos.piece_moved(move), to_sq(move), bonus);
// Decrease history of all the other played non-capture moves
for (int i = 0; i < playedMoveCount - 1; i++)
{
Move m = movesSearched[i];
- H.add(pos.piece_on(from_sq(m)), to_sq(m), -bonus);
+ H.add(pos.piece_moved(m), to_sq(m), -bonus);
}
}
}