Author: Dann Corbit
Date: 10:07:11 03/17/05
Go up one level in this thread
On March 17, 2005 at 04:31:58, Gabor Szots wrote: >On March 17, 2005 at 04:26:45, Fabien Letouzey wrote: > >>On March 17, 2005 at 03:22:06, Gabor Szots wrote: >> >>>Do you agree that after giving you due credit Toga's "author" can claim that >>>"his" engine is his own intellectual product and can be called a new engine? >> >>I will not try to answer moral questions, and can't answer tricky legal ones >>either (others will). Please feel free to ask technical questions instead (like >>how much code is shared between the engines). >> >>I leave it to every tester whether he should include Toga in his own tournament. >> I don't see why I would have a say in the matter, Toga is legal. >> >>Fabien. > >Thanks, Fabien. Now, how much code is shared between the engines? :-) Here are all the differences. They are very, very minor. E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< static /* const */ int KingSafetyWeight = 256; // 100% --- eval.cpp:> static /* const */ int KingSafetyWeight = 256; // 256 alter wert 100% E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< static const int ShelterOpening = 192; // 75% --- eval.cpp:> static const int ShelterOpening = 192; // 75% 192 E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< static const int PassedOpeningMin = 10; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< static const int PassedOpeningMax = 70; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< static const int PassedEndgameMin = 20; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< static const int PassedEndgameMax = 140; --- eval.cpp:> eval.cpp:> static const int KingSafetyPenalty = 0; // Thomas eval.cpp:> static const int PassedOpeningMin = 10; eval.cpp:> static const int PassedOpeningMax = 70; // war 70 eval.cpp:> static const int PassedEndgameMin = 20; eval.cpp:> static const int PassedEndgameMax = 140; // war 140 E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< static int shelter_square (const board_t * board, int square, int colour); --- eval.cpp:> static int shelter_square (const board_t * board, const material_info_t * mat_info, int square, int colour); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< PieceActivityWeight = (option_get_int("Piece Activity") * 256 + 50) / 100; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< KingSafetyWeight = (option_get_int("King Safety") * 256 + 50) / 100; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< PassedPawnWeight = (option_get_int("Passed Pawns") * 256 + 50) / 100; --- eval.cpp:> /* PieceActivityWeight = (option_get_int("Piece Activity") * 256 + 50) / 100; eval.cpp:> KingSafetyWeight = (option_get_int("King Safety") * 256 + 50) / 100; eval.cpp:> PassedPawnWeight = (option_get_int("Passed Pawns") * 256 + 50) / 100; */ E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< int eval(const board_t * board) { --- eval.cpp:> int eval(const board_t * board, int alpha, int beta) { E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< // eval E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< --- eval.cpp:> /* lazy Cutoff von Thomas */ eval.cpp:> if (mat_info->wt+mat_info->bt >= 15){ eval.cpp:> int lazy_eval; eval.cpp:> int const lazy_eval_cutoff = 200; eval.cpp:> eval.cpp:> phase = mat_info->phase; eval.cpp:> lazy_eval = ((opening * (256 - mat_info->phase)) + (endgame * mat_info->phase)) / 256; eval.cpp:> eval.cpp:> ASSERT(eval>=-ValueEvalInf&&eval<=+ValueEvalInf); eval.cpp:> eval.cpp:> if (COLOUR_IS_BLACK(board->turn)) lazy_eval = -lazy_eval; eval.cpp:> if (lazy_eval - lazy_eval_cutoff >= beta) eval.cpp:> return (lazy_eval); eval.cpp:> if (lazy_eval + lazy_eval_cutoff <= alpha) eval.cpp:> return (lazy_eval); eval.cpp:> // ende lazy cuttoff eval.cpp:> } eval.cpp:> eval.cpp:> eval.cpp:> // eval eval.cpp:> E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< eval_passer(board,pawn_info,&opening,&endgame); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< eval_pattern(board,&opening,&endgame); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< --- eval.cpp:> eval_passer(board,pawn_info,&opening,&endgame); eval.cpp:> eval_pattern(board,&opening,&endgame); eval.cpp:> --- eval.cpp:> --- eval.cpp:> --- eval.cpp:> bool king_is_safe; // Thomas E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< me = White; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< // king E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< penalty_1 = shelter_square(board,KING_POS(board,me),me); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< // castling E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< penalty_2 = penalty_1; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< if ((board->flags & FlagsWhiteKingCastle) != 0) { E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< tmp = shelter_square(board,G1,me); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< if (tmp < penalty_2) penalty_2 = tmp; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< } E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< if ((board->flags & FlagsWhiteQueenCastle) != 0) { E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< tmp = shelter_square(board,B1,me); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< if (tmp < penalty_2) penalty_2 = tmp; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< } E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< ASSERT(penalty_2>=0&&penalty_2<=penalty_1); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< // penalty E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< penalty = (penalty_1 + penalty_2) / 2; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< ASSERT(penalty>=0); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< op[me] -= (penalty * ShelterOpening) / 256; --- eval.cpp:> /* Thomas Patternerkennung ob König in Sicherheit ist. */ eval.cpp:> eval.cpp:> king_is_safe = false; eval.cpp:> eval.cpp:> if (board->square[G1] == WK || board->square[H1] == WK){ // kleine rochade eval.cpp:> if (board->square[G2] == WP && (board->square[H2] == WP || board->square[H3] == WP)){ eval.cpp:> king_is_safe = true; eval.cpp:> } eval.cpp:> else if (board->square[F2] == WP && board->square[G3] == WP && board->square[H2] == WP){ eval.cpp:> king_is_safe = true; eval.cpp:> } eval.cpp:> } eval.cpp:> eval.cpp:> else if (board->square[B1] == WK || board->square[A1] == WK){ // grosse rochade eval.cpp:> if (board->square[B2] == WP && (board->square[A2] == WP || board->square[A3] == WP)){ eval.cpp:> king_is_safe = true; eval.cpp:> } eval.cpp:> else if (board->square[C2] == WP && board->square[B3] == WP && board->square[A2] == WP){ eval.cpp:> king_is_safe = true; eval.cpp:> } eval.cpp:> } eval.cpp:> eval.cpp:> eval.cpp:> if (king_is_safe == false){ eval.cpp:> eval.cpp:> me = White; eval.cpp:> eval.cpp:> // king eval.cpp:> eval.cpp:> penalty_1 = shelter_square(board,mat_info,KING_POS(board,me),me); eval.cpp:> eval.cpp:> // castling eval.cpp:> eval.cpp:> penalty_2 = penalty_1; eval.cpp:> eval.cpp:> if ((board->flags & FlagsWhiteKingCastle) != 0) { eval.cpp:> tmp = shelter_square(board,mat_info,G1,me); eval.cpp:> if (tmp < penalty_2) penalty_2 = tmp; eval.cpp:> } eval.cpp:> eval.cpp:> if ((board->flags & FlagsWhiteQueenCastle) != 0) { eval.cpp:> tmp = shelter_square(board,mat_info,B1,me); eval.cpp:> if (tmp < penalty_2) penalty_2 = tmp; eval.cpp:> } eval.cpp:> eval.cpp:> ASSERT(penalty_2>=0&&penalty_2<=penalty_1); eval.cpp:> eval.cpp:> // penalty eval.cpp:> eval.cpp:> penalty = (penalty_1 + penalty_2) / 2; eval.cpp:> ASSERT(penalty>=0); eval.cpp:> eval.cpp:> op[me] -= (penalty * ShelterOpening) / 256; eval.cpp:> } E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< me = Black; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< // king E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< penalty_1 = shelter_square(board,KING_POS(board,me),me); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< // castling E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< penalty_2 = penalty_1; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< if ((board->flags & FlagsBlackKingCastle) != 0) { E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< tmp = shelter_square(board,G8,me); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< if (tmp < penalty_2) penalty_2 = tmp; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< } E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< if ((board->flags & FlagsBlackQueenCastle) != 0) { E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< tmp = shelter_square(board,B8,me); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< if (tmp < penalty_2) penalty_2 = tmp; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< } E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< ASSERT(penalty_2>=0&&penalty_2<=penalty_1); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< // penalty E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< penalty = (penalty_1 + penalty_2) / 2; E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< ASSERT(penalty>=0); E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< op[me] -= (penalty * ShelterOpening) / 256; --- eval.cpp:> king_is_safe = false; eval.cpp:> eval.cpp:> if (board->square[G8] == BK || board->square[H8] == BK){ // König hat rochiert eval.cpp:> if (board->square[G7] == BP && (board->square[H7] == BP || board->square[H6] == BP)){ eval.cpp:> king_is_safe = true; eval.cpp:> } eval.cpp:> else if (board->square[F7] == BP && board->square[G6] == BP && board->square[H7] == BP){ eval.cpp:> king_is_safe = true; eval.cpp:> } eval.cpp:> } eval.cpp:> eval.cpp:> else if (board->square[B8] == BK || board->square[A8] == BK){ // grosse rochade eval.cpp:> if (board->square[B7] == BP && (board->square[A7] == BP || board->square[A6] == BP)){ eval.cpp:> king_is_safe = true; eval.cpp:> } eval.cpp:> else if (board->square[C7] == BP && board->square[B6] == BP && board->square[A7] == BP){ eval.cpp:> king_is_safe = true; eval.cpp:> } eval.cpp:> } eval.cpp:> eval.cpp:> if (king_is_safe == false){ eval.cpp:> eval.cpp:> me = Black; eval.cpp:> eval.cpp:> // king eval.cpp:> eval.cpp:> penalty_1 = shelter_square(board,mat_info,KING_POS(board,me),me); eval.cpp:> eval.cpp:> // castling eval.cpp:> eval.cpp:> penalty_2 = penalty_1; eval.cpp:> eval.cpp:> if ((board->flags & FlagsBlackKingCastle) != 0) { eval.cpp:> tmp = shelter_square(board,mat_info,G8,me); eval.cpp:> if (tmp < penalty_2) penalty_2 = tmp; eval.cpp:> } eval.cpp:> eval.cpp:> if ((board->flags & FlagsBlackQueenCastle) != 0) { eval.cpp:> tmp = shelter_square(board,mat_info,B8,me); eval.cpp:> if (tmp < penalty_2) penalty_2 = tmp; eval.cpp:> } eval.cpp:> eval.cpp:> ASSERT(penalty_2>=0&&penalty_2<=penalty_1); eval.cpp:> eval.cpp:> // penalty eval.cpp:> eval.cpp:> penalty = (penalty_1 + penalty_2) / 2; eval.cpp:> ASSERT(penalty>=0); eval.cpp:> eval.cpp:> op[me] -= (penalty * ShelterOpening) / 256; eval.cpp:> } E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< static int shelter_square(const board_t * board, int square, int colour) { --- eval.cpp:> static int shelter_square(const board_t * board, const material_info_t * mat_info, int square, int colour) { E:\pgn\winboard-engines\fruit_20\src\eval.cpp:< penalty += shelter_file(board,file,rank,colour) * 2; --- eval.cpp:> penalty += shelter_file(board,file,rank,colour) * 2; /* Bauer vor dem König und in welchem Abstand? */ --- eval.cpp:> /* Thomas eval.cpp:> Wenn viele Leichtfiguren auf dem Brett sind dann wir der fehlende Bauernschutz bestraft */ eval.cpp:> eval.cpp:> if (mat_info->pv[COLOUR_OPP(colour)] > 1600) eval.cpp:> penalty = (penalty * (mat_info->pv[COLOUR_OPP(colour)]/16)) / 100; eval.cpp:> E:\pgn\winboard-engines\fruit_20\src\eval.h:< extern int eval (const board_t * board); --- eval.h:> extern int eval (const board_t * board, int alpha, int beta); E:\pgn\winboard-engines\fruit_20\src\hash.h:< #define KEY_INDEX(key) (uint32(key)) --- hash.h:> #define KEY_INDEX(key) uint32(key) E:\pgn\winboard-engines\fruit_20\src\main.cpp:< printf("Fruit 2.0 UCI by Fabien Letouzey\n"); --- main.cpp:> printf("Toga II 0.93 UCI based on Fruit\n"); --- material.cpp:> static const int OpeningExchangePenalty = 40; /* Thomas penalty für den tausch von Leichtfiguren gegen Bauern */ material.cpp:> static const int EndgameExchangePenalty = 40; material.cpp:> material.cpp:> E:\pgn\winboard-engines\fruit_20\src\material.cpp:< MaterialWeight = (option_get_int("Material") * 256 + 50) / 100; --- material.cpp:> /* MaterialWeight = (option_get_int("Material") * 256 + 50) / 100; */ --- material.cpp:> int owf,obf,ewf,ebf; --- material.cpp:> info->wt = wt; /* Thomas */ material.cpp:> info->bt = bt; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< opening += wp * PawnOpening; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< opening += wn * KnightOpening; --- material.cpp:> /* Thomas */ material.cpp:> owf = wn*KnightOpening + wb*BishopOpening + wr*RookOpening + wq*QueenOpening; material.cpp:> info->pv[White] = owf; material.cpp:> opening += owf; material.cpp:> opening += wp * PawnOpening; material.cpp:> /* opening += wn * KnightOpening; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< opening += wq * QueenOpening; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< E:\pgn\winboard-engines\fruit_20\src\material.cpp:< opening -= bp * PawnOpening; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< opening -= bn * KnightOpening; --- material.cpp:> opening += wq * QueenOpening; */ material.cpp:> material.cpp:> obf = bn*KnightOpening + bb*BishopOpening + br*RookOpening + bq*QueenOpening; material.cpp:> info->pv[Black] = obf; material.cpp:> opening -= obf; material.cpp:> opening -= bp * PawnOpening; material.cpp:> material.cpp:> /* penalty für den Tausch von Leichtfiguren gegen Bauern */ material.cpp:> if ((wt-wp) > (bt-bp) && owf > obf) material.cpp:> opening += OpeningExchangePenalty; material.cpp:> else if ((bt-bp) > (wt-wp) && obf > owf) material.cpp:> opening -= OpeningExchangePenalty; material.cpp:> material.cpp:> /* opening -= bn * KnightOpening; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< opening -= bq * QueenOpening; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< E:\pgn\winboard-engines\fruit_20\src\material.cpp:< endgame += wp * PawnEndgame; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< endgame += wn * KnightEndgame; --- material.cpp:> opening -= bq * QueenOpening; */ material.cpp:> material.cpp:> ewf = wn*KnightEndgame + wb*BishopEndgame + wr*RookEndgame + wq*QueenEndgame; material.cpp:> endgame += wp * PawnEndgame; material.cpp:> endgame += ewf; material.cpp:> /* endgame += wn * KnightEndgame; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< endgame += wq * QueenEndgame; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< E:\pgn\winboard-engines\fruit_20\src\material.cpp:< endgame -= bp * PawnEndgame; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< endgame -= bn * KnightEndgame; --- material.cpp:> endgame += wq * QueenEndgame; */ material.cpp:> material.cpp:> ebf = bn*KnightEndgame + bb*BishopEndgame + br*RookEndgame + bq*QueenEndgame; material.cpp:> endgame -= bp * PawnEndgame; material.cpp:> endgame -= ebf; material.cpp:> /* penalty für den Tausch von Leichtfiguren gegen Bauern */ material.cpp:> if ((wt-wp) > (bt-bp) && ewf > ebf) material.cpp:> endgame += EndgameExchangePenalty; material.cpp:> else if ((bt-bp) > (wt-wp) && ebf > ewf) material.cpp:> endgame -= EndgameExchangePenalty; material.cpp:> /* endgame -= bn * KnightEndgame; E:\pgn\winboard-engines\fruit_20\src\material.cpp:< endgame -= bq * QueenEndgame; --- material.cpp:> endgame -= bq * QueenEndgame; */ --- material.h:> int wt; /* Thomas */ material.h:> int bt; material.h:> int pv[ColourNb]; /* Materialsumme der Figuren ohne Bauern und könig */ unable to open %s move_check.cp unable to open %s move_evasion. unable to open %s move_evasion. unable to open %s move_legal.cp E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Hash", true, "16", "spin", "min 1 max 1024", NULL }, --- option.cpp:> { "Hash", true, "100", "spin", "min 1 max 1024", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "NullMove Pruning", true, "Fail High", "combo", "var Always var Fail High var Never", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "NullMove Reduction", true, "3", "spin", "min 1 max 3", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Verification Search", true, "Endgame", "combo", "var Always var Endgame var Never", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Verification Reduction", true, "5", "spin", "min 1 max 6", NULL }, --- option.cpp:> /* { "NullMove Pruning", false, "Fail High", "combo", "var Always var Fail High var Never", NULL }, option.cpp:> { "NullMove Reduction", false, "3", "spin", "min 1 max 3", NULL }, option.cpp:> { "Verification Search", false, "Endgame", "combo", "var Always var Endgame var Never", NULL }, option.cpp:> { "Verification Reduction", false, "5", "spin", "min 1 max 6", NULL }, */ E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "History Pruning", true, "true", "check", "", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "History Move Number", true, "3", "spin", "min 1 max 10", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "History Threshold", true, "60", "spin", "min 0 max 100", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Futility Pruning", true, "false", "check", "", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Futility Margin", true, "50", "spin", "min 0 max 500", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Delta Pruning", true, "false", "check", "", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Delta Margin", true, "50", "spin", "min 0 max 500", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Quiescence Check Plies", true, "1", "spin", "min 0 max 2", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Material", true, "100", "spin", "min 0 max 400", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Piece Activity", true, "100", "spin", "min 0 max 400", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "King Safety", true, "100", "spin", "min 0 max 400", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Pawn Structure", true, "100", "spin", "min 0 max 400", NULL }, E:\pgn\winboard-engines\fruit_20\src\option.cpp:< { "Passed Pawns", true, "100", "spin", "min 0 max 400", NULL }, --- option.cpp:> /* { "History Pruning", false, "true", "check", "", NULL }, option.cpp:> { "History Move Number", false, "3", "spin", "min 1 max 10", NULL }, option.cpp:> { "History Threshold", false, "60", "spin", "min 0 max 100", NULL }, option.cpp:> option.cpp:> { "Futility Pruning", false, "false", "check", "", NULL }, option.cpp:> { "Futility Margin", false, "50", "spin", "min 0 max 500", NULL }, option.cpp:> option.cpp:> { "Delta Pruning", false, "false", "check", "", NULL }, option.cpp:> { "Delta Margin", false, "50", "spin", "min 0 max 500", NULL }, option.cpp:> option.cpp:> { "Quiescence Check Plies", false, "1", "spin", "min 0 max 2", NULL }, option.cpp:> option.cpp:> { "Material", false, "100", "spin", "min 0 max 400", NULL }, option.cpp:> { "Piece Activity", false, "100", "spin", "min 0 max 400", NULL }, option.cpp:> { "King Safety", false, "100", "spin", "min 0 max 400", NULL }, option.cpp:> { "Pawn Structure", false, "100", "spin", "min 0 max 400", NULL }, option.cpp:> { "Passed Pawns", false, "100", "spin", "min 0 max 400", NULL }, */ E:\pgn\winboard-engines\fruit_20\src\option.cpp:< if (opt == NULL) my_fatal("option_get(): unknown option \"%s\"\n",var); --- option.cpp:> if (opt == NULL) my_fatal("option_get(): error in option \"%s\"\n",var); E:\pgn\winboard-engines\fruit_20\src\pawn.cpp:< static const int PassedOpeningMin = 10; E:\pgn\winboard-engines\fruit_20\src\pawn.cpp:< static const int PassedOpeningMax = 70; // was 50 E:\pgn\winboard-engines\fruit_20\src\pawn.cpp:< static const int PassedEndgameMin = 20; E:\pgn\winboard-engines\fruit_20\src\pawn.cpp:< static const int PassedEndgameMax = 140; // was 100 --- pawn.cpp:> /*static const int PassedOpeningMin = 10; pawn.cpp:> static const int PassedOpeningMax = 50; // was 50 pawn.cpp:> static const int PassedEndgameMin = 20; pawn.cpp:> static const int PassedEndgameMax = 100; // was 100 */ E:\pgn\winboard-engines\fruit_20\src\pawn.cpp:< PawnStructureWeight = (option_get_int("Pawn Structure") * 256 + 50) / 100; --- pawn.cpp:> /* PawnStructureWeight = (option_get_int("Pawn Structure") * 256 + 50) / 100; */ --- pawn.cpp:> /* Thomas Vorrückbonus der Bauern */ pawn.cpp:> opening[me] += (rank-Rank2) * 2; // +2 für jede Reihe pawn.cpp:> endgame[me] += (rank-Rank2) * 2; // +2 für jede Reihe pawn.cpp:> E:\pgn\winboard-engines\fruit_20\src\posix.cpp:< printf("info string GetStdHandle() failed, error=%lu\n",(unsigned long)error); --- posix.cpp:> printf("info string GetStdHandle() failed, error=%d\n",error); E:\pgn\winboard-engines\fruit_20\src\posix.cpp:< printf("info string GetConsoleMode() failed, error=%lu\n", (unsigned long)error); --- posix.cpp:> printf("info string GetConsoleMode() failed, error=%d\n",error); E:\pgn\winboard-engines\fruit_20\src\posix.cpp:< printf("info string PeekNamedPipe() failed, error=%lu\n", (unsigned long)error); --- posix.cpp:> printf("info string PeekNamedPipe() failed, error=%d\n",error); E:\pgn\winboard-engines\fruit_20\src\posix.cpp:< if (UseDebug && val < 0) printf("info string PeekNamedPipe(): val=%lu\n",(unsigned long)val); --- posix.cpp:> if (UseDebug && val < 0) printf("info string PeekNamedPipe(): val=%d\n",val); E:\pgn\winboard-engines\fruit_20\src\protocol.cpp:< #define VERSION "2.0" --- protocol.cpp:> #define VERSION "0.93" E:\pgn\winboard-engines\fruit_20\src\protocol.cpp:< send("id name Fruit " VERSION); E:\pgn\winboard-engines\fruit_20\src\protocol.cpp:< send("id author Fabien Letouzey"); --- protocol.cpp:> send("id name Toga II based on Fruit " VERSION); protocol.cpp:> send("id author Thomas"); E:\pgn\winboard-engines\fruit_20\src\pst.cpp:< PieceActivityWeight = (option_get_int("Piece Activity") * 256 + 50) / 100; E:\pgn\winboard-engines\fruit_20\src\pst.cpp:< KingSafetyWeight = (option_get_int("King Safety") * 256 + 50) / 100; E:\pgn\winboard-engines\fruit_20\src\pst.cpp:< PawnStructureWeight = (option_get_int("Pawn Structure") * 256 + 50) / 100; --- pst.cpp:> /* PieceActivityWeight = (option_get_int("Piece Activity") * 256 + 50) / 100; pst.cpp:> KingSafetyWeight = (option_get_int("King Safety") * 256 + 50) / 100; pst.cpp:> PawnStructureWeight = (option_get_int("Pawn Structure") * 256 + 50) / 100; */ unable to open %s search_full.c E:\pgn\winboard-engines\fruit_20\src\trans.cpp:< static const int DateSize = 16; --- trans.cpp:> static const int DateSize = 16; // Thomas war 16
This page took 0.02 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.