Revert Chess960 fix
authorMarco Costalba <mcostalba@gmail.com>
Mon, 3 Jan 2011 21:31:17 +0000 (22:31 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Mon, 3 Jan 2011 21:48:08 +0000 (22:48 +0100)
Will be substituted by a better next patch.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/position.cpp
src/position.h
src/search.cpp

index d3ca869b8215e20e22e947f95e946f4fdfb53116..f0301e4ec9308af1a78394c5728b0246b1af30a3 100644 (file)
@@ -274,6 +274,10 @@ void Position::from_fen(const string& fen) {
   castleRightsMask[make_square(initialQRFile, RANK_1)] ^= WHITE_OOO;
   castleRightsMask[make_square(initialQRFile, RANK_8)] ^= BLACK_OOO;
 
+  isChess960 =   initialKFile  != FILE_E
+              || initialQRFile != FILE_A
+              || initialKRFile != FILE_H;
+
   find_checkers();
 
   st->key = compute_key();
@@ -349,7 +353,7 @@ bool Position::set_castling_rights(char token) {
 /// Position::to_fen() returns a FEN representation of the position. In case
 /// of Chess960 the Shredder-FEN notation is used. Mainly a debugging function.
 
-const string Position::to_fen(bool isChess960) const {
+const string Position::to_fen() const {
 
   string fen;
   Square sq;
@@ -436,8 +440,7 @@ void Position::print(Move move) const {
           cout << c << pieceLetters.from_piece(piece) << c << '|';
       }
   }
-  bool chess960 = (cout.iword(0) != 0); // See set960()
-  cout << dottedLine << "Fen is: " << to_fen(chess960) << "\nKey is: " << st->key << endl;
+  cout << dottedLine << "Fen is: " << to_fen() << "\nKey is: " << st->key << endl;
   requestPending = false;
 }
 
index 0a6ab136156577d577d840ad6b95694a514c155a..5b1bc664be7782f713f1b8641e8aafe9058dc8e4 100644 (file)
@@ -138,7 +138,7 @@ public:
 
   // Text input/output
   void from_fen(const std::string& fen);
-  const std::string to_fen(bool isChess960) const;
+  const std::string to_fen() const;
   void print(Move m = MOVE_NONE) const;
 
   // Copying
@@ -258,6 +258,7 @@ public:
   // Other properties of the position
   bool opposite_colored_bishops() const;
   bool has_pawn_on_7th(Color c) const;
+  bool is_chess960() const;
 
   // Current thread ID searching on the position
   int thread() const;
@@ -322,6 +323,7 @@ private:
   int castleRightsMask[64];
   StateInfo startState;
   File initialKFile, initialKRFile, initialQRFile;
+  bool isChess960;
   int startPosPlyCounter;
   int threadID;
   int64_t nodes;
@@ -551,6 +553,10 @@ inline bool Position::has_pawn_on_7th(Color c) const {
   return pieces(PAWN, c) & relative_rank_bb(c, RANK_7);
 }
 
+inline bool Position::is_chess960() const {
+  return isChess960;
+}
+
 inline bool Position::move_is_capture(Move m) const {
 
   // Move must not be MOVE_NONE !
index 53a8bec9b15751981c22354e4a02525274c79887..0e249705fa59a89e00d1f689d714bf33bbe024f9 100644 (file)
@@ -484,7 +484,7 @@ bool think(Position& pos, bool infinite, bool ponder, int time[], int increment[
       std::string name = Options["Search Log Filename"].value<std::string>();
       LogFile.open(name.c_str(), std::ios::out | std::ios::app);
 
-      LogFile << "Searching: "  << pos.to_fen(Options["UCI_Chess960"].value<bool>())
+      LogFile << "Searching: "  << pos.to_fen()
               << "\ninfinite: " << infinite
               << " ponder: "    << ponder
               << " time: "      << myTime
@@ -570,7 +570,7 @@ namespace {
     Iteration = 1;
 
     // Send initial RootMoveList scoring (iteration 1)
-    cout << set960(Options["UCI_Chess960"].value<bool>()) // Is enough to set once at the beginning
+    cout << set960(pos.is_chess960()) // Is enough to set once at the beginning
          << "info depth " << Iteration
          << "\n" << rml[0].pv_info_to_uci(pos, alpha, beta) << endl;