From a4024e15a807e26ddad04d6804742fab0d6c8c96 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 18 Aug 2026 20:55:21 +0200 Subject: perf(board): implementing magic bitboards for faster move generation --- src/misc.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src/misc.cpp') diff --git a/src/misc.cpp b/src/misc.cpp index e9073d4..a69054b 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -1,6 +1,8 @@ #include "misc.hpp" +#include "board/board.hpp" #include "moves.hpp" #include +#include #include #include @@ -31,3 +33,44 @@ uint64_t MoveGenTest(uint32_t depth, Game *g) { } return positionCount; } + +uint64_t MoveGenTestDivide(uint32_t depth, Game *g) { + if (depth == 0) { + return 1; + } + + uint64_t total = 0; + + std::vector moves = GetLegalMoves(g, ALL); + + for (uint16_t move : moves) { + uint8_t from = getFromValueFromMove(move); + uint8_t to = getToValueFromMove(move); + Position fromPos = IndexToPosition(from); + Position toPos = IndexToPosition(to); + + Undo undo = MakeMove(move, g); + + uint64_t count = MoveGenTest(depth - 1, g); + + UndoMove(undo, g); + + char fromFile = static_cast('a' + fromPos.file); + char toFile = static_cast('a' + toPos.file); + std::cout << fromFile << (fromPos.rank + 1) << toFile << (toPos.rank + 1); + PieceType promo = getPromotionTypeFromMove(move); + if (promo == QUEEN) + std::cout << 'q'; + else if (promo == ROOK) + std::cout << 'r'; + else if (promo == KNIGHT) + std::cout << 'n'; + else if (promo == BISHOP) + std::cout << 'b'; + std::cout << ": " << count << "\n"; + total += count; + } + + std::cout << "\nTotal: " << total << "\n"; + return total; +} -- cgit v1.2.3