I am nearly finished making all planned modifications to Winboard, but a lot of testing will have to be done to verify if everything works as intended. Fortunately this can all be done at very short time control. To bring about rare adjudication events, such as 50-move draws or KBKN end-games, it might be advisable to start from set-up positions. Testing should also be done with engines that do not claim properly (this can be partly circumvented by making the GUI claim early, e.g. a 30-move draw, or a 2-fold repetition).
I made modifications in the following areas:
1) Adjudication and claim verification
2) Fairy pieces and board sizes other than 8x8
3) Miscellaneous
Miscellaneous
/matchPause=10000
is an option to set the length of the pause between two games of a match. The value is in msec, default value is 10000 (I will present all newly implemented options with their default value as example). Be aware that some engines might not be stopped yet if you make the pause too small, but might still be puking output, which then will interfere with the next game. But the fixed value of 10 sec of the old Winboard seemed like overdoing it.
Time info in PGN
When you ask for the PV-info to be stored in the PGN (a Winboard_x option), it now also stores the time spent on the move with it.
Flag fell
In engine-engine games the messge "white/black/both" flag(s) fell" no longer appears in the window caption, but as an exclamation point behind the clock time. (To prevent the annoying overwriting of the normal header line).
Adjudications and Claim verification.
These functions are only present in engine-engine games, and only if legality-testing is switched on. (The latter will be typically switched off in games with bizarre rules, which the GUI doesn't know, and in that case the GUI can never have an opinion on the outcome of a game.)
Illegal-move forfeit
As soon as one of the engines plays an illegal move, it forfeits the game. This feature was already present, but it should be 100% reliable now, as it also takes e.p. and castling rights into account, rather than erring on the safe side.
Illegal-move claim
From the above, it follows that any illegal-move claims by an engine must be false, and will result in forfeiting the game. (In Winboard_x this message is ignored, causing the game or match to hang.)
Checkmate adjudication
As soon as one of the engines does a move that results in checkmate, the GUI declares the game won, without waiting for the engine to claim it.
Insufficient mating material
As soon as the material on the board has shrunk to KK, KNK or KBK, the game is declared draw.
/adjudicateLossThreshold=0
This option was already present in Winboard_x, (to declare a game lost for which both engines agree for 3 moves that the score is below the given threshold), but a non-zero value is now also used to enable the following adjudications. If you only want the latter, just make the threshold impossibly low (-40000 will usually do the trick).
Trivial draws
If we are 3 moves into a KQKQ, KRKR, KBKB KBKN or KNKN end-game, the game is adjudicated as draw.
/repeatsToDraw=6
When the specified number of repeats occurs, the game is adjudicated draw. Should keep track of e.p. and castling rights. This does not require legality-testing to be switched on. The engines retain the legal right to claim after a 3-fold repetition, though. If you set this parameter to 3 or less, they will never get the chance. Better not set it to 1 or less.
/ruleMoves=51
After the given number of full moves without capture or Pawn move, the game is adjudicated draw. Even without legality testing. The engines retain the legal right to claim after 50 moves.
/testClaims=FALSE
When enabled, this option verifies all result claims made by the engines, and overrules the claim if it is false (forfeiting the game for the claimer). An engine can still safely claim a win for its opponent on a nonsense reason, though; this is taken to be the equivalent of 'resign'. Draw claims (made before a draw adjudication) are checked against the 50-move, 3-fold-repetition or insufficient-material rules. Win claims are always considered false, as the GUI adjudicates checkmates (and stalemates) before any engine can claim them.
Fairy Chess support
/boardWidth=8
Sets the number of files on the board. The additional files are named i, j, k, l... in PGN, and should be indicated this way in communicating moves to and from the engine. Currently works upto 12. No guarantees on how the rest of the display (clocks, etc.) looks if you make this number < 8.
/boardHeight=8
Sets the number of ranks. Extra ranks are numbered 9, 10, 11... in PGN. A zero is taken to mean 10 in communication with the engine. This is so far totally untested, and unlikely to work for double-digit ranks. Displaying boards with upto 12 ranks seems to work, though.
/fontPieceToCharTable="......."
This paramater, controlling the mapping of font symbols to piece types, was already present in Winboard_x. The default is dependent on the font selected with the /renderPiecesWithFont option. It can now accept upto 22 pieces, but the length should always be even. The first half designates the white pieces, the second half the black, both in the order PNBRQKHACFM.
The last 5 are new pieces, that won't show up differently from NBRQK if you don't use font-based rendering. Missing pieces of the group HACFM are also copied from NBRQK, respectively.
fairy-FEN support
The letters HACFM can be used in FENs, and are passed on to the engine in FENs or in the edit menu. Alternatives for HACFM are LEWGD, respectively. Whichever of the alternatives you use first will from then on be the only one accepted for the particular display symbol, but the engine will still be informed if you are using A or E, for example. The chosen alternative will also be used in PGN. To make the difference also obvious to the user, one should give the /fontPieceToCharTable parameter a different value.
Double-digit skips are acceptable in FENs. 'x' is interpreted as a skip of 10.
Castling rights should no longer be ignored. (Doesn't work for FRC yet, though.)
The 50-move-plies field should also be meaningful now.
/variant="normal"
The variant names "capablanca", "gothic", "courier" and "fairy" are added (replacing "variant33" upto "variant36"). They affect the initial position. The "fairy" variant plays on 8x8 with HAC in stead f NBR on the Queen side, so that all back-rank pieces are (potentially) different. Make sure the selected board size matches the variant; this is not automatic.
ArchBishop and Chancellor
In variants "capablanca" and "gothic" the piece designators A and C are preselected (over E and W). The GUI knows about these pieces, so legality testing can be kept on when playing these games. The promotion pop-up box also allows you to select those pieces in the mentioned variants.
The GUI also knows about the deviating moves of Bishop, Queen and Pawn in Shatranj. (Untested yet).