Fix piece drops for NNUE
authorFabian Fichter <ianfab@users.noreply.github.com>
Fri, 27 Nov 2020 18:46:52 +0000 (19:46 +0100)
committerFabian Fichter <ianfab@users.noreply.github.com>
Fri, 27 Nov 2020 18:46:52 +0000 (19:46 +0100)
src/position.cpp

index 815ed83..3cebafe 100644 (file)
@@ -1388,10 +1388,9 @@ void Position::do_move(Move m, StateInfo& newSt, bool givesCheck) {
       if (Eval::useNNUE)
       {
           // Add drop piece
-          dp.piece[dp.dirty_num] = pc;
-          dp.from[dp.dirty_num] = SQ_NONE;
-          dp.to[dp.dirty_num] = to;
-          dp.dirty_num++;
+          dp.piece[0] = pc;
+          dp.from[0] = SQ_NONE;
+          dp.to[0] = to;
       }
 
       drop_piece(make_piece(us, in_hand_piece_type(m)), pc, to);
@@ -1433,7 +1432,8 @@ void Position::do_move(Move m, StateInfo& newSt, bool givesCheck) {
   if (type_of(pc) == PAWN)
   {
       // Set en-passant square if the moved pawn can be captured
-      if (   std::abs(int(to) - int(from)) == 2 * NORTH
+      if (   type_of(m) != DROP
+          && std::abs(int(to) - int(from)) == 2 * NORTH
           && (var->enPassantRegion & (to - pawn_push(us)))
           && (pawn_attacks_bb(us, to - pawn_push(us)) & pieces(them, PAWN)))
       {