header[which][0] = NULLCHAR;
if(gameMode == AnalyzeMode) {
ChessProgramState *cps = (which ? &second : &first);
- if((multi = MultiPV(cps)) >= 0) {
- snprintf(header[which], MSG_SIZ, "\t%s viewpoint\t\tfewer / Multi-PV setting = %d / more\n",
- appData.whitePOV || appData.scoreWhite ? "white" : "mover", cps->option[multi].value);
+ char *exclu = cps->excludeMoves ? exclusionHeader : "";
+ if((multi = MultiPV(cps, 3)) != -1) {
+ char *s = "setting";
+ if(multi < -1) multi = -2 - multi, s = "margin";
+ snprintf(header[which], MSG_SIZ, "\t%s viewpoint\t\tfewer / Multi-PV %s = %d / more\n",
+ appData.whitePOV || appData.scoreWhite ? "white" : "mover", s, cps->option[multi].value);
}
- if(!which) snprintf(header[which]+strlen(header[which]), MSG_SIZ-strlen(header[which]), "%s%s", exclusionHeader, columnHeader);
+ if(!which) snprintf(header[which]+strlen(header[which]), MSG_SIZ-strlen(header[which]), "%s%s", exclu, columnHeader);
InsertIntoMemo( which, header[which], 0);
} else {
snprintf(header[which], MSG_SIZ, "%s", columnHeader);
// [HGM] multivar: sort Thinking Output within one depth on score
static int
+MateFlip (int n)
+{ // map mate-score to monotonous scale, so sorting compares them correctly
+ if(n >= MATE_SCORE) return 2*MATE_SCORE - n;
+ if(n <= -MATE_SCORE) return -2*MATE_SCORE - n;
+ return n;
+}
+
+static int
InsertionPoint (int len, EngineOutputData *ed)
{
int i, offs = 0, newScore = ed->score, n = ed->which;
keys[i+n+2] = ed->moveKey;
fail[i+n+2] = failType;
if(ed->moveKey != keys[i+n] && // same move always tops previous one (as a higher score must be a fail low)
- newScore < scores[i+n] && fail[i+n] == ' ') break;
+ MateFlip(newScore) < MateFlip(scores[i+n]) && fail[i+n] == ' ') break;
// if it had higher score as previous, move previous in stead
scores[i+n+2] = ed->moveKey == keys[i+n] ? newScore : scores[i+n]; // correct scores of fail-low/high searches
textEnd[i+n+2] = textEnd[i+n] + len;
return offs + strlen(header[ed->which]);
}
-#define MATE_SCORE 100000
static char spaces[] = " "; // [HGM] align: spaces for padding
static void