From Chessprogramming wiki
Jump to: navigation, search

Home * Engines * HeavyChess

Heavy Chess [1]

an UCI compliant open source chess engine by Chispa author Federico Andrés Corigliano, written in C++, released in 2007 [2].


Board Representation

HeavyChess is a bitboard engine and uses compact rotated bitboards to determine sliding piece attacks. It performs eight byte lookups to count populations, and bitscan by conditional 64k lookups, where the most significant bit on the chess board maps the least significant arithmetical one [3]:

// Devuelve el Most Significant Bit de un Bitboard
inline Casilla Bitboards::MSB(const Bitboard &b) {
   if (b&65535) return static_cast<Casilla>(TablaMSB[b&65535]);
   if (b&MSBMask1) return static_cast<Casilla>(TablaMSB[(b>>16)&65535]+16);
   if (b&MSBMask2) return static_cast<Casilla>(TablaMSB[(b>>32)&65535]+32);
   return static_cast<Casilla>(TablaMSB[b>>48]+48);


HeavyChess applies PVS alpha-beta with transposition table and null move pruning, mate theat and check extensions inside a fractional ply iterative deepening framework with aspiration windows.


The evaluation seems not that heavy as the program's name suggests. Beside obligatory, incremental updated material balance, HeavyChess utilizes piece-square tables and considers various piece terms, such as bishop pair, rook on (half) open file, and rook on 7th rank.

See also

Forum Posts

External Links


  1. Chessboard and pieces made out of mining tools and parts in Cerro Sombrero, Chile. Flickr Photo by Mr. Hicks, March 08, 2010
  2. HeavyChess by Ron Murawski, Winboard Forum, September 09, 2008
  3. HeavyChess 0.13 \BitBoards.h

Up one Level