From readme:
20/01/12, 1.5 the PV version
-Bitboard
Added Passed pawn
-Board
Added pawn bitboards
All pieces are stored as bitboards
Counter moved from State to main class
IsRepetition() rewrited, no more perpetual checks from opponent when in winning position
LastMove removed
PawnIsPassed() improved with bitboards
MovesToSquare() moved to MoveGenerator
New AreMovesConnected(), used in Search
New GetXXXAsBitboard()
New PawnOnSeventh()
New MoveLetmeInCheck()
New IsMate()
Perft stuff moved to Perft.pas (cleaning...)
Pair of bit.Clear() and bit.Set() changed to bit.ChangeAndSet()
Restore() works with a pointer rather than copying the whole record
See() removed
Some useful functions moved to Utils
TData = TState
-Book
Book has scores back again
-Cache
New criteria added to the replace policy
Remove() removed
-Definitions
msCheck removed
New constant NULL_SCORE
-Engine
Divide command implemented
Added SaveAperture() (does not work)
-Evaluation
Knight was not taking into account tropism
EvalThreat() ignores attacks from king
Adjustments removed (knight, bishop and rook)
Bishop pair adjustment bonus tuned
King safety now takes into account non pawn material
In pawn endings a defense was meant to be position
Passed pawns now uses the function from TChessboard
EvalConnectedRooks() removed
Most pair of middle/ending arrays converted to TScore
EvalPawn() improved and candidates fixed
-General
Some units were removed since they were not longer in use.
-History
Depth can use now fractional depths
Now the side is taked into account
Fixed error, draw scores in gains were ignored
-Killers
Optimized a bit
-Perft
New unit
-Piece
Added AsChar which returns PNBRQK
Modified AsString which returns piece info for debugging purposes
Really silly error in Backward() (passing an index as piece)
Added AsChar which returns PNBRQK
Modified AsString which returns piece info for debugging purposes
-Pieces
Not longer used (pieces stores as bitboards)
-MoveGenerator
TagIllegalMoves() improved and used in moves/captures
New MoveLetmeInCheck() (much faster that his counter partner at board)
Fixed en passant error in GenerateEvassions()
-MovePicker
Now uses TSee
Captures in evassion are scored as MMVLVA (before as See)
Sort scores were not clean when a move was discarded
-Scores
Values changed to smallint
New ToString()
-Search
Finally PV nodes are implemented, many stages takes that into account
Fast exit if only one move is available
Stand pat is not calculated in Quiescent() when in check
Futility now uses stand pat as reference
Removed stack from AlphaBeta() parameters
Null search now also checks for threats (not finished)
Mate threat in null tuned
The way gains was used has been slightly modified
Internal Iterative Deepening modified
All mates tuned
Allowing null moves moved from stack to params
Quiescent() detects mates
Mate threat in null tuned
Quiescent() returns -MATE inmediatly when Play() takes the king
InCheck() is not called when context is Check since GenerateEvassions() takes care of that
New way of taking more time to think, based on PV changes (prototype)
New razoring reduction
Extensions now uses PV
-See
New unit
Concept rewrited
Promotions were not scored properly
-Settings
Razoring added
What's new?
04/02/12, 1.5a maintenance version
-Board
The engine now checks if PopCnt is available (that stop the engine crashing on machines with no SSE4)
The endings are not longer based on strings but on hash
-Cache
beta hits updated the history entries
-MoveGenerator
CanTraverse() tweek a bit, it could discard valid moves
-PV
New unit, not used yet
-Search
Killers updated when a bet cache is hit
|
|