add-fen-loader (#5)
All checks were successful
Python tests (make) / test (push) Successful in 10s

Reviewed-on: #5
Co-authored-by: Josh <josh@joshuaschuett.com>
Co-committed-by: Josh <josh@joshuaschuett.com>
This commit is contained in:
2025-08-16 16:51:53 +00:00
committed by Josh
parent b9d2f096e0
commit c02ec7875d
7 changed files with 351 additions and 32 deletions

View File

@@ -20,8 +20,16 @@
#define RANK_7 0x00FF000000000000ULL
#define RANK_8 0xFF00000000000000ULL
enum Color { WHITE = 0, BLACK = 1 };
enum Piece { PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING, PIECE_N = 6 };
#define SET_BIT(bb, sq) ((bb) |= (1ULL << (sq)))
#define CLEAR_BIT(bb, sq) ((bb) &= ~(1ULL << (sq)))
#define GET_BIT(bb, sq) ((bb) & (1ULL << (sq)))
#define TOGGLE_BIT(bb, sq) ((bb) ^= (1ULL << (sq)))
enum Color { WHITE = 0, BLACK = 1, BOTH = 2 };
enum Piece {
P, N, B, R, Q, K, // 0..5 white
p, n, b, r, q, k // 6..11 black
};
enum Castling {
CASTLE_WK = 1 << 0,
@@ -31,20 +39,20 @@ enum Castling {
};
struct Board {
uint64_t bb[2][PIECE_N]; // Each set of pieces get a bitboard for each player.
uint64_t occ[2]; // Color occupancy bitboards.
uint64_t occ_both; // occ[WHITE] | occ[BLACK]
uint64_t pieces[12]; // Each set of pieces get a bitboard for each player.
uint64_t occ[3]; // Color occupancy bitboards.
uint64_t king_square[2];
uint8_t castling;
uint64_t ep_square;
uint8_t castling_rights;
int ep_square;
enum Color side_to_move;
uint16_t halfmove_clock;
uint16_t fullmove_number;
int halfmove_clock;
int fullmove_number;
};
void create_knight_attack_cache(void);
void create_pawn_attack_cache(void);
void create_king_attack_cache(void);
void create_knight_attack_cache();
void create_pawn_attack_cache();
void create_king_attack_cache();
void print_board();

1
engine/include/fen.h Normal file
View File

@@ -0,0 +1 @@
int load_fen();