From: Fabian Fichter Date: Sat, 9 Mar 2019 10:19:53 +0000 (+0100) Subject: Fix tablebase probing X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=33651eb8963cbd7e310b71364a535edea7452d19;p=fairystockfish.git Fix tablebase probing Do not rely on assumption that PIECE_TYPE_NB = 8. --- diff --git a/src/syzygy/tbprobe.cpp b/src/syzygy/tbprobe.cpp index 6ca09da..7c86fb8 100644 --- a/src/syzygy/tbprobe.cpp +++ b/src/syzygy/tbprobe.cpp @@ -663,7 +663,7 @@ Ret do_probe_table(const Position& pos, T* entry, WDLScore wdl, ProbeState* resu // flip the squares before to lookup. bool blackStronger = (pos.material_key() != entry->key); - int flipColor = (symmetricBlackToMove || blackStronger) * 8; + int flipColor = (symmetricBlackToMove || blackStronger) * PIECE_TYPE_NB; int flipSquares = (symmetricBlackToMove || blackStronger) * 070; int stm = (symmetricBlackToMove || blackStronger) ^ pos.side_to_move(); @@ -1066,7 +1066,10 @@ void set(T& e, uint8_t* data) { for (int k = 0; k < e.pieceCount; ++k, ++data) for (int i = 0; i < sides; i++) - e.get(i, f)->pieces[k] = Piece(i ? *data >> 4 : *data & 0xF); + { + int p = i ? *data >> 4 : *data & 0xF; + e.get(i, f)->pieces[k] = make_piece(Color(p >> 3), PieceType(p & 7)); + } for (int i = 0; i < sides; ++i) set_groups(e, e.get(i, f), order[i], f);