EveAnn Chess Engine by Andres Valverde, Spain
---------------------------------------------

EveAnn is another chess engine made
only for fun. The engine is dedicated to my daughters 
Eve and Ann.

EveAnn is written in Object Pascal and compiled with Free Pascal 
since version 5.0. (Don't discard I'll use Delphi in the future)

It supports UCI (from 5.0 version) and Winboard II protocol. It does support
Analyze mode.

It works fine along Arena, ChessGUI, Winboard and Cutechess/-cli. Don't know
if it works under other GUIs.

EveAnn is completely for free use and distribution. No limits at all. It uses 
CEREBRUM library (David Carteau). Please read licence information at the bottom of 
this document.

Use it as your won risk !

HISTORY
-------

I began traslating to Pascal the FIRSTCHESS.C sample program
by Pham Hong Nguyen. (http://www.geocities.com/axchess/firstchess.html)
Then I added myself the chess rules missed on that program. I was very
pleased seeing how this simple thing played (bad) chess.

I continued seeking and found the Bruce Moreland site.
(http://www.seanet.com/~brucemo/topics/topics.htm)
With his help, I rewrote the search function, added check extension, killers,
pawn at seven extension, hash tables, QS, Nullmove pruning...., and actually
I understood how an engine play chess.

From TSCP by Tom Kerrigan, I got several ideas: Mailbox move generator,
iterative deepening, PVS PCSQ tables, history heuristic.....
(http://home.comcast.net/~tckerrigan/).
I could manage to understand the clean C code very well and the best thing is
that you can imagine very well how a program must be built as a whole.

From Ed Schroder paper I have learnt a lot: "How Rebel play chess"
(http://members.home.nl/matador/Rebel.pdf).
From him I have got nice ideas. My King Safety evaluation is mostly based on it.

Finally, after 11 years of doing nothing, I was curious how the NNUE technology
would fit into an old and outdated program. With the help of D.Shawul (Scorpio)
and Pedro Castro (Danasah). 

From 4.0 version, CEREBRUM library (David Carteau) was used in stead.

You can always disable the NNUE Evaluation through options in GUI, or even deleting
/ renaming the file "CEREBRUM.DLL". The engine will use the traditional evaluation (HCE) 


CREDITS
-------

I am very grateful to the programmers/testers named above, and to the following
people (among others!):

- Leo Dijksman , WBEC. http://wbec-ridderkerk.nl/  (R.I.P.)
- Olivier Deville, ChessWar.
- Lars Hallerstrom
- Guenther Simon
- Pedro Castro. Danasah chess engine (big thanks!)
- Daniel Shawul. Scorpio chess engine 
- Daniel Merhmann (Homer) , Andrew Fan (FireFly) , Pradu Kannn (Buzz, Dirty),
  John Merlino (Myrddin), Dany Anuillero (Isa), Martin Sedlak (Cheng) . . . . .
- Fonzy Bluemers (Dirty)
- Salvador Pallares (Clarabit)
- Graham Banks, Gabor Szots ... and all the CCRL team for their good
  and persistent work.
- Alex Brunetti (Protej chess engine), for his kind help 
- David Carteau (Cerebrum Library)
- Jim Ablett , for his help compiling cerebrum.dll 

Sorry if I forget somebody


VERSIONS
--------

*** April 2026

5.0         : First EveAnn UCI versión. Winboard protocol still available but 
              UCI is the default one from now on. Use it if posible.          
              Overall structure has been enhanced and several bugs fixed. 
              Some tweaks in LMR and LMP
              Counter move added for move ordering.
              Compiled with Free Pascal for the first time instead of Delphi

              Expected +20 ELO over 4.0 versión

              Bench : 142.465 nodes (NNUE mode) 
              
*** March 2026

4.0         : *First version using Cerebrum 2.0 NNUE* . Thanks again to David Carteau for 
              Cerebrum library. NN is embedded in the EXE file. You can disable it via 
              options in your GUI.
              There is not INI file anymore. All available options can be set in GUI.
              Some changes in Winboard protocol, now analyze mode works better
              UCI protocol is work in progress, some rudiments are already present
              but wont work at all.
              LMR changes with some eval based tweaks, also nullmove.
              Hash records modified. Now engine use more aproximately the hash size set
              in config.    
              Bitbases support is disabled. Don't know if it wil be enabled again
              Playing levels are disabled too.
              Pondering is disabled 
              
              Expected +20 ELO over 3.7 version

              Bench : 156890 nodes (NNUE mode)

*** October 2025

3.7         : Some LMR tweaks
              Time management changes
              New book and book management that worked fine at monthly
              ICS tournaments. It is a text file so lines can be edited
              manually. It is managed using the fast Delphi class TDictionary
              Some minor bugs fixed

              Expected +10/15 ELO

              Bench : 192842 nodes (no EGBB, NNUE mode) 

3.6         : Uncommented and tuned futility pruning. Added SEE pruning in search
              Fixed a bug in time manager, engine used too much time in first moves. 
              Fixed IO system , to avoid some illegal moves playing at long TC
              Ponder mode allowed again. (Worked fine at October monthly tour)
              Expected +10/15 ELO

              Bench : 173275 nodes (no EGBB, NNUE mode) Note :former versions command was "Bench2"


3.5         : Fixed TT incremental building. Also threefold function.
              Thanks to Dany, Martin and John for their support.
              Faster passer detection user in makemove so overall movegen
              (and Perft function) is 60% faster. 
              Uncommented static nullmove pruning
              Improvement : +30 blitz +15 long t.c.

              Bench : 188.314 nodes (no EGBB, NNUE mode) Note :former versions command was "Bench2"

*** June 2025

3.4         : Ugly (and old) bug fixed in RecordHash function. The program
              was not saving the correct ove in hash table, what affected
              negatively the move ordering.
              Because the improved move ordering, I did several tweaks in LMR, 
              LMP and Nulmove, doing them more agressive.		
              Book file again available, fine name must be : EVEANN.BK and 
              must be located in engine main folder

              Bench2 : 217.292 nodes (no EGBB, NNUE mode)

*** April 2025

3.2         : Bug fix version. I forgot to comment out some debug code in 3.1. 
              Manly a debug code in LMR that made it less agressive. Few ELO
              gain I guess.
               
              Bench2  : 254.922 nodes	(without EGBBs, NNUE mode)
	                366.785 nodes   (no EGBBs, HCE mode)

*** April 2025

3.1         : Little changes in LMR, Lazy Eval . Now the engine prune less
              but scores are more real and play style is more of my "taste".
              Engine gets low depths because its outdated structure, sorry.
              Time management a bit more agressive (spend more time in first moves)
              +30 ELO improvement in 12'+8" (VLTC) 
              Only 64-bit versión available (if you need the 32-bit one I could 
              build an special one)
              This might be the last Winboard version. Next Will be (hopefully) UCI
               
              Bench2 : 514.728 nodes		

*** January 2025

3.0         : Update compiler to Delphi 12 (after 20 years from Delphi 7) 
              Thanks to Embarcadero for providing such great tool for FREE 
              No big changes in coded. Only what needed to port to Delphi 12
              Code is faster and 64 bit.
              Book file removed from Project. It was barely used and porting
              was complicated.
              DLLs for both 32 and 64 bit compiled by Jim Ablett (big thanks!)
              +50 ELO expected (64 bit versión)


              Bench2 : 802.398 nodes		


*** December 2024

2.2         : Some tweaks in LMR
	      IIR switched ON and modified	
              Adaptative time management
              +20 ELO expected

              Bench2 :  957.818 nodes

*** October 2024

2.1         : Added Eval Cache (that is still switched off in HCE EveAnn). This
              got some neat speed without paying off.
              Added a tweak in time manager to allow EveAnn to play hyperbullet
              In self test 2.1 is +50/60 ELO over 2.0 (fast TC) 
              In general may be +20/30 ELO so expect 2870 CCRL +/-

	      Bench2 : 864.957 nodes (NNUE mode)	

2.0         : Added Daniel Shawull (with her kind permission)
              code to probe Stockfish nnue nets (old format)
              nnue file eveann001.nnue descendant of dananet3.net from Danasah,
              (with the kind permission of Pedro Castro). The net was reinforced with
              300M positions , appears to be improved +10-15 ELO.
              Some tweaks in LMR and eval and time management.
              This has been an experiment too see how much can be improved a
              weak engine using new technologies.
              Estimated Elo is aroud 2850 .  

              Bench2 : 996.371 nodes

*** SEPTEMBER 2024 !!

1.73 	    : Some minor bugs fixed. May be +25 ELO. 
              Bench2 1.035.727 nodes

My last test 

   Program                          Elo    +   -   Games   Score   Av.Op.  Draws

  1 Fatalii 0.7.0                  : 2424   11  11  3164    57.0 %   2374   22.3 %
  2 EveAnn 1.73                    : 2381   11  11  3061    49.2 %   2387   24.9 %
  3 Diablo 5.1                     : 2361   12  12  2444    47.4 %   2380   26.4 %
  4 Horizon 4.4                    : 2352   14  14  1860    47.7 %   2368   21.0 %
  5 Eveann 1.71a                   : 2338   20  20   920    43.4 %   2384   19.2 %

*** FEBRUARY 2013

1.71a       : Fixed some symmetry bugs in eval (No idea if this
              means more ELO) 
	      
              Bench2 : 1.181.859 nodes

1.71        : Some optimizations and changes in eval

              Bench2 : 1.337.853 nodes


*** JANUARY 2013

1.70        : Code cleaned and debugged.
              Some parts are completely re-written.
              It can ponder now (finally!)
              Can start games from EPD files.
              Time management is enhanced and now it can
              run at very fast TCs.
              Technically is now a better engine. However it doesn't mean
              a big ELO gain :)

              In console mode there are two new commands :
            
              Bench  : Run analysis of some positions, results in my Q6600 2.4 Mhz are :
		       Total nodes : 6514981 (542585 nps)
	      Bench2 : Run a smaller test, my results are:
		       Total nodes : 1192879 (507114 nps)

              Playing strength configurable. (See INI file)


*** JANUARY 2012

1.67        :  Changes in search and eval
               Bugs fixed
               It may be +40 ELO over 1.66
               Played OpenWar 9th (http://www.open-aurec.com/chesswar/OpenWar/OpenWar09/crosstable.htm)

*** APRIL 2011

1.66        :  Changes in search and eval
               Singular extension added
               Easy move added
               Some bugs fixed
               Scorpio bitbases configurable to 4 or 5 men
               It may be +50 ELO over 1.64
               
*** FEBRUARY 2011 (yes, 4 years later...)

1.64        :  Ponder is disabled as still there is a hidden bug that I'll find some time.
               Eval completely rewritten.
               SEE implemented in search move ordering, also in QS pruning.
               Nullmove and LMR modified. Other minor changes in search
               Time management rewritten.
               PV display rewritten.
               Some bugs fixed.
               In my tests it is +50 ELO better than 1.63


*** JULY 2007

1.63 	    :  This version can ponder again. This version played OPENWAR II and WEBC 
	       14 PROMO E. Also in ACCA President's tour July 2007 	
               
               Added Prodeo's book, thanks to Ed Scroder, Jeroem Noem and Fonzy for his work.
               Visit http://www.top-5000.nl/tools.htm  for details and some sets of books.
               Also, most info and books at http://www.geenvis.net
	       	
	       Some minor changes, bugs fixed.	

	       If no major bug is found (there would be minor ones for sure) this will
	       be the lastest EveAnn version.	


*** FEBRUARY 2007

1.62	    :  Changes in eval. Bitbases probing moved to QS. Changes in time
               management. This version played CCT9. Pondering still disabled
	       and currently my first to do thing.

*** DECEMBER 2006

1.61        :  5 Men Scorpio bitbases support added.
               Some little changes in EVAL and search. Lazy eval extended to endings.
               Little bugs fixed (PERFT function and others)

*** NOVEMBER 2006

1.60         : LMR is changed completely. Pondering is disabled (buggy).
	       Changes in hash table management.
	       Also some bugs fixed.

*** SEPTEMBER 2006

1.50b        : Check extensions limited if not PV node. HP disabled in late
               endings. ANALYZE mode is available (Thx to Fonzy for insist :) )
               Also minor bugs fixed.

*** AUGUST 2006

1.50         : Removed hash table deletion. Seems to produce some trouble
               in some systems. Bug fixed in book search. Changes in Eval
               Also minor changes. My final impression is
               that is the best version I have compiled, but needs a long
               time control to be competitive, say 40 moves at 20' or more.
               It is quite weaker at blitz.

1.50 beta 18 : Changes in HP and minor changes all around...

1.50 beta 15 : Added IID. Little changes in HP. Seems less deeper
               but search more stable....

*** JULY 2006

1.50 beta 12 : Changes in search. Little changes in eval.
               Trying to fix the bad ending style in beta 2
               also the unstability if blitz games.
	       Bug fixed : Former versions sometimes remained
	                   in memory after Winboard was closed.
               Bug fixed : Pondering was stopped when time for move
               		   was reached.
               It plays the 1st OpenWar event.

*** JUNE 2006 ***

1.50 beta 2  : Changes in eval and killers. History pruning enabled
               by default and modified. Plays the WEBC 13. At long
               time control seems to be improved, but is too weak
               in blitz.



1.40b        : Last minute ugly bug fixed. Adding the
               passed pawn extension i enabled by mistake
               another two undesired extensions...They made
               the program get stuk in some positions.

*** MAY 2006 ***

1.40a        : History pruning is not enabled by default
               in INI file (I need more tests, any help
               will be appreciated)
               Added a new passed pawn extension

*** APRIL 2006 ***


1.40         :  Final version    (released 30 April 2006)
                It plays Group F ChessWar IX. Some little
                changes. Support for new set (*.CMP) of
                Scorpio's bitbases.
                INI file , so command line options are no
                longer available !

1.40 beta 11 :  Little bug fixed in eval.

1.40 beta 10 :  Added Scorpio bitbases, thanks to Shawul!
                Added some other minor changes in Eval.

1.40 beta 5  :  Fixed an important bug in move ordering.
                History pruning enabled and changed.
                Little Changes in eval.
                Added mate extension in nullmove.
                Added hash table size option of 128 Mb

*** MARCH 2006 ***


1.38  : Eval changed. Special build for CCT8 tourney.
        Then it was modified to run at WBEC 5th division final,
        being added a more agressive lazy eval.
        Not enough tested vs 1.37 but i guess it is better. Ponder
        seems to work fine (although you still have to add the PONDER
        command line).


*** FEBRUARY 2006 ***

1.38 CCT8 : Eval changed. Special build for CCT8

1.37  : Pondering disabled. Fixed a big buf in eval. Several minor
        changes. the engines is 75-100 points better than 1.30/1.25e
        so it may be 2000-2050 now. Lars Hallerstrom test was :
        "EveAnn 1.37 : 2025  720    45.2 %   2059   18.8 %"


*** JANUARY 2006 ***


1.31  : Pondering is available (still buggy). So it is not enabled
        by default (see command line options above). Some minor changes
        in eval. Several bugs fixed ** NOT PUBLIC **

1.30  : Pondering added. Minor changes in eval. Bugs fixed ** NOT PUBLIC **

1.25e : Some changes in QS. Also Passed Pawn PST modified (now more agressive).
        Some bug fixed. Book is larger now. More stable version..


*** DECEMBER 2005 ***


1.25b : Fixed one bug in threefold management.

1.25a : Fixed some bugs. Threefold management improved. Playing strength
        no increased.

1.25  : Search improved (about 0.4 ply average). No down side so the engine
	must be a bit stronger.

1.20b : Fixed a bug. Engine search explosion in some simple positions.
        Book is available again.

*** NOVEMBER 2005 ***

1.20  : Added progressive King Safety (thanks to Ed Schroder paper and Jaime
        de Benito). Book is now disable. The engine must play without it
        or using a book provided by the GUI. Some changes in eval. Some bug
        fixed. Playing strength is about 100 ELO points over 1.12b version

1.12b : Fixed a bug. Illegal moves at 1st-2nd move of engine when no
        bookmove available.

1.12a : Fixed a bug. Result output was not sent correctly.

1.12  : Fixed a bug that made the engine crash seldom. Eval tuning

1.11  : Added a simple king safety eval. This decreased speed but make the program
        plays better.

1.10  : New move generator and check detection routine. Increase speed 50-100%.
        1 ply depth more in average.
        Some little changes in eval.

*** OCTOBER 2005 ***

1.01  : Fixed fifty moves rule bug. 130 moves limit bug. Some minor problems

1.00  : First Version sent to ChessWar and WBEC . Still private
        Changes in eval. Nullmove adaptative depth added. Probcut heuristic
        added. Finally fixed the bug in poll routine, the older one consumed
        too much CPU. Thanks to Martin Giepmans (SpiderChess) for his help.
        Time control modified. Now the program extend the time for move
        when the search fails high or low.

0.85  : Nullmoved finally working (crossed fingers). It really speeds up
        the engine.
        Aspiration search added! (Thanks to Ed Schroder paper, it works
        flawleesly)
        Passed pawn PSCQ added, other evaluation changes.
        Some bug fixed changes

0.81  : Private release for WBEC-RIDDERDEK promotion tourney. Buggy
        nullmove disabled.



Thanks for reading.

Andres Valverde
andres@ectool.nu


THIRD-PARTY SOFTWARE NOTICES AND INFORMATION

This software incorporates components from the projects listed below. 
The original copyright notices and the licenses under which these 
projects are provided are set forth below.

The Cerebrum library and engine
Copyright (c) 2025, by David Carteau. All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

All other portions of this software are Copyright (c) Tom Kerrigan, Pedro Castro and Andres Valverde.
All rights reserved.
MIT License





