Bruja is a windows 32 bit console application to play chess.  It can be used 
stand-alone or with the Winboard GUI.

The program would never have come to be without the contributions of others.
Special thanks:

First to Adrien Regimbald (Faile) and Bruce Moreland (Gerbil).  From these two 
clearly written and well commented programs I learned the fundamentals of a chess 
program, how to probe a hash table, how to extract the PV, etc. etc. etc.

Second to Dr. Robert Hyatt (Crafty) and Carlos del Cacho (Pepito - que no sólo me
enseñó muchas cosas pero también está escrito en el idioma que me encanta).  From
them I learned bitboards.  Bruja does legal move generation but uses the same 
three part (capture, non-capture and check evasion) scheme as Crafty and Pepito.

Third to Ed Schröder (Rebel).  Bruja uses Ed's WB and BB concept to do hanging 
piece and static exchange evaluation and progressive king safety evaluation.

Last, but not least, to all the helpful folks at CCC who helped in ways too
numerous to list.

Bruja (which means witch and can mean some worse things depending on context) was
started on Halloween 2003.  At this writing (Dec 2004) it's a medium strength
program somewhat stronger than Faile and Gerbil but not as strong as Crafty and Pepito.

Bruja is somewhat unique in that it is multilingual (English and Spanish and German).  
Special thanks to Markus Binder for the German translation.  I hope to add more 
languages in the future.  If you are fluent in a language other than those listed 
above, and are willing to translate about 40 phrases, I'll be sure to credit you 
in the source code and start-up screen.

Due to the clone issue Bruja is not a pure open-source engine.  The source code is 
available to open-source engine authors, other engine authors as "swapware" and 
persons with a history of contributions to computer chess.  However the source 
code for Bruja's little brother, Simon, is available to all.  Simon is intended 
to be a starting point for those interested in developing a chess engine.  Simon 
is very weak with only a very basic search and evaluation.  But it is a fully 
functional Winboard engine using bitboard infrastructure and rotated bitboard 
attack calculations.  It is also public domain so there are no license issues.

Comments, suggestions and criticism are all welcome.

Dan Honeycutt
dhoneycutt@jjg.com

Fine Print
==========
Bruja is free software.  There is no warranty of any kind.
Author assumes no liability.

Latest Release
==============
http://wbec-ridderkerk.nl/
Bruja made it's first public appearance at this site so this is it's
home unless Leo gets mad at me and kicks me out.

Release History
===============
v1.0  13 Mar 2004
Initial release.

v1.1  20 Mar 2004
Implemented "st" command.  Time management improved.  Expanded book - still
tiny but will now play more than 2 book moves with popular lines.  Added
history heuristic to move ordering.

v1.2 21 Mar 2004
Bug fix in move gen.

v1.3 18 Apr 2004
Bug in xray attacks would not recognize doubled rooks.  Evaluation additions -
passed pawns, knight outpost, rook on 7th.  Additional cases of draw by 
insufficient material recognized.  Adds to book.

v1.4 18 Apr 2004
Added shutdown on broken communications pipe.

v1.5 02 May 2004
restructured hash table & rewrote probe & store.  Misc search improvements -  
added futility pruning, search calls eval and avoids null move if score < beta, 
increased singular, recap and pawn push extensions from 1/2 to 3/4 ply.

v1.6 14 May 2004
Bug fix - added array bounds check to AlphaBeta() in addition to QSearch().
Tweaks to QSearch().

v1.7 12 Jun 2004
Changed move structure to include move and score.  Fixed leaf null move bug
that cause 2 null move searches from same position.  Fixed bug in QSearch
move ordering that caused discard of good captures.  Added A. Wagner move
generation test to debug class.

v1.8 06 Aug 2004
Incremental move generation.  Deleted table for king safety and static exchange, now attacks calculated on the fly.  Net speedup of 15-20 pct.

v1.9 19 Mar 2005
Fixed bug in SAN rank disambiguation.  Data structure overhaul with smp in mind 
for the (distant) future.  Added German language support.  Added mate w/B+N 
(thanks to Dieter Buerssner for eval formula).  Added checks to qsearch with ini 
file options to set checks depth.  Revamped time management.


