WinBoard / XBoard 4.4.0 features ported from WinBoard 4.3

New features

Treating castling and e.p. rights seriously

One of the most important changes betwen WinBoard 3.4 and predecessors is that it is fully aware of the game state. That is, it keeps track of castling rights and e.p. status, and takes that knowledge into account in legality checking of the moves and mate testing. As a result it can do 100% reliable adjudications: forfeit engines that do illegal moves, or make false result claims, and terminate the game on 3-fold repetition of due to the 50-move rule.

Supporting fairy pieces

WinBoard F does not only support the six piece types of orthodox chess, but expanded the number to 22. Most of these have well-specified moves known to WinBoard, such as the Archbishop (a B+N compound) and the Chancellor (R+N) of Capablanca Chess. Others are wild cards just supplied as graphics, and can only be used with legality testing off.

In board sizes middling (49) and bulky (72) a bitmap for each of these 22 pieces is supplied, while size petite (33) supports most. In the intermediate sizes, only Archbishop and Chancellor are available, while for sizes below 33 and above 72, none are. Some of the more common piece types, such as those for Chinese or Capablanca Chess, were added to the piece menu in Edit Position mode, while others can be made by 'promoting' or 'demoting' the more common ones.

Configurable and non-square board formats

WinBoard F allows the use of other boards than 8x8. In particular, the number of ranks does not have to be equal to the number of files. Options -boardWidth and -boardHeight can be used to specify exactly the board you want, but a value -1 for these options means WinBoard will use the default size for the variant you are playing (so 8x8 for normal chess or suicide).

Piece-ID letters in SAN and FEN

Unfortunately the names of fairy pieces are not as standardized as they are in orthodox chess: a piece that moves in the same way can be called Marshall in one variant, Chancellor in another, and Champion in a third. This affects the single-letter abbreviation one would use for writing SAN moves in notations for these variants. WinBoard accounts for this through the -pieceToCharTable option, where you can define for each of the 44 colored piece types what letter should be used for them. This can also used to disable pieces, by setting their character to a period. For each of the predefined variants, WinBoard has a default table, and uses that as soon as you select the variant.

Predefined variants

With the unorthodox piece types and board formats WinBoard F can support a large number of chess variants. Some of these variants are pre-defined: they can be selected through a New Variant item in the File menu, which brings you to a dialog where you can pick one, and optionally change its board size from the default.

For these predefined variants, WinBoard usually knows the rules exactly, meaning that it can do legality checking, reliably detect checkmate, etc. Some variants are only partially supported, however, and need to be played with legality testing off. The predefined new variants are:

  • Xiangqi (Chinese chess)
  • Shogi (Japanese chess)
  • Capablanca, Gothic and Capa-random Chess (on 10x8 board)
  • Courier chess (a medieval precursor of modern chess)
  • Shatranj (ancient Arabic chess)
  • Knightmate (King moves as Knight, and vice versa)
  • Cylinder chess (the board wraps around at the edge files)
  • Berolina chess (Pawns capture straight and move diagonally)

The latter two can only be played with legality testing off. The ICS variants that were already supported in 4.2.7 (Fischerandom, Suicide, Losers, Giveaway, Atomic, Twokings, Threechecks) are all fully supported in local mode, and WinBoard is aware of their rules for victory, so it can adjudicate.

Normally all these variants would be played with the piece symbols shown above. But the almost infinite configurability of the WinBoard look through board textures and font-based rendering does allow you to perfectly mimic traditional representation of Asian variants, for example. On the screenshot above, you see how suppressing the grid that normally separates the squares, and using a drawing of a Xiangqi board and the XIANGQI font for piece rendering, can give a very good looking Xiangqi interface.

Dragging and dropping from displayed holdings in Bughouse

Drop variants like Bughouse and Crazyhouse used to keep track of the holdings as text in the title bar, and required a drop menu to select dropped pieces from. This only worked in ICS mode, as the holdings were not updated in local play. In WinBoard F, the holdings are displayed beside the board, and you can grab and drag the piece to drop from there. They are also fully updated in local Crazyhouse play. (Bughouse still can only be played on an ICS, being a 4-player game where WinBoard is only a 2-player GUI.)

