From de8f43c35b435674777eca98790ed3d086682ce4 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 13 Aug 2026 18:31:44 +0200 Subject: adding more memory efficnet helper functions --- src/board/board.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src/board/board.cpp') diff --git a/src/board/board.cpp b/src/board/board.cpp index ad5ab12..9d0ef47 100644 --- a/src/board/board.cpp +++ b/src/board/board.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "board.hpp" #include "moves.hpp" @@ -9,6 +10,39 @@ int PositionToIndex(Position i) { return (i.rank * 8) + i.file; } +PieceType getPromotionTypeFromMove(uint16_t move) { + bool firstFlag = (move & (1 << 1)) != 0; + bool secondFlag = (move & (1 << 0)) != 0; + + /* + * 00 for knight + * 10 for queen + * 01 for rook + * 11 for bishop + */ + if (!firstFlag && !secondFlag) { + // 00 + return KNIGHT; + } + if (firstFlag && !secondFlag) { + // 10 + return QUEEN; + } + if (!firstFlag && secondFlag) { + // 01 + return ROOK; + } + if (firstFlag && secondFlag) { + // 11 + return BISHOP; + } + std::cout << "should have never happend"; + assert(false); + return ROOK; +}; +uint8_t getFromValueFromMove(uint16_t move) { return (move >> 2) & 63; }; +uint8_t getToValueFromMove(uint16_t move) { return (move >> 8) & 63; }; + Position FindKing(Game *g, bool color) { return IndexToPosition(__builtin_ctzll(g->PieceBitboards[color][KING])); } -- cgit v1.2.3