Monza is in early development and is a built for the purpose of it being a capstone project.
"Monza" is a city that's just northeast of Italy and it is used as a reference to Monza Circuit; one of the highest speed Formula 1 tracks and is known as the temple of speed.
- Board Representation
- Piece Centric Representation using Bitboards
- Defining macros for Bitboard Operations (SET/GET/POP)
- Encoding Pieces on the board
- FEN Parser
- Move Generation
- pre-calculated pawn attack table.
- pre-calculated knight attack table.
- pre-calculated king attack table.
- Generate Rook attack squares.
- Generate Bishop attack squares.
- Limit Rook / Bishop attackes to blocked squares.
- Generating Rook / Bishop Magic Numbers
- pre-calculated sliding pieces attack tables (rook/bishop...) - Magic Bitboards
- Other
- Define macros for ls1b and count bits
- ls1b:
- Using
__builtin_ctzll
from C++.
- Using
- count_bits
- Using
__builtin_popcountll
. - it seems that the above implementation is faster than using Brian Kernighan’s Algorithm which uses
bitboard &= bitboard - 1;
within a loop to count how many times the bits are eliminated.
- Using
- ls1b:
- Define macros for ls1b and count bits
- Some optimization
- A much better Evaluation mechanism.
- GUI
- Code Cleaning, Folder Structure.
- Maksim Korzh - BBC (Bitboard Chess Engine)
- Jay Honnold - Berserk Chess Engine
- Andrew Grant - Ethereal Chess Engine
- Pradyumna Kannan - Magic Move-Bitboard Generation in Computer Chess
- Chess Programming Wiki
- Trevor Fenner & Mark Levene - Move Generation with Perfect Hash Functions
- Bluefever Software
- Among a plethora of resources here: https://github.com/mourabitiziyad/Monza-Chess-Engine-Report#7references