Author: Paul H
Date: 17:41:13 08/21/04
Go up one level in this thread
Btw, here is the corresponding Crafty code (from v18.12 or older) that is the same as the ElChinito disassembly. In the previous post, I pasted the newer Crafty code. It still has the bug but slightly different. If this is not proof enough, nothing will be. // potion of Evaluat() if ((TotalWhitePawns+TotalBlackPawns) == 0) do { int ms=EvaluateMate(tree); if (ms == 99999) break; score+=ms; if (score>DrawScore(1) && drawn_ending==-1) return(DrawScore(wtm)); if (score<DrawScore(1) && drawn_ending==-2) return(DrawScore(wtm)); return((wtm) ? score : -score); } while(0); // EvalauteMate() int EvaluateMate(TREE *tree) { register int mate_score=DrawScore(1); if ((TotalBlackPieces==0) && (TotalWhitePieces==6) && (!WhitePawns) && (!BlackPawns) && WhiteBishops && WhiteKnights) { if (dark_squares&WhiteBishops) mate_score=b_n_mate_dark_squares[BlackKingSQ]; else mate_score=b_n_mate_light_squares[BlackKingSQ]; } if ((TotalBlackPieces==6) && (TotalWhitePieces==0) && (!WhitePawns) && (!BlackPawns) && BlackBishops && BlackKnights) { if (dark_squares&BlackBishops) mate_score=-b_n_mate_dark_squares[WhiteKingSQ]; else mate_score=-b_n_mate_light_squares[WhiteKingSQ]; } if (!mate_score) { if (Material >0) { mate_score=mate[BlackKingSQ]; mate_score-=(Distance(WhiteKingSQ,BlackKingSQ)-3)*KING_KING_TROPISM; } else if (Material < 0) { mate_score=-mate[WhiteKingSQ]; mate_score+=(Distance(WhiteKingSQ,BlackKingSQ)-3)*KING_KING_TROPISM; } } return(mate_score); }
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.