Note: Due to the changes , please use the makefile included or modify the current makefile to suit your needs, but an old makefile will not work.
Main Site: http://craftychess.com
Direct link to source: http://craftychess.com/downloads/source/crafty-25.1.zip
Github: https://github.com/MichaelB7/Crafty
Code: Select all
*******************************************************************************
* *
* Crafty, copyright 1996-2016 by Robert M. Hyatt, Ph.D. *
* *
* Crafty is a team project consisting of the following members. These are *
* the people involved in the continuing development of this program, there *
* are no particular members responsible for any specific aspect of Crafty, *
* although R. Hyatt wrote 99%+ of the existing code, excepting the Magic . *
* move stuff by Pradu Kaanan, syzygy code written by Ronald de Man, and the *
* epd stuff written by S. Edwards. *
* *
* Robert Hyatt, Pelham, AL. *
* Mike Byrne, Pen Argyl, PA. *
* Tracy Riegle, Hershey, PA. *
* Peter Skinner, Edmonton, AB Canada. *
* *
* All rights reserved. No part of this program may be reproduced in any *
* form or by any means, for other than your personal use, without the *
* express written permission of the authors. This program may not be used *
* in whole, nor in part, to enter any computer chess competition without *
* written permission from the authors. Such permission will include the *
* requirement that the program be entered under the name "Crafty" so that *
* the program's ancestry will be known. *
* *
* Copies of the source must contain the original copyright notice intact. *
* *
* Any changes made to this software must also be made public to comply with *
* the original intent of this software distribution project. These *
* restrictions apply whether the distribution is being done for free or as *
* part or all of a commercial product. The authors retain sole ownership *
* and copyright on this program except for 'personal use' explained below. *
* *
* Personal use includes any use you make of the program yourself, either by *
* playing games with it yourself, or allowing others to play it on your *
* machine, and requires that if others use the program, it must be clearly *
* identified as "Crafty" to anyone playing it (on a chess server as one *
* example). Personal use does not allow anyone to enter this into a chess *
* tournament where other program authors are invited to participate. IE you *
* can do your own local tournament, with Crafty + other programs, since this *
* is for your personal enjoyment. But you may not enter Crafty into an *
* event where it will be in competition with other programs/programmers *
* without permission as stated previously. *
* *
* Crafty is the "son" (direct descendent) of Cray Blitz. it is designed *
* totally around the bit-board data structure for reasons of speed of ex- *
* ecution, ease of adding new knowledge, and a *significantly* cleaner *
* overall design. it is written totally in ANSI C with some few UNIX system *
* calls required for I/O, etc. *
* *
*******************************************************************************
* 25.1 Cleanup of NextMove() plus a minor ordering bug fix that would *
* skip counter moves at ply = 2. Added NUMA code to force the hash *
* tables to be spread across the numa nodes as equally as possible *
* rather than all of the data sitting on just onenode. This makes *
* one specific user policy important. BEFORE you set the hash size *
* for any of the four hash tables, you should ALWAYS set the max *
* threads limit first, so that the NUMA trick works correctly. Of *
* course, if you do not use -DAFFINITY this is all irrelevant. The *
* -DNUMA option has been removed. I no longer use any libnuma *
* routines. A new "smpnuma" command is now used to enable/disable *
* NUMA mode (which really only affects how the hash tables are *
* cleared, all the other NUMA code works just fine no matter *
* whether this is enabled or disabled. Fixed a bug with the xboard *
* memory command that could overflow and cause preposterous malloc *
* requests. Change to LMP that now enables it in the last 16 plies *
* of search depth, although only the last 8-10 plies really have *
* a chance for this to kick in unless there are more than 100 legal *
* moves to try. Minor change to hash path in HashStore() that made *
* it hard to store entries on the first search after the table was *
* cleared. Removed Nalimov DTM EGTB code and converted to SYZYGY *
* WDL/DTC tables instead (courtesy of Ronald de Man). This *
* correctly handles the 50 move rule where the Nalimov tables *
* would walk into forced draws (by 50 move rule) while convincing *
* the search it was winning. Swindle mode now also activates when *
* in a drawn ending with a material plus for the side on move, as *
* well as when the best root move is a "cursed win" (forced win, *
* but drawn because of the 50 move rule). This gives the non-EGTB *
* opponent the opportunity to turn that 50 move draw into a loss. *
* There are some changes in the scoring output as a result of this. *
* The usual +/-MatNN scores show up for real mates, but when in *
* EGTB endings, the scores are of the form Win or Lose with the *
* appropriate sign correction (-Win means black is winning, +Lose *
* means white is losing.) Basil Falcinelli contributed to the new *
* syzygy code used in this version. Minor change to skill code to *
* avoid altering search parameters since the speed reduction and *
* randomness in the eval is more than enough to reduce the Elo. *
* Minor change to HashProbe() where I now only update the AGE of an *
* entry that matches the current hash signature if the entry *
* actually causes a search termination, rather than updating it *
* each time there is a signature match. If the search is not *
* terminated on the spot, we have to store an entry when the search *
* ends which will also overwrite the current exact match and update *
* the age as well. Suggested by J. Wesley Cleveland on CCC. *
* *
*******************************************************************************