diff options
Diffstat (limited to 'src/move.c')
| -rwxr-xr-x | src/move.c | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -121,6 +121,8 @@ Return value: ASSERT(IS_VALID_COLOR(c)); ASSERT(pos->cPawns[c][uIndex] == cFrom); pos->cPawns[c][uIndex] = cTo; + pos->bbPawns[c] &= ~COOR_TO_BB(cFrom); + pos->bbPawns[c] |= COOR_TO_BB(cTo); pos->u64PawnSig ^= g_u64PawnSigSeeds[cFrom][c]; pos->u64PawnSig ^= g_u64PawnSigSeeds[cTo][c]; pos->rgSquare[cTo].pPiece = p; @@ -224,6 +226,8 @@ Return value: ASSERT(IS_VALID_COLOR(c)); ASSERT(pos->cPawns[c][uIndex] == cFrom); pos->cPawns[c][uIndex] = cTo; + pos->bbPawns[c] &= ~COOR_TO_BB(cFrom); + pos->bbPawns[c] |= COOR_TO_BB(cTo); pos->rgSquare[cTo].pPiece = p; pos->rgSquare[cTo].uIndex = uIndex; #ifdef DEBUG @@ -293,10 +297,11 @@ Return value: ASSERT(pos->uPawnMaterial[color] <= (7 * VALUE_PAWN)); pos->u64PawnSig ^= g_u64PawnSigSeeds[cSquare][color]; + pos->bbPawns[color] &= ~COOR_TO_BB(cSquare); // // Remove this pawn from the pawn list. - // + // pos->uPawnCount[color]--; ASSERT(pos->uPawnCount[color] < 8); uLastIndex = pos->uPawnCount[color]; @@ -426,10 +431,11 @@ Return value: pos->uPawnMaterial[color] -= pv; ASSERT(pos->uPawnMaterial[color] <= (7 * VALUE_PAWN)); - + pos->bbPawns[color] &= ~COOR_TO_BB(cSquare); + // // Remove this pawn from the pawn list. - // + // pos->uPawnCount[color]--; ASSERT(pos->uPawnCount[color] < 8); uLastIndex = pos->uPawnCount[color]; // optimized... @@ -542,6 +548,7 @@ Return value: pos->uPawnCount[color]++; ASSERT(pos->uPawnCount[color] <= 8); pos->cPawns[color][uIndex] = cSquare; + pos->bbPawns[color] |= COOR_TO_BB(cSquare); pos->u64PawnSig ^= g_u64PawnSigSeeds[cSquare][color]; } else @@ -634,6 +641,7 @@ Return value: pos->uPawnCount[color]++; ASSERT(pos->uPawnCount[color] <= 8); pos->cPawns[color][uIndex] = cSquare; + pos->bbPawns[color] |= COOR_TO_BB(cSquare); } else { |
