changes from Alessandro Scotti from 20050322
[xboard.git] / readme.htm
diff --git a/readme.htm b/readme.htm
new file mode 100644 (file)
index 0000000..ca59e5c
--- /dev/null
@@ -0,0 +1,223 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\r
+<html>\r
+<head>\r
+</head>\r
+<body>\r
+<big><span style="font-weight: bold;">Tinkering with Winboard<br>\r
+by Alessandro Scotti<br>\r
+</span></big><br>\r
+Last update: March 22, 2005.<br>\r
+<br>\r
+This readme is about some modifications I made to Winboard 4.2.7. Some\r
+will work in Xboard too, while others are for Winboard only.\r
+Regardless, everything here is absolutely experimental and has been\r
+tested very little... so no warranties ok?<br>\r
+<br>\r
+All modified sources are included in this archive, the rest can be\r
+downloaded from <a href="http://www.tim-mann.org/xboard.html">Tim\r
+Mann's Xboard page</a>. Please feel free to take my changes and use\r
+them as you like, they are released under the GPL.<br>\r
+<br>\r
+<big><span style="font-weight: bold;">Game adjudication</span></big><br>\r
+<br>\r
+User can adjudicate a game between two machines, using the "Action"\r
+menu. Note that this only works if two machines are playing.<br>\r
+<br>\r
+Also, it is possible to adjudicate a game automatically with this\r
+parameter:<br>\r
+<br>\r
+<div style="margin-left: 40px;">/adjudicateLossThreshold=-700<br>\r
+</div>\r
+<br>\r
+if set to a negative value, Winboard will adjudicate a game if a engine\r
+can't get a score above the specified threshold for 3 full moves (6\r
+plies). Note that both engines must agree on the score value, and also\r
+the game is only adjudicated after the last move from the losing engine.<br>\r
+<br>\r
+Adjudication is still under test!<br>\r
+<br>\r
+<big><span style="font-weight: bold;">Background textures</span></big><br>\r
+<br>\r
+Add the following to winboard.ini:<br>\r
+<br>\r
+<div style="margin-left: 40px;">/liteBackTextureFile="sandstone_w.bmp"<br>\r
+/darkBackTextureFile="sandstone_b.bmp"<br>\r
+/liteBackTextureMode=1<br>\r
+/darkBackTextureMode=1<br>\r
+</div>\r
+<br>\r
+Of course you can choose any file you like for texturing the light and\r
+dark squares, as long as it's a valid BMP (Windows bitmap) file. <br>\r
+<br>\r
+Valid texture modes are 1 (default) and 2. In mode 1 the squares are\r
+taken from portions of the texture bitmap and copied without further\r
+processing. In mode 2, squares can also be rotated, mirrored and so on\r
+in order to provide a little more variety to the texture. The\r
+operations are selected at random so the board will look slightly\r
+different every time the program is run.<br>\r
+<br>\r
+Note: to "comment out" a filename, put an asterisk in front of it, i.e.\r
+"*sandstone.bmp" will be skipped.<br>\r
+<br>\r
+Additionally it is possible to override the size of the "gap" between\r
+the squares, which is otherwise selected automatically. Add this to\r
+winboard.ini:<br>\r
+<br>\r
+<div style="margin-left: 40px;">/overrideLineGap=2<br>\r
+</div>\r
+<br>\r
+I have added this because textures usually look better with a smaller\r
+or no gap. Any negative value will ignore the override and use the\r
+standard value from Winboard.<br>\r
+<br>\r
+The combination of these parameters can produce very interesting\r
+effects, see for example <a\r
+ href="http://usuarios.lycos.es/alexwbtm/Test/">Alex Guerrero's page</a>.<br>\r
+<br>\r
+<big><span style="font-weight: bold;">Font-based rendering of chess\r
+pieces</span></big><br>\r
+<br>\r
+It is possible to use chess fonts to draw pieces, in place of the usual\r
+bitmaps. You have to specify the font name by adding the following to\r
+winboard.ini:<br>\r
+<br>\r
+<div style="margin-left: 40px;">/renderPiecesWithFont="Chess Leipzig"<br>\r
+</div>\r
+<br>\r
+Chances are the program will automatically recognize the font and\r
+select the proper mapping, i.e. the correspondence between a chess\r
+piece and the corresponding font character. So if the board looks good\r
+you're set and there's nothing else to do, otherwise you'll have to\r
+find the proper mapping and tell it to the program with&nbsp; this\r
+setting:<br>\r
+<br>\r
+<div style="margin-left: 40px;">/fontPieceToCharTable="phbrqkojntwl"<br>\r
+</div>\r
+<br>\r
+The piece are in order: white pawn, knight, bishop, rook, queen, king\r
+and black pawn, knight, bishop, rook, queen, king. So the example above\r
+tells the program to use the letter "p" for a white pawn, the letter\r
+"h" for a white knight, the letter "t" for a black rook and so on.<br>\r
+<br>\r
+Note: to "comment out" a font name, put an asterisk in front of it,\r
+i.e. "*Chess Merida" will be skipped because of the asterisk.<br>\r
+<br>\r
+It is possible to customize the font foreground and background color,\r
+with these settings:<br>\r
+<br>\r
+<div style="margin-left: 40px;">/fontPieceBackColorWhite=#ffffcc<br>\r
+/fontPieceForeColorWhite=#402010<br>\r
+/fontPieceBackColorBlack=#ffffcc<br>\r
+/fontPieceForeColorBlack=#301008<br>\r
+</div>\r
+<br>\r
+Colors are expressed in RGB notation. If you are not familiar with the\r
+RGB notation&nbsp; I would suggest to leave them alone until I manage\r
+to update the GUI. In this case, the program will take the board\r
+settings as for the usual piece set.<br>\r
+<br>\r
+It is also possible to control the size of the piece with respect to\r
+the square, for example this entry:<br>\r
+<br>\r
+<div style="margin-left: 40px;">/fontPieceSize=80<br>\r
+</div>\r
+<br>\r
+tells the program to make the pieces about 20% smaller than a square\r
+(i.e. the piece size is 80%). Note that different fonts may require\r
+different values for this parameter. Usually values in the 70-80 range\r
+provide the best values, however the program accepts anything from 50\r
+to 150.<br>\r
+<br>\r
+Font-based pieces are automatically given a "roundish" look. For now,\r
+this option is not mapped to a user-definable setting.<br>\r
+<br>\r
+<big><span style="font-weight: bold;">Fast clipboard pasting</span></big><br>\r
+<br>\r
+Press Ctrl-V to paste a PGN game or a FEN position from the clipboard,\r
+the program will try to autodetect the proper type.<br>\r
+<br>\r
+<big><span style="font-weight: bold;">Thread initialization bug</span></big><br>\r
+<br>\r
+I've tried to fix a bug reported (and fixed) by Anastasios Milikas (of\r
+AICE), where a thread could try to access a not yet initialized\r
+variable. I've used a different approach here, where threads are\r
+started in a "suspended" state and then released only when the variable\r
+has been initialized (this has the advantage of putting all the\r
+required fix code in one place, and the disadvantage of not having been\r
+tested by Anastasios).<br>\r
+<br>\r
+<big><span style="font-weight: bold;">Protection from some buffer\r
+overflows</span></big><br>\r
+<br>\r
+In just a few cases, I've tried to put some guard against buffer\r
+overflows. These are just quick attempts... a lot more work would be\r
+needed to provide some measurable benefits. I hope that bug **353 is\r
+finally fixed now. The buffer overflows were propagated across several\r
+functions so as soon as one was fixed another would crash!<br>\r
+<br>\r
+<big><span style="font-weight: bold;">Absolute scores can be converted\r
+to relative</span></big><br>\r
+<br>\r
+Some engines (e.g. Crafty, Delphi) always report scores from the white\r
+side (i.e. absolute), rather than the engine side (i.e. relative). This\r
+leads to confusion and breaks features such as automatic adjudication.\r
+In order to convert the scores to relative add the following to\r
+winboard.ini:<br>\r
+<br>\r
+<div style="margin-left: 40px;">/firstScoreAbs=false<br>\r
+</div>\r
+<br>\r
+If true, the score of the first program is absolute and will be negated\r
+when playing black. And similarly:<br>\r
+<br>\r
+<div style="margin-left: 40px;">/secondScoreAbs=false<br>\r
+</div>\r
+<br>\r
+if true, the score of the second program is absolute and will be\r
+negated when playing black.<br>\r
+<br>\r
+<big><span style="font-weight: bold;">Engine search info can be saved\r
+in a PGN file</span></big><br>\r
+<br>\r
+Add the following to winboard.ini:<br>\r
+<br>\r
+<div style="margin-left: 40px;">/pgnExtendedInfo=true<br>\r
+</div>\r
+<br>\r
+If true, and the PGN save game option is enabled, each move will be\r
+followed by a comment&nbsp; containing the engine score and thinking\r
+depth (when available).<br>\r
+<br>\r
+Note: can also be set from the General options dialog.<br>\r
+<br>\r
+<big><span style="font-weight: bold;">Engine search info can be hidden\r
+in human-computer games</span></big><br>\r
+<br>\r
+When "show thinking" is disabled, engine thinking is not generated at\r
+all, rather than simply hidden. It is now possible to generate the\r
+think lines (e.g. for logging or saving in the PGN) yet hide them when\r
+the engine is playing against a human player. Add the following to\r
+winboard.ini:<br>\r
+<br>\r
+<div style="margin-left: 40px;">/hideThinkingFromHuman=true<br>\r
+</div>\r
+<br>\r
+Note: can also be set from the General options dialog.<br>\r
+<br>\r
+<big><span style="font-weight: bold;">Asymmetric time controls</span></big><br>\r
+<br>\r
+Very experimental! You can enter two time controls in the usual dialog,\r
+separated by "/". If so, white will be assigned the first time and\r
+black the second. So for example "0:30/2:00" will give 30 seconds to\r
+white and 2 minutes to black.<br>\r
+<br>\r
+Note: for now these times stay with black and white, rather than the\r
+corresponding player.<br>\r
+<br>\r
+<big><span style="font-weight: bold;">User interface</span></big><br>\r
+<br>\r
+Options to "hide thinking from human" and "save extended info in PGN"\r
+now appears in the "General" options dialog.<br>\r
+<br>\r
+</body>\r
+</html>\r