Short: Crafty Chess program V 15.19 Author: hyatt@cis.uab.edu (Robert M. Hyatt) Uploader: dlorre caramail com (Dominique Lorre) Type: game/board Architecture: m68k-amigaos From Crafty.FAQ (author : Anil Mungal (amungal@vnet.ibm.com)) : --- [1] What is Crafty? Crafty is a chess program written by Bob Hyatt (hyatt@cis.uab.edu). It is modeled after Cray Blitz (also written by Bob). Crafty has the following features: - written in C - can be compiled with the GNU C compiler on various platforms - has a customizable opening book - supports tablebases (Steven Edward's endgame database) - text interface Crafty is a work in progress, and is frequently updated/enhanced by Bob. ----- [1.1] What platforms can Crafty run on? --- Now, on the Amiga ! Crafty is really strong. It wins 2-0 again UChess which was the strongest until now. It has also a lot a features, is PGN aware and also maintain an internal list of IM/GM ! I noticed it was particularly good in endings: White : Pc7, Kd7 Black: Pb7, Bg6, Kg3 White to move. Crafty found the draw in 20 minutes on 68030/28Mhz ! THE GOOD NEWS Crafty is now stable and the new version seems stronger. Also the book creation needs much less memory. THE BAD NEWS Crafty still not works with AmyBoard and now only supports XBoard 4.0. This means that we have either to use it with X11 and XBoard-4.0 or to update AmyBoard to the 4.0 version (I say we because if you are working on it I would appreciate to be informed about this). There are also some memory problems. In resume : if you don't have enough memory for the hash size, your system might crash. This will not happen on startup since I have put some special code for handling this but only if you declare a big hash size later or if your book is too big. The author of crafty, Mr. Hyatt, recommends that you don't allocate more than the half of your available memory for the hash size and if you follow this recommendation you should not have any problem. SYSTEM REQUIREMENTS I think crafty would run on a 2Mb system. Due to the way I compiled it, crafty requires a 68020 and a 2.0 system. INSTALLATION First, you must have a minimal Geek Gadgets distribution. If you don't, please do the following : Makedir /GG Assign GG: /GG Assign GNU: GG: Assign ADE: GG The two Assigns for ADE and GNU are for ancient names of the ADE distribution. If you do this you will not have any trouble in the future. Makedir GG:lib Makedir GG:bin Makedir GG:Sys A few words of explanation : The geek gagdets is providing a library named ixemul.library which is a NetBSD kernel. So it is very Unix-like. I don't want to go into details but when you want to install a new Geek-Gagdets utility it will have to be installed here, in the GG: drawer. Now, install the ixemul.library, the name depends on the flavor you choose : Cd GG: Copy ixemul-bin.lha "" Lha x ixemul-bin And ixemul will be extracted to your Sys directory If the archive is in the form tar.gz : Cd G:: copy ixemul-bin.tar.gz "" gunzip ixemul-bin.tar.gz tar xvf ixemul-bin.tar Of course, in this case you will need tar and gzip in your path. If the ixemul is a special flavor you may need to rename it : Cd GG:Sys/Libs Rename ixemul020.library as ixemul.library Rename ixnet020.library as ixnetlibrary Now, all you need is to add the following in your user-startup : Assign GG: /GG Assign GNU: GG Assign ADE: GG: Path GG:bin ADD Assign LIBS: GG:Sys/Libs ADD As I said, this is minimal, you might need other assigns such as info: for GG:info but this is not needed by Crafty. If your are interested, you should have look on the Geek gadgets docs on the Aminet in dev/gg or on the geek Gadgets site at http://www.ninemoons.com. When you have done this, or if you have already a suitable Geek Gadgets installation, crafty can be installed : Cd Copy crafty-15.19.lha "" Lha x crafty-15.19 The directory crafty-15.19 will be created. It is better to use crafty on its directory. I have made a cleanup script that will remove all the extra files Just pay attention to the fact that crafty is creating two files each time you play a game, so starting it from any directory will create a lot of CLp files. Always starting Crafty from the same drawer is a good habit. DEVELOPER INFORMATION This is the list of modifications I have done for making the Amiga version of Crafty-15.19. 1) I did not used the code I made for the 15.9 but started from the 15.19 official version. Anyway the author of Crafty seems to have integrated some of my changes. 2) I have modified some of the init.c file because crafty was requiring about 7M on startup. The Amiga code uses AvailMem to check how many memory Crafty can use. 3) I removed the old _kbhit function from a previous version of Crafty because the ixemul.library is good enough to handle the keyboard like an UNIX system. 4) I discovered a bug when Crafty was compiled with -fomit-frame-pointer (egcs-1.0.2). The file test.pgn reproduces it : Enter analyze mode, then read test.pgn and try the following moves : Qxa2 and Kxc3. If compiled with -fomit-frame-pointer the reply is : 2 0.68 Mat03 31. ... Rxb3+ 32. Kd4 Qa1+ 33. Kd5 Qe5# which is false because the knight can take the queen ! If not compiled with -fomit-frame-pointer the reply is: 2 0.63 Mat04 31. ... Rxb3+ 32. Kd4 Qf2+ 33. Kd5 Rc5+ 34. Ke4 Qe3# which is correct. Anyway the program is stable because it will reproduce the same output when given this position to analyze. 5) If you try some options such as compiling without -mc68020 you might have some compiler errors in attacks.c and movgen.c. This is due to the complexity of the code and you will have to live with it. 6) After some tests it appeared that COMPACT_ATTACKS and SPLIT_SHIFTS were giving the best results. 7) Compiled with egcs and stuff from the Geek Gadgets May 98 Snapshot. 8) Crafty will not compile on SAS/C because it needs 8 bytes long long. If you really want to do that you will have to switch to C++, create a BITBOARD class and perform an heavy modification to the sources (mainly casting) and do the work again when you will you want to upgrade to the next version. You can look at the ulonglong.h file if you are interested. Dominique Lorre (dlorre@craramail.com) 1-Oct-98