Shogi is also a drop game, and uses the same mechanism. In fact WinBoard F allows you to play any variant as a Crazyhouse-style drop game, by configuring holdings for it through the options -holdingsSize, where you can specify the number of piece types for which space should be reserved in the holdings. (Beware: for practical reasons this cannot be larger than the number of board ranks!) Piece types for which no space is reserved will revert to Pawn oon capture.

Promoted Pawn or primordial piece?

In Bughouse promoted Pawns revert to Pawn on capture, and are thus in principle different pieces than the primordial pieces of the same type. WinBoard F shows this difference by using alternate representations for pieces obtained through promotions. In sizes where these are available, fairy pieces are used; in other sizes a slightly smaller representation of the normal chess piece.

Displaying engine logos

WinBoard F offers the possibility to display logos of the playing engines next to the clock. The options -firstLogo, -secondLogo allow you to explicitly specify bitmap files for those. The logos will be scaled to 2x1 aspect ratio, so results are better if they already have this to begin with.

There also is a persistent boolean option -autoLogo, which makes WinBoard look automatically in the engine directory for a file called logo.bmp, and display that if it finds it (and this is not overruled by an explicitly given file). In ICS mode this option makes WinBoard look for a logo of the ICS in the logos folder, e.g. for FICS.

Modernizing WinBoard protocol

WinBoard protocol lacked commands to control the engine's hash-table size and number of CPUs it could use. This was of course because such things did not exist at the time when it was devised. This situation was corrected in WinBoard 4.3, by adding the 'memory' and 'cores' commands. These commands allow the GUI to specify the hash size and CPU number through the protocol interface, with as a result they can now be set through the GUI, rather than requiring editing of obscure ini files.

Of course this only works on engines that actually support these features. But (through Polyglot) all UCI engines do, so the dialogs to set these options were useful from the beginning.

Bitmaps for traditional Japanese Shogi pieces

As an extra service to Japanese users, board size 'moderate' (58) uses a complete set of traditional Shogi pieces in variant shogi. To properly use them, the options -allWhite and -flipBlack were added, and have to be set to true. Other board sizes (i.e. middling and bulky) use the normal chess-style bitmaps, except that special forms of the Gold are used to indicate some promoted pieces.

Overview of new command-line options

Below follow tables that list the new features, the command-line option needed to control them, and if there is a menu provided that can switch the option while WinBoard is running (command-line options exert their effect only at startup). Note that, unlike WinBoard 4.2.7, the WinBoard 4.3 series is fully castling and e.p. aware, and handles the castling, e.p. and 50-move field in FENs on input and output as should be expected.

