X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.cpp;h=537e574f51e4bc723cd85a3a50545de216f88b22;hp=3cf0016b783c57e1070e8b8b4ad08ce9d2a067ad;hb=d3260ce70f6a17f9d43d199f0e07488888188f8b;hpb=a8b9c11f5666a6298d684e21156f4ac9d89c8d8c diff --git a/src/position.cpp b/src/position.cpp index 3cf0016b..537e574f 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -641,10 +641,10 @@ bool Position::move_is_check(Move m, const CheckInfo& ci) const { } } - // En passant capture with check? We have already handled the case + // En passant capture with check ? We have already handled the case // of direct checks and ordinary discovered check, the only case we - // need to handle is the unusual case of a discovered check through the - // captured pawn. + // need to handle is the unusual case of a discovered check through + // the captured pawn. if (move_is_ep(m)) { Square capsq = make_square(square_file(to), square_rank(from)); @@ -772,7 +772,7 @@ void Position::do_move(Move m, StateInfo& newSt, const CheckInfo& ci, bool moveI } // Prefetch TT access as soon as we know key is updated - TT.prefetch(key); + prefetch((char*)TT.first_entry(key)); // Move the piece Bitboard move_bb = make_move_bb(from, to); @@ -1250,7 +1250,7 @@ void Position::do_null_move(StateInfo& backupSt) { st->key ^= zobEp[st->epSquare]; st->key ^= zobSideToMove; - TT.prefetch(st->key); + prefetch((char*)TT.first_entry(st->key)); sideToMove = opposite_color(sideToMove); st->epSquare = SQ_NONE; @@ -1307,11 +1307,11 @@ int Position::see_sign(Move m) const { Square from = move_from(m); Square to = move_to(m); - // Early return if SEE cannot be negative because capturing piece value - // is not bigger then captured one. - if ( midgame_value_of_piece_on(from) <= midgame_value_of_piece_on(to) - && type_of_piece_on(from) != KING) - return 1; + // Early return if SEE cannot be negative because captured piece value + // is not less then capturing one. Note that king moves always return + // here because king midgame value is set to 0. + if (midgame_value_of_piece_on(to) >= midgame_value_of_piece_on(from)) + return 1; return see(from, to); } @@ -1752,21 +1752,17 @@ void Position::init_zobrist() { /// Position::init_piece_square_tables() initializes the piece square tables. -/// This is a two-step operation: First, the white halves of the tables are -/// copied from the MgPST[][] and EgPST[][] arrays, with a small random number -/// added to each entry if the "Randomness" UCI parameter is non-zero. +/// This is a two-step operation: +/// First, the white halves of the tables are +/// copied from the MgPST[][] and EgPST[][] arrays. /// Second, the black halves of the tables are initialized by mirroring /// and changing the sign of the corresponding white scores. void Position::init_piece_square_tables() { - int r = get_option_value_int("Randomness"), i; for (Square s = SQ_A1; s <= SQ_H8; s++) for (Piece p = WP; p <= WK; p++) - { - i = (r == 0)? 0 : (genrand_int32() % (r*2) - r); - PieceSquareTable[p][s] = make_score(MgPST[p][s] + i, EgPST[p][s] + i); - } + PieceSquareTable[p][s] = make_score(MgPST[p][s], EgPST[p][s]); for (Square s = SQ_A1; s <= SQ_H8; s++) for (Piece p = BP; p <= BK; p++)