diff options
Diffstat (limited to 'src/engine/ttable.c')
| -rw-r--r-- | src/engine/ttable.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/engine/ttable.c b/src/engine/ttable.c index fc1b6f0..c98bf62 100644 --- a/src/engine/ttable.c +++ b/src/engine/ttable.c @@ -23,9 +23,13 @@ void zobrist_init() { u64 zobrist_hash(position_t position) { u64 output = 0; - for (int i = 0; i < 64; i++) { - int piece_type = find_piece_on_square(&position, i); - output ^= zobrist_keys.piece[piece_type][i]; + for (int piece = 0; piece < PIECE_TYPE_COUNT; piece++) { + bitboard_t bb = position.bitboards[piece]; + while (bb) { + int sq = __builtin_ctzll(bb); + bb &= bb - 1; + output ^= zobrist_keys.piece[piece][sq]; + } } if (position.castling & WHITE_SHORT_CASTLE) { |
