Readme for GromitChess 2.20
---------------------------
Contents:
0. Preface
1. Installation
2. Commandline-options
3. Options
4. XBoard/WinBoard support
4.1 XBoard
4.2 WinBoard
4.3 Fritz 5.32
4.4 TCB and Auto232
5. Information about the program
6. Copyright
7. Changelog
0. Preface
----------
If you already know GromitChess 1.2 (or previous versions) please note
that this version is completely different, because it doesn't offer it's
own userinterface/window, but is designed to cooperate with WinBoard
(or XBoard) using the -xboard or -xboardquiet commandline-option.
It can also be run in a DOS-window (or in a shell) in text-only-mode.
The engine is a successor of the GromitChess 1.2 engine and is faster
and stronger. Another advantage of this version is that it is
portable to Linux- (and other Unix-)platforms. If you want the Linux-
version, have a look at the GromitChess Home Page.
GromitChess 2.20 is still under development. If you encounter any problems
or find bugs please send an email to:
hobblefrank@t-online.de
News about the development and all new versions are published on the
GromitChess Home Page:
http://home.t-online.de/home/hobblefrank
1. Installation (Win95/98)
--------------------------
Gromit needs the following files in it's directory:
engine.exe - the chessengine
cygwinb19.dll - needed by engine (windows only, see
http://www.cygnus.com)
opening.boo - the openingbook (Gromit 1.2's book is OK, too)
eval.cfg - parameters for evaluation and search
(hashtablesize, piecevalues, ...)
By default all files are named as above and in the same directory.
Instead of the original cygwinb19.dll you should use the most recent version
(cygwin1.dll), renamed to cygwinb19.dll. An easy way to find the DLL
is to use FTPsearch (
http://ftpsearch.lycos.com) and search for
'cygwin1.dll'.
The cygwinb19.dll has a broken memorymanagement which sometimes causes
problems with the allocation of hashtables.
Compiling the source using the B20 compiler failed, because when optimizing,
it generated an engine.exe that produced wrong results. Therefore B19 is
used to compile the source and the B20-dll (cygwin1.dll) should be used
to run it
After starting Gromit your shell/dos-window should look like this:
>
> engine
GromitChess 2.20
Type '?' for help.
A B C D E F G H
9 XXXXXXXXXXXXXXXXXXXXX
8 XX r n b q k b n r XX
7 XX p p p p p p p p XX
6 XX XX
5 XX XX
4 XX XX
3 XX XX
2 XX P P P P P P P P XX
1 XX R N B Q K B N R XX
0 XXXXXXXXXXXXXXXXXXXXX
A B C D E F G H
Your move:
Gromit can also be started with a filename of a saved file as a parameter:
> engine game.chs
2. Commandline options
----------------------
These options can be given when starting the engine.exe:
-h : show help
-v : verbose
-c configfilename : use configfile instead of default (eval.cfg)
-book bookfilename : use bookfile instead of default (opening.boo)
-tablebasepath directory : search for Edwards-endgametablebases in directory
-fen "position" : use position as initial position (Linux only?)
-testply testsuite ply : search all positions from testsuite to depth ply
-testtime testsuite time : search all positions from testsuite time seconds
-xboard : for XBoard-support
-xboardquiet : for series of XBoard computer-computer-games
(suppresses 'telluser' messageboxes)
-xboarddebug : write debugfile xdebug.tmp in xboard-mode
-wmccc : playing at wmccc?
-cpip : for CPIP-support (partly supported)
-version : print build and version
~~~~~~~~~
Examples for a position are
-fen "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
-fen "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq e3 0 1"
~~~~~~~~~
To use Gromit with XBoard enter
> xboard -fcp "engine -xboard" [-debug]
or
> xboard -fcp "engine -xboardquiet" -mg 10
(-mg 10 is an XBoard-option for automated engine vs. engine games)
To use Gromit with WinBoard you can have something like this in
your winboard.ini:
/firstChessProgramNames="GNUChess
\"engine -tablebasepath d:\\source\\gromit\\endgame -xboard\" /fd=c:\\source\\gromit20\\bin
"
/secondChessProgramNames="GNUChess
\"engine -tablebasepath d:\\source\\gromit\\endgame -xboardquiet\" /sd=c:\\source\\gromit20\\bin
"
Note that Gromit was tested using XBoard 4.0.0 and might not work with
older versions which may be part of (older) Linux-distributions.
You can get the current version of XBoard or WinBoard here:
http://www.research.digital.com/SRC/per ... chess.html
See part 4 of this readme for more detailed instructions.
~~~~~~~~~
Testsuites (for example wac.ci, ...) use a format (by crafty?) like this:
noop from the Win At Chess (WAC) test:
echo position 001
svfe 2rr3k/pp3pp1/1nnqbN1p/3pN3/2pP4/2P3Q1/PPB4P/R4RK1 w - - 0 1
srch Qg6
echo position 043
svfe r2q3k/p2P3p/1p3p2/3QP1r1/8/B7/P5PP/2R3K1 w - - 0 1
srch Be7 Qxa8
'noop'-lines are ignored.
The line after 'echo' is written to stdout.
'svfe' describes the testposition.
'srch' gives a list of correct moves. Moves can be written as fromto (e2e4)
or short as e4, Be7, c7c8q, e1g1, ...
'avoi' gives a list of moves that should be avoided. Any other move is correct.
Characters for captures ('x') and check ('+') are optional.
Unrecognized commands are ignored.
If you want to test Gromit using testsuites I can send you some.
3. Options
----------
These commands can be entered when prompted by "Your move: ":
help/? : display this message
quit/exit : quit program (and save current game to "gromit.chs")
new : new game
back : take back one halfmove
back n : take back n halfmoves
forward : play one move previously taken back
forward n : play n moves previously taken back
go : let computer move
auto : automatic reply by computer ON/off
pondering : pondering (permanent brain) on/OFF
book : openingbook ON/off
book mode : available modes are random/GOOD/best
tablebase : endgametablebases ON/off
level : level moves minutes fischer[sec]
settime s : set timeleft to s seconds
time sec : set time per move (default: 5sec)
printlevel: print current level and time left
fen ... : set up position (for example: fen 7k/8/8/8/8/8/6P1/7K w - - 0 1)
verbose : verbose output on/OFF
beep : beep after computed move on/OFF
board : print board
printfen : print board as fen
print : print movelist
printpgn : print movelist as pgn
save : save filename. saves game to file
load : load filename. loads game from file
savepgn : savepgn filename. saves movelist to a .pgn-file
saveascii : saveascii filename. saves movelist into file
savetex : savetex filename. saves movelist to a LaTeX-format-file
wmccc : switch wmccc-mode on/off
editbook : edit openingbookscores (very simple and experimental)
patchbook : patchbook file. Change scores in book or add moves to book.
newcfg : reload configfile and use new values in subsequent searches
testplay : testplay oldcfgfile newcfgfile. Plays selfplaygames using
two different configfiles and switching colors after every
game. Scores for both 'configfiles' are computed.
Time must be set with 'time' before starting testplay.
Enter moves like g1f3, Nf3, c7c8q, e1g1, ...
Press return to interrupt search (or pondering).
Illegal moves and unrecognized options are ignored.
~~~~~~~~~
Under Linux Gromits "Your move: " prompt acts like a bash-prompt and offers
editing of input, completion of filenames, a history of previous
commands and so on (try tab, cursor up,... See manual of the readline-library
for details).
~~~~~~~~~
'go' can be used to choose the color and let the computer play white.
If 'auto' is off moves by black and white are entered by the operator.
~~~~~~~~~
So far Gromit has no chessclock and supports a 'time per move' and a
'n moves in m minutes' playing-mode.
~~~~~~~~~
The bookpatchfiles use a format similar to the .ci files:
noop modifications for round 5
echo position 001
posn 2rr3k/pp3pp1/1nnqbN1p/3pN3/2pP4/2P3Q1/PPB4P/R4RK1 w - - 0 1
appe Qg6 100
modi 12345 10
'noop'-lines are ignored.
The line after 'echo' is written to stdout.
'posn' describes a position.
'appe' appends the current position with move and score to book
'modi' set new score of position i to s
Scores are positive if favourable for white and 32000/-32000 if
illegal (or deleted).
4. XBoard/WinBoard support
--------------------------
XBoard/WinBoard homepage:
http://www.research.digital.com/SRC/per ... chess.html
4.1 XBoard
I suggest you use a small shellscript to start XBoard with Gromit as an
engine. If the script is in the engines directory it could look like this:
xboard -size small -fcp "engine -xboard" -debug -tc 2 -xponder -thinking
Since '-debug' is given you will see all communication between the engine
and XBoard.
4.2 WinBoard
A good introduction and a step-to-step installation-guide can be found
here:
http://www.ozemail.com.au/~homequip/mark/chess/
and a list of other WinBoard-compatible programs is here:
http://www.ozemail.com.au/~homequip/mar ... grams.html
Here is a brief step-by-step description of how to use Gromit with WinBoard.
If you are already familiar with editing WinBoard.ini you can skip this
part.
a) You need XBoard/WinBoard 4.0.0 (or newer). Make sure you can play games
against GnuChess (which is part of the distribution, I think).
I assume you can also do this:
Choose Winboard Startup Dialog. A dialogwindow called WinBoard Startup
opens. There is an option 'Play against a chess engine or match two engines'.
If you select it you can only choose GNUChess (but now we try to add
engine.exe to the list). There is also a 'Help' button for Help about
WinBoard.
b) Find a file 'winboard.ini' in the directory where winboard is installed
(for example using Windows Explorer).
c) Make a backup-copy of winboard.ini (called winboard.old).
d) Open that file with a texteditor (for example notepad).
e) Scroll down to the end of that file. There should be a line like this
/firstChessProgramNames="GNUChess
Explanation:
'/firstChessProgramNames' is a WinBoard option and the list of programs is
given behind the '="'. GnuChess is part of the WinBoard distribution and
Here is a fragment from my winboard.ini which tells
winboard about possible first and second chessprograms:
--------------------------------------------------------
/firstChessProgramNames="GNUChess
\"engine -tablebasepath d:\\source\\gromit\\endgame -xboardquiet\" /fd=c:\\source\\gromit20\\bin
\"chop\" /fd=c:\\spiele\\schach\\lambchop
"
/secondChessProgramNames="GNUChess
\"engine -tablebasepath d:\\source\\gromit\\endgame -xboardquiet\" /sd=c:\\source\\gromit20\\bin
\"chop\" /sd=c:\\spiele\\schach\\lambchop
"
---------------------------------------------------------
'/fd' is an option that tells WinBoard about the directory where a
'firstChessProgram' is. '/sd' stands for 'secondChessProgramDirectory'.
'-tablebasepath ...' is an option for engine.exe, not for WinBoard. You will
only need it if you have tablebases.
There are two annoying details:
- there is a difference between " and \"
- paths to files have to be given using \\ instead of just \
The reason is, that " and \ are special characters that have to be masked by
a '\'.
f) Now that you have found the /firstChessProgramNames line in winboard.ini
you have to add engine.exe to the list of programs. It is important to
give the correct directory where Gromit is installed. Assume that Gromit
(engine.exe) is in C:\gromit\
Here is the fragment from an adapted winboard.ini:
/firstChessProgramNames="GNUChess
\"engine -xboardquiet\" /fd=c:\\gromit
"
Change your winboard.ini accordingly.
g) Now save the new winboard.ini.
Choose Winboard Startup Dialog. The dialogwindow called WinBoard Startup
opens and after selecting 'Play against a chess engine or match two engines'
engine should be on the list of programs. Select engine as the first
chessprogram and push 'ok'. The chessboard-Window opens and it's title
is 'WinBoard: engine'.
h) It should be possible to play a game against GromitChess now.
4.3 Gromit and Fritz 5.32
The (commercial) chessprogram Fritz by Chessbase (see
http://www.chessbase.com) offers an interface to cooperate with engines
that support the WinBoard-protocol. If you want to use Gromit as an engine
get the installable binary from
http://www.chessbase.com. Install it and
replace gromit.exe and eval.cfg in chessbase\engines\gromit\ by the current
versions (engine.exe renamed to gromit.exe and eval.cfg).
Alternatively you can get the Fritz/WinBoard-adapter, copy it to
chessbase\engines\ and rename it to gromit.eng. Create a directory
chessbase\engines\gromit\ and a file gromit.init that looks like this:
-------------------------------------------------------
[Parameter]
CommandLine = -xboardquiet
Author = Frank Schneider
Engine = Gromit 2.20
Debug = False
[Support]
AnalyzeMode = False
PonderMode = False
-------------------------------------------------------
In chessbase\engines\gromit\ you need the files
gromit.exe (renamed engine.exe)
eval.cfg
gromit.init (see above)
See the documentation at the Chessbase-homepage for further details.
4.4 TCB and Auto232
Auto232 is a simple protocol to let two programs play automated testgames
on two computers that are linked via a cable. It is supported by many
commercial programs and some freeware-engines.
The Crazy Bishop (TCB, see
http://www-leibniz.imag.fr/~coulom/) is a strong
freeware chessprogram by Remi Coulom. It offers the unique feature that it
can be used to translate between an Auto232- and a WinBoard-engine.
Therefore it is possible to play automated games between Gromit and a
program that supports Auto232. See the TCB documentation for details -
I have not tested this myself.
5. Information about the program
--------------------------------
Here is some information about the program as required on the
9th WCCC entry form.
Language: C++
Nodes searched per second: 20000-50000 on a K6/200
Size of opening book: about 100000 moves
Tablebases: Edwards tablebases (3 man and 4 man tablebases)
Description:
GromitChess is a C++-program, developed in a Linux-environment
(Emacs, gcc). It searches about 20000 to 50000 nodes per second
on a K6/200 and tries to be intelligent rather than fast.
Attacktables are the primary datastructure (16 bit for
every square and player; bit n is set if piece n attacks the square).
The search uses iterative deepening, PVS, transpositiontables,
killer- and historyheuristic, nullmove (R=2), about 10 chess-specific
extensions and some pruning heuristics. The quiescence uses a static
exchange evaluator and includes some checks and other threatening moves.
Parts of the evaluation are initialized at the root but most of the work
is done at the leafnodes. You can find more information and executables
in the WWW:
http://home.t-online.de/home/hobblefrank/index.htm
Development history of program:
A first version participated at the 13th WMCCC (1995) and scored 4/11.
Following versions (Gromit 0.7, 1.0, 1.1, 1.2) were published in the
WWW and played some private tournaments and the 6th IPCCC in Paderborn
(1997, scoring 3.5/7). In 1998 the the engine was redesigned, separated
from the GUI and made XBoard-compatible. Due to some improvements,
optimizations and bugfixes Gromit 2.x is about 150 Elo stronger and able
to sometimes beat the best commercial programs.
6. Copyright/Warranty
---------------------
It is planned to release GromitChess under the GNU GPL with full
sourcecode in the future. Until then it is copyrighted by
Frank Schneider
Schlossparkstrasse 26
52072 Aachen
Germany
Since this is freeware don't blame me if Gromit
ruins your machine. However, I think and hope it won't.
I want to thank all the people who sent me games, bugreports and
suggestions, especially
Torsten Schoop who manually played many games with Gromit,
Andreas Schwartmann who helped debugging the Fritz/Winboard-adapter
support and most of all
Frank Quisinsky and Kai Skibbe for playing many games and organizing
the WinBoard tournaments.
7. Changelog
------------
=====================================================================
/*
* $Log: README.txt,v $
* Revision 1.9 1999/06/10 05:42:17 fs
* This is the 9thWCCC version
*
* Revision 1.8 1999/06/01 19:32:44 fs
* New: savepgn, printpgn
*
* Revision 1.7 1999/03/20 17:41:00 fs
* Version 2.12
*
* Revision 1.6 1999/01/01 13:17:46 fs
* New: description
*
* Revision 1.5 1998/11/15 17:02:26 fs
* New: part 4 (XBoard/WinBoard support)
*
* Revision 1.4 1998/10/04 13:49:47 fs
* First release
*
* Revision 1.3 1998/08/01 14:10:56 fs
* Comments. Last commit before abs-branch was taken
*
* Revision 1.2 1998/07/12 11:50:25 fs
* some new options
*
* Revision 1.1 1998/07/03 13:59:37 fs
* first commit
*
*/