command-line option description menu
-adjudicateLossThreshold 0 (*x) adjudicates engine-engine game based on score Options -> Engine... (x)
-checkMates false (*x) detect and end game on checkmates and stalemates Options -> Engine... (x)
-testClaims false (*x) WinBoard corrects false RESULT claims Options -> Engine.. (x)
-materialDraws false (*x) adjudicate draw when no mating material present Options -> Engine.. (x)
-trivialDraws false (*x) adjudicate draw in endgames like KRKR and KNNK Options -> Engine.. (x)
-adjudicateDrawMoves 0 (*x) adjudicate draw when game lasts too long Options -> Engine.. (x)
-ruleMoves 51 (*x) number of reversible moves after which to adjudicate draw Options -> Engine.. (x)
-repeatsToDraw 6 (*x) adjudicate draw when a position occurs this many times Options -> Engine.. (x)
-firstScoreAbs false (x)
-secondScoreAbs false (x)
Engine indicates score for white, even when playing black Options -> Adjudications.. (xboard-only)
- Adjudicate the game in progress as win to white, win to black, or draw Action -> Adjudicate to White
Action -> Adjudicate to Black
Action -> Adjudicate Draw
command-line option description menu
-firstTimeOdds 1 (x)
-secondTimeOdds 1 (x)
reduce the thinking time of the mentioned engine by the given factor Options -> Engine Settings.. (xboard only)
-timeOddsMode 1 (*x) determines what happens when both engine have time odds Options -> Engine Settings.. (xboard only)
-firstNPS -1 (x)
-secondNPS -1 (x)
engine must use node count for its time control, as if running at specified rate -
-matchPause 10000 (*x) number of msec to wait between games in match mode -
-delayBeforeQuit 0 (*x)
-delayAfterQuit 0 (*x)
timing parameter specifying how to terminate the engine processes -
- adjust the clocks by 1 minute (up or down) left- or right-cick on clock in edit-game mode
-niceEngines 0 (*x) lower the CPU priority of the engines -
command-line option description menu
-liteBackTextureFile "" (*)
-darkBackTextureFile "" (*)
-liteBackTextureMode 1 (*)
-darkBackTextureMode 1 (*)
Allows you to use any bitmap picture for displaying the board square -
-renderPiecesWithFont "" (*) specifies a true-type Chess font to be used for piece symbols -
-fontPieceToCharTable "" (*) specifies which font character to use for the various piece types -
-overrideLineGap 1 (*) controls the width of the black grid lines between squares -
-fontPieceBackColorWhite #0 (*)
-fontPieceForeColorWhite #0 (*)
-fontPieceBackColorBlack #0 (*)
-fontPieceForeColorBlack #0 (*)
control piece colors in font-based rendering -
-fontPieceSize 80 (*) tunes the size of pieces in font-based rendering (% of square size) -
-highlightMoveWithArrow false (*) draws a big arrow to indicate the move last played Options -> General...
-highlightArrowColor #FFFF80 (*) controls the color of the highlight arrow -
-autoLogo false (*)
-firstLogo ""
-secondLogo ""
causes WinBoard to display player logos above the board, next to the clocks. -
- Swap white and black clock Options -> Swap Clocks
command-line option description menu
-polyglotDir "" (*x) tells WinBoard where you installed Polyglot, for automatic invocation with UCI engines Options -> Global Settings... (x)
-polyglotBook "" (*x) tells WinBoard which opening book it should use, or should make Polyglot use. Options -> Global Settings... (x)
-usePolyglotBook false (*x) turns the use of the Polygot book on or off Options -> Global Settings... (x)
-defaultPathEGTB "c:\egtb" (*x) folder where to find end-game tables Options -> Global Settings... (x)
-defaultCacheSizeEGTB 4 (*x) specifies the cache size for UCI engines Options -> Global Settings... (x)
-defaultHashSize 64 (*x) specifies the size of the main hash table for UCI engines and WinBoard engines implementing the memory command Options -> Global Settings... (x)
-firstIsUCI false (x)
-secondIsUCI false (x)
-fUCI (x)
-sUCI (x)
tells WinBoard the corresponding engine should be run through Polyglot -
-firstHasOwnBookUCI true (x)
-secondHasOwnBookUCI true (x)
-fNoOwnBookUCI true (x)
-sNoOwnBookUCI true (x)
-firstXBook (x)
-secondXBook (x)
tells WinBoard (or Polyglot) if the engine should use its own opening book Options -> Global Settings... (x)
-smpCores 1 (*x) sets the maximum number of CPUs an SMP engine can use. (only affects engines that support the cores command of WB protocol) Options -> Global Settings... (x)
-egtFormats "" (*x) specifies which end-game tables are installed on the computer, and where they can be found (e.g. "nalimov:\chess\egtb,scorpio:\chess\bitbases") -
-firstOptions "" (x)
-secondOptions "" (x)
sets engine-defined options of UCI engines and WinBoard engines that support the option feature. Options -> Engine #1 Settings... (x)
Options -> Engine #2 Settings... (x)
-firstNeedsNoncompliantFEN "" (x)
-secondNeedsNoncompliantFEN "" (x)
directly specifies castling and e.p. field to be used in all FENs sent to mentioned engine -
command-line option description menu
-boardHeight -1 (*x)
-boardWidth -1 (*x)
-holdingsSize -1 (*x)
specifies the board format and nr of piece types that can be dropped, when you want it to be different from what is usual in the chosen varint File -> New Variant...
-variant normal (x) supports many new variants: xiangqi, shogi, fischerandom, capabanca, gothic, caparandom, janus, shatranj, courier, knightmate, berolina, falcon, cylinder, fairy, super, great File -> New Variant... (x)
-defaultFrcOpening -1 (x) allows you to play from a specific opening shuffle, or make a new shuffle each game File -> New Shuffle Game... (x)
-pieceToCharTable "" (x) allows you to specify by which letters pieces are referred to in FEN and SAN, if you want to deviate from what is usual for the current variant -
-flipBlack fase (*x) displays opponent pieces uppside down (for Shogi) Options -> Board...
-allWhite false (*x) use white bitmaps (with black outline) also for display of black pieces (for Shogi) Options -> Board...
command-line option description menu
-pgnExtendedInfo false (*x) save engine output (depth, score time) in PGN Options->General...
"Computer Chess Game" (*x)
specify the event for the PGN event tag -
-saveOutOfBookInfo true (*) include an 'annotator' tag in the PGN file  
-hideThinkingFromHuman false (*x) suppresses the engine thinking output in the display, without the need to switch it off (so it can still appear in the PGN file) Options -> General... (x)
-userName "" (x) sets the name of the human player Mode -> Enter Username... (x)
command-line option description menu
-moveHistoryUp true (*)
-moveHistoryX 0 (*)
-moveHistoryY 0 (*)
-moveHistoryW 0 (*)
-moveHistoryH 0 (*)
controls opening, placement and size of a window containing the moves of the current game (new in 4.4 is that all X and Y coordinates of auxiliary windows are stored relative to the main window) Mode -> Show Move History (x)
-evalGraphUp true (*)
-evalGraphX 0 (*)
-evalGraphY 0 (*)
-evalGraphW 0 (*)
-evalGraphH 0 (*)
controls opening, placement and size of a window containing a graph of the evaluation score of the engine(s) as a function of move number of the current game Mode -> Show Evaluation Graph
-engineOutputUp true (*)
-engineOutputX 0 (*)
-engineOutputY 0 (*)
-engineOutputW 0 (*)
-engineOutputH 0 (*)
controls opening, placement and size of a window containing the thinking output of the engine(s) Mode -> Show Engine Output (x)
-stickyWindows true (*) make the various windows snap onto each other, and stick together -
-showEvalInMoveHistory true (*) depth/score info of the engine is included as comments in the move history window Options -> General...
-evalHistColorWhite #FFFFB0 (*)
-evalHistColorBlack #AD5D3D (*)
determines the color of the eval-score comments in the move-history window -
-autoDisplayComment true (*) causes a window for displaying PGN comments to pop up automatically when such a comment is encountered -
-autoDisplayTags true (*) causes a window with PGN tags to be displayed as soon as a PGN file is loaded -
-gameListTags "eprd" (*) specifies the PGN tags that should be displayed in the game list Options -> Game List...
-noGUI (x) suppress update of display on all machine and ICS moves (moves, clocks, icon) -
command-line option description menu
-autoKibitz (x) kibitz engine Thinking Output to ICS, and capture opponent kibitz for in PGN -
-zippyShortGame 0 (x) ban opponents on ICS that abort without playing -
command-line option description menu
-debugFile "winboard.debug" (x)
-nameOfDebugFile "winboard.debug" (x)
allows you to specify an alternative name for saving the debug information -
-engineDebugOutput 0 (x) tells WinBoard if and how to put protocol-violating output in the debug file -
- save chess-board display as diagram in bitmap file (only works for the smaller board formats!) File -> Save Diagram...
-defaultFrcPosition -1 (*x) specify the number of the starting position in shuffle Chess variants File -> New Shuffle Game... (x)
- display only those lines in the game list that contain a given string in Game-List window
-rewindFile 0 (x) A nonzero value for this option causes the loadGameIndex or loadPositionIndex to rewind to the beginning of the Games or Position file when it reaches the given value in auto-increment match mode. This mode is specified by a negative value as argument of the /lgi or /lpi options, where -1 increments the index after every game of the match, and -2 after every two games (so that each position is played with black and white). -
-sameColorGames 0 (x) play a match, but without alternating the colors (overrules -matchGames) -

The value with which the option is listed is the default value. If it is false or true, it is a Boolean option, a number implies an integer option. A value starting with # indicates an RGB color indication in hexadecimal notation. Options the settings of which are saved into the winboard.ini file are marked with (*).