From: Marco Costalba Date: Sat, 10 Apr 2010 15:40:03 +0000 (+0100) Subject: Introduce "Zugzwang detection" temporary hack for 1.7.1 X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=f9d3b48ad0ed62732bb07d4811f4fd17cf088cfe;p=fairystockfish.git Introduce "Zugzwang detection" temporary hack for 1.7.1 Add an UCI option "Zugzwang detection" OFF by default that enables correct detection of zugzwang. This is just to let 1.7.1 be 100% compatible with 1.7 and should be removed after release. Verified 100% functional equivalent to 1.7 Signed-off-by: Marco Costalba --- diff --git a/src/search.cpp b/src/search.cpp index 3f84364..0fa7824 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -257,7 +257,7 @@ namespace { int SearchStartTime, MaxNodes, MaxDepth, MaxSearchTime; int AbsoluteMaxSearchTime, ExtraSearchTime, ExactMaxTime; bool UseTimeManagement, InfiniteSearch, PonderSearch, StopOnPonderhit; - bool FirstRootMove, AbortSearch, Quit, AspirationFailLow; + bool FirstRootMove, AbortSearch, Quit, AspirationFailLow, ZugDetection; // Log file bool UseLogFile; @@ -425,6 +425,7 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move, MultiPV = get_option_value_int("MultiPV"); Chess960 = get_option_value_bool("UCI_Chess960"); UseLogFile = get_option_value_bool("Use Search Log"); + ZugDetection = get_option_value_bool("Zugzwang detection"); // To be removed after 1.7.1 if (UseLogFile) LogFile.open(get_option_value_string("Search Log Filename").c_str(), std::ios::out | std::ios::app); @@ -2315,7 +2316,7 @@ namespace { Value v = value_from_tt(tte->value(), ply); - return (allowNullmove || !(tte->type() & VALUE_TYPE_NULL)) + return (allowNullmove || !(tte->type() & VALUE_TYPE_NULL) || !ZugDetection) && ( tte->depth() >= depth || v >= Max(value_mate_in(PLY_MAX), beta) diff --git a/src/ucioption.cpp b/src/ucioption.cpp index af568a3..154e141 100644 --- a/src/ucioption.cpp +++ b/src/ucioption.cpp @@ -113,6 +113,9 @@ namespace { o["UCI_Chess960"] = Option(false); o["UCI_AnalyseMode"] = Option(false); + // Temporary hack for 1.7.1 to be removed in next release + o["Zugzwang detection"] = Option(false); + // Any option should know its name so to be easily printed for (Options::iterator it = o.begin(); it != o.end(); ++it) it->second.name = it->first;