This is a temporary, read-only recovery of the chessprogrammingwiki while a longer-term plan is worked out. Editing is not possible right now, but will be again soon.
Chess Programming Wiki All pages Other namespaces

QBBEngine

Home * Engines * QBBEngine

A KTM Quad 990 ATV 1A KTM Quad 990 ATV 1


  1. A KTM Quad 990 ATV, custom-made from E-ATV Eicker Germany, Basevehicle was a KTM Supermotobike, Typ SM 990 with LC8 engine, Image by Stefan Krause, February 20, 2011, Wikimedia Commons↩︎

QBBEngine,
a didactic UCI compliant open source chess engine by Fabio Gobbato, written in C and published as single source file along with Pedone, which apparently uses a similar representation 1. The QBBEngine demonstrates the use of a compact quad-bitboard structure to represent the board, and further applies alpha-beta search and an evaluation based on static values and piece-square tables 2. The program performs a color agnostic move generation by flipping the board each time in make move.

Contents
  1. Board-Definition
    1. C Structure
    2. Piece Coding
  2. See also
  3. External Links
  4. References

Board-Definition

C Structure

/*
Board structure definition

PM,P0,P1,P2 are the 4 bitboards that contain the whole board
PM is the bitboard with the side to move pieces
P0,P1 and P2: with these bitboards you can obtain every type of pieces and every pieces combinations.
*/
typedef struct
{
   TBB PM;
   TBB P0;
   TBB P1;
   TBB P2;
   uint8_t CastleFlags; /* ..sl..SL  short long opponent SHORT LONG side to move */
   uint8_t EnPassant; /* enpassant column, =8 if not set */
   uint8_t Count50; /* 50 move rule counter */
   uint8_t Rep; /* 0 if it's not a repetition, 1 if it is */
   uint8_t STM; /* side to move */
} TBoard;

Piece Coding

The board-definition with vertical nibbles as piece or empty square codes, i.e. the initial position:

Square 6 6 6 6 5 5 5 5 5 ~ 0 ... 0
3 2 1 0 9 8 7 6 5 ~ 8 7 6 5 4 3 2 1 0
Piece r n b k q b n r p ~ P R N B K Q B N R
PM 0 0 0 0 0 0 0 0 0 ~ 1 1 1 1 1 1 1 1 1
P0 0 0 1 0 1 1 0 0 1 ~ 1 0 0 1 0 1 1 0 0
P1 0 1 1 1 0 1 1 0 0 ~ 0 0 1 1 1 0 1 1 0
P2 1 0 0 1 1 0 0 1 0 ~ 0 1 0 0 1 1 0 0 1
P2     RQK        P1    NB  K       P0   P B Q         PM side to move
1 . . 1 1 . . 1   . 1 1 . 1 1 1 .   . . 1 1 . 1 . .    . . . . . . . .
. . . . . . . .   . . . . . . . .   1 1 1 1 1 1 1 1    . . . . . . . .
. . . . . . . .   . . . . . . . .   . . . . . . . .    . . . . . . . .
. . . . . . . .   . . . . . . . .   . . . . . . . .    . . . . . . . .
. . . . . . . .   . . . . . . . .   . . . . . . . .    . . . . . . . .
. . . . . . . .   . . . . . . . .   . . . . . . . .    . . . . . . . .
. . . . . . . .   . . . . . . . .   1 1 1 1 1 1 1 1    1 1 1 1 1 1 1 1
1 . . 1 1 . . 1   . 1 1 . 1 1 1 .   . . 1 1 . 1 . .    1 1 1 1 1 1 1 1

See also

References

Up one Level


  1. Pedone Chess Engine↩︎

  2. QBBEngine - a didactic engine↩︎

Categories: Open Source · UCI · Didactic

What links here

Contributors: GerdIsenberg.