aboutsummaryrefslogtreecommitdiff
path: root/src/board/board.cpp
diff options
context:
space:
mode:
authorAdam <adammegarules1@gmail.com>2026-08-13 18:31:44 +0200
committerAdam <adammegarules1@gmail.com>2026-08-13 18:31:44 +0200
commitde8f43c35b435674777eca98790ed3d086682ce4 (patch)
treea40a2d976708699ea74d022a683ce7076554d1f9 /src/board/board.cpp
parentea0d0dcbf4b23f9ed84300b9771ca3b2deab1a18 (diff)
adding more memory efficnet helper functions
Diffstat (limited to 'src/board/board.cpp')
-rw-r--r--src/board/board.cpp34
1 files changed, 34 insertions, 0 deletions
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 <cstdint>
#include <cstdlib>
#include <cstring>
+#include <iostream>
#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]));
}