# QBBEngine

Home * Engines * QBBEngine

A KTM Quad 990 ATV [1]

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 [2]. 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 [3]. The program performs a color agnostic move generation by flipping the board each time in make move.

# 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 Piece r n b k q b n r p ~ P R N B K Q B N R PM P0 P1 P2 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 0 0 0 0 0 0 0 0 0 ~ 1 1 1 1 1 1 1 1 1 Side to Move 0 0 1 0 1 1 0 0 1 ~ 1 0 0 1 0 1 1 0 0 P . B . Q 0 1 1 1 0 1 1 0 0 ~ 0 0 1 1 1 0 1 1 0 N B . K 1 0 0 1 1 0 0 1 0 ~ 0 1 0 0 1 1 0 0 1 . . R Q K
```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
```