mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
Fix the pawn hash failure when the pawn key is 0
This patch fixed bugs #859 and #882. At initialization we generate a new random key (Zobrist::noPawns). It's added to the pawn key of all positions, so that the pawn key of a pawnless position is no longer 0. STC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 21307 W: 3738 L: 3618 D: 13951 LTC: LLR: 2.94 (-2.94,2.94) [-3.00,1.00] Total: 45270 W: 5737 L: 5648 D: 33885 No functional change.
This commit is contained in:
parent
ca464fc89e
commit
9eccba7761
1 changed files with 4 additions and 2 deletions
|
@ -45,7 +45,7 @@ namespace Zobrist {
|
|||
Key psq[PIECE_NB][SQUARE_NB];
|
||||
Key enpassant[FILE_NB];
|
||||
Key castling[CASTLING_RIGHT_NB];
|
||||
Key side;
|
||||
Key side, noPawns;
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
@ -145,6 +145,7 @@ void Position::init() {
|
|||
}
|
||||
|
||||
Zobrist::side = rng.rand<Key>();
|
||||
Zobrist::noPawns = rng.rand<Key>();
|
||||
}
|
||||
|
||||
|
||||
|
@ -331,7 +332,8 @@ void Position::set_check_info(StateInfo* si) const {
|
|||
|
||||
void Position::set_state(StateInfo* si) const {
|
||||
|
||||
si->key = si->pawnKey = si->materialKey = 0;
|
||||
si->key = si->materialKey = 0;
|
||||
si->pawnKey = Zobrist::noPawns;
|
||||
si->nonPawnMaterial[WHITE] = si->nonPawnMaterial[BLACK] = VALUE_ZERO;
|
||||
si->psq = SCORE_ZERO;
|
||||
si->checkersBB = attackers_to(square<KING>(sideToMove)) & pieces(~sideToMove);
|
||||
|
|
Loading…
Add table
Reference in a new issue