Saturday, January 21, 2012

ChessKISS 1.5, the PV version

(can already be downloaded in the downloads section)

 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

16 comments:

  1. Abel - I can't get ChessKiss 1.5 to work properly on my Q6600 Windows XP computer. I read in the Winboard forum that somebody else was having issues too. Switching back to 1.4 meantime.

    ReplyDelete