aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--magic_finder.c8
-rw-r--r--src/board/board.cpp10
-rw-r--r--src/evaluate.cpp2
3 files changed, 12 insertions, 8 deletions
diff --git a/magic_finder.c b/magic_finder.c
index 50c4279..ee21587 100644
--- a/magic_finder.c
+++ b/magic_finder.c
@@ -4,6 +4,8 @@
#include <string.h>
#include <time.h>
+// TODO: make magic bitboards use diffrent shift for each magic number (maybe)
+
static int popcount(uint64_t b) { return __builtin_popcountll(b); }
static uint64_t computeRookMask(int sq) {
@@ -165,11 +167,13 @@ int main(int argc, char *argv[]) {
uint64_t rookMags[64], bishopMags[64];
uint64_t rookMasks[64], bishopMasks[64];
- fprintf(stderr, "Finding per-square rook magics (shift %d, table size %llu)...\n",
+ fprintf(stderr,
+ "Finding per-square rook magics (shift %d, table size %llu)...\n",
shift, (unsigned long long)(1ULL << (64 - shift)));
for (int sq = 0; sq < 64; sq++) {
rookMasks[sq] = computeRookMask(sq);
- if (!findMagic(rookMasks[sq], computeRookAttacks, sq, shift, &rookMags[sq])) {
+ if (!findMagic(rookMasks[sq], computeRookAttacks, sq, shift,
+ &rookMags[sq])) {
fprintf(stderr, "FAILED to find rook magic for square %d\n", sq);
return 1;
}
diff --git a/src/board/board.cpp b/src/board/board.cpp
index 9ac60a8..822e1b5 100644
--- a/src/board/board.cpp
+++ b/src/board/board.cpp
@@ -1,4 +1,3 @@
-#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
@@ -177,14 +176,15 @@ Undo MakeMove(uint16_t move, Game *g) {
g->PieceBitboards[captuaredColor][PAWN] ^= square;
- if (captuaredColor)
+ if (captuaredColor) {
g->WhitePieceBitboard ^= square;
- else
+ } else {
g->BlackPieceBitboard ^= square;
-
+ }
g->PieceBitboard = g->WhitePieceBitboard | g->BlackPieceBitboard;
- g->pieces[PositionToIndex(capturedPawn)] = {false, NONEPIECE};
+ g->pieces[PositionToIndex(capturedPawn)] = {.color = false,
+ .type = NONEPIECE};
}
g->canEnpassant = false;
diff --git a/src/evaluate.cpp b/src/evaluate.cpp
index c14fb9a..bb65c7f 100644
--- a/src/evaluate.cpp
+++ b/src/evaluate.cpp
@@ -201,7 +201,7 @@ bool IsEndgame(const Game *g) {
}
}
- return queens == 0 || (queens == 2 && minor <= 1);
+ return (queens == 0 && minor <= 2) || (queens == 2 && minor <= 1);
}
int EvaluateBoardForWhite(Game *g) {