summaryrefslogtreecommitdiff
path: root/src/move.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/move.c')
-rwxr-xr-xsrc/move.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/move.c b/src/move.c
index 5c1a0db..1ed1485 100755
--- a/src/move.c
+++ b/src/move.c
@@ -62,6 +62,8 @@ Return value:
ASSERT(IS_VALID_COLOR(c));
ASSERT(pos->cNonPawns[c][uIndex] == cFrom);
pos->cNonPawns[c][uIndex] = cTo;
+ pos->bbPieces[c][PIECE_TYPE(p)] &= ~COOR_TO_BB(cFrom);
+ pos->bbPieces[c][PIECE_TYPE(p)] |= COOR_TO_BB(cTo);
pos->u64NonPawnSig ^= g_u64SigSeeds[cFrom][PIECE_TYPE(p)][c];
pos->u64NonPawnSig ^= g_u64SigSeeds[cTo][PIECE_TYPE(p)][c];
#ifdef DEBUG
@@ -171,6 +173,8 @@ Return value:
ASSERT(IS_VALID_COLOR(c));
ASSERT(pos->cNonPawns[c][uIndex] == cFrom);
pos->cNonPawns[c][uIndex] = cTo;
+ pos->bbPieces[c][PIECE_TYPE(p)] &= ~COOR_TO_BB(cFrom);
+ pos->bbPieces[c][PIECE_TYPE(p)] |= COOR_TO_BB(cTo);
pos->rgSquare[cTo].pPiece = p;
pos->rgSquare[cTo].uIndex = uIndex;
#ifdef DEBUG
@@ -345,11 +349,12 @@ Return value:
pos->u64NonPawnSig ^= g_u64SigSeeds[cSquare][u][color];
pos->uNonPawnCount[color][u]--;
ASSERT(pos->uNonPawnCount[color][u] <= 9);
+ pos->bbPieces[color][u] &= ~COOR_TO_BB(cSquare);
pos->uWhiteSqBishopCount[color] -= (IS_BISHOP(pLifted) &
IS_SQUARE_WHITE(cSquare));
ASSERT(pos->uWhiteSqBishopCount[color] <= 9);
}
-
+
#ifdef DEBUG
VerifyPositionConsistency(pos, FALSE);
#endif
@@ -477,11 +482,12 @@ Return value:
ASSERT((u >= KNIGHT) && (u < KING));
pos->uNonPawnCount[color][u]--;
ASSERT(pos->uNonPawnCount[color][u] <= 9);
- pos->uWhiteSqBishopCount[color] -= (IS_BISHOP(pLifted) &
+ pos->bbPieces[color][u] &= ~COOR_TO_BB(cSquare);
+ pos->uWhiteSqBishopCount[color] -= (IS_BISHOP(pLifted) &
IS_SQUARE_WHITE(cSquare));
ASSERT(pos->uWhiteSqBishopCount[color] <= 9);
}
-
+
return(pLifted);
}
@@ -556,7 +562,8 @@ Return value:
pos->u64NonPawnSig ^= g_u64SigSeeds[cSquare][u][color];
pos->uNonPawnCount[color][u]++;
ASSERT(pos->uNonPawnCount[color][u] <= 10);
-
+ pos->bbPieces[color][u] |= COOR_TO_BB(cSquare);
+
pos->uWhiteSqBishopCount[color] += (IS_BISHOP(pPiece) &
IS_SQUARE_WHITE(cSquare));
ASSERT(pos->uWhiteSqBishopCount[color] <= 10);
@@ -564,17 +571,17 @@ Return value:
//
// Place the piece on the board
- //
+ //
pos->rgSquare[cSquare].pPiece = pPiece;
pos->rgSquare[cSquare].uIndex = uIndex;
-
+
#ifdef DEBUG
VerifyPositionConsistency(pos, FALSE);
#endif
}
-void
+void
PlacePieceWithoutSigs(POSITION *pos, COOR cSquare, PIECE pPiece)
/**
@@ -645,7 +652,8 @@ Return value:
ASSERT((u >= KNIGHT) && (u < KING));
pos->uNonPawnCount[color][u]++;
ASSERT(pos->uNonPawnCount[color][u] <= 10);
-
+ pos->bbPieces[color][u] |= COOR_TO_BB(cSquare);
+
pos->uWhiteSqBishopCount[color] += (IS_BISHOP(pPiece) &
IS_SQUARE_WHITE(cSquare));
ASSERT(pos->uWhiteSqBishopCount[color] <= 10);