}
if(appData.epd) {
if(solvingTime >= 0) {
- snprintf(buf1, MSG_SIZ, "%d. %4.2fs\n", matchGame, solvingTime/100.);
+ snprintf(buf1, MSG_SIZ, "%d. solved %4.2fs\n", matchGame, solvingTime/100.);
totalTime += solvingTime; first.matchWins++;
} else {
snprintf(buf1, MSG_SIZ, "%d. wrong (%s)\n", matchGame, parseList[backwardMostMove]);
res = LoadGameOrPosition(matchGame); // setup game
appData.noChessProgram = FALSE; // LoadGameOrPosition might call Reset too!
if(!res) return; // abort when bad game/pos file
+ if(appData.epd) {// in EPD mode we make sure first engine is to move
+ firstWhite = !(forwardMostMove & 1);
+ first.twoMachinesColor = firstWhite ? "white\n" : "black\n"; // perform actual color assignement
+ second.twoMachinesColor = firstWhite ? "black\n" : "white\n";
+ }
TwoMachinesEvent();
}
DisplayError(_("Bad FEN position in file"), 0);
return FALSE;
}
- if((p = strstr(line, ";")) && (p = strstr(p+1, "bm "))) { // EPD with best move
- sscanf(p+3, "%s", bestMove);
+ if((strchr(line, ';')) && (p = strstr(line, " bm "))) { // EPD with best move
+ sscanf(p+4, "%s", bestMove);
} else *bestMove = NULLCHAR;
} else {
(void) fgets(line, MSG_SIZ, f);
return;
}
+ if(appData.epd && which) return; // do not write second pane in -epd mode
+
if( !EngineOutputDialogExists() ) {
return;
}
static int currentLineEnd[2];
int where = 0;
if(!EngineOutputIsUp()) return;
- if(!opponentKibitzes) { // on first kibitz of game, clear memos
+ if(!opponentKibitzes && !appData.epd) { // on first kibitz of game, clear memos
DoClearMemo(1); currentLineEnd[1] = 0;
if(gameMode == IcsObserving) { DoClearMemo(0); currentLineEnd[0] = 0; }
}